some improvements and fixes on dialog form handling
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@1607 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
		
							parent
							
								
									6e3e08c781
								
							
						
					
					
						commit
						a12bead1ba
					
				
					 3 changed files with 44 additions and 39 deletions
				
			
		|  | @ -143,7 +143,6 @@ class BaseView(GenericView): | |||
|     @Lazy | ||||
|     def uniqueId(self): | ||||
|         return util.getUidForObject(self.context) | ||||
|         #return zapi.getUtility(IRelationRegistry).getUniqueIdForObject(self.context) | ||||
| 
 | ||||
|     # type stuff | ||||
| 
 | ||||
|  | @ -191,7 +190,7 @@ class BaseView(GenericView): | |||
|         return types | ||||
| 
 | ||||
|     def resourceTypes(self): | ||||
|         return util.KeywordVocabulary(self.listTypes(('resource',) ('hidden',))) | ||||
|         return util.KeywordVocabulary(self.listTypes(('resource',), ('hidden',))) | ||||
|             #if t.factory == Resource]) # ? if necessary -> type.qualifiers | ||||
| 
 | ||||
|     def conceptTypes(self): | ||||
|  |  | |||
|  | @ -42,7 +42,8 @@ from cybertools.ajax import innerHtml | |||
| from cybertools.browser.form import FormController | ||||
| from cybertools.typology.interfaces import IType | ||||
| from loops.concept import ResourceRelation | ||||
| from loops.interfaces import IConcept, IResourceManager, INote, IDocument | ||||
| from loops.interfaces import IConcept, IResourceManager, IDocument | ||||
| from loops.interfaces import IFile, IExternalFile, INote | ||||
| from loops.browser.node import NodeView | ||||
| from loops.browser.concept import ConceptRelationView | ||||
| from loops.resource import Resource | ||||
|  | @ -98,15 +99,32 @@ class ObjectForm(NodeView): | |||
|                 self.loopsRoot.getConceptManager().getDefaultPredicate()) | ||||
| 
 | ||||
| 
 | ||||
| class NoteWidgetController(object): | ||||
| class WidgetController(object): | ||||
| 
 | ||||
|     def modifyFormFields(self, formFields): | ||||
|         return formFields | ||||
| 
 | ||||
|     def modifyWidgetSetup(self, widgets): | ||||
|         pass | ||||
| 
 | ||||
| 
 | ||||
| class NoteWidgetController(WidgetController): | ||||
| 
 | ||||
|     def modifyWidgetSetup(self, widgets): | ||||
|         widgets['data'].height = 5 | ||||
| 
 | ||||
| 
 | ||||
| widgetControllers = {INote: NoteWidgetController} | ||||
| class FileWidgetController(WidgetController): | ||||
| 
 | ||||
| # specialWidgets = {(IFile, 'data'): UploadWidget} | ||||
|     def modifyFormFields(self, formFields): | ||||
|         return formFields.omit('contentType') | ||||
| 
 | ||||
| 
 | ||||
| widgetControllers = { | ||||
|     INote: NoteWidgetController, | ||||
|     IFile: FileWidgetController, | ||||
|     IExternalFile: FileWidgetController, | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| class EditObjectForm(ObjectForm, EditForm): | ||||
|  | @ -118,6 +136,10 @@ class EditObjectForm(ObjectForm, EditForm): | |||
|     form_action = 'edit_resource' | ||||
|     dialog_name = 'edit' | ||||
| 
 | ||||
|     def __init__(self, context, request): | ||||
|         super(EditObjectForm, self).__init__(context, request) | ||||
|         self.context = self.virtualTargetObject | ||||
| 
 | ||||
|     @Lazy | ||||
|     def typeInterface(self): | ||||
|         return IType(self.context).typeInterface or IDocument | ||||
|  | @ -125,8 +147,9 @@ class EditObjectForm(ObjectForm, EditForm): | |||
|     @property | ||||
|     def form_fields(self): | ||||
|         ff = FormFields(self.typeInterface) | ||||
|         # if self.typeInterface in (IFile, IExternalFile): | ||||
|         #ff['data'].custom_widget = UploadWidget | ||||
|         if self.typeInterface in widgetControllers: | ||||
|             wc = widgetControllers[self.typeInterface]() | ||||
|             ff = wc.modifyFormFields(ff) | ||||
|         return ff | ||||
| 
 | ||||
|     @property | ||||
|  | @ -136,10 +159,6 @@ class EditObjectForm(ObjectForm, EditForm): | |||
|             if r.isProtected: continue | ||||
|             yield r | ||||
| 
 | ||||
|     def __init__(self, context, request): | ||||
|         super(EditObjectForm, self).__init__(context, request) | ||||
|         self.context = self.virtualTargetObject | ||||
| 
 | ||||
| 
 | ||||
| class CreateObjectForm(ObjectForm, Form): | ||||
| 
 | ||||
|  | @ -161,6 +180,9 @@ class CreateObjectForm(ObjectForm, Form): | |||
|         self.typeInterface = ifc | ||||
|         ff = FormFields(ifc) | ||||
|         #ff['data'].custom_widget = UploadWidget | ||||
|         if self.typeInterface in widgetControllers: | ||||
|             wc = widgetControllers[self.typeInterface]() | ||||
|             ff = wc.modifyFormFields(ff) | ||||
|         return ff | ||||
| 
 | ||||
|     @property | ||||
|  | @ -220,7 +242,9 @@ class EditObject(FormController): | |||
|                             #self.request.form['filename'] = filename | ||||
|                             contentType = guess_content_type(filename, value[:100]) | ||||
|                             if contentType: | ||||
|                                 self.request.form['form.contentType'] = contentType[0] | ||||
|                                 ct = contentType[0] | ||||
|                                 self.request.form['form.contentType'] = ct | ||||
|                                 adapted.contentType = ct | ||||
|                     setattr(adapted, fn, value) | ||||
|         if self.old or self.selected: | ||||
|             self.assignConcepts(obj) | ||||
|  |  | |||
|  | @ -6,26 +6,17 @@ | |||
|       <input type="hidden" name="form.action" value="edit" | ||||
|              tal:attributes="value view/form_action" /> | ||||
|       <table cellpadding="3" class="form"> | ||||
|         <tbody> | ||||
|           <tr> | ||||
|             <th colspan="5"> | ||||
|               <br /> | ||||
|         <tbody><tr><th colspan="5"><br /> | ||||
|               <span tal:replace="view/title" | ||||
|                     i18n:translate="">Edit Information Object | ||||
|               </span> | ||||
|             </th> | ||||
|           </tr> | ||||
|         </tbody> | ||||
|         </th></tr></tbody> | ||||
| 
 | ||||
|         <tbody> | ||||
|           <tr> | ||||
|             <td colspan="5"> | ||||
|         <tbody><tr><td colspan="5"> | ||||
|               <div id="form.fields"> | ||||
|                 <metal:fields use-macro="view/template/macros/fields" /> | ||||
|               </div> | ||||
|             </td> | ||||
|           </tr> | ||||
|         </tbody> | ||||
|         </td></tr></tbody> | ||||
| 
 | ||||
|         <tbody> | ||||
|           <tr> | ||||
|  | @ -45,10 +36,7 @@ | |||
|       <input type="hidden" name="form.action" value="create" | ||||
|              tal:attributes="value view/form_action" /> | ||||
|       <table cellpadding="3" class="form"> | ||||
|         <tbody> | ||||
|           <tr> | ||||
|             <th colspan="5"> | ||||
|               <br /> | ||||
|         <tbody><tr><th colspan="5"><br /> | ||||
|               <span tal:replace="view/title" | ||||
|                     i18n:translate="">Create Information Object</span> | ||||
|               <select name="form.type" id="form.type" | ||||
|  | @ -66,19 +54,13 @@ | |||
|                   Note | ||||
|                 </option> | ||||
|               </select> | ||||
|             </th> | ||||
|           </tr> | ||||
|         </tbody> | ||||
|         </th></tr></tbody> | ||||
| 
 | ||||
|         <tbody> | ||||
|           <tr> | ||||
|             <td colspan="5"> | ||||
|         <tbody><tr><td colspan="5"> | ||||
|               <div id="form.fields"> | ||||
|                 <metal:fields use-macro="view/template/macros/fields" /> | ||||
|               </div> | ||||
|             </td> | ||||
|           </tr> | ||||
|         </tbody> | ||||
|         </td></tr></tbody> | ||||
| 
 | ||||
|         <tbody> | ||||
|           <tr> | ||||
|  |  | |||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 helmutm
						helmutm