diff --git a/product/ERP5Form/FormulatorPatch.py b/product/ERP5Form/FormulatorPatch.py index b2bcf6f6cb9e9036c3337f9a645d9ebc5cb7fa01..1a092094a6b5c417d525fdd00baea6ead441812f 100644 --- a/product/ERP5Form/FormulatorPatch.py +++ b/product/ERP5Form/FormulatorPatch.py @@ -564,6 +564,35 @@ def MultiItemsWidget_render_items(self, field, key, value, REQUEST): MultiItemsWidget.render_items = MultiItemsWidget_render_items +from Products.Formulator.Widget import MultiListWidget + +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)) + +MultiListWidget.render = MultiListWidget_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)) + +ListWidget.render = ListWidget_render + # JPS - Subfield handling with listbox requires extension from Products.Formulator.StandardFields import DateTimeField diff --git a/product/ERP5Form/ParallelListField.py b/product/ERP5Form/ParallelListField.py index 765c5d84840f77dd801ab666f8c81c6929d6a581..06af7246e90d9da0f1902e075ede560fa99c775b 100644 --- a/product/ERP5Form/ParallelListField.py +++ b/product/ERP5Form/ParallelListField.py @@ -36,7 +36,8 @@ from zLOG import LOG from AccessControl import ClassSecurityInfo from Products.Formulator.Errors import ValidationError -class ParallelListWidget(Widget.MultiListWidget): +class ParallelListWidget(Widget.MultiListWidget, + Widget.ListWidget): """ Make the MultilistField more usable for the user. @@ -63,6 +64,7 @@ class ParallelListWidget(Widget.MultiListWidget): """ property_names = Widget.MultiListWidget.property_names + \ + Widget.ListWidget.property_names + \ ['hash_script_id'] hash_script_id = fields.StringField('hash_script_id', @@ -71,6 +73,17 @@ class ParallelListWidget(Widget.MultiListWidget): "The method to call to hash items list."), required=0) + # delete double in order to keep a usable ZMI... + # XXX need to keep order ! + #property_names = dict([(i,0) for i in property_names]).keys() + _v_dict = {} + _v_property_name_list = [] + for property_name in property_names: + if not _v_dict.has_key(property_name): + _v_property_name_list.append(property_name) + _v_dict[property_name] = 1 + property_names = _v_property_name_list + def __init__(self): """ Generate some subwidget used for rendering.