From fab953f86d45bbb16fa4199e7047332e320c55cf Mon Sep 17 00:00:00 2001 From: BuhtigithuB Date: Wed, 5 Feb 2014 14:03:26 -0500 Subject: [PATCH 1/2] This is missing in case of update form In case of update form the value of the field on which the widget is applyed get lost... This commit should fix this problem. --- modules/plugin_lazy_options_widget.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/modules/plugin_lazy_options_widget.py b/modules/plugin_lazy_options_widget.py index e3d07f6..e0ceb95 100644 --- a/modules/plugin_lazy_options_widget.py +++ b/modules/plugin_lazy_options_widget.py @@ -105,10 +105,18 @@ def __call__(self, field, value, **attributes): select_el = self._get_select_el(self.trigger, value) if self.trigger else None - el = DIV(script_el, - SPAN(select_el or self.default, _id=self._disp_el_id), - INPUT(_value=value, _type='hidden', - _name=field.name, _id=self._hidden_el_id, - requires=field.requires), - _id=self._el_id) + if value: + el = DIV(script_el, + SPAN(SELECT(*[OPTION(v, _value=k) for (k, v) in field.requires.options()], value=value, _id='%s__aux' % self._el_id), _id=self._disp_el_id), + INPUT(_value=value, _type='hidden', + _name=field.name, _id=self._hidden_el_id, + requires=field.requires), + _id=self._el_id) + else: + el = DIV(script_el, + SPAN(select_el or self.default, _id=self._disp_el_id), + INPUT(_value=value, _type='hidden', + _name=field.name, _id=self._hidden_el_id, + requires=field.requires), + _id=self._el_id) return el From 91d09ce767bedd414a3931c26751ba1092372bda Mon Sep 17 00:00:00 2001 From: BuhtigithuB Date: Wed, 5 Feb 2014 14:33:09 -0500 Subject: [PATCH 2/2] _onchange missing to update the hidden field I was missing a little piece of jquery in the initial commit... --- modules/plugin_lazy_options_widget.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/plugin_lazy_options_widget.py b/modules/plugin_lazy_options_widget.py index e0ceb95..b42ed31 100644 --- a/modules/plugin_lazy_options_widget.py +++ b/modules/plugin_lazy_options_widget.py @@ -107,7 +107,7 @@ def __call__(self, field, value, **attributes): if value: el = DIV(script_el, - SPAN(SELECT(*[OPTION(v, _value=k) for (k, v) in field.requires.options()], value=value, _id='%s__aux' % self._el_id), _id=self._disp_el_id), + SPAN(SELECT(*[OPTION(v, _value=k) for (k, v) in field.requires.options()], value=value, _id='%s__aux' % self._el_id, _onchange='jQuery("#%s").val(jQuery(this).val());' % self._hidden_el_id), _id=self._disp_el_id), INPUT(_value=value, _type='hidden', _name=field.name, _id=self._hidden_el_id, requires=field.requires),