diff --git a/product/ERP5Form/ProxyField.py b/product/ERP5Form/ProxyField.py index e6aed10bb22d842b322ba06baae3aae6a351b6da..dc366a68046d5d370a3a069209b4c9b6640401cf 100644 --- a/product/ERP5Form/ProxyField.py +++ b/product/ERP5Form/ProxyField.py @@ -57,6 +57,7 @@ class ProxyWidget(Widget.Widget): property_names = [ 'form_id', 'field_id', + 'target', 'extra_context', ] @@ -85,6 +86,14 @@ class ProxyWidget(Widget.Widget): default=(), required=0) + target = fields.HyperLinkField( + 'target', + title='Proxy Target', + description="Link to the master field edit form", + default='Click to edit the target', + href='manage_edit_target', + required=0) + def render(self, field, key, value, REQUEST): """ Render proxy field @@ -171,6 +180,18 @@ class ProxyField(ZMIField): REQUEST.other['erp5_extra_context'] = extra_context return REQUEST + security.declareProtected('Edit target', 'manage_edit_target') + def manage_edit_target(self, REQUEST): + """ Edit target field of this proxy + """ + proxy_field = self.getTemplateField() + if proxy_field: + url='/'.join((self.absolute_url(),self.get_value('form_id'),self.get_value('field_id'),'manage_main')) + REQUEST.RESPONSE.redirect(url) + else: + # FIXME: should show some error message ("form_id and field_id don't define a valid template") + pass + security.declareProtected('Access contents information', 'get_value') def get_value(self, id, **kw): """Get value for id. diff --git a/product/ERP5Form/__init__.py b/product/ERP5Form/__init__.py index d4be20f821fedc39808752131ac9c366c78a8b08..7f355f245541b1944afa999fc513428e6194c76a 100644 --- a/product/ERP5Form/__init__.py +++ b/product/ERP5Form/__init__.py @@ -146,6 +146,9 @@ def initialize( context ): FieldRegistry.registerField(HelperFields.MethodField) FieldRegistry.registerField(HelperFields.TALESField) + import HyperLinkField + FieldRegistry.registerField(HyperLinkField.HyperLinkField) + # register help for the product context.registerHelp() # register field help for all fields