diff options
author | Petr Vobornik <pvoborni@redhat.com> | 2012-07-09 16:58:00 +0200 |
---|---|---|
committer | Petr Vobornik <pvoborni@redhat.com> | 2012-07-10 13:30:38 +0200 |
commit | 848bd0e9e738a4590049a223868dcfe6749a9154 (patch) | |
tree | 8539184b9e3d9655d953980b12487db68ea16253 | |
parent | 05cf7c53a69b7c999ac68c2869db924e2dccc3a0 (diff) | |
download | freeipa.git-848bd0e9e738a4590049a223868dcfe6749a9154.tar.gz freeipa.git-848bd0e9e738a4590049a223868dcfe6749a9154.tar.xz freeipa.git-848bd0e9e738a4590049a223868dcfe6749a9154.zip |
Password policy measurement units.
When filling password policy it may be unclear what value to enter because user may not remember field's measurement unit.
This patch adds support for declaring measurement units. It's done in field's/widget's spec by entering key for unit's string (which is in IPA.messages.measurement_units[key]).
Measurement units in table layout are displayed in parenthesis after label. It is to be consistent with some fields which have measurement unit integrated in label.
This patch defines measurement units for password policy's 'History size', 'Failure reset interval' and 'Lockout duration' fields.
https://fedorahosted.org/freeipa/ticket/2437
-rw-r--r-- | install/ui/field.js | 6 | ||||
-rw-r--r-- | install/ui/policy.js | 15 | ||||
-rw-r--r-- | install/ui/test/data/ipa_init.json | 4 | ||||
-rw-r--r-- | install/ui/user.js | 9 | ||||
-rw-r--r-- | install/ui/widget.js | 15 | ||||
-rw-r--r-- | ipalib/plugins/internal.py | 4 |
6 files changed, 44 insertions, 9 deletions
diff --git a/install/ui/field.js b/install/ui/field.js index 84ec0c4d..fb292ff2 100644 --- a/install/ui/field.js +++ b/install/ui/field.js @@ -35,6 +35,7 @@ IPA.field = function(spec) { that.param = spec.param || spec.name; that.label = spec.label; that.tooltip = spec.tooltip; + that.measurement_unit = spec.measurement_unit; that.formatter = spec.formatter; that.widget = null; @@ -348,8 +349,9 @@ IPA.field = function(spec) { that.set_widget_flags = function() { if (that.widget) { - if(that.label) that.widget.label = that.label; - if(that.title) that.widget.title = that.title; + if (that.label) that.widget.label = that.label; + if (that.title) that.widget.title = that.title; + if (that.measurement_unit) that.widget.measurement_unit = that.measurement_unit; that.widget.undo = that.undo; that.widget.writable = that.writable; that.widget.read_only = that.read_only; diff --git a/install/ui/policy.js b/install/ui/policy.js index 604664f1..acad0c8c 100644 --- a/install/ui/policy.js +++ b/install/ui/policy.js @@ -48,12 +48,21 @@ IPA.pwpolicy.entity = function(spec) { }, 'krbmaxpwdlife', 'krbminpwdlife', - 'krbpwdhistorylength', + { + name: 'krbpwdhistorylength', + measurement_unit: 'number_of_passwords' + }, 'krbpwdmindiffchars', 'krbpwdminlength', 'krbpwdmaxfailure', - 'krbpwdfailurecountinterval', - 'krbpwdlockoutduration', + { + name: 'krbpwdfailurecountinterval', + measurement_unit: 'seconds' + }, + { + name: 'krbpwdlockoutduration', + measurement_unit: 'seconds' + }, 'cospriority' ] }]}). diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json index 85ff9366..527d0916 100644 --- a/install/ui/test/data/ipa_init.json +++ b/install/ui/test/data/ipa_init.json @@ -138,6 +138,10 @@ "password": "Password", "username": "Username" }, + "measurement_units": { + "number_of_passwords": "number of passwords", + "seconds": "seconds" + }, "objects": { "aci": { "attribute": "Attribute" diff --git a/install/ui/user.js b/install/ui/user.js index 02f6f73e..24873ecf 100644 --- a/install/ui/user.js +++ b/install/ui/user.js @@ -149,7 +149,8 @@ IPA.user.entity = function(spec) { { name: 'krbpwdhistorylength', label: IPA.get_entity_param('pwpolicy', 'krbpwdhistorylength').label, - read_only: true + read_only: true, + measurement_unit: 'number_of_passwords' }, { name: 'krbpwdmindiffchars', @@ -169,12 +170,14 @@ IPA.user.entity = function(spec) { { name: 'krbpwdfailurecountinterval', label: IPA.get_entity_param('pwpolicy', 'krbpwdfailurecountinterval').label, - read_only: true + read_only: true, + measurement_unit: 'seconds' }, { name: 'krbpwdlockoutduration', label: IPA.get_entity_param('pwpolicy', 'krbpwdlockoutduration').label, - read_only: true + read_only: true, + measurement_unit: 'seconds' } ] }, diff --git a/install/ui/widget.js b/install/ui/widget.js index a55cc347..64547da7 100644 --- a/install/ui/widget.js +++ b/install/ui/widget.js @@ -36,6 +36,7 @@ IPA.widget = function(spec) { that.id = spec.id; that.label = spec.label; that.tooltip = spec.tooltip; + that.measurement_unit = spec.measurement_unit; that.entity = IPA.get_entity(spec.entity); //some old widgets still need it that.facet = spec.facet; @@ -2688,10 +2689,12 @@ IPA.table_layout = function(spec) { title: widget.label }).appendTo(tr); + var label_text = widget.label + that.get_measurement_unit_text(widget) + ':'; + $('<label/>', { name: widget.name, 'class': that.label_class, - text: widget.label+':' + text: label_text }).appendTo(td); if(widget.create_required) { @@ -2713,6 +2716,16 @@ IPA.table_layout = function(spec) { return table; }; + + that.get_measurement_unit_text = function(widget) { + + if (widget.measurement_unit) { + var unit = IPA.messages.measurement_units[widget.measurement_unit]; + return ' (' + unit + ')'; + } + return ''; + }; + return that; }; diff --git a/ipalib/plugins/internal.py b/ipalib/plugins/internal.py index a4d87b1d..eb48b3bf 100644 --- a/ipalib/plugins/internal.py +++ b/ipalib/plugins/internal.py @@ -273,6 +273,10 @@ class i18n_messages(Command): "password": _("Password"), "username": _("Username"), }, + "measurement_units": { + "number_of_passwords": _("number of passwords"), + "seconds": _("seconds"), + }, "objects": { "aci": { "attribute": _("Attribute"), |