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
	
	 helmutm
						helmutm