Commit 1fde35a8 authored by Kazuhiko Shiozaki's avatar Kazuhiko Shiozaki

ERP5Form: support relative_url in HyperLinkField.

parent 81d98560
......@@ -550,6 +550,7 @@ def renderField(traversed_document, field, form, value=MARKER, meta_type=None,
result.update({
"extra": field.get_value("extra"),
"href": field.get_value("href"),
"is_relative": field.get_value("is_relative"),
})
if meta_type == "ImageField":
options = {
......
......@@ -5,7 +5,18 @@
rJS(window)
.declareMethod('render', function (options) {
var field_json = options.field_json || {};
var gadget = this,
field_json = options.field_json || {};
if (field_json.is_relative) {
return gadget.getUrlFor({command: 'push_history', options: {jio_key: field_json.href}})
.push(function (href) {
return gadget.changeState({
text: field_json.value || field_json.default || "",
extra: field_json.extra || "",
href: href
});
});
}
return this.changeState({
text: field_json.value || field_json.default || "",
extra: field_json.extra || "",
......
......@@ -6,7 +6,7 @@ from Products.Formulator.DummyField import fields
from Products.Formulator import Validator
class HyperLinkWidget(LabelWidget):
property_names = LabelWidget.property_names + ['href']
property_names = LabelWidget.property_names + ['href'] + ['is_relative']
href = fields.LinkField('href',
title='Href',
......@@ -14,12 +14,21 @@ class HyperLinkWidget(LabelWidget):
default="",
required=1)
is_relative = fields.CheckBoxField('is_relative',
title='Relative ?',
description='Check if Href value is the relative URL of an ERP5 object',
default=0,
required=0)
def render(self, field, key, value, REQUEST, render_prefix=None):
return self.render_view(field, value, REQUEST, render_prefix)
def render_view(self, field, value, REQUEST=None, render_prefix=None):
href = field.get_value('href')
if field.get_value('is_relative'):
href = field.getPortalObject().unrestrictedTraverse(href).absolute_url()
return render_element("a",
href=field.get_value('href'),
href=href,
css_class=field.get_value('css_class'),
contents=field.get_value('default'),
extra=field.get_value('extra'))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment