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): |     def data(self): | ||||||
|         return self.getData() |         return self.getData() | ||||||
| 
 | 
 | ||||||
|  |     def getFields(self, omit=('title', 'description')): | ||||||
|  |         fields = Jeep(self.schema.fields) | ||||||
|  |         fields.remove(*omit) | ||||||
|  |         return fields | ||||||
|  | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     def instance(self): |     def fields(self): | ||||||
|         instance = IInstance(self.adapted) |         return self.getFields() | ||||||
|         instance.template = self.schema |  | ||||||
|         instance.view = self |  | ||||||
|         return instance |  | ||||||
| 
 | 
 | ||||||
|     @Lazy |     @Lazy | ||||||
|     def schema(self): |     def schema(self): | ||||||
|  | @ -254,6 +256,13 @@ class ConceptView(BaseView): | ||||||
|         schemaFactory = component.getAdapter(self.adapted, ISchemaFactory) |         schemaFactory = component.getAdapter(self.adapted, ISchemaFactory) | ||||||
|         return schemaFactory(ti, manager=self, request=self.request) |         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): |     def getChildren(self, topLevelOnly=True, sort=True): | ||||||
|         cm = self.loopsRoot.getConceptManager() |         cm = self.loopsRoot.getConceptManager() | ||||||
|         hasType = cm.getTypePredicate() |         hasType = cm.getTypePredicate() | ||||||
|  |  | ||||||
|  | @ -21,18 +21,37 @@ | ||||||
| 
 | 
 | ||||||
| <metal:fields define-macro="conceptfields"> | <metal:fields define-macro="conceptfields"> | ||||||
|   <fieldset class="box" |   <fieldset class="box" | ||||||
|             tal:define="data python: list(item.fieldData())" |             tal:define="data item/data; | ||||||
|             tal:condition="data"> |                         values python: [v for v in data.values() if v]; | ||||||
|  |                         fields item/fields" | ||||||
|  |             tal:condition="values"> | ||||||
|     <table tal:attributes="ondblclick item/openEditWindow"> |     <table tal:attributes="ondblclick item/openEditWindow"> | ||||||
|       <tr tal:repeat="field data"> |       <tal:row repeat="field fields"> | ||||||
|         <td><b tal:content="field/title" i18n:translate="" />:</td> |         <tr tal:define="fieldName field/name; | ||||||
|         <td tal:content="structure field/widget"></td> |                         value nocall:data/?fieldName; | ||||||
|       </tr> |                         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> |     </table> | ||||||
|   </fieldset> |   </fieldset> | ||||||
| </metal:fields> | </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"> | <metal:parents define-macro="conceptparents"> | ||||||
|       <div tal:attributes="class string:content-$level; |       <div tal:attributes="class string:content-$level; | ||||||
|                            ondblclick python: item.openEditWindow('configure.html')"> |                            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> |                        tal:attributes="href string:${view/url}/.target${related/uniqueId}?loops.viewName=listversions">1.1</a> | ||||||
|                   </td> |                   </td> | ||||||
|                 </tal:version> |                 </tal:version> | ||||||
|                 <td style="text-align: right"> |                 <td style="text-align: right; white-space: nowrap"> | ||||||
|                   <span tal:replace="related/context/sizeForDisplay">Type</span> |                   <span tal:replace="related/context/sizeForDisplay">Type</span> | ||||||
|                 </td> |                 </td> | ||||||
|                 <td><span tal:replace="related/modified">2007-03-30</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 = PyWriter() | ||||||
|   >>> writer.write(elements, output) |   >>> writer.write(elements, output) | ||||||
|   >>> print output.getvalue() |   >>> print output.getvalue() | ||||||
|   type(u'customer', u'Customer', viewName=u'')... |   type(u'customer', u'Customer', options=u'', viewName=u'')... | ||||||
|   type(u'query', u'Query', typeInterface='loops.query.IQueryConcept', 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')... |   concept(u'myquery', u'My Query', u'query', viewName='mystuff.html')... | ||||||
|   child(u'projects', u'customer', u'standard')... |   child(u'projects', u'customer', u'standard')... | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -93,6 +93,11 @@ | ||||||
| 
 | 
 | ||||||
|   <!-- other adapters --> |   <!-- other adapters --> | ||||||
| 
 | 
 | ||||||
|  |   <zope:adapter factory="loops.organize.schema.PersonSchemaFactory" /> | ||||||
|  | 
 | ||||||
|  |   <zope:adapter factory="loops.organize.schema.SimpleListFieldInstance" | ||||||
|  |                 name="simplelist" /> | ||||||
|  | 
 | ||||||
|   <zope:adapter |   <zope:adapter | ||||||
|         for="loops.interfaces.ILoopsObject |         for="loops.interfaces.ILoopsObject | ||||||
|              zope.publisher.interfaces.browser.IBrowserRequest" |              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> |                          tal:attributes="href string:${view/url}/.target${row/uniqueId}?loops.viewName=listversions">1.1</a> | ||||||
|                     </td> |                     </td> | ||||||
|                   </tal:version> |                   </tal:version> | ||||||
|                   <td style="text-align: right"> |                   <td style="text-align: right; white-space: nowrap"> | ||||||
|                     <span tal:replace="row/context/sizeForDisplay|string:">Size</span> |                     <span tal:replace="row/context/sizeForDisplay|string:">Size</span> | ||||||
|                   </td> |                   </td> | ||||||
|                   <td><span tal:replace="row/modified">modified</span></td> |                   <td><span tal:replace="row/modified">modified</span></td> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm