improve (sort of customize) presentation of person data
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2391 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
5271981119
commit
695a717448
6 changed files with 100 additions and 15 deletions
|
@ -241,12 +241,14 @@ class ConceptView(BaseView):
|
|||
def data(self):
|
||||
return self.getData()
|
||||
|
||||
def getFields(self, omit=('title', 'description')):
|
||||
fields = Jeep(self.schema.fields)
|
||||
fields.remove(*omit)
|
||||
return fields
|
||||
|
||||
@Lazy
|
||||
def instance(self):
|
||||
instance = IInstance(self.adapted)
|
||||
instance.template = self.schema
|
||||
instance.view = self
|
||||
return instance
|
||||
def fields(self):
|
||||
return self.getFields()
|
||||
|
||||
@Lazy
|
||||
def schema(self):
|
||||
|
@ -254,6 +256,13 @@ class ConceptView(BaseView):
|
|||
schemaFactory = component.getAdapter(self.adapted, ISchemaFactory)
|
||||
return schemaFactory(ti, manager=self, request=self.request)
|
||||
|
||||
@Lazy
|
||||
def instance(self):
|
||||
instance = IInstance(self.adapted)
|
||||
instance.template = self.schema
|
||||
instance.view = self
|
||||
return instance
|
||||
|
||||
def getChildren(self, topLevelOnly=True, sort=True):
|
||||
cm = self.loopsRoot.getConceptManager()
|
||||
hasType = cm.getTypePredicate()
|
||||
|
|
|
@ -21,18 +21,37 @@
|
|||
|
||||
<metal:fields define-macro="conceptfields">
|
||||
<fieldset class="box"
|
||||
tal:define="data python: list(item.fieldData())"
|
||||
tal:condition="data">
|
||||
tal:define="data item/data;
|
||||
values python: [v for v in data.values() if v];
|
||||
fields item/fields"
|
||||
tal:condition="values">
|
||||
<table tal:attributes="ondblclick item/openEditWindow">
|
||||
<tr tal:repeat="field data">
|
||||
<td><b tal:content="field/title" i18n:translate="" />:</td>
|
||||
<td tal:content="structure field/widget"></td>
|
||||
</tr>
|
||||
<tal:row repeat="field fields">
|
||||
<tr tal:define="fieldName field/name;
|
||||
value nocall:data/?fieldName;
|
||||
renderer field/displayRenderer"
|
||||
tal:condition="nocall:value">
|
||||
<td><b tal:content="field/title" i18n:translate="" />:</td>
|
||||
<td><span metal:use-macro="item/template/macros/?renderer" /></td>
|
||||
</tr>
|
||||
</tal:row>
|
||||
</table>
|
||||
</fieldset>
|
||||
</metal:fields>
|
||||
|
||||
|
||||
<metal:textline define-macro="display_textline">
|
||||
<span tal:content="nocall:value"></span>
|
||||
</metal:textline>
|
||||
|
||||
|
||||
<metal:textline define-macro="display_email">
|
||||
<a href="#"
|
||||
tal:attributes="href string:mailto:$value"
|
||||
tal:content="value"></a>
|
||||
</metal:textline>
|
||||
|
||||
|
||||
<metal:parents define-macro="conceptparents">
|
||||
<div tal:attributes="class string:content-$level;
|
||||
ondblclick python: item.openEditWindow('configure.html')">
|
||||
|
@ -117,7 +136,7 @@
|
|||
tal:attributes="href string:${view/url}/.target${related/uniqueId}?loops.viewName=listversions">1.1</a>
|
||||
</td>
|
||||
</tal:version>
|
||||
<td style="text-align: right">
|
||||
<td style="text-align: right; white-space: nowrap">
|
||||
<span tal:replace="related/context/sizeForDisplay">Type</span>
|
||||
</td>
|
||||
<td><span tal:replace="related/modified">2007-03-30</span></td>
|
||||
|
|
5
external/README.txt
vendored
5
external/README.txt
vendored
|
@ -72,8 +72,9 @@ Writing object information to the external storage
|
|||
>>> writer = PyWriter()
|
||||
>>> writer.write(elements, output)
|
||||
>>> print output.getvalue()
|
||||
type(u'customer', u'Customer', viewName=u'')...
|
||||
type(u'query', u'Query', typeInterface='loops.query.IQueryConcept', viewName=u'')...
|
||||
type(u'customer', u'Customer', options=u'', viewName=u'')...
|
||||
type(u'query', u'Query', options=u'', typeInterface='loops.query.IQueryConcept',
|
||||
viewName=u'')...
|
||||
concept(u'myquery', u'My Query', u'query', viewName='mystuff.html')...
|
||||
child(u'projects', u'customer', u'standard')...
|
||||
|
||||
|
|
|
@ -93,6 +93,11 @@
|
|||
|
||||
<!-- other adapters -->
|
||||
|
||||
<zope:adapter factory="loops.organize.schema.PersonSchemaFactory" />
|
||||
|
||||
<zope:adapter factory="loops.organize.schema.SimpleListFieldInstance"
|
||||
name="simplelist" />
|
||||
|
||||
<zope:adapter
|
||||
for="loops.interfaces.ILoopsObject
|
||||
zope.publisher.interfaces.browser.IBrowserRequest"
|
||||
|
|
51
organize/schema.py
Normal file
51
organize/schema.py
Normal file
|
@ -0,0 +1,51 @@
|
|||
#
|
||||
# Copyright (c) 2005 Helmut Merz helmutm@cy55.de
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
#
|
||||
|
||||
"""
|
||||
Specialized schema factories
|
||||
|
||||
$Id$
|
||||
"""
|
||||
|
||||
from zope.component import adapts
|
||||
|
||||
from cybertools.composer.schema.factory import SchemaFactory
|
||||
from cybertools.composer.schema.field import FieldInstance
|
||||
from cybertools.composer.schema.interfaces import FieldType
|
||||
from cybertools.organize.interfaces import SimpleList
|
||||
from loops.organize.interfaces import IPerson, UserId
|
||||
|
||||
|
||||
class PersonSchemaFactory(SchemaFactory):
|
||||
|
||||
adapts(IPerson)
|
||||
|
||||
def __call__(self, interface, **kw):
|
||||
schema = super(PersonSchemaFactory, self).__call__(interface, **kw)
|
||||
schema.fields.phoneNumbers.instance_name ='simplelist'
|
||||
schema.fields.birthDate.display_format = ('date', 'long')
|
||||
schema.fields.email.display_renderer = 'display_email'
|
||||
return schema
|
||||
|
||||
|
||||
class SimpleListFieldInstance(FieldInstance):
|
||||
|
||||
def display(self, value):
|
||||
if not value:
|
||||
return ''
|
||||
return ' | '.join(value)
|
|
@ -81,7 +81,7 @@
|
|||
tal:attributes="href string:${view/url}/.target${row/uniqueId}?loops.viewName=listversions">1.1</a>
|
||||
</td>
|
||||
</tal:version>
|
||||
<td style="text-align: right">
|
||||
<td style="text-align: right; white-space: nowrap">
|
||||
<span tal:replace="row/context/sizeForDisplay|string:">Size</span>
|
||||
</td>
|
||||
<td><span tal:replace="row/modified">modified</span></td>
|
||||
|
|
Loading…
Add table
Reference in a new issue