On 12/9/2010 3:17 PM, Endi Sukma Dewata wrote:
Please review the attached patch. This should fix this bug:
https://fedorahosted.org/freeipa/ticket/462
The user details facet has been modified such that when the account
is activated/deactivated the page will be reloaded.
Some methods in the framework have been changed:
- The ipa_widget.clear() has been removed because it can be replaced
by existing reset().
- The ipa_widget.set_values() has been renamed into update().
Forgot to include the latest changes. Attached is a new patch. Thanks!
--
Endi S. Dewata
From 1f9b00ca8f04818e7da3f37298185f8280a0e60f Mon Sep 17 00:00:00 2001
From: Endi S. Dewata <edew...@redhat.com>
Date: Thu, 9 Dec 2010 14:20:40 -0600
Subject: [PATCH] Account activation adjustment
The user details facet has been modified such that when the account
is activated/deactivated the page will be reloaded.
Some methods in the framework have been changed:
- The ipa_widget.clear() has been removed because it can be replaced
by existing reset().
- The ipa_widget.set_values() has been renamed into update().
---
install/static/add.js | 2 +-
install/static/associate.js | 2 +-
install/static/details.js | 34 +++++---
install/static/hbac.js | 16 ++--
install/static/test/details_tests.js | 4 +-
install/static/user.js | 136 +++++++++++++++++++---------------
install/static/widget.js | 68 +++++++-----------
7 files changed, 135 insertions(+), 127 deletions(-)
diff --git a/install/static/add.js b/install/static/add.js
index f2eebb8ac2992a5332f6aa929265b5c00898fb69..0048f4b105a2dcc38526a70a28e409b78c750aca 100644
--- a/install/static/add.js
+++ b/install/static/add.js
@@ -57,7 +57,7 @@ function ipa_add_dialog(spec) {
var facet = entity.get_facet('search');
var table = facet.table;
table.refresh();
- that.clear();
+ that.reset();
}
);
});
diff --git a/install/static/associate.js b/install/static/associate.js
index 540b1a80f7ee36cbf647ecfdab83be2ad457a5b9..1e6d6b908116aeca75aff01e4922b27ee7e1048b 100644
--- a/install/static/associate.js
+++ b/install/static/associate.js
@@ -364,7 +364,7 @@ function ipa_association_table_widget(spec) {
that.reset();
};
- that.set_values = function(values) {
+ that.update = function() {
that.empty();
diff --git a/install/static/details.js b/install/static/details.js
index fcf04ffd1041ec5074e57e3f17c9076b5cd1a9c6..853635b13a67511530c05f2dd16b32786da27f68 100644
--- a/install/static/details.js
+++ b/install/static/details.js
@@ -40,13 +40,13 @@ function ipa_details_field(spec) {
that.load = spec.load || load;
that.save = spec.save || save;
- function load(result) {
- that.record = result;
- that.values = result[that.name];
+ function load(record) {
+ that.record = record;
+ that.values = record[that.name];
that.reset();
}
- that.set_values = function(values) {
+ that.update = function() {
if (!that.record) return;
@@ -332,20 +332,28 @@ function ipa_details_list_section(spec){
}
};
- // This is to allow declarative style programming for details
- function input(spec){
- that.create_field(spec);
- return that;
- }
-
- that.input = input;
-
return that;
}
// shorthand notation used for declarative definitions of details pages
function ipa_stanza(spec) {
- return ipa_details_list_section(spec);
+
+ spec = spec || {};
+
+ var that = ipa_details_list_section(spec);
+
+ // This is to allow declarative style programming for details
+ that.input = function(spec) {
+ that.create_field(spec);
+ return that;
+ };
+
+ that.custom_input = function(input) {
+ that.add_field(input);
+ return that;
+ };
+
+ return that;
}
function ipa_details_facet(spec) {
diff --git a/install/static/hbac.js b/install/static/hbac.js
index 213dd3e4804e55de26232a19ad3c2acc7f89ae94..d0188fa5a7d00593441e61135798f8687462b552 100755
--- a/install/static/hbac.js
+++ b/install/static/hbac.js
@@ -806,25 +806,25 @@ function ipa_hbac_accesstime_widget(spec) {
}
};
- that.load = function(result) {
+ that.load = function(record) {
- that.values = result[that.name] || [];
+ that.values = record[that.name] || [];
that.reset();
};
- that.set_values = function(values) {
+ that.update = function() {
- that.set_radio_value(that.container, values && values.length ? '' : 'all');
+ that.set_category(that.container, that.values && that.values.length ? '' : 'all');
that.table.tbody.empty();
- for (var i=0; values && i<values.length; i++) {
+ for (var i=0; that.values && i<that.values.length; i++) {
var record = {};
- record[that.name] = values[i];
+ record[that.name] = that.values[i];
that.table.add_record(record);
}
};
- that.set_radio_value = function(container, value) {
+ that.set_category = function(container, value) {
$('input[name="'+that.name+'"][value="'+value+'"]', that.container).get(0).checked = true;
};
@@ -903,7 +903,7 @@ function ipa_hbac_accesstime_widget(spec) {
dialog.add_button('Add', function() {
add(
- function() { dialog.clear(); }
+ function() { dialog.reset(); }
);
});
diff --git a/install/static/test/details_tests.js b/install/static/test/details_tests.js
index 3dee5357f7e48a77bd1ed065a48fece33ff7ea11..141b51238cb027893e6b72e8578c21594a8131dd 100644
--- a/install/static/test/details_tests.js
+++ b/install/static/test/details_tests.js
@@ -34,7 +34,7 @@ test("Testing ipa_details_section.create().", function() {
}
);
- var section = ipa_details_list_section({name:'IDIDID', label:'NAMENAMENAME'}).
+ var section = ipa_stanza({name:'IDIDID', label:'NAMENAMENAME'}).
input({name:'cn'}).
input({name:'description'}).
input({name:'number'});
@@ -270,7 +270,7 @@ test("Testing _ipa_create_text_input() read only .", function(){
test("Testing ipa_details_section_setup again()",function(){
- var section = ipa_details_list_section({name: 'IDIDID', label: 'NAMENAMENAME'}).
+ var section = ipa_stanza({name: 'IDIDID', label: 'NAMENAMENAME'}).
input({name:'cn', label:'Entity Name'}).
input({name:'description', label:'Description'}).
input({name:'number', label:'Entity ID'});
diff --git a/install/static/user.js b/install/static/user.js
index 3e1174ca61003447403a360c0b972ea40dec1de4..f1d8311caafa6d7b78825b193ab38ce8fb783c76 100644
--- a/install/static/user.js
+++ b/install/static/user.js
@@ -21,23 +21,36 @@
/* REQUIRES: ipa.js, details.js, search.js, add.js, entity.js */
function ipa_user(){
+
var that = ipa_entity({
name: 'user'
});
+
that.init = function() {
+
+ that.create_association({
+ 'name': 'group',
+ 'associator': 'serial'
+ });
+
+ that.create_association({
+ 'name': 'netgroup',
+ 'associator': 'serial'
+ });
+
var search_facet = ipa_search_facet({
'name': 'search',
'label': 'Search',
entity_name: that.name
});
+ that.add_facet(search_facet);
+
search_facet.create_column({name:'cn'});
search_facet.create_column({name:'uid'});
search_facet.create_column({name:'uidnumber'});
search_facet.create_column({name:'mail'});
search_facet.create_column({name:'telephonenumber'});
search_facet.create_column({name:'title'});
- that.add_facet(search_facet);
-
that.add_facet(details_facet({name:'details',label:'Details'}));
@@ -74,7 +87,7 @@ function ipa_user(){
input({name:'displayname'}).
input({name:'initials'}),
ipa_stanza({name:'account', label:'Account Details'}).
- input({name:'nsaccountlock', load:user_status_load}).
+ custom_input(user_status_widget({name:'nsaccountlock'})).
input({name:'uid'}).
input({name:'userpassword', load: user_password_load}).
input({name:'uidnumber'}).
@@ -107,70 +120,73 @@ function ipa_user(){
}
IPA.add_entity(ipa_user());
-ipa_entity_set_association_definition('user', {
- 'group': { associator: 'serial' },
- 'netgroup': { associator: 'serial' }
-});
-
/* ATTRIBUTE CALLBACKS */
-function user_status_load(result) {
-
- var that = this;
-
- $('dd', that.container).remove();
-
- var dd = ipa_create_first_dd(this.name);
- dd.appendTo(that.container);
-
- var lock_field = 'nsaccountlock';
-
- var locked = result[lock_field] &&
- result[lock_field][0].toLowerCase() === 'true';
- var title = "Active";
- var text = "Active: Click to Deactivate";
- if (locked) {
- title = "Inactive";
- text = "Inactive: Click to Activate";
- }
-
- function on_lock_win(data, textStatus, xhr){
- alert(data.result.summary);
- $.bbq.pushState('user-facet','search');
- return false;
- }
-
- function on_lock_fail(data, textStatus, xhr){
- $("#userstatuslink").text = "Error changing account status";
- return false;
- }
-
- var status_field =
- $('<a/>',
- {
- id: 'userstatuslink',
- title: title,
- href: "jslink",
- text: text,
- click: function() {
- var jobj = $(this);
- var val = jobj.attr('title');
- var pkey = $.bbq.getState('user-pkey');
- var command = 'user_enable';
- if (val == 'Active') {
- command = 'user_disable';
+function user_status_widget(spec) {
+
+ spec = spec || {};
+
+ var that = ipa_widget(spec);
+
+ that.update = function() {
+
+ if (!that.record) return;
+
+ $('dd', that.container).remove();
+
+ var dd = ipa_create_first_dd(this.name);
+ dd.appendTo(that.container);
+
+ var lock_field = 'nsaccountlock';
+
+ var locked = that.record[lock_field] &&
+ that.record[lock_field][0].toLowerCase() === 'true';
+ var title = "Active";
+ var text = "Active: Click to Deactivate";
+ if (locked) {
+ title = "Inactive";
+ text = "Inactive: Click to Activate";
+ }
+
+ function on_lock_win(data, textStatus, xhr){
+ var entity = IPA.get_entity(that.entity_name);
+ var facet = entity.get_facet('details');
+ facet.refresh();
+ return false;
+ }
+
+ function on_lock_fail(data, textStatus, xhr){
+ $("#userstatuslink").text = "Error changing account status";
+ return false;
+ }
+
+ var status_field =
+ $('<a/>',
+ {
+ id: 'userstatuslink',
+ title: title,
+ href: "jslink",
+ text: text,
+ click: function() {
+ var jobj = $(this);
+ var val = jobj.attr('title');
+ var pkey = $.bbq.getState('user-pkey');
+ var command = 'user_enable';
+ if (val == 'Active') {
+ command = 'user_disable';
+ }
+ ipa_cmd(command, [pkey], {}, on_lock_win,on_lock_fail);
+
+ return (false);
}
- ipa_cmd(command, [pkey], {}, on_lock_win,on_lock_fail);
+ });
+ status_field.appendTo(dd);
+ };
- return (false);
- }
- });
- status_field.appendTo(dd);
+ return that;
}
-
-
function resetpwd_on_click(){
function reset_password(new_password){
diff --git a/install/static/widget.js b/install/static/widget.js
index 1bdb0d4ff52255fe6ee91317e91fbab8c11787fe..708be74485eafbd6c9f7108c50f161da90723489 100755
--- a/install/static/widget.js
+++ b/install/static/widget.js
@@ -42,7 +42,7 @@ function ipa_widget(spec) {
that.setup = spec.setup || setup;
that.load = spec.load || load;
that.save = spec.save || save;
- that.clear = spec.clear || clear;
+ that.update = spec.update || update;
that.__defineGetter__("entity_name", function(){
return that._entity_name;
@@ -67,15 +67,22 @@ function ipa_widget(spec) {
}
function load(record) {
+ that.record = record;
+ that.reset();
+ }
+
+ that.reset = function() {
+ that.hide_undo();
+ that.update();
+ };
+
+ function update() {
}
function save() {
return [];
}
- function clear() {
- }
-
that.is_dirty = function() {
var values = that.save();
@@ -90,14 +97,6 @@ function ipa_widget(spec) {
return false;
};
- that.set_values = function(values) {
- };
-
- that.reset = function() {
- that.hide_undo();
- that.set_values(that.values);
- };
-
that.get_undo = function() {
return $('span[name="undo"]', that.container);
};
@@ -189,18 +188,15 @@ function ipa_text_widget(spec) {
}
};
- that.set_values = function(values) {
+ that.update = function() {
+ var value = that.values && that.values.length ? that.values[0] : '';
if (that.read_only) {
- $('label[name="'+that.name+'"]', that.container).val(values[0]);
+ $('label[name="'+that.name+'"]', that.container).val(value);
} else {
- $('input[name="'+that.name+'"]', that.container).val(values[0]);
+ $('input[name="'+that.name+'"]', that.container).val(value);
}
};
- that.clear = function() {
- that.set_values(['']);
- };
-
return that;
}
@@ -251,15 +247,11 @@ function ipa_checkbox_widget(spec) {
return [value];
};
- that.set_values = function(values) {
- var value = values && values.length ? values[0] : false;
+ that.update = function() {
+ var value = that.values && that.values.length ? that.values[0] : false;
$('input[name="'+that.name+'"]', that.container).get(0).checked = value;
};
- that.clear = function() {
- $('input[name="'+that.name+'"]', that.container).get(0).checked = false;
- };
-
return that;
}
@@ -320,20 +312,15 @@ function ipa_radio_widget(spec) {
return [input.val()];
};
- that.set_values = function(values) {
- if (values.length) {
- var input = $('input[name="'+that.name+'"][value="'+values[0]+'"]', that.container);
+ that.update = function() {
+ if (that.values && that.values.length) {
+ var input = $('input[name="'+that.name+'"][value="'+that.values[0]+'"]', that.container);
if (input.length) {
input.get(0).checked = true;
- } else {
- that.clear();
+ return;
}
- } else {
- that.clear();
}
- };
- that.clear = function() {
$('input[name="'+that.name+'"]', that.container).each(function() {
var input = this;
input.checked = false;
@@ -397,12 +384,9 @@ function ipa_textarea_widget(spec) {
return [value];
};
- that.set_values = function(values) {
- $('textarea[name="'+that.name+'"]', that.container).val(values[0]);
- };
-
- that.clear = function() {
- that.set_values(['']);
+ that.update = function() {
+ var value = that.values && that.values.length ? that.values[0] : '';
+ $('textarea[name="'+that.name+'"]', that.container).val(value);
};
return that;
@@ -930,10 +914,10 @@ function ipa_dialog(spec) {
that.container.remove();
};
- that.clear = function() {
+ that.reset = function() {
for (var i=0; i<that.fields.length; i++) {
var field = that.fields[i];
- field.clear();
+ field.reset();
}
};
--
1.6.6.1
_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel