[Freeipa-devel] [PATCH] 0047 Honor 'enabled' option for widgets

Petr Vobornik pvoborni at redhat.com
Tue Jul 23 16:09:13 UTC 2013


On 07/22/2013 04:46 PM, Ana Krivokapic wrote:
> On 07/18/2013 09:47 AM, Petr Vobornik wrote:
>> On 07/17/2013 09:18 PM, Ana Krivokapic wrote:
>>> Hello,
>>>
>>> This patch addresses ticket https://fedorahosted.org/freeipa/ticket/3793.
>>>
>>
>> Hello,
>>
>> 1) IMO  we should not create attribute which is just a negation of another.
>>
>> 2) We should add set_enabled method to base widget. Existing set_enabled
>> methods should use it and maintain widget output consistent with the attribute
>> (ie. one should not directly set the attr and should use set_enabled instead).
>> The method should be also callable when content is not yet created.
>> get_enabled methods might become unnecessary - one can get the state form
>> 'enabled' attribute.
>>
>
> The attached updated patch implements the following changes:
>
> 1) set_enabled method has been added to the base widget class.
> 2) get_enabled/is_enabled methods have been removed.
> 3) Widget classes that inherit from the base widget class override the
> set_enabled method where necessary.
> 4) Using 'enabled: true/false' in the widget definition should now work
> correctly for all types of widgets.
>
>

Thanks.

1. set_enabled method in input_widget uses `that.input`. Input widget is 
a base class which doesn't set the property and therefore we can't be 
certain that the descendant will set it. Also it may break when you call 
set_enabled(val) before create() .

We should test for `that.input` presence.

Same content-created test should be perform on other places: 
widget.js:1017,1147,2006

2. The changes in option_widget_base break disabling if user doesn't 
have write-rights. (can be reproduced when navigated (by manual change 
of url) to service in self-service.

Note the differences between read_only, writable and enabled:
* read_only - reflects metadata
* writable - reflects ACL
* enabled - context specific

read_only and writable don't offer edit interface (label instead of 
textbox). Enabled controls disabled state of textbox. For some widgets 
the result might be the same (radios, checkboxes).

option_widget_base.set_enabled should be changed. The mixin overwrites 
the original method and therefore doesn't set 'enabled' property.

3. multiple_choice_section.set_enabled should be renamed. It's related 
to individual choices and not the widget itself. And then new 
set_enabled should be added which would call the old one for each choice.

4. widget.js:3870 - not sure if it's needed but if so, one should also 
change `action_clicked` method.

-- 
Petr Vobornik




More information about the Freeipa-devel mailing list