summaryrefslogtreecommitdiffstats
path: root/install/ui/details.js
diff options
context:
space:
mode:
authorEndi S. Dewata <edewata@redhat.com>2011-05-27 12:04:20 -0500
committerAdam Young <ayoung@redhat.com>2011-05-27 21:38:26 -0400
commit6304d9173c16e082d6844b329987680b85086cb7 (patch)
tree957c54e65b73f9f75f3e789f7f4804df1ef89c14 /install/ui/details.js
parente91aa64d4ae6d85284c3b062f5ba03a8da27f547 (diff)
downloadfreeipa-6304d9173c16e082d6844b329987680b85086cb7.tar.gz
freeipa-6304d9173c16e082d6844b329987680b85086cb7.tar.xz
freeipa-6304d9173c16e082d6844b329987680b85086cb7.zip
Fixed problem deleting value in text field.
Previously deleting a value in a text field did not work because the field is not included in the modify operation when the value is empty. The details facet's update() method has been modified to update only dirty fields. The section lists in details facet and dialog have been converted into ordered maps. Ticket #1256
Diffstat (limited to 'install/ui/details.js')
-rw-r--r--install/ui/details.js119
1 files changed, 63 insertions, 56 deletions
diff --git a/install/ui/details.js b/install/ui/details.js
index 4aa864fed..fbf2ff52d 100644
--- a/install/ui/details.js
+++ b/install/ui/details.js
@@ -269,7 +269,7 @@ IPA.details_facet = function(spec) {
that.label = (IPA.messages && IPA.messages.facets && IPA.messages.facets.details) || spec.label;
that.facet_group = spec.facet_group || 'settings';
- that.sections = [];
+ that.sections = $.ordered_map();
that.__defineGetter__("entity_name", function(){
return that._entity_name;
@@ -278,14 +278,15 @@ IPA.details_facet = function(spec) {
that.__defineSetter__("entity_name", function(entity_name){
that._entity_name = entity_name;
- for (var i=0; i<that.sections.length; i++) {
- that.sections[i].entity_name = entity_name;
+ var sections = that.sections.values;
+ for (var i=0; i<sections.length; i++) {
+ sections[i].entity_name = entity_name;
}
});
that.add_section = function(section) {
section.entity_name = that.entity_name;
- that.sections.push(section);
+ that.sections.put(section.name, section);
return section;
};
@@ -304,8 +305,9 @@ IPA.details_facet = function(spec) {
that.facet_init();
- for (var i=0; i<that.sections.length; i++) {
- var section = that.sections[i];
+ var sections = that.sections.values;
+ for (var i=0; i<sections.length; i++) {
+ var section = sections[i];
section.init();
}
};
@@ -375,8 +377,9 @@ IPA.details_facet = function(spec) {
that.expand_button.css('display', 'none');
that.collapse_button.css('display', 'inline');
- for (var i=0; i<that.sections.length; i++) {
- var section = that.sections[i];
+ var sections = that.sections.values;
+ for (var i=0; i<sections.length; i++) {
+ var section = sections[i];
that.toggle(section, true);
}
@@ -393,8 +396,9 @@ IPA.details_facet = function(spec) {
that.expand_button.css('display', 'inline');
that.collapse_button.css('display', 'none');
- for (var i=0; i<that.sections.length; i++) {
- var section = that.sections[i];
+ var sections = that.sections.values;
+ for (var i=0; i<sections.length; i++) {
+ var section = sections[i];
that.toggle(section, false);
}
@@ -409,8 +413,9 @@ IPA.details_facet = function(spec) {
'name': 'details'
}).appendTo(container);
- for (var i = 0; i < that.sections.length; ++i) {
- var section = that.sections[i];
+ var sections = that.sections.values;
+ for (var i=0; i<sections.length; i++) {
+ var section = sections[i];
var header = $('<h2/>', {
name: section.name,
@@ -450,8 +455,9 @@ IPA.details_facet = function(spec) {
var details = $('div[name=details]', that.container);
- for (var i = 0; i < that.sections.length; ++i) {
- var section = that.sections[i];
+ var sections = that.sections.values;
+ for (var i=0; i<sections.length; i++) {
+ var section = sections[i];
var div = $('div.details-section[name='+section.name+']', that.container);
@@ -496,8 +502,9 @@ IPA.details_facet = function(spec) {
that.is_dirty = function() {
- for (var i=0; i<that.sections.length; i++) {
- if (that.sections[i].is_dirty()) {
+ var sections = that.sections.values;
+ for (var i=0; i<sections.length; i++) {
+ if (sections[i].is_dirty()) {
return true;
}
}
@@ -506,16 +513,17 @@ IPA.details_facet = function(spec) {
that.load = function (record) {
that.record = record;
- for (var i=0; i<that.sections.length; i++) {
- var section = that.sections[i];
+ var sections = that.sections.values;
+ for (var i=0; i<sections.length; i++) {
+ var section = sections[i];
section.load(record);
}
};
that.reset = function() {
-
- for (var i=0; i<that.sections.length; i++) {
- var section = that.sections[i];
+ var sections = that.sections.values;
+ for (var i=0; i<sections.length; i++) {
+ var section = sections[i];
section.reset();
}
};
@@ -539,21 +547,35 @@ IPA.details_facet = function(spec) {
on_fail(xhr, text_status, error_thrown);
}
+ var args = that.get_primary_key();
+
+ var command = IPA.command({
+ entity: entity_name,
+ method: 'mod',
+ args: args,
+ options: {
+ all: true,
+ rights: true
+ },
+ on_success: on_success,
+ on_error: on_error
+ });
+
var values;
- var modlist = {'all': true, 'setattr': [], 'addattr': [], 'rights': true};
- var attrs_wo_option = {};
- for (var i=0; i<that.sections.length; i++) {
- var section = that.sections[i];
+ var sections = that.sections.values;
+ for (var i=0; i<sections.length; i++) {
+ var section = sections[i];
- if (section.save){
- section.save(modlist);
+ if (section.save) {
+ section.save(command.options);
continue;
}
var section_fields = section.fields.values;
for (var j=0; j<section_fields.length; j++) {
var field = section_fields[j];
+ if (!field.is_dirty()) continue;
values = field.save();
if (!values) continue;
@@ -562,41 +584,26 @@ IPA.details_facet = function(spec) {
if (param_info) {
if (param_info['primary_key']) continue;
if (values.length === 1) {
- modlist[field.name] = values[0];
- } else if (values.length > 1){
- if (field.join) {
- modlist[field.name] = values.join(',');
- } else {
- modlist[field.name] = values;
- }
- } else if (param_info['multivalue']){
- modlist[field.name] = [];
+ command.set_option(field.name, values[0]);
+ } else if (field.join) {
+ command.set_option(field.name, values.join(','));
+ } else {
+ command.set_option(field.name, values);
}
+
} else {
- if (values.length) attrs_wo_option[field.name] = values;
+ if (values.length) {
+ command.add_option('setattr', field.name+'='+values[0]);
+ } else {
+ command.add_option('setattr', field.name+'=');
+ }
+ for (var k=1; k<values.length; k++) {
+ command.add_option('addattr', field.name+'='+values[k]);
+ }
}
}
}
- for (var attr in attrs_wo_option) {
- values = attrs_wo_option[attr];
- modlist['setattr'].push(attr + '=' + values[0]);
- for (var k = 1; k < values.length; ++k){
- modlist['addattr'].push(attr + '=' + values[k]);
- }
- }
-
- var args = that.get_primary_key();
-
- var command = IPA.command({
- entity: entity_name,
- method: 'mod',
- args: args,
- options: modlist,
- on_success: on_success,
- on_error: on_error
- });
-
//alert(JSON.stringify(command.to_json()));
command.execute();