[Erp5-report] r9825 - /erp5/trunk/products/ERP5Form/FormulatorPatch.py

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Sep 12 09:45:46 CEST 2006


Author: vincent
Date: Tue Sep 12 09:45:43 2006
New Revision: 9825

URL: http://svn.erp5.org?rev=9825&view=rev
Log:
Fix validators for multi- fields : add a marker field to be able to save the field value "nothing selected". Thanks to Rafael Monnerat for the patch.

Modified:
    erp5/trunk/products/ERP5Form/FormulatorPatch.py

Modified: erp5/trunk/products/ERP5Form/FormulatorPatch.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Form/FormulatorPatch.py?rev=9825&r1=9824&r2=9825&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Form/FormulatorPatch.py (original)
+++ erp5/trunk/products/ERP5Form/FormulatorPatch.py Tue Sep 12 09:45:43 2006
@@ -614,9 +614,9 @@
                                                 css_class,
                                                 extra_item)
       rendered_items.append(rendered_item)
-
-  rendered_items.append(render_element('input', type='hidden', name="default_%s:int" % (key, ), value="0")) # Added marker field
-
+  
+  # Moved marked field to Render
+  # rendered_items.append(render_element('input', type='hidden', name="default_%s:int" % (key, ), value="0"))
   return rendered_items
 
 MultiItemsWidget.render_items = MultiItemsWidget_render_items
@@ -625,29 +625,48 @@
 
 def MultiListWidget_render(self, field, key, value, REQUEST):
   rendered_items = self.render_items(field, key, value, REQUEST)
-  return render_element(
-          'select',
-          name=key,
-          multiple=None,
-          css_class=field.get_value('css_class', REQUEST=REQUEST),
-          size=field.get_value('size', REQUEST=REQUEST),
-          contents=string.join(rendered_items, "\n"),
-          extra=field.get_value('extra', REQUEST=REQUEST))
+  input_hidden = render_element('input', type='hidden', name="default_%s:int" % (key, ), value="0")
+  multi_list = render_element(
+                'select',
+                name=key,
+                multiple=None,
+                css_class=field.get_value('css_class', REQUEST=REQUEST),
+                size=field.get_value('size', REQUEST=REQUEST),
+                contents=string.join(rendered_items, "\n"),
+                extra=field.get_value('extra', REQUEST=REQUEST))
+   
+  return "\n".join([multi_list,input_hidden]) 
 
 MultiListWidget.render = MultiListWidget_render
+
+from Products.Formulator.Widget import MultiCheckBoxWidget
+
+def MultiCheckBoxWidget_render(self, field, key, value, REQUEST):
+  rendered_items = self.render_items(field, key, value, REQUEST)
+  rendered_items.append(render_element('input', type='hidden', name="default_%s:int" % (key, ), value="0"))
+  orientation = field.get_value('orientation')
+  if orientation == 'horizontal':
+    return string.join(rendered_items, "  ")
+  else:
+    return string.join(rendered_items, "<br />")
+                                                                    
+MultiCheckBoxWidget.render = MultiCheckBoxWidget_render
 
 from Products.Formulator.Widget import ListWidget
 
 def ListWidget_render(self, field, key, value, REQUEST):
   rendered_items = self.render_items(field, key, value, REQUEST)
-  return render_element(
-          'select',
-          name=key,
-          css_class=field.get_value('css_class', REQUEST=REQUEST),
-          size=field.get_value('size', REQUEST=REQUEST),
-          contents=string.join(rendered_items, "\n"),
-          extra=field.get_value('extra', REQUEST=REQUEST))
-
+  input_hidden = render_element('input', type='hidden', name="default_%s:int" % (key, ), value="0") 
+  list_widget = render_element(
+                'select',
+                name=key,
+                css_class=field.get_value('css_class', REQUEST=REQUEST),
+                size=field.get_value('size', REQUEST=REQUEST),
+                contents=string.join(rendered_items, "\n"),
+                extra=field.get_value('extra', REQUEST=REQUEST))
+
+  return "\n".join([list_widget,input_hidden])
+  
 ListWidget.render = ListWidget_render
 
 # JPS - Subfield handling with listbox requires extension




More information about the Erp5-report mailing list