extend composer.schema for usage for standard form rendering
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@2060 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
		
							parent
							
								
									2d56418344
								
							
						
					
					
						commit
						a4dfb9b209
					
				
					 3 changed files with 136 additions and 1 deletions
				
			
		|  | @ -23,6 +23,7 @@ $Id$ | |||
| """ | ||||
| 
 | ||||
| from zope import component | ||||
| from zope.app.pagetemplate import ViewPageTemplateFile | ||||
| from zope.app.session.interfaces import ISession | ||||
| from zope.cachedescriptors.property import Lazy | ||||
| 
 | ||||
|  | @ -30,10 +31,18 @@ from cybertools.composer.interfaces import IInstance | |||
| from cybertools.composer.schema.interfaces import IClientFactory | ||||
| 
 | ||||
| 
 | ||||
| schema_macros = ViewPageTemplateFile('schema_macros.pt') | ||||
| schema_edit_macros = schema_macros  # default: no editing | ||||
| 
 | ||||
| packageId = 'cybertools.composer.schema' | ||||
| 
 | ||||
| 
 | ||||
| class BaseView(object): | ||||
|     """ Base class for views that have schema objects as their context. | ||||
| 
 | ||||
|         Do not use this base class for views on typical content objects | ||||
|         that are not schemas! | ||||
|     """ | ||||
| 
 | ||||
|     clientName = None | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										123
									
								
								composer/schema/browser/schema_macros.pt
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										123
									
								
								composer/schema/browser/schema_macros.pt
									
										
									
									
									
										Executable file
									
								
							|  | @ -0,0 +1,123 @@ | |||
| <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US" | ||||
|       i18n:domain="loops"> | ||||
| <body> | ||||
| 
 | ||||
| 
 | ||||
| <metal:fields define-macro="fields"> | ||||
|   <tal:define define="manageMode manageMode|view/manageMode|nothing; | ||||
|                       fields view/fields; | ||||
|                       data view/data"> | ||||
|     <table class="listing" style="width: auto"> | ||||
|       <tal:fields repeat="field fields"> | ||||
|         <tal:field define="name field/name; | ||||
|                            typeInfo field/getFieldTypeInfo; | ||||
|                            errors state/fieldInstances/?name/errors|python: [];"> | ||||
|           <metal:field use-macro="python: view.schemaMacros[typeInfo.fieldMacro]" /> | ||||
|         </tal:field> | ||||
|       </tal:fields> | ||||
|     </table> | ||||
|     <tal:add condition="manageMode"> | ||||
|       <metal:add use-macro="view/schemaEditMacros/add_buttons" /> | ||||
|     </tal:add> | ||||
|   </tal:define> | ||||
| </metal:fields> | ||||
| 
 | ||||
| 
 | ||||
| <metal:field define-macro="field"> | ||||
|       <tbody tal:omit-tag="not:errors" | ||||
|              class="error" | ||||
|              style="padding: 4px; margin-bottom: 4px;"> | ||||
|         <tal:errors repeat="error errors"> | ||||
|           <tr> | ||||
|             <td colspan="2" style="padding: 4px" | ||||
|                 i18n:translate="" | ||||
|                 tal:content="error/description">???</td> | ||||
|           </tr> | ||||
|         </tal:errors> | ||||
|         <tr> | ||||
|           <tal:field> | ||||
|             <td style="padding: 4px; border-top: none" | ||||
|                 tal:attributes="title field/description"> | ||||
|               <b tal:content="field/title">...</b> | ||||
|               <span tal:condition="field/required">*</span> | ||||
|             </td> | ||||
|             <td class="field" style="border-top: none"> | ||||
|               <metal:input use-macro="python: | ||||
|                     view.schemaMacros[typeInfo.inputMacro]" /> | ||||
|             </td> | ||||
|           </tal:field> | ||||
|         </tr> | ||||
|         <tr style="border-bottom: 1px solid #dddddd" | ||||
|             tal:condition="manageMode"> | ||||
|           <td style="border-top: none"> | ||||
|             <metal:move use-macro="view/editMacros/move_icons" /> | ||||
|           </td> | ||||
|           <td style="border-top: none"> | ||||
|             <metal:edit use-macro="view/schemaEditMacros/edit_buttons" /> | ||||
|           </td> | ||||
|         </tr> | ||||
|       </tbody> | ||||
| </metal:field> | ||||
| 
 | ||||
| 
 | ||||
| <metal:textline define-macro="input_textline"> | ||||
|     <input type="text" name="field" style="width: 300px" | ||||
|            tal:define="width field/width|python:300" | ||||
|            tal:attributes="name name; | ||||
|                            style python: 'width: %ipx' % (width or 300); | ||||
|                            value data/?name|field/defaultValue|string:" /> | ||||
| </metal:textline> | ||||
| 
 | ||||
| 
 | ||||
| <metal:textarea define-macro="input_textarea"> | ||||
|     <textarea name="field" rows="3" style="width: 300px" | ||||
|            tal:define="width field/width|python:300; | ||||
|                        height field/height|python:3" | ||||
|            tal:attributes="name name; | ||||
|                            rows python: height or 3; | ||||
|                            style python: 'width: %ipx' % (width or 300)" | ||||
|            tal:content="data/?name|field/defaultValue|string:"> | ||||
|     </textarea> | ||||
| </metal:textarea> | ||||
| 
 | ||||
| 
 | ||||
| <metal:dropdown define-macro="input_dropdown"> | ||||
|     <select name="field" style="width: 100px" | ||||
|            tal:define="width field/width|python:100" | ||||
|            tal:attributes="name name; | ||||
|                            style python: 'width: %ipx' % (width or 100);"> | ||||
|       <option tal:repeat="item field/getVocabularyItems" | ||||
|               tal:content="item/title" | ||||
|               tal:attributes="value item/token; | ||||
|                               selected python: | ||||
|                     item['token'] == data.get(name, field.defaultValue)">Mrs</option> | ||||
|     </select> | ||||
| </metal:dropdown> | ||||
| 
 | ||||
| 
 | ||||
| <metal:spacer define-macro="field_spacer"> | ||||
|   <tr> | ||||
|     <td colspan="2" style="border-top:none; font-size: 50%"> </td> | ||||
|   </tr> | ||||
|   <tr> | ||||
|     <td colspan="2" | ||||
|         style="border-top: 1px solid #bbbbbb; padding: 8px 4px; | ||||
|                margin-top: 10px;"> | ||||
|       <div><b tal:content="field/title"></b></div> | ||||
|       <div tal:content="structure field/description"></div> | ||||
|     </td> | ||||
|   </tr> | ||||
|   <tr style="border-bottom: 1px solid #dddddd" | ||||
|       tal:condition="manageMode"> | ||||
|       <td style="border-top: none"> | ||||
|         <metal:move use-macro="view/schemaEditMacros/move_icons" /> | ||||
|       </td> | ||||
|       <td style="border-top: none"> | ||||
|         <metal:edit use-macro="view/schemaEditMacros/edit_buttons" /> | ||||
|       </td> | ||||
|   </tr> | ||||
| </metal:spacer> | ||||
| 
 | ||||
| 
 | ||||
| </body> | ||||
| </html> | ||||
|  | @ -40,6 +40,7 @@ class Field(Component): | |||
|     required = False | ||||
|     standardFieldName = None | ||||
|     vocabulary = None | ||||
|     defaultValue = None | ||||
|     renderFactory = None | ||||
| 
 | ||||
|     def __init__(self, name, title=None, fieldType='textline', **kw): | ||||
|  | @ -63,7 +64,9 @@ class Field(Component): | |||
|         voc = (self.vocabulary or '') | ||||
|         if isinstance(voc, basestring): | ||||
|             voc = voc.splitlines() | ||||
|         return [dict(token=v, title=v) for v in voc if v.strip()] | ||||
|             return [dict(token=t, title=t) for t in voc if t.strip()] | ||||
|         else: | ||||
|             return [dict(token=t.token, title=t.title) for t in voc] | ||||
| 
 | ||||
|     def getFieldTypeInfo(self): | ||||
|         return fieldTypes.getTerm(self.fieldType) | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm