diff --git a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_edit.xml b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_edit.xml index 15abe1b87e81da3cd0c062b99cec026af619f272..40065dfffdff88706c441023df3925c18510e43b 100644 --- a/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_edit.xml +++ b/product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_edit.xml @@ -107,6 +107,19 @@ except FormValidationError, validation_errors:\n value(request)\n return form(request)\n \n +def editListBox(listbox_field, listbox):\n + """ Function called to edit a listbox\n + """\n + if listbox is not None:\n + gv = {}\n + if listbox_field.has_value(\'global_attributes\'):\n + hidden_attributes = map(lambda x:x[0], listbox_field.get_value(\'global_attributes\'))\n + for k in hidden_attributes:\n + gv[k] = getattr(request, k, None)\n + for url, v in listbox.items():\n + v.update(gv)\n + context.restrictedTraverse(url).edit(**v)\n +\n def editMatrixBox(matrixbox_field, matrixbox):\n """ Function called to edit a Matrix box\n """\n @@ -212,7 +225,9 @@ try:\n # then we edit them\n for field in form.get_fields():\n parseField(field)\n - if(field.meta_type == \'MatrixBox\'):\n + if(field.meta_type == \'ListBox\'):\n + editListBox(field, request.get(field.id))\n + elif(field.meta_type == \'MatrixBox\'):\n editMatrixBox(field, request.get(field.id))\n \n # Maybe we should build a list of objects we need\n @@ -315,6 +330,7 @@ return request[\'RESPONSE\'].redirect(redirect_url)\n <string>field_id</string> <string>value</string> <string>callable</string> + <string>editListBox</string> <string>editMatrixBox</string> <string>MARKER</string> <string>kw</string> diff --git a/product/ERP5Form/ListBox.py b/product/ERP5Form/ListBox.py index 57762eb5810e33b590296642da7a403140218423..a047c49de64504dd44a0a679d1251ac9ddbbc2cf 100644 --- a/product/ERP5Form/ListBox.py +++ b/product/ERP5Form/ListBox.py @@ -2997,42 +2997,10 @@ class ListBoxValidator(Validator.Validator): LOG("ListBox FormValidationError",0,str(error_result)) LOG("ListBox FormValidationError",0,str(errors)) raise FormValidationError(errors, error_result) - - return ListBoxEditor(field, result) + return result ListBoxValidatorInstance = ListBoxValidator() -class ListBoxEditor: - """ - A class holding all values required to update objects - """ - - def __init__(self, field, update_dict): - self.field = field - self.update_dict = update_dict - - def view(self): - return self.__dict__ - - def __call__(self, REQUEST): - pass - - def edit(self, context): - if self.update_dict is not None: - gv = {} - if self.field.has_value('global_attributes'): - hidden_attributes = map(lambda x:x[0], self.field.get_value('global_attributes')) - for k in hidden_attributes: - gv[k] = getattr(request, k, None) - for url, v in self.update_dict.items(): - v.update(gv) - ## XXX security check is needed. - ## XXX we need to make restricted version of edit method. - self.field.restrictedTraverse(url).edit(**v) - -allow_class(ListBoxEditor) - - class ListBox(ZMIField): meta_type = "ListBox"