summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Young <ayoung@redhat.com>2011-07-25 12:15:14 -0400
committerAdam Young <ayoung@redhat.com>2011-07-28 14:17:25 -0400
commitb36df6e9b9c1104d37fe14782a7e21e57097a7c0 (patch)
tree1eca6d4b0f7127b01f2e366919981ed90090ee95
parent264ed38fa206537d7b160ea5d7586d071575c610 (diff)
downloadfreeipa-b36df6e9b9c1104d37fe14782a7e21e57097a7c0.zip
freeipa-b36df6e9b9c1104d37fe14782a7e21e57097a7c0.tar.gz
freeipa-b36df6e9b9c1104d37fe14782a7e21e57097a7c0.tar.xz
removing setters setup and init
change widget and widget unit tests to hold on to entity, not entity name. Replacing entity_name with entity.name in most places. The one exception is columns for table_widget. Widgets that refer to other entities have to have late resolution of the entity object, due to circular dependencies. cleanup entity assignment. removed template and layout, merged setup into create adder dialogs adjust height for external removed init from widget, isection, association, facet, host and service Make unit tests use factory. fix functional tests to click find link correctly. tweak to activation test, but still broken. moved initialization code to the end use --all for hbacrule find, so the type shows up now fixed dns exception code and exception handling for get_entity replace metadata look up with value from entity. fixed author lines removed duplicate columns in managed by facets. tweak to nav fix in order to initialize tab. more defensive code update metadata for true false one line init for entity_name in widget move init code to end of constructor functions moved constants to start of function for adder_dialog external fields for dialogs initialized at dialog creation sudo sections: move add fields and columns to widget definition. The parameter validation in IPA.column ...This is precondition checking. Note that it merely throws an exception if the entity_name is not set. I want this stuff at the top of the function so that it is obvious to people looking to use them what is required. I added a comment to make this clear, but I'd like to keep precondition checking at the top of the function. decreased the scope of the pkey_name and moved the initiailzation fof columns into the setup_column function for association_tables return false at the end of click handler removed blank labels in sudo command section fix radio buttons for sudo category fixed table side for adder dialogs with external fields comments for future direction with add_columns https://fedorahosted.org/freeipa/ticket/1451 https://fedorahosted.org/freeipa/ticket/1462 https://fedorahosted.org/freeipa/ticket/1493 https://fedorahosted.org/freeipa/ticket/1497 https://fedorahosted.org/freeipa/ticket/1532 https://fedorahosted.org/freeipa/ticket/1534
-rw-r--r--install/ui/aci.js47
-rw-r--r--install/ui/add.js111
-rw-r--r--install/ui/association.js275
-rw-r--r--install/ui/automount.js32
-rwxr-xr-xinstall/ui/certificate.js9
-rw-r--r--install/ui/details.js149
-rw-r--r--install/ui/dialog.js168
-rw-r--r--install/ui/dns.js100
-rw-r--r--install/ui/entitle.js3
-rw-r--r--install/ui/entity.js93
-rw-r--r--install/ui/hbac.js461
-rw-r--r--install/ui/host.js80
-rw-r--r--install/ui/ipa.js20
-rwxr-xr-xinstall/ui/jquery.ordered-map.js9
-rw-r--r--install/ui/navigation.js15
-rw-r--r--install/ui/rule.js89
-rw-r--r--install/ui/search.js42
-rw-r--r--install/ui/service.js70
-rw-r--r--install/ui/sudo.js783
-rw-r--r--install/ui/test/aci_tests.js19
-rw-r--r--install/ui/test/association_tests.js11
-rw-r--r--install/ui/test/data/ipa_init.json101
-rw-r--r--install/ui/test/details_tests.js30
-rw-r--r--install/ui/test/entity_tests.js3
-rw-r--r--install/ui/test/navigation_tests.js6
-rw-r--r--install/ui/test/widget_tests.js133
-rw-r--r--install/ui/user.js11
-rw-r--r--install/ui/widget.js197
-rw-r--r--ipalib/plugins/internal.py2
29 files changed, 1191 insertions, 1878 deletions
diff --git a/install/ui/aci.js b/install/ui/aci.js
index 54050c7..9c1188a 100644
--- a/install/ui/aci.js
+++ b/install/ui/aci.js
@@ -222,9 +222,6 @@ IPA.attributes_widget = function(spec) {
var id = spec.name;
- that.setup = function() {
- };
-
that.create = function(container) {
that.container = container;
@@ -366,31 +363,26 @@ IPA.rights_widget = function(spec) {
var that = IPA.checkboxes_widget(spec);
that.rights = ['write', 'add', 'delete'];
-
- that.init = function() {
-
- that.widget_init();
-
- for (var i=0; i<that.rights.length; i++) {
- var right = that.rights[i];
- that.add_option({label: right, value: right});
- }
- };
+ for (var i=0; i<that.rights.length; i++) {
+ var right = that.rights[i];
+ that.add_option({label: right, value: right});
+ }
return that;
};
-IPA.rights_section = function() {
+IPA.rights_section = function(spec) {
- var spec = {
- name: 'rights',
- label: IPA.messages.objects.permission.rights
- };
+ spec = spec || {};
+
+ spec.name = 'rights';
+ spec.label = IPA.messages.objects.permission.rights;
var that = IPA.details_section(spec);
that.add_field(IPA.rights_widget({
+ entity: that.entity,
name: 'permissions',
join: true
}));
@@ -407,8 +399,13 @@ IPA.target_section = function(spec) {
that.section = true;
that.undo = typeof spec.undo == 'undefined' ? true : spec.undo;
- that.filter_text = IPA.text_widget({name: 'filter', undo: that.undo});
+ that.filter_text = IPA.text_widget({
+ name: 'filter',
+ undo: that.undo,
+ entity: spec.entity
+ });
that.subtree_textarea = IPA.textarea_widget({
+ entity: spec.entity,
name: 'subtree',
cols: 30, rows: 1,
undo: that.undo
@@ -419,9 +416,15 @@ IPA.target_section = function(spec) {
other_field: 'cn',
undo: that.undo
});
- that.type_select = IPA.select_widget({name: 'type', undo: that.undo});
+ that.type_select = IPA.select_widget({
+ name: 'type',
+ undo: that.undo
+ });
that.attribute_table = IPA.attributes_widget({
- name: 'attrs', undo: that.undo});
+ entity: spec.entity,
+ name: 'attrs',
+ undo: that.undo
+ });
that.add_field(that.filter_text);
that.add_field(that.subtree_textarea);
@@ -542,7 +545,7 @@ IPA.target_section = function(spec) {
name: 'type'
}).appendTo(dd);
that.type_select.create(span);
- that.type_select.setup(span);
+
span = $('<dd/>', {
name: 'attrs',
diff --git a/install/ui/add.js b/install/ui/add.js
index 614a209..988ea8f 100644
--- a/install/ui/add.js
+++ b/install/ui/add.js
@@ -32,82 +32,30 @@ IPA.add_dialog = function (spec) {
that.method = spec.method || 'add';
that.pre_execute_hook = spec.pre_execute_hook;
- function show_edit_page(entity_name,result){
- var pkey_name = IPA.metadata.objects[entity_name].primary_key;
+ function show_edit_page(entity,result){
+ var pkey_name = entity.metadata.primary_key;
var pkey = result[pkey_name];
if (pkey instanceof Array) {
pkey = pkey[0];
}
- IPA.nav.show_page(that.entity_name, 'default', pkey);
+ IPA.nav.show_entity_page(that.entity, 'default', pkey);
}
that.show_edit_page = spec.show_edit_page || show_edit_page;
- that.init = function() {
- that.add_button(IPA.messages.buttons.add, function() {
- var record = {};
- that.save(record);
- that.add(
- record,
- function(data, text_status, xhr) {
- var facet = IPA.current_entity.get_facet();
- var table = facet.table;
- table.refresh();
- that.close();
- }
- );
- });
-
-
- that.add_button(IPA.messages.buttons.add_and_add_another, function() {
- var record = {};
- that.save(record);
- that.add(
- record,
- function(data, text_status, xhr) {
- var facet = IPA.current_entity.get_facet();
- var table = facet.table;
- table.refresh();
- that.reset();
- }
- );
- });
-
- that.add_button(IPA.messages.buttons.add_and_edit, function() {
- var record = {};
- that.save(record);
- that.add(
- record,
- function(data, text_status, xhr) {
- that.close();
-
- var entity_name = that.entity_name;
- var result = data.result.result;
- that.show_edit_page(entity_name,result);
- }
- );
- });
-
- that.add_button(IPA.messages.buttons.cancel, function() {
- that.close();
- });
-
- that.dialog_init();
- };
-
that.add = function(record, on_success, on_error) {
var field, value, pkey_prefix;
- var pkey_name = IPA.metadata.objects[that.entity_name].primary_key;
+ var pkey_name = that.entity.metadata.primary_key;
var command = IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: that.method,
on_success: on_success,
on_error: on_error
});
- pkey_prefix = IPA.get_entity(that.entity_name).get_primary_key_prefix();
+ pkey_prefix = that.entity.get_primary_key_prefix();
for (var h=0; h<pkey_prefix.length; h++) {
command.add_arg(pkey_prefix[h]);
@@ -168,7 +116,52 @@ IPA.add_dialog = function (spec) {
};
- that.add_dialog_init = that.init;
+ /*dialog initialization*/
+ that.add_button(IPA.messages.buttons.add, function() {
+ var record = {};
+ that.save(record);
+ that.add(
+ record,
+ function(data, text_status, xhr) {
+ var facet = IPA.current_entity.get_facet();
+ var table = facet.table;
+ table.refresh();
+ that.close();
+ }
+ );
+ });
+
+ that.add_button(IPA.messages.buttons.add_and_add_another, function() {
+ var record = {};
+ that.save(record);
+ that.add(
+ record,
+ function(data, text_status, xhr) {
+ var facet = IPA.current_entity.get_facet();
+ var table = facet.table;
+ table.refresh();
+ that.reset();
+ }
+ );
+ });
+
+ that.add_button(IPA.messages.buttons.add_and_edit, function() {
+ var record = {};
+ that.save(record);
+ that.add(
+ record,
+ function(data, text_status, xhr) {
+ that.close();
+ var result = data.result.result;
+ that.show_edit_page(that.entity,result);
+ }
+ );
+ });
+
+ that.add_button(IPA.messages.buttons.cancel, function() {
+ that.close();
+ });
+
return that;
};
diff --git a/install/ui/association.js b/install/ui/association.js
index 9f315a0..83b7a39 100644
--- a/install/ui/association.js
+++ b/install/ui/association.js
@@ -30,7 +30,7 @@ IPA.associator = function (spec) {
var that = {};
- that.entity_name = spec.entity_name;
+ that.entity = spec.entity;
that.pkey = spec.pkey;
that.other_entity = spec.other_entity;
@@ -72,7 +72,7 @@ IPA.serial_associator = function(spec) {
var args = [value];
var options = {};
- options[that.entity_name] = that.pkey;
+ options[that.entity.name] = that.pkey;
var command = IPA.command({
entity: that.other_entity,
@@ -123,7 +123,7 @@ IPA.bulk_associator = function(spec) {
options[that.other_entity] = value;
var command = IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: that.method,
args: args,
options: options,
@@ -145,42 +145,34 @@ IPA.bulk_associator = function(spec) {
IPA.association_adder_dialog = function (spec) {
spec = spec || {};
+ /*
+ TODO: columns map in IPA.adder_dialog should be removed and add_column()
+ should be modified to add the column directly into the available_table
+ and selected_table. This way IPA.association_adder_dialog can call
+ create_column() from the initialization area, no need to modify the
+ parameters.
+ */
+ default_columns(spec);
var that = IPA.adder_dialog(spec);
- that.entity_name = spec.entity_name;
+ that.entity = spec.entity;
that.pkey = spec.pkey;
that.other_entity = spec.other_entity;
that.attribute_member = spec.attribute_member;
- that.init = function() {
- if (!that.columns.length) {
- var pkey_name = IPA.metadata.objects[that.other_entity].primary_key;
- that.create_column({
- name: pkey_name,
- label: IPA.metadata.objects[that.other_entity].label,
- primary_key: true,
- width: '200px'
- });
- }
-
- /* FIXME: event not firing? */
- $('input[name=hidememb]', that.container).click(that.search);
-
- that.adder_dialog_init();
- };
-
that.search = function() {
function on_success(data, text_status, xhr) {
var results = data.result;
that.clear_available_values();
- var pkey_attr = IPA.metadata.objects[that.entity_name].primary_key;
+ var pkey_attr = that.entity.metadata.primary_key;
for (var i=0; i<results.count; i++){
var result = results.result[i];
- if (result[pkey_attr] != spec.pkey)
+ if (result[pkey_attr] != spec.pkey){
that.add_available_value(result);
+ }
}
}
@@ -203,7 +195,7 @@ IPA.association_adder_dialog = function (spec) {
var relationship = relationships[other_attribute_member];
if (relationship) {
- var param_name = relationship[2] + that.entity_name;
+ var param_name = relationship[2] + that.entity.name;
options[param_name] = that.pkey;
}
}
@@ -217,8 +209,18 @@ IPA.association_adder_dialog = function (spec) {
}).execute();
};
- that.association_adder_dialog_init = that.init;
- that.association_adder_dialog_setup = that.setup;
+ /*initialization*/
+ function default_columns(spec){
+ if (!spec.columns) {
+ var pkey_name = IPA.metadata.objects[spec.other_entity].primary_key;
+ spec.columns = [{
+ name: pkey_name,
+ label: IPA.metadata.objects[spec.other_entity].label,
+ primary_key: true,
+ width: '200px'
+ }];
+ }
+ }
return that;
};
@@ -233,7 +235,7 @@ IPA.association_deleter_dialog = function (spec) {
var that = IPA.deleter_dialog(spec);
- that.entity_name = spec.entity_name;
+ that.entity = spec.entity;
that.pkey = spec.pkey;
that.other_entity = spec.other_entity;
that.values = spec.values;
@@ -247,13 +249,13 @@ IPA.association_deleter_dialog = function (spec) {
that.execute = function() {
var associator = that.associator({
- 'entity_name': that.entity_name,
- 'pkey': that.pkey,
- 'other_entity': that.other_entity,
- 'values': that.values,
- 'method': that.method,
- 'on_success': that.on_success,
- 'on_error': that.on_error
+ entity: that.entity,
+ pkey: that.pkey,
+ other_entity: that.other_entity,
+ values: that.values,
+ method: that.method,
+ on_success: that.on_success,
+ on_error: that.on_error
});
associator.execute();
@@ -280,6 +282,7 @@ IPA.association_config = function (spec) {
IPA.association_table_widget = function (spec) {
spec = spec || {};
+ spec.managed_entity_name = spec.other_entity;
var that = IPA.table_widget(spec);
@@ -301,24 +304,12 @@ IPA.association_table_widget = function (spec) {
};
that.create_adder_column = function(spec) {
+ spec.entity_name = that.other_entity;
var column = IPA.column(spec);
that.add_adder_column(column);
return column;
};
- /*this is duplicated in the facet... should be unified*/
- var i;
- if (spec.columns){
- for (i = 0; i < spec.columns.length; i+= 1){
- that.create_column(spec.columns[i]);
- }
- }
- if (spec.adder_columns){
- for (i = 0; i < spec.adder_columns.length; i+= 1){
- that.create_adder_column(spec.adder_columns[i]);
- }
- }
-
that.create = function(container) {
var column;
@@ -326,16 +317,17 @@ IPA.association_table_widget = function (spec) {
// create a column if none defined
if (!that.columns.length) {
that.create_column({
- 'name': that.name,
- 'label': IPA.metadata.objects[that.other_entity].label,
- 'primary_key': true
+ name: that.name,
+ label: IPA.metadata.objects[that.other_entity].label,
+ entity_name: that.other_entity,
+ primary_key: true
});
}
var columns = that.columns.values;
for (var i=0; i<columns.length; i++) {
column = columns[i];
- column.entity_name = that.other_entity;
+ column.entity = IPA.get_entity(that.other_entity);
if (column.link) {
column.link_handler = function(value) {
@@ -351,8 +343,6 @@ IPA.association_table_widget = function (spec) {
column.entity_name = that.other_entity;
}
- that.table_init();
-
that.table_create(container);
var button = IPA.action_button({
@@ -381,11 +371,11 @@ IPA.association_table_widget = function (spec) {
return;
}
- var entity = IPA.get_entity(that.entity_name);
- var facet = entity.get_facet();
+ var facet = that.entity.get_facet();
if (facet.is_dirty()) {
var dialog = IPA.dirty_dialog({
+ entity:that.entity,
facet: facet
});
@@ -393,7 +383,6 @@ IPA.association_table_widget = function (spec) {
that.show_add_dialog();
};
- dialog.init();
dialog.open(that.container);
} else {
@@ -406,11 +395,11 @@ IPA.association_table_widget = function (spec) {
return;
}
- var entity = IPA.get_entity(that.entity_name);
- var facet = entity.get_facet();
+ var facet = that.entity.get_facet();
if (facet.is_dirty()) {
var dialog = IPA.dirty_dialog({
+ entity:that.entity,
facet: facet
});
@@ -418,7 +407,6 @@ IPA.association_table_widget = function (spec) {
that.show_remove_dialog();
};
- dialog.init();
dialog.open(that.container);
} else {
@@ -445,7 +433,7 @@ IPA.association_table_widget = function (spec) {
}
var batch = IPA.batch_command({
- 'name': that.entity_name+'_'+that.name,
+ 'name': that.entity.name+'_'+that.name,
'on_success': on_success,
'on_error': on_error
});
@@ -501,27 +489,29 @@ IPA.association_table_widget = function (spec) {
};
that.create_add_dialog = function() {
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var label = IPA.metadata.objects[that.other_entity].label;
var title = IPA.messages.association.add;
- title = title.replace('${entity}', IPA.metadata.objects[that.entity_name].label_singular);
+ title = title.replace(
+ '${entity}',
+ that.entity.metadata.label_singular);
title = title.replace('${primary_key}', pkey);
title = title.replace('${other_entity}', label);
return IPA.association_adder_dialog({
- 'title': title,
- 'entity_name': that.entity_name,
- 'pkey': pkey,
- 'other_entity': that.other_entity,
- 'attribute_member': that.attribute_member,
+ title: title,
+ entity: that.entity,
+ pkey: pkey,
+ other_entity: that.other_entity,
+ attribute_member: that.attribute_member,
method: that.add_method
});
};
that.show_add_dialog = function() {
- var dialog = that.create_add_dialog();
+ var dialog = that.create_add_dialog({entity:that.entity});
var columns = that.adder_columns.values;
if (columns.length) {
@@ -542,17 +532,15 @@ IPA.association_table_widget = function (spec) {
);
};
- dialog.init();
-
dialog.open(that.container);
};
that.add = function(values, on_success, on_error) {
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var command = IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: that.add_method,
args: [pkey],
on_success: on_success,
@@ -573,17 +561,19 @@ IPA.association_table_widget = function (spec) {
return;
}
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var label = IPA.metadata.objects[that.other_entity].label;
var title = IPA.messages.association.remove;
- title = title.replace('${entity}', IPA.metadata.objects[that.entity_name].label_singular);
+ title = title.replace(
+ '${entity}',
+ that.entity.metadata.label_singular);
title = title.replace('${primary_key}', pkey);
title = title.replace('${other_entity}', label);
var dialog = IPA.association_deleter_dialog({
'title': title,
- 'entity_name': that.entity_name,
+ 'entity': that.entity,
'pkey': pkey,
'other_entity': that.other_entity,
'values': selected_values,
@@ -604,17 +594,16 @@ IPA.association_table_widget = function (spec) {
);
};
- dialog.init();
dialog.open(that.container);
};
that.remove = function(values, on_success, on_error) {
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var command = IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: that.remove_method,
args: [pkey],
on_success: on_success,
@@ -637,9 +626,9 @@ IPA.association_table_widget = function (spec) {
summary.append(error_thrown.name+': '+error_thrown.message);
}
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'show',
args: [pkey],
options: {'all': true, 'rights': true},
@@ -648,8 +637,23 @@ IPA.association_table_widget = function (spec) {
}).execute();
};
+ /*initialization code*/
+ /*this is duplicated in the facet... should be unified*/
+ var i;
+ if (spec.columns){
+ for (i = 0; i < spec.columns.length; i+= 1){
+ spec.columns[i].entity_name = spec.columns[i].entity_name ||
+ that.other_entity;
+ that.create_column(spec.columns[i]);
+ }
+ }
+ if (spec.adder_columns){
+ for (i = 0; i < spec.adder_columns.length; i+= 1){
+ that.create_adder_column(spec.adder_columns[i]);
+ }
+ }
+
// methods that should be invoked by subclasses
- that.association_table_widget_init = that.init;
that.association_table_widget_show_add_dialog = that.show_add_dialog;
that.association_table_widget_show_remove_dialog = that.show_remove_dialog;
@@ -661,8 +665,19 @@ IPA.association_facet = function (spec) {
spec = spec || {};
+ /*
+ Link parameter is used to turn off the links in selfservice mode.
+ Default it to true if not set so that facets that would not otherwise
+ link by default get links set.
+
+ link must be set before the call to the base class, to affect the table.
+ */
+ spec.link = spec.link === undefined ? true : spec.link;
+
+ spec.managed_entity_name = spec.other_entity;
var that = IPA.table_facet(spec);
+ that.entity = spec.entity;
that.attribute_member = spec.attribute_member;
that.indirect_attribute_member = spec.indirect_attribute_member;
@@ -672,7 +687,6 @@ IPA.association_facet = function (spec) {
that.facet_group = spec.facet_group;
that.read_only = spec.read_only;
- that.link = spec.link === undefined ? true : spec.link;
that.associator = spec.associator || IPA.bulk_associator;
that.add_method = spec.add_method || 'add_member';
@@ -691,40 +705,49 @@ IPA.association_facet = function (spec) {
that.adder_columns.put(column.name, column);
};
+ /*TODO try to reuse the association_table_widget in association_facet*/
that.create_adder_column = function(spec) {
var column;
+ var factory;
if (spec instanceof Object) {
- var factory = spec.factory || IPA.column;
- column = factory(spec);
+ factory = spec.factory || IPA.column;
} else {
- column = IPA.column({ name: spec });
+ factory = IPA.column;
+ spec = { name: spec };
}
+ spec.entity = that.entity;
+ column = factory(spec);
that.add_adder_column(column);
return column;
};
- var adder_columns = spec.adder_columns || [];
- for (var i=0; i<adder_columns.length; i++) {
- that.create_adder_column(adder_columns[i]);
- }
+ function setup_columns(){
+ var column;
+ var i;
- that.init = function() {
+ var pkey_name;
+ if (that.other_entity){
+ pkey_name = IPA.metadata.objects[that.other_entity].primary_key;
+ }
- that.facet_init();
+ if (!that.columns.length){
+ that.create_column({
+ name: pkey_name,
+ primary_key: true,
+ link: spec.link
+ });
+ }
- var entity = IPA.get_entity(that.entity_name);
- var column;
- var i;
- var label = IPA.metadata.objects[that.other_entity] ? IPA.metadata.objects[that.other_entity].label : that.other_entity;
- var pkey_name = IPA.metadata.objects[that.other_entity].primary_key;
+ var label = IPA.metadata.objects[that.other_entity] ?
+ IPA.metadata.objects[that.other_entity].label : that.other_entity;
that.table = IPA.table_widget({
- id: that.entity_name+'-'+that.other_entity,
+ id: that.entity.name+'-'+that.other_entity,
'class': 'content-table',
name: pkey_name,
label: label,
- entity_name: that.entity_name,
+ entity: that.entity,
other_entity: that.other_entity,
page_length: that.page_length,
scrollable: true,
@@ -732,13 +755,6 @@ IPA.association_facet = function (spec) {
});
var columns = that.columns.values;
- if (!columns.length) {
- that.create_column({
- name: pkey_name,
- primary_key: true,
- link: that.link
- });
- }
that.table.set_columns(columns);
@@ -804,14 +820,13 @@ IPA.association_facet = function (spec) {
that.refresh_table();
};
- that.table.init();
- };
+ }
that.create_header = function(container) {
that.facet_create_header(container);
- that.pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ that.pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var other_label = IPA.metadata.objects[that.other_entity].label;
if (!that.read_only) {
@@ -884,31 +899,31 @@ IPA.association_facet = function (spec) {
};
that.create_content = function(container) {
-
that.table.create(container);
- that.table.setup(container);
};
that.show = function() {
that.facet_show();
- that.pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ that.pkey = IPA.nav.get_state(that.entity.name+'-pkey');
that.header.set_pkey(that.pkey);
};
that.show_add_dialog = function() {
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var label = IPA.metadata.objects[that.other_entity] ? IPA.metadata.objects[that.other_entity].label : that.other_entity;
var title = IPA.messages.association.add;
- title = title.replace('${entity}', IPA.metadata.objects[that.entity_name].label_singular);
+ title = title.replace(
+ '${entity}',
+ that.entity.metadata.label_singular);
title = title.replace('${primary_key}', pkey);
title = title.replace('${other_entity}', label);
var dialog = IPA.association_adder_dialog({
'title': title,
- 'entity_name': that.entity_name,
+ 'entity': that.entity,
'pkey': pkey,
'other_entity': that.other_entity,
'attribute_member': that.attribute_member
@@ -921,10 +936,10 @@ IPA.association_facet = function (spec) {
dialog.execute = function() {
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var associator = that.associator({
- 'entity_name': that.entity_name,
+ 'entity': that.entity,
'pkey': pkey,
'other_entity': that.other_entity,
'values': dialog.get_selected_values(),
@@ -942,8 +957,6 @@ IPA.association_facet = function (spec) {
associator.execute();
};
- dialog.init();
-
dialog.open(that.container);
};
@@ -958,16 +971,18 @@ IPA.association_facet = function (spec) {
return;
}
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var title = IPA.messages.association.remove;
- title = title.replace('${entity}', IPA.metadata.objects[that.entity_name].label_singular);
+ title = title.replace(
+ '${entity}',
+ that.entity.metadata.label_singular);
title = title.replace('${primary_key}', pkey);
title = title.replace('${other_entity}', label);
var dialog = IPA.association_deleter_dialog({
title: title,
- entity_name: that.entity_name,
+ entity: that.entity,
pkey: pkey,
other_entity: that.other_entity,
values: values
@@ -976,7 +991,7 @@ IPA.association_facet = function (spec) {
dialog.execute = function() {
var associator = that.associator({
- entity_name: that.entity_name,
+ entity: that.entity,
pkey: pkey,
other_entity: that.other_entity,
values: values,
@@ -994,8 +1009,6 @@ IPA.association_facet = function (spec) {
associator.execute();
};
- dialog.init();
-
dialog.open(that.container);
};
@@ -1062,7 +1075,7 @@ IPA.association_facet = function (spec) {
if (!length) return;
var batch = IPA.batch_command({
- 'name': that.entity_name+'_'+that.get_attribute_name(),
+ 'name': that.entity.name+'_'+that.get_attribute_name(),
'on_success': on_success,
'on_error': on_error
});
@@ -1111,10 +1124,10 @@ IPA.association_facet = function (spec) {
if (that.remove_button) that.remove_button.css('display', 'none');
}
- var pkey = IPA.get_entity(that.entity_name).get_primary_key();
+ var pkey = IPA.get_entity(that.entity.name).get_primary_key();
var command = IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'show',
args: pkey
});
@@ -1128,7 +1141,11 @@ IPA.association_facet = function (spec) {
command.execute();
};
- that.association_facet_init = that.init;
-
+ /*initialization*/
+ var adder_columns = spec.adder_columns || [];
+ for (var i=0; i<adder_columns.length; i++) {
+ that.create_adder_column(adder_columns[i]);
+ }
+ setup_columns();
return that;
};
diff --git a/install/ui/automount.js b/install/ui/automount.js
index 56c1fbf..56c6c9c 100644
--- a/install/ui/automount.js
+++ b/install/ui/automount.js
@@ -89,20 +89,24 @@ IPA.entity_factories.automountmap = function() {
undo: false,
label: IPA.messages.objects.automountmap.map_type,
options: [
- { value: 'add', label: IPA.messages.objects.automountmap.direct },
- { value: 'add_indirect', label: IPA.messages.objects.automountmap.indirect }
+ { value: 'add',
+ label: IPA.messages.objects.automountmap.direct },
+ { value: 'add_indirect',
+ label: IPA.messages.objects.automountmap.indirect }
]
},
'automountmapname','description',
{
name: 'key',
- label: IPA.get_method_option('automountmap_add_indirect', 'key').label,
+ label: IPA.get_method_option(
+ 'automountmap_add_indirect', 'key').label,
conditional: true,
undo: false
},
{
name: 'parentmap',
- label: IPA.get_method_option('automountmap_add_indirect', 'parentmap').label,
+ label: IPA.get_method_option(
+ 'automountmap_add_indirect', 'parentmap').label,
conditional: true,
undo: false
}]
@@ -148,13 +152,13 @@ IPA.entity_factories.automountkey = function() {
}
}).
adder_dialog({
- show_edit_page : function(entity_name, result){
+ show_edit_page : function(entity, result){
var key = result.automountkey[0];
var info = result.automountinformation[0];
- var state = IPA.nav.get_path_state(entity_name);
- state[entity_name + '-facet'] = 'default';
- state[entity_name + '-info'] = info;
- state[entity_name + '-pkey'] = key;
+ var state = IPA.nav.get_path_state(entity.name);
+ state[entity.name + '-facet'] = 'default';
+ state[entity.name + '-info'] = info;
+ state[entity.name + '-pkey'] = key;
IPA.nav.push_state(state);
return false;
},
@@ -193,9 +197,9 @@ IPA.automount_key_column = function(spec){
IPA.automountmap_adder_dialog = function(spec){
var that = IPA.add_dialog(spec);
- that.super_setup = that.setup;
- that.setup = function(container) {
- that.super_setup(container);
+ that.super_create = that.create;
+ that.create = function(container) {
+ that.super_create(container);
that.disable_conditional_fields();
};
@@ -223,8 +227,10 @@ IPA.method_radio_widget = function(spec){
var that = IPA.radio_widget(spec);
- that.setup = function(container) {
+ that.radio_create = that.create;
+ that.create = function(container) {
+ that.radio_create(container);
var input = $('input[name="'+that.name+'"]', that.container);
input.
filter("[value="+ that.dialog.method+"]").
diff --git a/install/ui/certificate.js b/install/ui/certificate.js
index 6d86ddb..bd8f062 100755
--- a/install/ui/certificate.js
+++ b/install/ui/certificate.js
@@ -504,11 +504,7 @@ IPA.cert.status_widget = function(spec) {
'name': 'create',
'value': IPA.messages.objects.cert.new_certificate
}).appendTo(content_div);
- };
-
- that.setup = function(container) {
- that.widget_setup(container);
that.status_valid = $('div[name=certificate-valid]', that.container);
that.status_revoked = $('div[name=certificate-revoked]', that.container);
@@ -676,7 +672,6 @@ IPA.cert.status_widget = function(spec) {
'sha1_fingerprint': result['sha1_fingerprint']
});
- dialog.init();
dialog.open();
}
@@ -699,7 +694,6 @@ IPA.cert.status_widget = function(spec) {
certificate: entity_certificate
});
- dialog.init();
dialog.open();
}
@@ -731,7 +725,6 @@ IPA.cert.status_widget = function(spec) {
}
});
- dialog.init();
dialog.open();
}
@@ -769,7 +762,6 @@ IPA.cert.status_widget = function(spec) {
}
});
- dialog.init();
dialog.open();
}
@@ -802,7 +794,6 @@ IPA.cert.status_widget = function(spec) {
}
});
- dialog.init();
dialog.open();
}
diff --git a/install/ui/details.js b/install/ui/details.js
index 8e0edaa..564d848 100644
--- a/install/ui/details.js
+++ b/install/ui/details.js
@@ -37,29 +37,15 @@ IPA.details_section = function(spec) {
that.name = spec.name || '';
that.label = spec.label || '';
- that._entity_name = spec.entity_name;
-
+ that.entity = spec.entity;
that.fields = $.ordered_map();
- that.__defineGetter__('entity_name', function() {
- return that._entity_name;
- });
-
- that.__defineSetter__('entity_name', function(entity_name) {
- that._entity_name = entity_name;
-
- var fields = that.fields.values;
- for (var i=0; i<fields.length; i++) {
- fields[i].entity_name = entity_name;
- }
- });
-
that.get_field = function(name) {
return that.fields.get(name);
};
that.add_field = function(field) {
- field.entity_name = that.entity_name;
+ field.entity = that.entity;
that.fields.put(field.name, field);
return field;
};
@@ -70,44 +56,39 @@ IPA.details_section = function(spec) {
};
that.text = function(spec) {
+ spec.entity = that.entity;
var field = IPA.text_widget(spec);
that.add_field(field);
return that;
};
that.multivalued_text = function(spec) {
- spec.entity_name = that.entity_name;
+ spec.entity = that.entity;
var field = IPA.multivalued_text_widget(spec);
that.add_field(field);
return that;
};
that.textarea = function(spec) {
+ spec.entity = that.entity;
var field = IPA.textarea_widget(spec);
that.add_field(field);
return that;
};
that.radio = function(spec) {
+ spec.entity = that.entity;
var field = IPA.radio_widget(spec);
that.add_field(field);
return that;
};
- that.init = function() {
- var fields = that.fields.values;
- for (var i=0; i<fields.length; i++) {
- var field = fields[i];
- field.init();
- }
- };
-
that.create = function(container) {
+ that.container = container;
var fields = that.fields.values;
for (var i=0; i<fields.length; i++) {
var field = fields[i];
-
var field_container = $('<div/>', {
name: field.name,
'class': 'details-field'
@@ -116,18 +97,6 @@ IPA.details_section = function(spec) {
}
};
- that.setup = function(container) {
-
- that.container = container;
-
- var fields = that.fields.values;
- for (var i=0; i<fields.length; i++) {
- var field = fields[i];
-
- var field_container = $('.details-field[name='+field.name+']', this.container).first();
- field.setup(field_container);
- }
- };
that.load = function(record) {
@@ -160,7 +129,6 @@ IPA.details_section = function(spec) {
};
// methods that should be invoked by subclasses
- that.section_init = that.init;
that.section_create = that.create;
that.section_setup = that.setup;
that.section_load = that.load;
@@ -205,6 +173,7 @@ IPA.details_list_section = function(spec) {
var that = IPA.details_section(spec);
that.create = function(container) {
+ that.container = container;
// do not call section_create() here
@@ -243,7 +212,7 @@ IPA.details_facet = function(spec) {
spec.name = spec.name || 'details';
var that = IPA.facet(spec);
-
+ that.entity = spec.entity;
that.pre_execute_hook = spec.pre_execute_hook;
that.post_update_hook = spec.post_update_hook;
@@ -252,21 +221,9 @@ IPA.details_facet = function(spec) {
that.sections = $.ordered_map();
- that.__defineGetter__("entity_name", function(){
- return that._entity_name;
- });
-
- that.__defineSetter__("entity_name", function(entity_name){
- that._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;
+ section.entity = that.entity;
that.sections.put(section.name, section);
return section;
};
@@ -276,33 +233,23 @@ IPA.details_facet = function(spec) {
};
that.create_section = function(spec) {
+ spec.entity = that.entity;
var section = IPA.details_section(spec);
that.add_section(section);
return section;
};
- that.init = function() {
-
- that.facet_init();
-
- var sections = that.sections.values;
- for (var i=0; i<sections.length; i++) {
- var section = sections[i];
- section.init();
- }
- };
-
/* the primary key used for show and update is built as an array.
for most entities, this will be a single element long, but for some
it requires the containing entities primary keys as well.*/
that.get_primary_key = function(from_url) {
- var pkey = IPA.get_entity(that.entity_name).get_primary_key_prefix();
+ var pkey = that.entity.get_primary_key_prefix();
if (from_url) {
pkey.push(that.pkey);
} else {
- var pkey_name = IPA.metadata.objects[that.entity_name].primary_key;
+ var pkey_name = that.entity.metadata.primary_key;
if (!pkey_name){
return pkey;
}
@@ -359,7 +306,7 @@ IPA.details_facet = function(spec) {
that.facet_create_header(container);
- that.pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ that.pkey = IPA.nav.get_state(that.entity.name+'-pkey');
that.create_controls();
@@ -450,24 +397,10 @@ IPA.details_facet = function(spec) {
}).appendTo(container);
};
- that.setup = function(container) {
-
- that.facet_setup(container);
-
- var sections = that.sections.values;
- for (var i=0; i<sections.length; i++) {
- var section = sections[i];
-
- var div = $('.details-section[name='+section.name+']', that.container);
-
- section.setup(div);
- }
- };
-
that.show = function() {
that.facet_show();
- that.pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ that.pkey = IPA.nav.get_state(that.entity.name+'-pkey');
that.header.set_pkey(that.pkey);
};
@@ -486,7 +419,7 @@ IPA.details_facet = function(spec) {
};
that.needs_update = function() {
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
return pkey != that.pkey;
};
@@ -520,8 +453,6 @@ IPA.details_facet = function(spec) {
that.update = function(on_win, on_fail) {
- var entity_name = that.entity_name;
-
function on_success(data, text_status, xhr) {
if (on_win)
on_win(data, text_status, xhr);
@@ -545,7 +476,7 @@ IPA.details_facet = function(spec) {
var args = that.get_primary_key();
var command = IPA.command({
- entity: entity_name,
+ entity: that.entity.name,
method: 'mod',
args: args,
options: {
@@ -574,7 +505,6 @@ IPA.details_facet = function(spec) {
values = field.save();
if (!values) continue;
-
var param_info = field.param_info;
if (param_info) {
if (param_info.primary_key) continue;
@@ -609,16 +539,16 @@ IPA.details_facet = function(spec) {
that.refresh = function() {
- that.pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ that.pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var command = IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'show',
options: { all: true, rights: true }
});
if (IPA.details_refresh_devel_hook) {
- IPA.details_refresh_devel_hook(that.entity_name, command, that.pkey);
+ IPA.details_refresh_devel_hook(that.entity.name, command, that.pkey);
}
if (that.pkey) {
@@ -642,7 +572,6 @@ IPA.details_facet = function(spec) {
command.execute();
};
- that.details_facet_init = that.init;
that.details_facet_create_content = that.create_content;
that.details_facet_load = that.load;
that.details_facet_setup = that.setup;
@@ -650,41 +579,3 @@ IPA.details_facet = function(spec) {
return that;
};
-IPA.action_button = function(spec) {
- var button = IPA.button(spec);
- button.removeClass("ui-state-default").addClass("action-button");
- return button;
-};
-
-IPA.button = function(spec) {
-
- spec = spec || {};
-
- var button = $('<a/>', {
- id: spec.id,
- name: spec.name,
- href: spec.href || '#' + (spec.name || 'button'),
- title: spec.title || spec.label,
- 'class': 'ui-state-default ui-corner-all input_link',
- style: spec.style,
- click: spec.click,
- blur: spec.blur
- });
-
- if (spec['class']) button.addClass(spec['class']);
-
- if (spec.icon) {
- $('<span/>', {
- 'class': 'icon '+spec.icon
- }).appendTo(button);
- }
-
- if (spec.label) {
- $('<span/>', {
- 'class': 'button-label',
- html: spec.label
- }).appendTo(button);
- }
-
- return button;
-};
diff --git a/install/ui/dialog.js b/install/ui/dialog.js
index 513a5b9..f4a8293 100644
--- a/install/ui/dialog.js
+++ b/install/ui/dialog.js
@@ -30,10 +30,9 @@ IPA.dialog = function(spec) {
var that = {};
+ that.entity = spec.entity;
that.name = spec.name;
that.title = spec.title;
- that._entity_name = spec.entity_name;
-
that.width = spec.width || 400;
that.height = spec.height;
@@ -67,24 +66,6 @@ IPA.dialog = function(spec) {
}
};
- that.__defineGetter__("entity_name", function(){
- return that._entity_name;
- });
-
- that.__defineSetter__("entity_name", function(entity_name){
- that._entity_name = entity_name;
-
- var fields = that.fields.values;
- for (var i=0; i<fields.length; i++) {
- fields[i].entity_name = entity_name;
- }
-
- var sections = that.sections.values;
- for (var j=0; j<sections.length; j++) {
- sections[j].entity_name = entity_name;
- }
- });
-
that.add_button = function(name, handler) {
that.buttons[name] = handler;
};
@@ -120,7 +101,7 @@ IPA.dialog = function(spec) {
that.field(IPA.text_widget({
name: name,
undo: false,
- entity_name : that.entity_name
+ entity : that.entity
}));
return that;
};
@@ -141,25 +122,6 @@ IPA.dialog = function(spec) {
return section;
};
- that.init = function() {
-
- that.entity = IPA.get_entity(that.entity_name);
-
- var fields = that.fields.values;
- for (var i=0; i<fields.length; i++) {
- var field = fields[i];
- field.entity_name = that.entity_name;
- field.init();
- }
-
- var sections = that.sections.values;
- for (var j=0; j<sections.length; j++) {
- var section = sections[j];
- section.entity_name = that.entity_name;
- section.init();
- }
- };
-
/**
* Create content layout
*/
@@ -178,8 +140,14 @@ IPA.dialog = function(spec) {
style: 'vertical-align: top;',
title: field.label
}).appendTo(tr);
+ var label_text = field.label;
+ if (label_text !== null){
+ label_text += ': ';
+ }else{
+ label_text = '';
+ }
td.append($('<label />',{id: field.name+'-label',
- text:field.label+': '}));
+ text: label_text}));
td = $('<td/>', {
style: 'vertical-align: top;'
@@ -217,44 +185,21 @@ IPA.dialog = function(spec) {
section.create(div);
}
- };
-
- /**
- * Setup behavior
- */
- that.setup = function() {
- var fields = that.fields.values;
- for (var i=0; i<fields.length; i++) {
- var field = fields[i];
-
- var span = $('span[name="'+field.name+'"]', that.container);
- field.setup(span);
- }
-
- var sections = that.sections.values;
- for (var j=0; j<sections.length; j++) {
- var section = sections[j];
-
- var div = $('div.details-section[name='+section.name+']',
- that.container);
- section.setup(div);
- }
};
+
/**
* Open dialog
*/
that.open = function(container) {
that.container = $('<div/>');
-
if (container) {
container.append(that.container);
}
that.create();
- that.setup();
that.container.dialog({
'title': that.title,
@@ -308,9 +253,7 @@ IPA.dialog = function(spec) {
}
};
- that.dialog_init = that.init;
that.dialog_create = that.create;
- that.dialog_setup = that.setup;
that.dialog_open = that.open;
var fields = spec.fields || [];
@@ -320,6 +263,7 @@ IPA.dialog = function(spec) {
if (field_spec instanceof Object) {
var factory = field_spec.factory || IPA.text_widget;
+ field_spec.entity = that.entity;
field = factory(field_spec);
/* This is a bit of a hack, and is here to support ACI
@@ -335,7 +279,10 @@ IPA.dialog = function(spec) {
}
} else {
- field = IPA.text_widget({ name: field_spec, undo: false });
+ field = IPA.text_widget({
+ name: field_spec,
+ entity:that.entity,
+ undo: false });
that.add_field(field);
}
}
@@ -348,16 +295,27 @@ IPA.dialog = function(spec) {
* values from the available results.
*/
IPA.adder_dialog = function (spec) {
+ var NORMAL_HEIGHT = '151px';
+ var EXTERNAL_HEIGHT = '119px';
spec = spec || {};
var that = IPA.dialog(spec);
-
+ that.external = spec.external;
that.width = spec.width || 600;
that.height = spec.height || 360;
+ if (!that.entity){
+ var except = {
+ expected: false,
+ message:'Adder dialog created without entity.'
+ };
+ throw except;
+ }
+
that.columns = $.ordered_map();
+
that.get_column = function(name) {
return that.columns.get(name);
};
@@ -378,38 +336,40 @@ IPA.adder_dialog = function (spec) {
};
that.create_column = function(spec) {
+ spec.entity = that.entity;
var column = IPA.column(spec);
that.add_column(column);
return column;
};
- that.init = function() {
+ function initialize_table(){
+ var table_height = NORMAL_HEIGHT;
+ if (that.external){
+ table_height = EXTERNAL_HEIGHT;
+ }
+
that.available_table = IPA.table_widget({
+ entity: that.entity,
name: 'available',
scrollable: true,
- height: '151px'
+ height: table_height
});
var columns = that.columns.values;
that.available_table.set_columns(columns);
- that.available_table.init();
-
that.selected_table = IPA.table_widget({
+ entity: that.entity,
name: 'selected',
scrollable: true,
- height: '151px'
+ height: NORMAL_HEIGHT
});
that.selected_table.set_columns(columns);
-
- that.selected_table.init();
-
- that.dialog_init();
- };
-
+ }
that.create = function() {
+
// do not call that.dialog_create();
var search_panel = $('<div/>', {
@@ -465,6 +425,7 @@ IPA.adder_dialog = function (spec) {
that.available_table.create(available_panel);
+
var buttons_panel = $('<div/>', {
name: 'buttons',
'class': 'adder-dialog-buttons'
@@ -495,17 +456,6 @@ IPA.adder_dialog = function (spec) {
}).appendTo(selected_panel);
that.selected_table.create(selected_panel);
- };
-
- that.setup = function() {
-
- // do not call that.dialog_setup();
-
- var available_panel = $('div[name=available]', that.container);
- that.available_table.setup(available_panel);
-
- var selected_panel = $('div[name=selected]', that.container);
- that.selected_table.setup(selected_panel);
that.filter_field = $('input[name=filter]', that.container);
@@ -513,7 +463,10 @@ IPA.adder_dialog = function (spec) {
that.find_button = IPA.button({
name: 'find',
'label': button.val(),
- 'click': function() { that.search(); }
+ 'click': function() {
+ that.search();
+ return false;
+ }
});
button.replaceWith(that.find_button);
@@ -539,9 +492,29 @@ IPA.adder_dialog = function (spec) {
});
button.replaceWith(that.add_button);
+ if (that.external) {
+ var external_panel = $('<div/>', {
+ name: 'external',
+ 'class': 'adder-dialog-external'
+ }).appendTo(results_panel);
+
+ $('<div/>', {
+ html: IPA.messages.objects.sudorule.external,
+ 'class': 'ui-widget-header'
+ }).appendTo(external_panel);
+
+ that.external_field = $('<input/>', {
+ type: 'text',
+ name: 'external',
+ style: 'width: 244px'
+ }).appendTo(external_panel);
+
+ }
+
that.search();
};
+
that.open = function(container) {
that.buttons[IPA.messages.buttons.enroll] = that.execute;
@@ -584,9 +557,16 @@ IPA.adder_dialog = function (spec) {
return that.selected_table.save();
};
- that.adder_dialog_init = that.init;
+ /*dialog initialization */
+ if (spec.columns){
+ for (var i =0; i < spec.columns.length; i +=1){
+ that.create_column(spec.columns[i]);
+ }
+ }
+
+ initialize_table();
+
that.adder_dialog_create = that.create;
- that.adder_dialog_setup = that.setup;
return that;
};
diff --git a/install/ui/dns.js b/install/ui/dns.js
index 7cef5ae..da96ee1 100644
--- a/install/ui/dns.js
+++ b/install/ui/dns.js
@@ -27,7 +27,10 @@
IPA.entity_factories.dnszone = function() {
if (!IPA.dns_enabled) {
- throw "DNS not enabled on server";
+ var except = {
+ expected: true
+ };
+ throw except;
}
return IPA.entity_builder().
@@ -106,93 +109,6 @@ IPA.dnszone_adder_dialog = function(spec) {
var that = IPA.add_dialog(spec);
- that.create = function() {
-
- var table = $('<table/>').appendTo(that.container);
-
- var field = that.fields.get('idnsname');
- var tr = $('<tr/>').appendTo(table);
-
- var td = $('<td/>', {
- style: 'vertical-align: top;',
- title: field.label
- }).appendTo(tr);
-
- td.append($('<label/>', {
- text: field.label+':'
- }));
-
- td = $('<td/>', {
- style: 'vertical-align: top;'
- }).appendTo(tr);
-
- var span = $('<span/>', {
- name: field.name
- }).appendTo(td);
-
- field.create(span);
- field.field_span = span;
-
- field = that.fields.get('name_from_ip');
- tr = $('<tr/>').appendTo(table);
-
- td = $('<td/>', {
- style: 'vertical-align: top;',
- title: field.label
- }).appendTo(tr);
-
- td = $('<td/>', {
- style: 'vertical-align: top;'
- }).appendTo(tr);
-
- span = $('<span/>', {
- name: field.name
- }).appendTo(td);
-
- td.append($('<label/>', {
- text: field.label
- }));
-
- field.create(span);
- field.field_span = span;
-
- tr = $('<tr/>').appendTo(table);
-
- td = $('<td/>', {
- colspan: 2,
- html: '&nbsp;'
- }).appendTo(tr);
-
- var fields = that.fields.values;
- for (var i=0; i<fields.length; i++) {
- field = fields[i];
- if (field.name == 'idnsname' || field.name == 'name_from_ip') continue;
- if (field.hidden) continue;
-
- tr = $('<tr/>').appendTo(table);
-
- td = $('<td/>', {
- style: 'vertical-align: top;',
- title: field.label
- }).appendTo(tr);
-
- td.append($('<label/>', {
- text: field.label+':'
- }));
-
- td = $('<td/>', {
- style: 'vertical-align: top;'
- }).appendTo(tr);
-
- span = $('<span/>', {
- name: field.name
- }).appendTo(td);
-
- field.create(span);
- field.field_span = span;
- }
- };
-
that.save = function(record) {
var idnsname;
@@ -259,7 +175,10 @@ IPA.dns_record_search_load = function (result) {
IPA.entity_factories.dnsrecord = function() {
if (!IPA.dns_enabled) {
- throw "DNS not enabled on server";
+ var except = {
+ expected: true
+ };
+ throw except;
}
return IPA.entity_builder().
@@ -459,8 +378,7 @@ IPA.dnsrecord_redirection_dialog = function(spec) {
IPA.dnsrecord_host_link_widget = function(spec){
var that = IPA.entity_link_widget(spec);
that.other_pkeys = function(){
- var entity = IPA.get_entity(that.entity_name);
- var pkey = entity.get_primary_key();
+ var pkey = that.entity.get_primary_key();
return [pkey[0]+'.'+pkey[1]];
};
return that;
diff --git a/install/ui/entitle.js b/install/ui/entitle.js
index 54c6336..15fbf23 100644
--- a/install/ui/entitle.js
+++ b/install/ui/entitle.js
@@ -526,7 +526,6 @@ IPA.entitle.certificate_column = function(spec) {
certificate: certificate,
add_pem_delimiters: false
});
- dialog.init();
dialog.open();
return false;
}
@@ -706,8 +705,6 @@ IPA.entitle.download_widget = function(spec) {
certificate: userpkcs12[0].__base64__,
add_pem_delimiters: false
});
-
- dialog.init();
dialog.open();
}
);
diff --git a/install/ui/entity.js b/install/ui/entity.js
index a2386b8..599cde6 100644
--- a/install/ui/entity.js
+++ b/install/ui/entity.js
@@ -3,7 +3,7 @@
/* Authors:
* Pavel Zuna <pzuna@redhat.com>
- * Endi S. Dewata <edewata@redhat.com>
+ * Endi Sukma Dewata <edewata@redhat.com>
* Adam Young <ayoung@redhat.com>
*
* Copyright (C) 2010-2011 Red Hat
@@ -31,6 +31,8 @@ IPA.facet = function (spec) {
var that = {};
+ that.entity = spec.entity;
+
that.name = spec.name;
that.label = spec.label;
that.title = spec.title || that.label;
@@ -41,7 +43,7 @@ IPA.facet = function (spec) {
that.header = spec.header || IPA.facet_header({ facet: that });
- that._entity_name = spec.entity_name;
+ that.entity_name = spec.entity_name;
that.dialogs = $.ordered_map();
@@ -50,14 +52,6 @@ IPA.facet = function (spec) {
that.state = {};
- that.__defineGetter__('entity_name', function() {
- return that._entity_name;
- });
-
- that.__defineSetter__('entity_name', function(entity_name) {
- that._entity_name = entity_name;
- });
-
that.get_dialog = function(name) {
return that.dialogs.get(name);
};
@@ -67,16 +61,6 @@ IPA.facet = function (spec) {
return that;
};
- that.init = function() {
-
- var dialogs = that.dialogs.values;
- for (var i=0; i<dialogs.length; i++){
- var dialog = dialogs[i];
- dialog.entity_name = that._entity_name;
- dialog.init();
- }
- };
-
that.create = function(container) {
that.container = container;
@@ -112,10 +96,6 @@ IPA.facet = function (spec) {
element.html(title);
};
- that.setup = function(container) {
- that.container = container;
- };
-
that.show = function() {
that.container.css('display', 'block');
};
@@ -178,11 +158,9 @@ IPA.facet = function (spec) {
// methods that should be invoked by subclasses
- that.facet_init = that.init;
that.facet_create = that.create;
that.facet_create_header = that.create_header;
that.facet_create_content = that.create_content;
- that.facet_setup = that.setup;
that.facet_show = that.show;
that.facet_hide = that.hide;
that.facet_load = that.load;
@@ -385,7 +363,7 @@ IPA.table_facet = function(spec) {
var that = IPA.facet(spec);
- that.managed_entity_name = spec.managed_entity_name || that.entity_name;
+ that.managed_entity_name = spec.managed_entity_name || that.entity.name;
that.columns = $.ordered_map();
@@ -406,10 +384,14 @@ IPA.table_facet = function(spec) {
var column;
if (spec instanceof Object) {
var factory = spec.factory || IPA.column;
- column = factory(spec);
} else {
- column = IPA.column({ name: spec });
+ factory = IPA.column;
+ spec = { name: spec };
}
+
+ spec.entity_name = that.managed_entity_name;
+ column = factory(spec);
+
that.add_column(column);
return column;
};
@@ -522,6 +504,8 @@ IPA.entity = function (spec) {
that.add_facet = function(facet) {
facet.entity_name = that.name;
+ facet.entity = that;
+
that.facets.put(facet.name, facet);
if (facet.facet_group) {
@@ -534,26 +518,11 @@ IPA.entity = function (spec) {
return that;
};
- that.init = function() {
-
- var facets = that.facets.values;
- for (var i=0; i<facets.length; i++) {
- var facet = facets[i];
- facet.entity = that;
- facet.init();
- }
-
- var dialogs = that.dialogs.values;
- for (var j=0; j<dialogs.length; j++) {
- dialogs[j].init();
- }
- };
-
that.create = function(container) {
that.container = container;
};
- that.setup = function(container) {
+ that.display = function(container) {
var prev_entity = IPA.current_entity;
var prev_facet = prev_entity ? prev_entity.facet : null;
@@ -580,7 +549,6 @@ IPA.entity = function (spec) {
}).appendTo(that.container);
that.facet.create(facet_container);
- that.facet.setup(facet_container);
}
that.facet.show();
@@ -617,7 +585,6 @@ IPA.entity = function (spec) {
return [that.name + '-pkey'];
};
- that.entity_init = that.init;
return that;
};
@@ -707,7 +674,10 @@ IPA.entity_builder = function(){
spec.metadata = spec.metadata || IPA.metadata.objects[spec.name];
if (!spec.metadata) {
- throw "Entity not supported by server.";
+ throw {
+ expected: true,
+ message: "Entity " + spec.name + "not supported by server."
+ };
}
entity = factory(spec);
@@ -725,6 +695,7 @@ IPA.entity_builder = function(){
};
that.facet_group = function(spec) {
+ spec.entity = entity;
if (spec instanceof Object) {
var factory = spec.factory || IPA.facet_group;
facet_group = factory(spec);
@@ -756,6 +727,7 @@ IPA.entity_builder = function(){
entity.remove_facet_groups();
for (var i=0; i<specs.length; i++) {
+ specs[i].entity = entity;
that.facet_group(specs[i]);
}
@@ -763,15 +735,14 @@ IPA.entity_builder = function(){
};
that.facet = function(spec) {
- spec.entity_name = entity.name;
+ spec.entity = entity;
facet = spec.factory(spec);
entity.add_facet(facet);
return that;
};
that.search_facet = function(spec) {
-
- spec.entity_name = entity.name;
+ spec.entity = entity;
spec.title = spec.title || entity.metadata.label;
spec.label = spec.label || IPA.messages.facets.search;
@@ -785,7 +756,7 @@ IPA.entity_builder = function(){
that.nested_search_facet = function(spec) {
- spec.entity_name = entity.name;
+ spec.entity = entity;
spec.title = spec.title || entity.metadata.label_singular;
spec.label = spec.label || IPA.messages.facets.search;
@@ -799,8 +770,8 @@ IPA.entity_builder = function(){
that.details_facet = function(spec) {
var sections = spec.sections;
+ spec.entity = entity;
spec.sections = null;
- spec.entity_name = entity.name;
spec.title = spec.title || entity.metadata.label_singular;
spec.label = spec.label || IPA.messages.facets.details;
@@ -819,7 +790,7 @@ IPA.entity_builder = function(){
that.association_facet = function(spec) {
- spec.entity_name = entity.name;
+ spec.entity = entity;
var index = spec.name.indexOf('_');
spec.attribute_member = spec.attribute_member ||
@@ -864,6 +835,7 @@ IPA.entity_builder = function(){
that.standard_association_facets = function(spec) {
spec = spec || {};
+ spec.entity = entity;
var direct_associations = [];
var indirect_associations = [];
@@ -903,7 +875,7 @@ IPA.entity_builder = function(){
};
that.section = function(spec) {
- spec.entity_name = entity.name;
+ spec.entity = entity;
if (!spec.label) {
var obj_messages = IPA.messages.objects[entity.name];
@@ -923,13 +895,13 @@ IPA.entity_builder = function(){
var field;
if (field_spec instanceof Object) {
- field_spec.entity_name = entity.name;
+ field_spec.entity = entity;
var factory = field_spec.factory || IPA.text_widget;
field = factory(field_spec);
} else {
field = IPA.text_widget({
name: field_spec,
- entity_name: entity.name
+ entity: entity
});
}
section.add_field(field);
@@ -953,9 +925,13 @@ IPA.entity_builder = function(){
var dialog;
if (spec instanceof Object) {
var factory = spec.factory || IPA.dialog;
+ spec.entity = entity;
dialog = factory(spec);
} else {
- dialog = IPA.dialog({ name: spec });
+ dialog = IPA.dialog({
+ name: spec,
+ entity: entity
+ });
}
entity.dialog(dialog);
return that;
@@ -964,6 +940,7 @@ IPA.entity_builder = function(){
that.adder_dialog = function(spec) {
spec.factory = spec.factory || IPA.add_dialog;
spec.name = spec.name || 'add';
+ spec.entity = entity;
if (!spec.title) {
var title = IPA.messages.dialogs.add_title;
diff --git a/install/ui/hbac.js b/install/ui/hbac.js
index be4e736..2cdb710 100644
--- a/install/ui/hbac.js
+++ b/install/ui/hbac.js
@@ -2,6 +2,7 @@
/* Authors:
* Endi Sukma Dewata <edewata@redhat.com>
+ * Adam Young <ayoung@redhat.com>
*
* Copyright (C) 2010 Red Hat
* see file 'COPYING' for use and warranty information
@@ -26,6 +27,7 @@ IPA.entity_factories.hbacrule = function() {
return IPA.entity_builder().
entity('hbacrule').
search_facet({
+ search_all:true,
columns:['cn',
{
factory: IPA.column,
@@ -47,20 +49,7 @@ IPA.entity_factories.hbacrule = function() {
factory: IPA.hbacrule_details_facet
}).
adder_dialog({
- fields:[
- 'cn',
- {
- factory: IPA.radio_widget,
- 'name': 'accessruletype',
- 'options': [
- { 'value': 'allow',
- 'label': IPA.messages.objects.hbacrule.allow
- },
- { 'value': 'deny',
- 'label': IPA.messages.objects.hbacrule.deny
- }],
- 'undo': false
- }]
+ fields:['cn']
}).
build();
};
@@ -115,33 +104,32 @@ IPA.hbacsvcgroup_member_hbacsvc_table_widget = function(spec) {
var that = IPA.association_table_widget(spec);
- that.init = function() {
- var column = that.create_column({
- name: 'cn',
- primary_key: true,
- width: '150px',
- link: true
- });
+ var column = that.create_column({
+ name: 'cn',
+ primary_key: true,
+ width: '150px',
+ entity:that.entity,
+ link: true
+ });
- that.create_column({
- name: 'description',
- width: '350px'
- });
+ that.create_column({
+ name: 'description',
+ entity:that.entity,
- that.create_adder_column({
- name: 'cn',
- primary_key: true,
- width: '100px'
- });
+ width: '350px'
+ });
- that.create_adder_column({
- name: 'description',
- width: '100px'
- });
+ that.create_adder_column({
+ name: 'cn',
+ primary_key: true,
+ width: '100px'
+ });
- that.association_table_widget_init();
- };
+ that.create_adder_column({
+ name: 'description',
+ width: '100px'
+ });
return that;
};
@@ -154,157 +142,193 @@ IPA.hbacrule_details_facet = function(spec) {
var that = IPA.details_facet(spec);
- that.init = function() {
-
- var section = IPA.hbacrule_details_general_section({
- 'name': 'general',
- 'label': IPA.messages.details.general
+ function general_section(){
+ var section = IPA.details_list_section({
+ name: 'general',
+ entity:that.entity,
+ label: IPA.messages.details.general
});
- that.add_section(section);
section.text({name: 'cn', read_only: true});
- section.radio({name: 'accessruletype'});
+ section.text({
+ name: 'accessruletype',
+ read_only:true
+ });
section.textarea({name: 'description'});
- section.radio({name: 'ipaenabledflag'});
+ section.radio({
+ name: 'ipaenabledflag',
+ options:[
+ {'value': 'TRUE',label: IPA.messages['true']},
+ {'value': 'FALSE',label:IPA.messages['false']}
+ ]
+ });
+ return section;
+ }
+
+ function user_category_section(){
var param_info = IPA.get_entity_param('hbacrule', 'usercategory');
- section = IPA.rule_details_section({
- 'name': 'user',
- 'label': IPA.messages.objects.hbacrule.user,
- 'text': param_info.doc+':',
- 'field_name': 'usercategory',
- 'options': [
- { 'value': 'all', 'label': IPA.messages.objects.hbacrule.anyone },
- { 'value': '', 'label': IPA.messages.objects.hbacrule.specified_users }
+ var section = IPA.rule_details_section({
+ name: 'user',
+ entity:that.entity,
+
+ label: IPA.messages.objects.hbacrule.user,
+ text: param_info.doc+':',
+ field_name: 'usercategory',
+ options: [
+ { value: 'all', label: IPA.messages.objects.hbacrule.anyone },
+ { value: '',
+ label: IPA.messages.objects.hbacrule.specified_users }
],
- 'tables': [
- { 'field_name': 'memberuser_user' },
- { 'field_name': 'memberuser_group' }
+ tables: [
+ { field_name: 'memberuser_user' },
+ { field_name: 'memberuser_group' }
]
});
- that.add_section(section);
var category = section.add_field(IPA.radio_widget({
name: 'usercategory'
}));
section.add_field(IPA.rule_association_table_widget({
- 'id': that.entity_name+'-memberuser_user',
- 'name': 'memberuser_user', 'category': category,
- 'other_entity': 'user', 'add_method': 'add_user', 'remove_method': 'remove_user'
+ id: that.entity.name+'-memberuser_user',
+ name: 'memberuser_user', category: category,
+ other_entity: 'user', add_method: 'add_user',
+ remove_method: 'remove_user'
}));
section.add_field(IPA.rule_association_table_widget({
- 'id': that.entity_name+'-memberuser_group',
- 'name': 'memberuser_group', 'category': category,
- 'other_entity': 'group', 'add_method': 'add_user', 'remove_method': 'remove_user'
+ id: that.entity.name+'-memberuser_group',
+ name: 'memberuser_group', category: category,
+ other_entity: 'group', add_method: 'add_user',
+ remove_method: 'remove_user'
}));
+ return section;
+ }
- param_info = IPA.get_entity_param('hbacrule', 'hostcategory');
-
- section = IPA.rule_details_section({
- 'name': 'host',
- 'label': IPA.messages.objects.hbacrule.host,
- 'text': param_info.doc+':',
- 'field_name': 'hostcategory',
- 'options': [
- { 'value': 'all', 'label': IPA.messages.objects.hbacrule.any_host },
- { 'value': '', 'label': IPA.messages.objects.hbacrule.specified_hosts }
+ function hostcategory_section(){
+ var param_info = IPA.get_entity_param('hbacrule', 'hostcategory');
+
+ var section = IPA.rule_details_section({
+ name: 'host',
+ label: IPA.messages.objects.hbacrule.host,
+ entity:that.entity,
+ text: param_info.doc+':',
+ field_name: 'hostcategory',
+ options: [
+ { value: 'all', label: IPA.messages.objects.hbacrule.any_host },
+ { value: '',
+ label: IPA.messages.objects.hbacrule.specified_hosts }
],
- 'tables': [
- { 'field_name': 'memberhost_host' },
- { 'field_name': 'memberhost_hostgroup' }
- ]
+ tables: [
+ { field_name: 'memberhost_host' },
+ { field_name: 'memberhost_hostgroup' }
+ ]
});
- that.add_section(section);
- category = section.add_field(IPA.radio_widget({
+ var category = section.add_field(IPA.radio_widget({
name: 'hostcategory'
}));
section.add_field(IPA.rule_association_table_widget({
- 'id': that.entity_name+'-memberhost_host',
- 'name': 'memberhost_host', 'category': category,
- 'other_entity': 'host', 'add_method': 'add_host', 'remove_method': 'remove_host'
+ id: that.entity.name+'-memberhost_host',
+ name: 'memberhost_host', category: category,
+ other_entity: 'host', add_method: 'add_host',
+ remove_method: 'remove_host'
}));
section.add_field(IPA.rule_association_table_widget({
- 'id': that.entity_name+'-memberhost_hostgroup',
- 'name': 'memberhost_hostgroup', 'category': category,
- 'other_entity': 'hostgroup', 'add_method': 'add_host', 'remove_method': 'remove_host'
+ id: that.entity.name+'-memberhost_hostgroup',
+ name: 'memberhost_hostgroup', category: category,
+ other_entity: 'hostgroup', add_method: 'add_host',
+ remove_method: 'remove_host'
}));
+ return section;
+ }
- param_info = IPA.get_entity_param('hbacrule', 'servicecategory');
-
- section = IPA.rule_details_section({
- 'name': 'service',
- 'label': IPA.messages.objects.hbacrule.service,
- 'text': param_info.doc+':',
- 'field_name': 'servicecategory',
- 'options': [
- { 'value': 'all', 'label': IPA.messages.objects.hbacrule.any_service },
- { 'value': '', 'label': IPA.messages.objects.hbacrule.specified_services }
+ function servicecategory_section(){
+ var param_info = IPA.get_entity_param('hbacrule', 'servicecategory');
+
+ var section = IPA.rule_details_section({
+ name: 'service',
+ entity:that.entity,
+ label: IPA.messages.objects.hbacrule.service,
+ text: param_info.doc+':',
+ field_name: 'servicecategory',
+ options: [
+ { value: 'all',
+ label: IPA.messages.objects.hbacrule.any_service },
+ { value: '',
+ label: IPA.messages.objects.hbacrule.specified_services }
],
'tables': [
- { 'field_name': 'memberservice_hbacsvc' },
- { 'field_name': 'memberservice_hbacsvcgroup' }
+ { field_name: 'memberservice_hbacsvc' },
+ { field_name: 'memberservice_hbacsvcgroup' }
]
});
- that.add_section(section);
- category = section.add_field(IPA.radio_widget({
+ var category = section.add_field(IPA.radio_widget({
name: 'servicecategory'
}));
section.add_field(IPA.rule_association_table_widget({
- 'id': that.entity_name+'-memberservice_hbacsvc',
- 'name': 'memberservice_hbacsvc', 'category': category,
- 'other_entity': 'hbacsvc', 'add_method': 'add_service', 'remove_method': 'remove_service'
+ id: that.entity.name+'-memberservice_hbacsvc',
+ name: 'memberservice_hbacsvc', category: category,
+ other_entity: 'hbacsvc', add_method: 'add_service',
+ remove_method: 'remove_service'
}));
section.add_field(IPA.rule_association_table_widget({
- 'id': that.entity_name+'-memberservice_hbacsvcgroup',
- 'name': 'memberservice_hbacsvcgroup', 'category': category,
- 'other_entity': 'hbacsvcgroup', 'add_method': 'add_service', 'remove_method': 'remove_service'
+ id: that.entity.name+'-memberservice_hbacsvcgroup',
+ name: 'memberservice_hbacsvcgroup', category: category,
+ other_entity: 'hbacsvcgroup', add_method: 'add_service',
+ remove_method: 'remove_service'
}));
+ return section;
+ }
- param_info = IPA.get_entity_param('hbacrule', 'sourcehostcategory');
+ function sourcehostcategory_section(){
- section = IPA.rule_details_section({
- 'name': 'sourcehost',
- 'label': IPA.messages.objects.hbacrule.sourcehost,
- 'text': param_info.doc+':',
- 'field_name': 'sourcehostcategory',
- 'options': [
- { 'value': 'all', 'label': IPA.messages.objects.hbacrule.any_host },
- { 'value': '', 'label': IPA.messages.objects.hbacrule.specified_hosts }
+ var param_info = IPA.get_entity_param('hbacrule', 'sourcehostcategory');
+
+ var section = IPA.rule_details_section({
+ name: 'sourcehost',
+ entity:that.entity,
+ label: IPA.messages.objects.hbacrule.sourcehost,
+ text: param_info.doc+':',
+ field_name: 'sourcehostcategory',
+ options: [
+ { value: 'all', label: IPA.messages.objects.hbacrule.any_host },
+ { value: '',
+ label: IPA.messages.objects.hbacrule.specified_hosts }
],
- 'tables': [
- { 'field_name': 'sourcehost_host' },
- { 'field_name': 'sourcehost_hostgroup' }
+ tables: [
+ { field_name: 'sourcehost_host' },
+ { field_name: 'sourcehost_hostgroup' }
]
});
- that.add_section(section);
- category = section.add_field(IPA.radio_widget({
+ var category = section.add_field(IPA.radio_widget({
name: 'sourcehostcategory'
}));
section.add_field(IPA.rule_association_table_widget({
- 'id': that.entity_name+'-sourcehost_host',
- 'name': 'sourcehost_host', 'category': category,
- 'other_entity': 'host', 'add_method': 'add_sourcehost', 'remove_method': 'remove_sourcehost'
+ id: that.entity.name+'-sourcehost_host',
+ name: 'sourcehost_host', category: category,
+ other_entity: 'host', add_method: 'add_sourcehost',
+ remove_method: 'remove_sourcehost'
}));
section.add_field(IPA.rule_association_table_widget({
- 'id': that.entity_name+'-sourcehost_hostgroup',
- 'name': 'sourcehost_hostgroup', 'category': category,
- 'other_entity': 'hostgroup', 'add_method': 'add_sourcehost', 'remove_method': 'remove_sourcehost'
+ id: that.entity.name+'-sourcehost_hostgroup',
+ name: 'sourcehost_hostgroup', category: category,
+ other_entity: 'hostgroup', add_method: 'add_sourcehost',
+ remove_method: 'remove_sourcehost'
}));
- that.details_facet_init();
- };
+ return section;
+ }
that.update = function(on_success, on_error) {
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var modify_operation = {
'execute': false,
'command': IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'mod',
args: [pkey],
options: {all: true, rights: true}
@@ -331,7 +355,7 @@ IPA.hbacrule_details_facet = function(spec) {
'category': 'usercategory',
'has_values': false,
'command': IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'remove_user',
args: [pkey],
options: {all: true, rights: true}
@@ -341,7 +365,7 @@ IPA.hbacrule_details_facet = function(spec) {
'category': 'hostcategory',
'has_values': false,
'command': IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'remove_host',
args: [pkey],
options: {all: true, rights: true}
@@ -351,7 +375,7 @@ IPA.hbacrule_details_facet = function(spec) {
'category': 'servicecategory',
'has_values': false,
'command': IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'remove_service',
args: [pkey],
options: {all: true, rights: true}
@@ -361,7 +385,7 @@ IPA.hbacrule_details_facet = function(spec) {
'category': 'sourcehostcategory',
'has_values': false,
'command': IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'remove_sourcehost',
args: [pkey],
options: {all: true, rights: true}
@@ -372,7 +396,7 @@ IPA.hbacrule_details_facet = function(spec) {
var enable_operation = {
'execute': false,
'command': IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'enable',
args: [pkey],
options: {all: true, rights: true}
@@ -391,7 +415,7 @@ IPA.hbacrule_details_facet = function(spec) {
var values = field.save();
if (!values) continue;
- var param_info = IPA.get_entity_param(that.entity_name, field.name);
+ var param_info = IPA.get_entity_param(that.entity.name, field.name);
// skip primary key
if (param_info && param_info['primary_key']) continue;
@@ -469,6 +493,7 @@ IPA.hbacrule_details_facet = function(spec) {
}
}
+
if (modify_operation.execute) batch.add_command(modify_operation.command);
if (enable_operation.execute) batch.add_command(enable_operation.command);
@@ -480,170 +505,18 @@ IPA.hbacrule_details_facet = function(spec) {
batch.execute();
};
- return that;
-};
-
-
-IPA.hbacrule_details_general_section = function(spec) {
-
- spec = spec || {};
-
- var that = IPA.details_section(spec);
-
- that.create = function(container) {
-
- var table = $('<table/>', {
- 'style': 'width: 100%;'
- }).appendTo(container);
-
- var tr = $('<tr/>').appendTo(table);
-
- var td = $('<td/>', {
- 'style': 'width: 100px; text-align: right;'
- }).appendTo(tr);
+ /*initialization*/
+ that.add_section(general_section());
+ that.add_section(user_category_section());
+ that.add_section(hostcategory_section());
+ that.add_section(servicecategory_section());
+ that.add_section(sourcehostcategory_section());
- var param_info = IPA.get_entity_param('hbacrule', 'cn');
- td.append(param_info.label+':');
-
- td = $('<td/>').appendTo(tr);
-
- var field = that.get_field('cn');
- var span = $('<span/>', {
- name: 'cn',
- 'class': 'details-field'
- }).appendTo(td);
-
- $('<label/>', {
- name: 'cn',
- style: 'display: none;'
- }).appendTo(span);
-
- $('<input/>', {
- 'type': 'text',
- 'name': 'cn',
- 'size': 30
- }).appendTo(span);
-
- span.append(' ');
-
- field.create_undo(span);
-
- td = $('<td/>', {
- 'style': 'text-align: right;'
- }).appendTo(tr);
-
- param_info = IPA.get_entity_param('hbacrule', 'accessruletype');
- td.append(param_info.label+':');
-
- field = that.get_field('accessruletype');
- span = $('<span/>', {
- name: 'accessruletype',
- 'class': 'details-field'
- }).appendTo(td);
-
- $('<input/>', {
- 'type': 'radio',
- 'name': 'accessruletype',
- 'value': 'allow'
- }).appendTo(span);
-
- span.append(' ');
-
- span.append(IPA.messages.objects.hbacrule.allow);
-
- span.append(' ');
-
- $('<input/>', {
- 'type': 'radio',
- 'name': 'accessruletype',
- 'value': 'deny'
- }).appendTo(span);
-
- span.append(' ');
-
- span.append(IPA.messages.objects.hbacrule.deny);
-
- span.append(' ');
-
- field.create_undo(span);
-
- tr = $('<tr/>').appendTo(table);
-
- td = $('<td/>', {
- 'style': 'text-align: right; vertical-align: top;'
- }).appendTo(tr);
-
- param_info = IPA.get_entity_param('hbacrule', 'description');
- td.append(param_info.label+':');
-
- td = $('<td/>', {
- 'colspan': 2
- }).appendTo(tr);
-
- field = that.get_field('description');
- span = $('<span/>', {
- name: 'description',
- 'class': 'details-field'
- }).appendTo(td);
-
- $('<textarea/>', {
- 'name': 'description',
- 'rows': 5,
- 'style': 'width: 100%'
- }).appendTo(span);
-
- span.append(' ');
-
- field.create_undo(span);
-
- tr = $('<tr/>').appendTo(table);
-
- td = $('<td/>', {
- 'style': 'text-align: right; vertical-align: top;'
- }).appendTo(tr);
-
- td.append(IPA.messages.objects.hbacrule.ipaenabledflag+':');
-
- td = $('<td/>', {
- 'colspan': 2
- }).appendTo(tr);
-
- field = that.get_field('ipaenabledflag');
- span = $('<span/>', {
- name: 'ipaenabledflag',
- 'class': 'details-field'
- }).appendTo(td);
-
- $('<input/>', {
- 'type': 'radio',
- 'name': 'ipaenabledflag',
- 'value': 'TRUE'
- }).appendTo(span);
-
- span.append(' ');
-
- span.append(IPA.messages.objects.hbacrule.active);
-
- span.append(' ');
-
- $('<input/>', {
- 'type': 'radio',
- 'name': 'ipaenabledflag',
- 'value': 'FALSE'
- }).appendTo(span);
-
- span.append(' ');
-
- span.append(IPA.messages.objects.hbacrule.inactive);
-
- span.append(' ');
-
- field.create_undo(span);
- };
return that;
};
+
IPA.hbac_deny_warning_dialog = function(container) {
var dialog = IPA.dialog({
'title': 'HBAC Deny Rules found'
@@ -676,7 +549,5 @@ IPA.hbac_deny_warning_dialog = function(container) {
dialog.close();
});
- dialog.init();
-
dialog.open();
};
diff --git a/install/ui/host.js b/install/ui/host.js
index f5e9c74..a84f54c 100644
--- a/install/ui/host.js
+++ b/install/ui/host.js
@@ -192,8 +192,7 @@ IPA.host_dnsrecord_entity_link_widget = function(spec){
var that = IPA.entity_link_widget(spec);
that.other_pkeys = function(){
- var entity = IPA.get_entity(that.entity_name);
- var pkey = entity.get_primary_key()[0];
+ var pkey = that.entity.get_primary_key()[0];
var first_dot = pkey.search(/\./);
var pkeys = [];
pkeys[1] = pkey.substring(0,first_dot);
@@ -312,14 +311,10 @@ IPA.host_provisioning_status_widget = function (spec) {
'name': 'enroll',
'value': IPA.messages.objects.host.set_otp
}).appendTo(content_div);
- };
-
- that.setup = function(container) {
-
- that.widget_setup(container);
that.status_valid = $('div[name=kerberos-key-valid]', that.container);
- that.status_missing = $('div[name=kerberos-key-missing]', that.container);
+ that.status_missing = $('div[name=kerberos-key-missing]',
+ that.container);
var button = $('input[name=unprovision]', that.container);
that.unprovision_button = IPA.button({
@@ -350,7 +345,7 @@ IPA.host_provisioning_status_widget = function (spec) {
that.show_unprovision_dialog = function() {
- var label = IPA.metadata.objects[that.entity_name].label_singular;
+ var label = that.entity.metadata.label_singular;
var title = IPA.messages.objects.host.unprovision_title;
title = title.replace('${entity}', label);
@@ -374,19 +369,16 @@ IPA.host_provisioning_status_widget = function (spec) {
);
});
- dialog.init();
-
dialog.open(that.container);
};
that.unprovision = function(on_success, on_error) {
- var entity = IPA.get_entity(that.entity_name);
- var pkey = entity.get_primary_key();
+ var pkey = that.entity.get_primary_key();
var command = IPA.command({
- name: that.entity_name+'_disable_'+pkey,
- entity: that.entity_name,
+ name: that.entity.name+'_disable_'+pkey,
+ entity: that.entity.name,
method: 'disable',
args: pkey,
options: { all: true, rights: true },
@@ -399,13 +391,12 @@ IPA.host_provisioning_status_widget = function (spec) {
that.set_otp = function() {
- var entity = IPA.get_entity(that.entity_name);
- var pkey = entity.get_primary_key();
+ var pkey = that.entity.get_primary_key();
var otp = that.otp_input.val();
that.otp_input.val('');
var command = IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'mod',
args: pkey,
options: {
@@ -441,28 +432,26 @@ IPA.host_certificate_status_widget = function (spec) {
var that = IPA.cert.status_widget(spec);
- that.init = function() {
- that.entity_label = IPA.metadata.objects[that.entity_name].label_singular;
+ that.entity_label = that.entity.metadata.label_singular;
- that.get_entity_pkey = function(result) {
- var values = result['fqdn'];
- return values ? values[0] : null;
- };
+ that.get_entity_pkey = function(result) {
+ var values = result['fqdn'];
+ return values ? values[0] : null;
+ };
- that.get_entity_name = function(result) {
- return that.get_entity_pkey(result);
- };
+ that.get_entity_name = function(result) {
+ return that.get_entity_pkey(result);
+ };
- that.get_entity_principal = function(result) {
- var values = result['krbprincipalname'];
- return values ? values[0] : null;
- };
+ that.get_entity_principal = function(result) {
+ var values = result['krbprincipalname'];
+ return values ? values[0] : null;
+ };
- that.get_entity_certificate = function(result) {
- var values = result['usercertificate'];
- return values ? values[0].__base64__ : null;
- };
+ that.get_entity_certificate = function(result) {
+ var values = result['usercertificate'];
+ return values ? values[0].__base64__ : null;
};
return that;
@@ -477,22 +466,11 @@ IPA.host_managedby_host_facet = function (spec) {
that.add_method = 'add_managedby';
that.remove_method = 'remove_managedby';
- that.init = function() {
-
- var column = that.create_column({
- name: 'fqdn',
- primary_key: true,
- link: true
- });
-
- that.create_adder_column({
- name: 'fqdn',
- primary_key: true,
- width: '200px'
- });
-
- that.association_facet_init();
- };
+ that.create_adder_column({
+ name: 'fqdn',
+ primary_key: true,
+ width: '200px'
+ });
return that;
};
diff --git a/install/ui/ipa.js b/install/ui/ipa.js
index a6c9694..2f1c696 100644
--- a/install/ui/ipa.js
+++ b/install/ui/ipa.js
@@ -131,17 +131,29 @@ var IPA = ( function () {
return that.entities.values;
};
+
+
that.get_entity = function(name) {
var entity = that.entities.get(name);
if (!entity){
var factory = that.entity_factories[name];
+ if (!factory){
+ return null;
+ }
try {
entity = factory();
that.add_entity(entity);
- entity.init();
} catch (e) {
- /*exceptions thrown by builder just mean that entities
- are not to be registered. */
+ if (e.expected){
+ /*expected exceptions thrown by builder just mean that
+ entities are not to be registered. */
+ return null;
+ }
+ if (e.message){
+ alert(e.message);
+ }else{
+ alert(e);
+ }
return null;
}
}
@@ -597,4 +609,4 @@ IPA.dirty_dialog = function(spec) {
};
return that;
-}; \ No newline at end of file
+};
diff --git a/install/ui/jquery.ordered-map.js b/install/ui/jquery.ordered-map.js
index 8602c55..ea61b95 100755
--- a/install/ui/jquery.ordered-map.js
+++ b/install/ui/jquery.ordered-map.js
@@ -29,10 +29,7 @@ jQuery.ordered_map = jQuery.fn.ordered_map = function() {
that.keys = [];
that.values = [];
that.map = {};
-
- that.__defineGetter__('length', function() {
- return that.keys.length;
- });
+ that.length = 0;
that.get = function(key) {
return that.map[key];
@@ -42,6 +39,7 @@ jQuery.ordered_map = jQuery.fn.ordered_map = function() {
that.keys.push(key);
that.values.push(value);
that.map[key] = value;
+ that.length = that.keys.length;
};
that.remove = function(key) {
@@ -54,7 +52,7 @@ jQuery.ordered_map = jQuery.fn.ordered_map = function() {
var value = that.map[key];
delete that.map[key];
-
+ that.length = that.keys.length;
return value;
};
@@ -62,6 +60,7 @@ jQuery.ordered_map = jQuery.fn.ordered_map = function() {
that.keys = [];
that.values = [];
that.map = {};
+ that.length = that.keys.length;
};
return that;
diff --git a/install/ui/navigation.js b/install/ui/navigation.js
index 0224399..7611734 100644
--- a/install/ui/navigation.js
+++ b/install/ui/navigation.js
@@ -137,7 +137,6 @@ IPA.navigation = function(spec) {
$.bbq.pushState(params);
};
- dialog.init();
dialog.open(that.container);
return false;
@@ -230,10 +229,14 @@ IPA.navigation = function(spec) {
}
if (pkeys) {
- var current_entity = entity;
- while (current_entity){
- state[current_entity.name + '-pkey'] = pkeys.pop();
- current_entity = current_entity.containing_entity;
+ if (pkeys instanceof Array){
+ var current_entity = entity;
+ while (current_entity){
+ state[current_entity.name + '-pkey'] = pkeys.pop();
+ current_entity = current_entity.containing_entity;
+ }
+ }else{
+ state[entity.name + '-pkey'] = pkeys;
}
}
@@ -394,7 +397,7 @@ IPA.navigation = function(spec) {
}
entity_container.css('display', 'block');
- tab.entity.setup(tab.content);
+ tab.entity.display(tab.content);
}
};
diff --git a/install/ui/rule.js b/install/ui/rule.js
index 40d05c8..3398f24 100644
--- a/install/ui/rule.js
+++ b/install/ui/rule.js
@@ -36,10 +36,12 @@ IPA.rule_details_section = function(spec) {
that.create = function(container) {
+ that.container = container;
+
if (that.text) container.append(that.text);
var field = that.get_field(that.field_name);
- var param_info = IPA.get_entity_param(that.entity_name, that.field_name);
+ var param_info = IPA.get_entity_param(that.entity.name, that.field_name);
var span = $('<span/>', {
name: that.field_name,
@@ -47,32 +49,46 @@ IPA.rule_details_section = function(spec) {
'class': 'details-field'
}).appendTo(container);
- if (that.options.length) {
- for (var i=0; i<that.options.length; i++) {
- var option = that.options[i];
-
- $('<input/>', {
- 'type': 'radio',
- 'name': that.field_name,
- 'value': option.value
- }).appendTo(span);
- span.append(' ');
- span.append(option.label);
+ function update_tables(value) {
+ var enabled = ('' === value);
+ for (var i=0; i<that.tables.length; i++) {
+ var table = that.tables[i];
- span.append(' ');
+ var field = that.get_field(table.field_name);
+ field.set_enabled(enabled);
}
+ }
- field.create_undo(span);
-
- span.append('<br/>');
+ if (that.options.length) {
+ var category = that.get_field(that.field_name);
+ category.options=that.options;
+ category.reset = function() {
+ category.widget_reset();
+ var values = category.save();
+ if (values.length === 0){
+ return;
+ }
+ var value = values[0];
+ update_tables(value);
+ };
+ category.create(span);
+
+ var inputs = $('input[name='+that.field_name+']', container);
+ inputs.change(function() {
+ var input = $(this);
+ var value = input.val();
+ update_tables(value);
+ });
}
+
+
for (var j=0; j<that.tables.length; j++) {
var table = that.tables[j];
- param_info = IPA.get_entity_param(that.entity_name, table.field_name);
+ param_info = IPA.get_entity_param(that.entity.name, table.field_name);
var table_span = $('<span/>', {
name: table.field_name,
@@ -83,41 +99,8 @@ IPA.rule_details_section = function(spec) {
field = that.get_field(table.field_name);
field.create(table_span);
}
- };
-
- that.setup = function(container) {
-
- that.section_setup(container);
-
- function update_tables(value) {
-
- var enabled = ('' === value);
-
- for (var i=0; i<that.tables.length; i++) {
- var table = that.tables[i];
- var field = that.get_field(table.field_name);
- field.set_enabled(enabled);
- }
- }
- var category = that.get_field(that.field_name);
- category.reset = function() {
- category.widget_reset();
- var values = category.save();
- if (values.length === 0){
- return;
- }
- var value = values[0];
- update_tables(value);
- };
-
- var inputs = $('input[name='+that.field_name+']', container);
- inputs.change(function() {
- var input = $(this);
- var value = input.val();
- update_tables(value);
- });
};
return that;
@@ -150,7 +133,7 @@ IPA.rule_association_table_widget = function(spec) {
that.add = function(values, on_success, on_error) {
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var batch = IPA.batch_command({
'on_success': on_success,
@@ -161,7 +144,7 @@ IPA.rule_association_table_widget = function(spec) {
if (that.category) {
command = IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'mod',
args: [pkey],
options: {all: true, rights: true},
@@ -176,7 +159,7 @@ IPA.rule_association_table_widget = function(spec) {
}
command = IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: that.add_method,
args: [pkey]
});
diff --git a/install/ui/search.js b/install/ui/search.js
index fec394d..fe0b07f 100644
--- a/install/ui/search.js
+++ b/install/ui/search.js
@@ -29,10 +29,12 @@ IPA.search_facet = function(spec) {
spec = spec || {};
spec.name = spec.name || 'search';
- spec.managed_entity_name = spec.managed_entity_name || spec.entity_name;
+ spec.managed_entity_name = spec.managed_entity_name || spec.entity.name;
- spec.disable_breadcrumb = spec.disable_breadcrumb === undefined ? true : spec.disable_breadcrumb;
- spec.disable_facet_tabs = spec.disable_facet_tabs === undefined ? true : spec.disable_facet_tabs;
+ spec.disable_breadcrumb =
+ spec.disable_breadcrumb === undefined ? true : spec.disable_breadcrumb;
+ spec.disable_facet_tabs =
+ spec.disable_facet_tabs === undefined ? true : spec.disable_facet_tabs;
var that = IPA.table_facet(spec);
@@ -45,19 +47,15 @@ IPA.search_facet = function(spec) {
that.get_values = spec.get_values || get_values;
- that.init = function() {
- that.facet_init();
+ function initialize_table_columns(){
that.managed_entity = IPA.get_entity(that.managed_entity_name);
- that.init_table(that.managed_entity);
- };
-
- that.init_table = function(entity){
+ var entity = that.managed_entity;
that.table = IPA.table_widget({
'class': 'content-table',
name: 'search',
label: entity.metadata.label,
- entity_name: entity.name,
+ entity: entity,
search_all: that.search_all,
scrollable: true,
selectable: that.selectable
@@ -66,7 +64,7 @@ IPA.search_facet = function(spec) {
var columns = that.columns.values;
for (var i=0; i<columns.length; i++) {
var column = columns[i];
-
+ column.entity = entity;
var param_info = IPA.get_entity_param(entity.name, column.name);
column.primary_key = param_info && param_info['primary_key'];
column.link = column.primary_key;
@@ -88,8 +86,13 @@ IPA.search_facet = function(spec) {
that.table.refresh = function() {
that.refresh();
};
+ }
- that.table.init();
+ that.create_content = function(container) {
+ /*should be in the initialize section, but can not, due to
+ get_entity circular references.*/
+ initialize_table_columns();
+ that.table.create(container);
};
that.create_header = function(container) {
@@ -132,7 +135,9 @@ IPA.search_facet = function(spec) {
label: IPA.messages.buttons.remove,
icon: 'remove-icon',
click: function() {
- if (that.remove_button.hasClass('input_link_disabled')) return false;
+ if (that.remove_button.hasClass('input_link_disabled')) {
+ return false;
+ }
that.remove();
return false;
}
@@ -149,17 +154,12 @@ IPA.search_facet = function(spec) {
}).appendTo(that.controls);
};
- that.create_content = function(container) {
-
- that.table.create(container);
- that.table.setup(container);
- };
that.show = function() {
that.facet_show();
if (that.filter) {
- var filter = IPA.nav.get_state(that.entity_name+'-filter');
+ var filter = IPA.nav.get_state(that.entity.name+'-filter');
that.filter.val(filter);
}
};
@@ -213,8 +213,6 @@ IPA.search_facet = function(spec) {
dialog.set_values(values);
- dialog.init();
-
dialog.open(that.container);
};
@@ -290,9 +288,7 @@ IPA.search_facet = function(spec) {
};
// methods that should be invoked by subclasses
- that.search_facet_init = that.init;
that.search_facet_create_content = that.create_content;
- that.search_facet_setup = that.setup;
return that;
};
diff --git a/install/ui/service.js b/install/ui/service.js
index 6abd84f..a8bf020 100644
--- a/install/ui/service.js
+++ b/install/ui/service.js
@@ -112,24 +112,28 @@ IPA.service_add_dialog = function(spec) {
field(IPA.widget({
name: 'krbprincipalname',
optional:true,
+ entity:spec.entity,
hidden: true
})).
field(IPA.service_select_widget({
name: 'service',
label: IPA.messages.objects.service.service,
size: 20,
+ entity:spec.entity,
undo: false
})).
field(IPA.entity_select_widget({
name: 'host',
other_entity: 'host',
other_field: 'fqdn',
+ entity:spec.entity,
label: IPA.messages.objects.service.host,
undo: false
})).
field(
IPA.checkbox_widget({
name: 'force',
+ entity:spec.entity,
label: IPA.get_method_option('service_add', 'force').label,
tooltip: IPA.get_method_option('service_add', 'force').doc,
undo: false
@@ -247,11 +251,6 @@ IPA.service_provisioning_status_widget = function (spec) {
}).appendTo(div);
content_div.append('<b>'+IPA.messages.objects.service.missing+'</b>');
- };
-
- that.setup = function(container) {
-
- that.widget_setup(container);
that.status_valid = $('div[name=kerberos-key-valid]', that.container);
that.status_missing = $('div[name=kerberos-key-missing]', that.container);
@@ -267,7 +266,7 @@ IPA.service_provisioning_status_widget = function (spec) {
that.unprovision = function() {
- var label = IPA.metadata.objects[that.entity_name].label_singular;
+ var label = that.entity.metadata.label_singular;
var title = IPA.messages.objects.service.unprovision_title;
title = title.replace('${entity}', label);
@@ -282,7 +281,7 @@ IPA.service_provisioning_status_widget = function (spec) {
dialog.add_button(IPA.messages.objects.service.unprovision, function() {
var pkey = that.result['krbprincipalname'][0];
IPA.command({
- entity: that.entity_name,
+ entity: that.entity,
method: 'disable',
args: [pkey],
on_success: function(data, text_status, xhr) {
@@ -295,8 +294,6 @@ IPA.service_provisioning_status_widget = function (spec) {
}).execute();
});
- dialog.init();
-
dialog.open(that.container);
return false;
@@ -322,28 +319,26 @@ IPA.service_certificate_status_widget = function (spec) {
var that = IPA.cert.status_widget(spec);
- that.init = function() {
- that.entity_label = IPA.metadata.objects[that.entity_name].label_singular;
+ that.entity_label = that.entity.metadata.label_singular;
- that.get_entity_pkey = function(result) {
- var values = result['krbprincipalname'];
- return values ? values[0] : null;
- };
+ that.get_entity_pkey = function(result) {
+ var values = result['krbprincipalname'];
+ return values ? values[0] : null;
+ };
- that.get_entity_name = function(result) {
- var value = that.get_entity_pkey(result);
- return value ? value.replace(/@.*$/, '') : null;
- };
+ that.get_entity_name = function(result) {
+ var value = that.get_entity_pkey(result);
+ return value ? value.replace(/@.*$/, '') : null;
+ };
- that.get_entity_principal = function(result) {
- return that.get_entity_pkey(result);
- };
+ that.get_entity_principal = function(result) {
+ return that.get_entity_pkey(result);
+ };
- that.get_entity_certificate = function(result) {
- var values = result['usercertificate'];
- return values ? values[0].__base64__ : null;
- };
+ that.get_entity_certificate = function(result) {
+ var values = result['usercertificate'];
+ return values ? values[0].__base64__ : null;
};
return that;
@@ -355,22 +350,13 @@ IPA.service_managedby_host_facet = function(spec) {
var that = IPA.association_facet(spec);
- that.init = function() {
-
- var column = that.create_column({
- name: 'fqdn',
- primary_key: true,
- link: true
- });
-
- that.create_adder_column({
- name: 'fqdn',
- primary_key: true,
- width: '200px'
- });
+ that.create_adder_column({
+ name: 'fqdn',
+ label: IPA.messages.objects.service.host,
+ primary_key: true,
+ width: '200px'
+ });
- that.association_facet_init();
- };
return that;
-};
+}; \ No newline at end of file
diff --git a/install/ui/sudo.js b/install/ui/sudo.js
index 8346777..14bc8d5 100644
--- a/install/ui/sudo.js
+++ b/install/ui/sudo.js
@@ -168,7 +168,7 @@ IPA.sudocmd_member_sudocmdgroup_table_widget = function(spec) {
if (!that.values.length) return;
var batch = IPA.batch_command({
- 'name': that.entity_name+'_'+that.name+'_show',
+ 'name': that.entity.name+'_'+that.name+'_show',
'on_success': on_success,
'on_error': on_error
});
@@ -197,12 +197,12 @@ IPA.sudocmd_member_sudocmdgroup_table_widget = function(spec) {
if (!values.length) return;
var batch = IPA.batch_command({
- 'name': that.entity_name+'_'+that.name+'_add',
+ 'name': that.entity.name+'_'+that.name+'_add',
'on_success': on_success,
'on_error': on_error
});
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
for (var i=0; i<values.length; i++) {
var value = values[i];
@@ -226,12 +226,12 @@ IPA.sudocmd_member_sudocmdgroup_table_widget = function(spec) {
if (!values.length) return;
var batch = IPA.batch_command({
- 'name': that.entity_name+'_'+that.name+'_remove',
+ 'name': that.entity.name+'_'+that.name+'_remove',
'on_success': on_success,
'on_error': on_error
});
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
for (var i=0; i<values.length; i++) {
var value = values[i];
@@ -263,108 +263,129 @@ IPA.sudorule_details_facet = function(spec) {
var that = IPA.details_facet(spec);
- var section = IPA.sudo.rule_details_general_section({
- 'name': 'general',
- 'label': IPA.messages.details.general
- });
- that.add_section(section);
-
- section.text({name: 'cn', read_only: true});
- section.textarea({name: 'description'});
- section.radio({name: 'ipaenabledflag'});
-
- section = that.add_section(IPA.sudo.options_section({
- name: 'options',
- label: IPA.messages.objects.sudorule.options,
- facet: that
- }));
+ function general_section(){
+ var section = IPA.details_list_section({
+ name: 'general',
+ label: IPA.messages.details.general,
+ entity: that.entity,
+ facet: that
+ });
- var param_info = IPA.get_entity_param('sudorule', 'usercategory');
-
- section = IPA.rule_details_section({
- 'name': 'user',
- 'label': IPA.messages.objects.sudorule.user,
- text: param_info.doc+':',
- 'field_name': 'usercategory',
- 'options': [
- { 'value': 'all', 'label': IPA.messages.objects.sudorule.anyone },
- { 'value': '', 'label': IPA.messages.objects.sudorule.specified_users }
- ],
- 'tables': [
- { 'field_name': 'memberuser_user' },
- { 'field_name': 'memberuser_group' }
- ]
- });
- that.add_section(section);
-
- var category = section.add_field(IPA.radio_widget({
- name: 'usercategory'
- }));
- section.add_field(IPA.sudorule_association_table_widget({
- 'id': that.entity_name+'-memberuser_user',
- 'name': 'memberuser_user', 'category': category,
- 'other_entity': 'user', 'add_method': 'add_user', 'remove_method': 'remove_user',
- 'external': 'externaluser'
- }));
- section.add_field(IPA.sudorule_association_table_widget({
- 'id': that.entity_name+'-memberuser_group',
- 'name': 'memberuser_group', 'category': category,
- 'other_entity': 'group', 'add_method': 'add_user', 'remove_method': 'remove_user'
- }));
+ section.text({name: 'cn', read_only: true});
+ section.textarea({name: 'description'});
+ section.radio({
+ name: 'ipaenabledflag',
+ options:[
+ {'value': 'TRUE',label: IPA.messages['true']},
+ {'value': 'FALSE',label:IPA.messages['false']}
+ ]});
+ return section;
+ }
+
+ function options_section(){
+ var section = IPA.sudo.options_section({
+ name: 'options',
+ label: IPA.messages.objects.sudorule.options,
+ entity: that.entity,
+ facet: that
+ });
+ return section;
+ }
+
+
+ function user_section(){
+ var param_info = IPA.get_entity_param('sudorule', 'usercategory');
+
+ var section = IPA.rule_details_section({
+ name: 'user',
+ label: IPA.messages.objects.sudorule.user,
+ text: param_info.doc+':',
+ field_name: 'usercategory',
+ entity: that.entity,
+ options: [
+ { value: 'all',
+ label: IPA.messages.objects.sudorule.anyone },
+ { value: '',
+ label: IPA.messages.objects.sudorule.specified_users }
+ ],
+ tables: [
+ { field_name: 'memberuser_user' },
+ { field_name: 'memberuser_group' }
+ ]
+ });
- param_info = IPA.get_entity_param('sudorule', 'hostcategory');
-
- section = IPA.rule_details_section({
- 'name': 'host',
- 'label': IPA.messages.objects.sudorule.host,
- text: param_info.doc+':',
- 'field_name': 'hostcategory',
- 'options': [
- { 'value': 'all', 'label': IPA.messages.objects.sudorule.any_host },
- { 'value': '', 'label': IPA.messages.objects.sudorule.specified_hosts }
- ],
- 'tables': [
- { 'field_name': 'memberhost_host' },
- { 'field_name': 'memberhost_hostgroup' }
- ]
- });
- that.add_section(section);
-
- category = section.add_field(IPA.radio_widget({
- name: 'hostcategory'
- }));
- section.add_field(IPA.sudorule_association_table_widget({
- 'id': that.entity_name+'-memberhost_host',
- 'name': 'memberhost_host', 'category': category,
- 'other_entity': 'host', 'add_method': 'add_host', 'remove_method': 'remove_host',
- 'external': 'externalhost'
- }));
- section.add_field(IPA.sudorule_association_table_widget({
- 'id': that.entity_name+'-memberhost_hostgroup',
- 'name': 'memberhost_hostgroup', 'category': category,
- 'other_entity': 'hostgroup', 'add_method': 'add_host', 'remove_method': 'remove_host'
- }));
+ var category = section.add_field(IPA.radio_widget({
+ entity: that.entity,
+ name: 'usercategory'
+ }));
+ section.add_field(IPA.sudorule_association_table_widget({
+ 'id': that.entity.name+'-memberuser_user',
+ entity: that.entity,
+ 'name': 'memberuser_user', 'category': category,
+ 'other_entity': 'user',
+ 'add_method': 'add_user',
+ 'remove_method': 'remove_user',
+ 'external': 'externaluser'
+ }));
+ section.add_field(IPA.sudorule_association_table_widget({
+ 'id': that.entity.name+'-memberuser_group',
+ entity: that.entity,
+ 'name': 'memberuser_group', 'category': category,
+ 'other_entity': 'group',
+ 'add_method': 'add_user',
+ 'remove_method': 'remove_user'
+ }));
+ return section;
+ }
+
+ function host_section(){
+ var param_info = IPA.get_entity_param('sudorule', 'hostcategory');
+
+ var section = IPA.rule_details_section({
+ 'name': 'host',
+ entity: that.entity,
+ 'label': IPA.messages.objects.sudorule.host,
+ text: param_info.doc+':',
+ 'field_name': 'hostcategory',
+ 'options': [
+ { 'value': 'all', 'label': IPA.messages.objects.sudorule.any_host },
+ { 'value': '', 'label': IPA.messages.objects.sudorule.specified_hosts }
+ ],
+ 'tables': [
+ { 'field_name': 'memberhost_host' },
+ { 'field_name': 'memberhost_hostgroup' }
+ ]
+ });
- section = IPA.sudo.rule_details_command_section({
- 'name': 'command',
- 'label': IPA.messages.objects.sudorule.command
- });
- that.add_section(section);
+ var category = section.add_field(IPA.radio_widget({
+ entity: that.entity,
+ name: 'hostcategory'
+ }));
+ section.add_field(IPA.sudorule_association_table_widget({
+ 'id': that.entity.name+'-memberhost_host',
+ entity: that.entity,
+ 'name': 'memberhost_host', 'category': category,
+ 'other_entity': 'host', 'add_method': 'add_host', 'remove_method': 'remove_host',
+ 'external': 'externalhost'
+ }));
+ section.add_field(IPA.sudorule_association_table_widget({
+ 'id': that.entity.name+'-memberhost_hostgroup',
+ entity: that.entity,
+ 'name': 'memberhost_hostgroup', 'category': category,
+ 'other_entity': 'hostgroup', 'add_method': 'add_host', 'remove_method': 'remove_host'
+ }));
+ return section;
+ }
- section = IPA.sudo.rule_details_runas_section({
- 'name': 'runas',
- 'label': IPA.messages.objects.sudorule.runas
- });
- that.add_section(section);
that.update = function(on_success, on_error) {
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var modify_operation = {
'execute': false,
'command': IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'mod',
args: [pkey],
options: {all: true, rights: true}
@@ -394,7 +415,7 @@ IPA.sudorule_details_facet = function(spec) {
'category': 'usercategory',
'has_values': false,
'command': IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'remove_user',
args: [pkey],
options: {all: true, rights: true}
@@ -404,7 +425,7 @@ IPA.sudorule_details_facet = function(spec) {
'category': 'hostcategory',
'has_values': false,
'command': IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'remove_host',
args: [pkey],
options: {all: true, rights: true}
@@ -414,7 +435,7 @@ IPA.sudorule_details_facet = function(spec) {
'category': 'cmdcategory',
'has_values': false,
'command': IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'remove_allow_command',
args: [pkey],
options: {all: true, rights: true}
@@ -424,7 +445,7 @@ IPA.sudorule_details_facet = function(spec) {
'category': 'ipasudorunasusercategory',
'has_values': false,
'command': IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'remove_runasuser',
args: [pkey],
options: {all: true, rights: true}
@@ -434,7 +455,7 @@ IPA.sudorule_details_facet = function(spec) {
'category': 'ipasudorunasgroupcategory',
'has_values': false,
'command': IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'remove_runasgroup',
args: [pkey],
options: {all: true, rights: true}
@@ -445,7 +466,7 @@ IPA.sudorule_details_facet = function(spec) {
var enable_operation = {
'execute': false,
'command': IPA.command({
- entity: that.entity_name,
+ entity: that.entity.name,
method: 'enable',
args: [pkey],
options: {all: true, rights: true}
@@ -464,7 +485,7 @@ IPA.sudorule_details_facet = function(spec) {
var values = field.save();
if (!values) continue;
- var param_info = IPA.get_entity_param(that.entity_name, field.name);
+ var param_info = IPA.get_entity_param(that.entity.name, field.name);
// skip primary key
if (param_info && param_info['primary_key']) continue;
@@ -553,6 +574,23 @@ IPA.sudorule_details_facet = function(spec) {
batch.execute();
};
+ /*initialization*/
+ that.add_section(general_section());
+ that.add_section(options_section());
+ that.add_section(user_section());
+ that.add_section(host_section());
+ that.add_section( IPA.sudo.rule_details_command_section({
+ name: 'command',
+ entity: that.entity,
+ label: IPA.messages.objects.sudorule.command
+ }));
+ that.add_section( IPA.sudo.rule_details_runas_section({
+ name: 'runas',
+ entity: that.entity,
+ label: IPA.messages.objects.sudorule.runas
+ }));
+
+
return that;
};
@@ -564,8 +602,8 @@ IPA.sudo.options_section = function(spec) {
that.facet = spec.facet;
- that.init = function() {
+ function setup_table(){
that.table = that.add_field(IPA.table_widget({
name: 'ipasudoopt',
show_buttons: true
@@ -574,6 +612,7 @@ IPA.sudo.options_section = function(spec) {
that.table.create_column({
name: 'ipasudoopt',
label: IPA.get_method_option('sudorule_add_option', 'ipasudoopt').label,
+ entity_name:that.entity.name,
primary_key: true
});
@@ -601,9 +640,7 @@ IPA.sudo.options_section = function(spec) {
}
}).appendTo(that.table.buttons);
};
-
- that.section_init();
- };
+ }
that.add_handler = function() {
if (that.facet.is_dirty()) {
@@ -614,8 +651,6 @@ IPA.sudo.options_section = function(spec) {
dialog.callback = function() {
that.show_add_dialog();
};
-
- dialog.init();
dialog.open(that.container);
} else {
@@ -632,8 +667,6 @@ IPA.sudo.options_section = function(spec) {
dialog.callback = function() {
that.show_remove_dialog();
};
-
- dialog.init();
dialog.open(that.container);
} else {
@@ -661,7 +694,7 @@ IPA.sudo.options_section = function(spec) {
dialog.add_button(IPA.messages.buttons.add, function() {
var value = ipasudoopt.save()[0];
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var command = IPA.command({
entity: 'sudorule',
@@ -687,8 +720,6 @@ IPA.sudo.options_section = function(spec) {
dialog.close();
});
- dialog.init();
-
dialog.open(that.container);
};
@@ -703,7 +734,7 @@ IPA.sudo.options_section = function(spec) {
return;
}
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var title = IPA.messages.dialogs.remove_title;
title = title.replace('${entity}', label);
@@ -741,186 +772,78 @@ IPA.sudo.options_section = function(spec) {
batch.execute();
};
- dialog.init();
-
dialog.open(that.container);
};
- return that;
-};
-
-IPA.sudo.rule_details_general_section = function(spec) {
-
- spec = spec || {};
-
- var that = IPA.details_section(spec);
-
- that.create = function(container) {
-
- var table = $('<table/>', {
- 'style': 'width: 100%;'
- }).appendTo(container);
-
- var param_info = IPA.get_entity_param(that.entity_name, 'cn');
-
- var tr = $('<tr/>').appendTo(table);
-
- var td = $('<td/>', {
- style: 'width: 100px; text-align: right;',
- html: param_info.label+':',
- title: param_info ? param_info.doc : 'cn'
- }).appendTo(tr);
-
- td = $('<td/>').appendTo(tr);
-
- var field = that.get_field('cn');
-
- var span = $('<span/>', {
- name: 'cn',
- title: param_info ? param_info.doc : 'cn',
- 'class': 'details-field'
- }).appendTo(td);
-
- $('<label/>', {
- name: 'cn',
- style: 'display: none;'
- }).appendTo(span);
-
- $('<input/>', {
- 'type': 'text',
- 'name': 'cn',
- 'size': 30
- }).appendTo(span);
-
- span.append(' ');
-
- field.create_undo(span);
-
- param_info = IPA.get_entity_param(that.entity_name, 'description');
-
- tr = $('<tr/>').appendTo(table);
-
- td = $('<td/>', {
- style: 'text-align: right; vertical-align: top;',
- html: param_info.label+':',
- title: param_info ? param_info.doc : 'description'
- }).appendTo(tr);
-
- td = $('<td/>').appendTo(tr);
-
- field = that.get_field('description');
-
- span = $('<span/>', {
- name: 'description',
- title: param_info ? param_info.doc : 'description',
- 'class': 'details-field'
- }).appendTo(td);
-
- $('<textarea/>', {
- 'name': 'description',
- 'rows': 5,
- 'style': 'width: 100%'
- }).appendTo(span);
-
- span.append(' ');
-
- field.create_undo(span);
-
- param_info = IPA.get_entity_param(that.entity_name, 'ipaenabledflag');
- var label = IPA.messages.objects.sudorule.ipaenabledflag;
-
- tr = $('<tr/>').appendTo(table);
-
- td = $('<td/>', {
- style: 'text-align: right; vertical-align: top;',
- html: label+':',
- title: label
- }).appendTo(tr);
-
- td = $('<td/>').appendTo(tr);
-
- field = that.get_field('ipaenabledflag');
-
- span = $('<span/>', {
- name: 'ipaenabledflag',
- title: label,
- 'class': 'details-field'
- }).appendTo(td);
-
- $('<input/>', {
- 'type': 'radio',
- 'name': 'ipaenabledflag',
- 'value': 'TRUE'
- }).appendTo(span);
-
- span.append(' ');
-
- span.append(IPA.messages.objects.sudorule.active);
-
- span.append(' ');
-
- $('<input/>', {
- 'type': 'radio',
- 'name': 'ipaenabledflag',
- 'value': 'FALSE'
- }).appendTo(span);
-
- span.append(' ');
-
- span.append(IPA.messages.objects.sudorule.inactive);
-
- span.append(' ');
-
- field.create_undo(span);
- };
+ /*initialization*/
+ setup_table();
return that;
};
+
IPA.sudo.rule_details_command_section = function(spec) {
spec = spec || {};
var that = IPA.details_section(spec);
- that.init = function() {
-
- var category = that.add_field(IPA.radio_widget({
- name: 'cmdcategory'
- }));
+ function setup_fields(){
+ that.category = that.add_field(
+ IPA.radio_widget({
+ name: 'cmdcategory',
+ options:[
+ {
+ value:'all',
+ label:IPA.messages.objects.sudorule.any_command
+ },
+ {
+ value:'',
+ label:IPA.messages.objects.sudorule.specified_commands
+ }
+ ]
+ }));
that.add_field(IPA.rule_association_table_widget({
- 'id': that.entity_name+'-memberallowcmd_sudocmd',
+ 'id': that.entity.name+'-memberallowcmd_sudocmd',
'name': 'memberallowcmd_sudocmd',
- 'category': category,
- 'other_entity': 'sudocmd', 'add_method': 'add_allow_command', 'remove_method': 'remove_allow_command'
+ 'category': that.category,
+ 'other_entity': 'sudocmd',
+ 'add_method': 'add_allow_command',
+ 'remove_method': 'remove_allow_command'
}));
that.add_field(IPA.rule_association_table_widget({
- 'id': that.entity_name+'-memberallowcmd_sudocmdgroup',
+ 'id': that.entity.name+'-memberallowcmd_sudocmdgroup',
'name': 'memberallowcmd_sudocmdgroup',
- 'category': category,
- 'other_entity': 'sudocmdgroup', 'add_method': 'add_allow_command', 'remove_method': 'remove_allow_command'
+ 'category': that.category,
+ 'other_entity': 'sudocmdgroup',
+ 'add_method': 'add_allow_command',
+ 'remove_method': 'remove_allow_command'
}));
that.add_field(IPA.rule_association_table_widget({
- 'id': that.entity_name+'-memberdenycmd_sudocmd',
+ 'id': that.entity.name+'-memberdenycmd_sudocmd',
'name': 'memberdenycmd_sudocmd',
- 'other_entity': 'sudocmd', 'add_method': 'add_deny_command', 'remove_method': 'remove_deny_command'
+ 'other_entity': 'sudocmd',
+ 'add_method': 'add_deny_command',
+ 'remove_method': 'remove_deny_command'
}));
that.add_field(IPA.rule_association_table_widget({
- 'id': that.entity_name+'-memberdenycmd_sudocmdgroup',
+ 'id': that.entity.name+'-memberdenycmd_sudocmdgroup',
'name': 'memberdenycmd_sudocmdgroup',
- 'other_entity': 'sudocmdgroup', 'add_method': 'add_deny_command', 'remove_method': 'remove_deny_command'
+ 'other_entity': 'sudocmdgroup',
+ 'add_method': 'add_deny_command',
+ 'remove_method': 'remove_deny_command'
}));
-
- that.section_init();
- };
+ }
that.create = function(container) {
+ that.container = container;
+
var field = that.get_field('cmdcategory');
- var param_info = IPA.get_entity_param(that.entity_name, 'cmdcategory');
+ var param_info = IPA.get_entity_param(that.entity.name, 'cmdcategory');
var span = $('<span/>', {
name: 'cmdcategory',
@@ -933,36 +856,12 @@ IPA.sudo.rule_details_command_section = function(spec) {
title: IPA.messages.objects.sudorule.allow
}).appendTo(span);
- span.append(param_info.doc);
- span.append(': ');
-
- $('<input/>', {
- type: 'radio',
- name: 'cmdcategory',
- value: 'all'
- }).appendTo(span);
-
- span.append(' ');
-
- span.append(IPA.messages.objects.sudorule.any_command);
-
- span.append(' ');
-
- $('<input/>', {
- type: 'radio',
- name: 'cmdcategory',
- value: ''
- }).appendTo(span);
+ span.append(param_info.doc+": ");
- span.append(' ');
+ that.category.create(span);
- span.append(IPA.messages.objects.sudorule.specified_commands);
-
- span.append(' ');
-
- field.create_undo(span);
-
- param_info = IPA.get_entity_param(that.entity_name, 'memberallowcmd_sudocmd');
+ param_info = IPA.get_entity_param(
+ that.entity.name, 'memberallowcmd_sudocmd');
var table_span = $('<span/>', {
name: 'memberallowcmd_sudocmd',
@@ -973,7 +872,8 @@ IPA.sudo.rule_details_command_section = function(spec) {
field = that.get_field('memberallowcmd_sudocmd');
field.create(table_span);
- param_info = IPA.get_entity_param(that.entity_name, 'memberallowcmd_sudocmdgroup');
+ param_info = IPA.get_entity_param(
+ that.entity.name, 'memberallowcmd_sudocmdgroup');
table_span = $('<span/>', {
name: 'memberallowcmd_sudocmdgroup',
@@ -989,7 +889,8 @@ IPA.sudo.rule_details_command_section = function(spec) {
title: IPA.messages.objects.sudorule.deny
}).appendTo(span);
- param_info = IPA.get_entity_param(that.entity_name, 'memberdenycmd_sudocmd');
+ param_info = IPA.get_entity_param(
+ that.entity.name, 'memberdenycmd_sudocmd');
table_span = $('<span/>', {
name: 'memberdenycmd_sudocmd',
@@ -1000,7 +901,8 @@ IPA.sudo.rule_details_command_section = function(spec) {
field = that.get_field('memberdenycmd_sudocmd');
field.create(table_span);
- param_info = IPA.get_entity_param(that.entity_name, 'memberdenycmd_sudocmdgroup');
+ param_info = IPA.get_entity_param(
+ that.entity.name, 'memberdenycmd_sudocmdgroup');
table_span = $('<span/>', {
name: 'memberdenycmd_sudocmdgroup',
@@ -1010,11 +912,6 @@ IPA.sudo.rule_details_command_section = function(spec) {
field = that.get_field('memberdenycmd_sudocmdgroup');
field.create(table_span);
- };
-
- that.setup = function(container) {
-
- that.section_setup(container);
function update_tables(value) {
@@ -1044,6 +941,9 @@ IPA.sudo.rule_details_command_section = function(spec) {
});
};
+ /*initialization*/
+ setup_fields();
+
return that;
};
@@ -1054,79 +954,80 @@ IPA.sudo.rule_details_runas_section = function(spec) {
var that = IPA.details_section(spec);
- that.init = function() {
-
- var category = that.add_field(IPA.radio_widget({
- name: 'ipasudorunasusercategory'
- }));
+ function add_extra_fields(){
+ var category = that.add_field(
+ IPA.radio_widget({
+ name: 'ipasudorunasusercategory',
+ options:[
+ {
+ value:'all',
+ label:IPA.messages.objects.sudorule.anyone},
+ {
+ value:'',
+ label:IPA.messages.objects.sudorule.specified_users
+ }
+ ]
+ }));
that.add_field(IPA.sudorule_association_table_widget({
- 'id': that.entity_name+'-runasruser_user',
- 'name': 'ipasudorunas_user', 'category': category,
- 'other_entity': 'user', 'add_method': 'add_runasuser', 'remove_method': 'remove_runasuser'
+ id: that.entity.name+'-runasruser_user',
+ name: 'ipasudorunas_user',
+ category: category,
+ other_entity: 'user',
+ add_method: 'add_runasuser',
+ remove_method: 'remove_runasuser'
}));
that.add_field(IPA.sudorule_association_table_widget({
- 'id': that.entity_name+'-runasuser_group',
- 'name': 'ipasudorunas_group', 'category': category,
- 'other_entity': 'group', 'add_method': 'add_runasuser', 'remove_method': 'remove_runasuser'
+ id: that.entity.name+'-runasuser_group',
+ name: 'ipasudorunas_group',
+ category: category,
+ other_entity: 'group',
+ add_method: 'add_runasuser',
+ remove_method: 'remove_runasuser'
}));
- category = that.add_field(IPA.radio_widget({
- name: 'ipasudorunasgroupcategory'
- }));
+ category = that.add_field(
+ IPA.radio_widget({
+ name: 'ipasudorunasgroupcategory',
+ options:[
+ {
+ value:'all',
+ label:IPA.messages.objects.sudorule.any_group
+ },
+ {
+ value:'',
+ label:IPA.messages.objects.sudorule.specified_groups
+ }
+ ]
+ }));
that.add_field(IPA.sudorule_association_table_widget({
- 'id': that.entity_name+'-runasgroup_group',
- 'name': 'ipasudorunasgroup_group', 'category': category,
- 'other_entity': 'group', 'add_method': 'add_runasgroup', 'remove_method': 'remove_runasgroup'
+ id: that.entity.name+'-runasgroup_group',
+ name: 'ipasudorunasgroup_group',
+ category: category,
+ other_entity: 'group',
+ add_method: 'add_runasgroup',
+ remove_method: 'remove_runasgroup'
}));
-
- that.section_init();
- };
+ }
that.create = function(container) {
+ that.container = container;
var field = that.get_field('ipasudorunasusercategory');
- var param_info = IPA.get_entity_param(that.entity_name, 'ipasudorunasusercategory');
+ var param_info = IPA.get_entity_param(
+ that.entity.name, 'ipasudorunasusercategory');
var span = $('<span/>', {
name: 'ipasudorunasusercategory',
title: param_info.doc,
'class': 'details-field'
}).appendTo(container);
-
- span.append(param_info.doc);
- span.append(': ');
-
- $('<input/>', {
- 'type': 'radio',
- 'name': 'ipasudorunasusercategory',
- 'value': 'all'
- }).appendTo(span);
-
- span.append(' ');
-
- span.append(IPA.messages.objects.sudorule.anyone);
-
- span.append(' ');
-
- $('<input/>', {
- 'type': 'radio',
- 'name': 'ipasudorunasusercategory',
- 'value': ''
- }).appendTo(span);
-
- span.append(' ');
-
- span.append(IPA.messages.objects.sudorule.specified_users);
-
- span.append(' ');
-
- field.create_undo(span);
-
+ span.append(param_info.doc+": ");
+ field.create(span);
span.append('<br/>');
- param_info = IPA.get_entity_param(that.entity_name, 'ipasudorunas_user');
+ param_info = IPA.get_entity_param(that.entity.name, 'ipasudorunas_user');
var table_span = $('<span/>', {
name: 'ipasudorunas_user',
@@ -1137,7 +1038,7 @@ IPA.sudo.rule_details_runas_section = function(spec) {
field = that.get_field('ipasudorunas_user');
field.create(table_span);
- param_info = IPA.get_entity_param(that.entity_name, 'ipasudorunas_group');
+ param_info = IPA.get_entity_param(that.entity.name, 'ipasudorunas_group');
table_span = $('<span/>', {
name: 'ipasudorunas_group',
@@ -1149,7 +1050,8 @@ IPA.sudo.rule_details_runas_section = function(spec) {
field.create(table_span);
field = that.get_field('ipasudorunasgroupcategory');
- param_info = IPA.get_entity_param(that.entity_name, 'ipasudorunasgroupcategory');
+ param_info = IPA.get_entity_param(
+ that.entity.name, 'ipasudorunasgroupcategory');
span = $('<span/>', {
name: 'ipasudorunasgroupcategory',
@@ -1157,38 +1059,12 @@ IPA.sudo.rule_details_runas_section = function(spec) {
'class': 'details-field'
}).appendTo(container);
- span.append(param_info.doc);
- span.append(': ');
-
- $('<input/>', {
- 'type': 'radio',
- 'name': 'ipasudorunasgroupcategory',
- 'value': 'all'
- }).appendTo(span);
-
- span.append(' ');
-
- span.append(IPA.messages.objects.sudorule.any_group);
-
- span.append(' ');
-
- $('<input/>', {
- 'type': 'radio',
- 'name': 'ipasudorunasgroupcategory',
- 'value': ''
- }).appendTo(span);
-
- span.append(' ');
-
- span.append(IPA.messages.objects.sudorule.specified_groups);
-
- span.append(' ');
-
- field.create_undo(span);
-
+ span.append(param_info.doc+": ");
+ field.create(span);
span.append('<br/>');
- param_info = IPA.get_entity_param(that.entity_name, 'ipasudorunasgroup_group');
+ param_info = IPA.get_entity_param(
+ that.entity.name, 'ipasudorunasgroup_group');
table_span = $('<span/>', {
name: 'ipasudorunasgroup_group',
@@ -1198,11 +1074,6 @@ IPA.sudo.rule_details_runas_section = function(spec) {
field = that.get_field('ipasudorunasgroup_group');
field.create(table_span);
- };
-
- that.setup = function(container) {
-
- that.section_setup(container);
function user_update_tables(value) {
@@ -1256,6 +1127,9 @@ IPA.sudo.rule_details_runas_section = function(spec) {
});
};
+ /*initialization*/
+ add_extra_fields();
+
return that;
};
@@ -1270,19 +1144,19 @@ IPA.sudorule_association_table_widget = function(spec) {
that.create_add_dialog = function() {
- var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
+ var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
var title = IPA.messages.association.add;
title = title.replace('${other_entity}', IPA.metadata.objects[that.other_entity].label);
- title = title.replace('${entity}', IPA.metadata.objects[that.entity_name].label_singular);
+ title = title.replace('${entity}', IPA.metadata.objects[that.entity.name].label_singular);
title = title.replace('${primary_key}', pkey);
return IPA.sudo.rule_association_adder_dialog({
- 'title': title,
- 'entity_name': that.entity_name,
- 'pkey': pkey,
- 'other_entity': that.other_entity,
- 'external': that.external
+ title: title,
+ pkey: pkey,
+ other_entity: that.other_entity,
+ entity:that.entity,
+ external: that.external
});
};
@@ -1307,131 +1181,22 @@ IPA.sudo.rule_association_adder_dialog = function(spec) {
that.external = spec.external;
- that.init = function() {
+ function setup_table(){
if (!that.columns.length) {
var pkey_name = IPA.metadata.objects[that.other_entity].primary_key;
that.create_column({
+ entity:that.entity,
name: pkey_name,
label: IPA.metadata.objects[that.other_entity].label,
primary_key: true,
width: '200px'
});
}
-
- that.available_table = IPA.table_widget({
- name: 'available'
- });
-
- var columns = that.columns.values;
- that.available_table.set_columns(columns);
-
- that.available_table.init();
-
- that.selected_table = IPA.table_widget({
- name: 'selected'
- });
-
- that.selected_table.set_columns(columns);
-
- that.selected_table.init();
-
- that.association_adder_dialog_init();
- };
+ }
that.create = function() {
-
- // do not call that.dialog_create();
-
- var search_panel = $('<div/>', {
- 'class': 'adder-dialog-filter'
- }).appendTo(that.container);
-
- $('<input/>', {
- type: 'text',
- name: 'filter',
- style: 'width: 244px'
- }).appendTo(search_panel);
-
- search_panel.append(' ');
-
- $('<input/>', {
- type: 'button',
- name: 'find',
- value: IPA.messages.buttons.find
- }).appendTo(search_panel);
-
- var results_panel = $('<div/>', {
- 'class': 'adder-dialog-results'
- }).appendTo(that.container);
-
- var class_name = that.external ? 'adder-dialog-internal' : 'adder-dialog-available';
-
- var available_panel = $('<div/>', {
- name: 'available',
- 'class': class_name
- }).appendTo(results_panel);
-
- $('<div/>', {
- html: IPA.messages.dialogs.available,
- 'class': 'ui-widget-header'
- }).appendTo(available_panel);
-
- that.available_table.create(available_panel);
-
- var buttons_panel = $('<div/>', {
- name: 'buttons',
- 'class': 'adder-dialog-buttons'
- }).appendTo(results_panel);
-
- var p = $('<p/>').appendTo(buttons_panel);
- $('<input />', {
- type: 'button',
- name: 'remove',
- value: '<<'
- }).appendTo(p);
-
- p = $('<p/>').appendTo(buttons_panel);
- $('<input />', {
- type: 'button',
- name: 'add',
- value: '>>'
- }).appendTo(p);
-
- var selected_panel = $('<div/>', {
- name: 'selected',
- 'class': 'adder-dialog-selected'
- }).appendTo(results_panel);
-
- $('<div/>', {
- html: IPA.messages.dialogs.prospective,
- 'class': 'ui-widget-header'
- }).appendTo(selected_panel);
-
- that.selected_table.create(selected_panel);
-
- if (that.external) {
- var external_panel = $('<div/>', {
- name: 'external',
- 'class': 'adder-dialog-external'
- }).appendTo(results_panel);
-
- $('<div/>', {
- html: IPA.messages.objects.sudorule.external,
- 'class': 'ui-widget-header'
- }).appendTo(external_panel);
-
- $('<input/>', {
- type: 'text',
- name: 'external',
- style: 'width: 244px'
- }).appendTo(external_panel);
- }
- };
-
- that.setup = function() {
- that.association_adder_dialog_setup();
- if (that.external) that.external_field = $('input[name=external]', that.container);
+ that.adder_dialog_create();
};
that.add = function() {
@@ -1450,5 +1215,7 @@ IPA.sudo.rule_association_adder_dialog = function(spec) {
}
};
+ setup_table();
+
return that;
};
diff --git a/install/ui/test/aci_tests.js b/install/ui/test/aci_tests.js
index 604a48b..acb4e7d 100644
--- a/install/ui/test/aci_tests.js
+++ b/install/ui/test/aci_tests.js
@@ -21,6 +21,7 @@
var target_container;
var target_section;
+var entity = {name:'bogus'};
module('aci',{
setup: function() {
@@ -36,8 +37,11 @@ module('aci',{
);
target_container = $('<div id="target"/>').appendTo(document.body);
- target_section = IPA.target_section({name: 'target', label: 'Target'});
- target_section.init();
+ target_section = IPA.target_section({
+ name: 'target',
+ label: 'Target',
+ entity:entity
+ });
target_section.create(target_container);
},
teardown: function() {
@@ -56,12 +60,12 @@ test("IPA.attributes_widget.", function() {
var widget = IPA.attributes_widget({
name: 'attrs',
- object_type: 'user'
+ object_type: 'user',
+ entity:entity
+
});
- widget.init();
widget.create(container);
- widget.setup(container);
var table = $('table', container);
@@ -112,12 +116,11 @@ test("IPA.rights_widget.", function() {
});
var widget = IPA.rights_widget({
- name: 'permissions'
+ name: 'permissions',
+ entity:entity
});
- widget.init();
widget.create(container);
- widget.setup(container);
var inputs = $('input', container);
diff --git a/install/ui/test/association_tests.js b/install/ui/test/association_tests.js
index 7eea1fc..769355a 100644
--- a/install/ui/test/association_tests.js
+++ b/install/ui/test/association_tests.js
@@ -32,7 +32,7 @@ test("Testing serial_associator().", function() {
var params = {
method: 'add_member',
pkey: 'test',
- entity_name: 'user',
+ entity: {name:'user'},
other_entity: 'group'
};
@@ -78,7 +78,7 @@ test("Testing serial_associator().", function() {
test("Testing bulk_associator().", function() {
- expect(5);
+ expect(4);
var orig_ipa_command = IPA.command;
@@ -87,7 +87,7 @@ test("Testing bulk_associator().", function() {
var params = {
method: "add_member",
pkey: "test",
- entity_name: "user",
+ entity: {name:"user"},
other_entity: "group"
};
@@ -101,11 +101,6 @@ test("Testing bulk_associator().", function() {
counter++;
equals(
- that.entity, params.entity_name,
- 'Checking IPA.command() parameter: entity'
- );
-
- equals(
that.method, params.method,
'Checking IPA.command() parameter: method'
);
diff --git a/install/ui/test/data/ipa_init.json b/install/ui/test/data/ipa_init.json
index 7d9d234..10d3ad5 100644
--- a/install/ui/test/data/ipa_init.json
+++ b/install/ui/test/data/ipa_init.json
@@ -2351,7 +2351,7 @@
"minlength": null,
"multivalue": true,
"name": "usercertificate",
- "noextrawhitespace": true,
+ "noextrawhitespace": false,
"pattern": null,
"pattern_errmsg": null,
"primary_key": false,
@@ -9651,8 +9651,13 @@
"sudocmd",
"sudocommand",
"sudohost",
+ "sudonotafter",
+ "sudonotbefore",
"sudooption",
+ "sudoorder",
"sudorunas",
+ "sudorunasgroup",
+ "sudorunasuser",
"sudouser",
"supportedalgorithms",
"supportedcontrol",
@@ -10139,7 +10144,7 @@
"include": null,
"label": "Time to live",
"maxvalue": 2147483647,
- "minvalue": null,
+ "minvalue": -2147483648,
"multivalue": false,
"name": "dnsttl",
"primary_key": false,
@@ -10556,7 +10561,7 @@
"include": null,
"label": "SOA time to live",
"maxvalue": 2147483647,
- "minvalue": null,
+ "minvalue": -2147483648,
"multivalue": false,
"name": "dnsttl",
"primary_key": false,
@@ -10922,7 +10927,7 @@
"include": null,
"label": "GID",
"maxvalue": 2147483647,
- "minvalue": null,
+ "minvalue": -2147483648,
"multivalue": false,
"name": "gidnumber",
"primary_key": false,
@@ -10973,7 +10978,6 @@
"container_dn": "cn=hbac",
"default_attributes": [
"cn",
- "accessruletype",
"ipaenabledflag",
"description",
"usercategory",
@@ -11080,8 +11084,13 @@
"cli_short_name": null,
"default": "allow",
"doc": "Rule type (allow)",
- "exclude": null,
- "flags": [],
+ "exclude": [
+ "webui"
+ ],
+ "flags": [
+ "no_option",
+ "no_output"
+ ],
"hint": null,
"include": null,
"label": "Rule type",
@@ -15450,7 +15459,7 @@
"include": null,
"label": "GID",
"maxvalue": 2147483647,
- "minvalue": null,
+ "minvalue": -2147483648,
"multivalue": false,
"name": "gidnumber",
"primary_key": false,
@@ -15891,6 +15900,7 @@
"details": "Settings",
"search": "Search"
},
+ "false": "False",
"login": {
"header": "Logged In As"
},
@@ -16132,6 +16142,7 @@
"role": "Role Based Access Control",
"sudo": "Sudo"
},
+ "true": "True",
"widget": {
"next": "Next",
"optional": "Optional field: click to show",
@@ -16160,30 +16171,30 @@
"Administrator"
],
"gidnumber": [
- "193200000"
+ "349800000"
],
"homedirectory": [
"/home/admin"
],
"ipauniqueid": [
- "c300021e-a445-11e0-80b9-525400b55a47"
+ "3d3de554-b49b-11e0-921a-525400b55a47"
],
"krbextradata": [
{
"__base64__": "AAgBAA=="
},
{
- "__base64__": "AAL2bA5Ocm9vdC9hZG1pbkBTRVJWRVIxNS5BWU9VTkcuQk9TVE9OLkRFVkVMLlJFREhBVC5DT00A"
+ "__base64__": "AALU0ylOcm9vdC9hZG1pbkBTRVJWRVIxNS5BWU9VTkcuQk9TVE9OLkRFVkVMLlJFREhBVC5DT00A"
}
],
"krblastpwdchange": [
- "20110702005726Z"
+ "20110722194732Z"
],
"krblastsuccessfulauth": [
- "20110705180548Z"
+ "20110725162159Z"
],
"krbpasswordexpiration": [
- "20110930005726Z"
+ "20111020194732Z"
],
"krbprincipalname": [
"admin@SERVER15.AYOUNG.BOSTON.DEVEL.REDHAT.COM"
@@ -16211,7 +16222,7 @@
"admin"
],
"uidnumber": [
- "193200000"
+ "349800000"
]
}
],
@@ -16219,7 +16230,7 @@
"truncated": false
},
{
- "count": 67,
+ "count": 68,
"error": null,
"result": {
"basedn": "dc=server15,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
@@ -16278,7 +16289,7 @@
"mount_jsonserver": "json",
"mount_xmlserver": "xml",
"prompt_all": false,
- "ra_plugin": "dogtag",
+ "ra_plugin": "selfsign",
"realm": "SERVER15.AYOUNG.BOSTON.DEVEL.REDHAT.COM",
"rpc_json_uri": "http://localhost:8888/ipa/json",
"script": "/var/www/mod_wsgi",
@@ -16286,12 +16297,13 @@
"startup_traceback": false,
"validate_api": false,
"verbose": 0,
+ "wait_for_attr": false,
"webui_assets_dir": null,
"webui_prod": true,
"xmlrpc_uri": "https://server15.ayoung.boston.devel.redhat.com/ipa/xml"
},
- "summary": "67 variables",
- "total": 67
+ "summary": "68 variables",
+ "total": 68
},
{
"error": null,
@@ -16300,54 +16312,11 @@
"value": ""
},
{
+ "count": 0,
"error": null,
- "id": null,
- "result": {
- "count": 2,
- "result": [
- {
- "accessruletype": [
- "allow"
- ],
- "cn": [
- "allow_all"
- ],
- "description": [
- "Allow all users to access any host from any host"
- ],
- "dn": "ipauniqueid=75841b24-acba-11e0-aeb9-525400b55a47,cn=hbac,dc=server15,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
- "hostcategory": [
- "all"
- ],
- "ipaenabledflag": [
- "TRUE"
- ],
- "servicecategory": [
- "all"
- ],
- "sourcehostcategory": [
- "all"
- ],
- "usercategory": [
- "all"
- ]
- },
- {
- "accessruletype": [
- "allow"
- ],
- "cn": [
- "allow_somnething"
- ],
- "dn": "ipauniqueid=137053da-acc4-11e0-8d43-525400b55a47,cn=hbac,dc=server15,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com",
- "ipaenabledflag": [
- "TRUE"
- ]
- }
- ],
- "summary": "2 HBAC rules matched",
- "truncated": false
- }
+ "result": [],
+ "summary": "0 HBAC rules matched",
+ "truncated": false
}
]
}
diff --git a/install/ui/test/details_tests.js b/install/ui/test/details_tests.js
index 28e2029..e06ddc2 100644
--- a/install/ui/test/details_tests.js
+++ b/install/ui/test/details_tests.js
@@ -59,13 +59,13 @@ module('details', {
test("Testing IPA.details_section.create().", function() {
var section = IPA.details_list_section({
+ entity: IPA.get_entity('user'),
name:'IDIDID', label:'NAMENAMENAME'}).
text({name:'cn'}).
text({name:'uid'}).
text({name:'mail'});
section.entity_name = 'user';
- section.init();
var fields = section.fields.values;
var container = $("<div/>");
@@ -116,7 +116,7 @@ test("Testing IPA.details_section.create().", function() {
-test("Testing details lifecycle: create, setup, load.", function(){
+test("Testing details lifecycle: create, load.", function(){
var result = {};
@@ -133,7 +133,6 @@ test("Testing details lifecycle: create, setup, load.", function(){
}
}).execute();
- var setup_called = false;
var save_called = false;
var load_called = false;
@@ -142,9 +141,6 @@ test("Testing details lifecycle: create, setup, load.", function(){
var update_success_called = false;
var update_failure_called = false;
- function setup_status(){
- setup_called = true;
- }
function save_password(){
save_called = true;
@@ -158,11 +154,6 @@ test("Testing details lifecycle: create, setup, load.", function(){
function test_widget(spec){
var widget = IPA.widget(spec);
- widget.setup = function(container) {
- setup_called = true;
- widget.widget_setup(container);
- };
-
widget.load = function(record) {
load_called = true;
widget.widget_load(record);
@@ -198,7 +189,7 @@ test("Testing details lifecycle: create, setup, load.", function(){
name:'facsimiletelephonenumber'}]
}
]}).build();
- entity.init();
+
var entity_container = $('<div/>', {
name: 'user',
@@ -216,7 +207,6 @@ test("Testing details lifecycle: create, setup, load.", function(){
});
facet.create(facet_container);
- facet.setup(facet_container);
facet.load(result);
@@ -243,11 +233,6 @@ test("Testing details lifecycle: create, setup, load.", function(){
facet_container.attr('id','user');
- ok (
- setup_called,
- 'Setup status called'
- );
-
ok (load_called, 'load manager called');
var section = facet.sections.get('contact');
@@ -266,10 +251,10 @@ test("Testing details lifecycle: create, setup, load.", function(){
});
-test("Testing IPA.details_section_setup again()",function(){
+test("Testing IPA.details_section_create again()",function(){
var section = IPA.details_list_section({
- name: 'IDIDID', label: 'NAMENAMENAME'}).
+ name: 'IDIDID', label: 'NAMENAMENAME',entity: IPA.get_entity('user'),}).
text({name:'cn', label:'Entity Name'}).
text({name:'description', label:'Description'}).
text({name:'number', label:'Entity ID'});
@@ -281,13 +266,8 @@ test("Testing IPA.details_section_setup again()",function(){
var result = {};
section.create(container);
- section.setup(container);
section.load(result);
- //var h2= container.find('h2');
- //ok(h2);
- //ok(h2[0].innerHTML.indexOf(section.label) > 1,"find name in html");
-
var dl = $('dl', container);
ok(
dl.length,
diff --git a/install/ui/test/entity_tests.js b/install/ui/test/entity_tests.js
index 41e4d5e..a356161 100644
--- a/install/ui/test/entity_tests.js
+++ b/install/ui/test/entity_tests.js
@@ -1,5 +1,6 @@
/* Authors:
* Endi Sukma Dewata <edewata@redhat.com>
+ * Adam Young <ayoung@redhat.com>
*
* Copyright (C) 2010 Red Hat
* see file 'COPYING' for use and warranty information
@@ -66,7 +67,6 @@ test('Testing IPA.entity_set_search_definition().', function() {
search_facet({
columns:['uid']}).
build();
- entity.init();
var entity_container = $('<div/>', {
name: 'user',
@@ -84,7 +84,6 @@ test('Testing IPA.entity_set_search_definition().', function() {
});
facet.create(facet_container);
- facet.setup(facet_container);
var column = facet.get_columns()[0];
ok(
diff --git a/install/ui/test/navigation_tests.js b/install/ui/test/navigation_tests.js
index 80d4353..ece3b56 100644
--- a/install/ui/test/navigation_tests.js
+++ b/install/ui/test/navigation_tests.js
@@ -47,9 +47,9 @@ test("Testing IPA.navigation.create().", function() {
IPA.entity_factories.user = function() {
var that = IPA.entity({name: 'user',
metadata:IPA.metadata.objects.user});
- that.add_facet(IPA.search_facet({'entity_name':'user'}));
+ that.add_facet(IPA.search_facet({'entity':that}));
- that.setup = function(container){
+ that.display = function(container){
user_mock_called = true;
same(container.attr('name'), 'user', 'user container name');
same(container[0].nodeName, 'DIV', 'user container element');
@@ -59,7 +59,7 @@ test("Testing IPA.navigation.create().", function() {
IPA.entity_factories.group = function(){
var that = IPA.entity({name: 'group',
metadata:IPA.metadata.objects.group});
- that.setup = function(container){
+ that.display = function(container){
group_mock_called = true;
same(container.attr('name'), 'group','user container name');
same(container[0].nodeName, 'DIV', 'user container element');
diff --git a/install/ui/test/widget_tests.js b/install/ui/test/widget_tests.js
index c3ae8be..1d7cd04 100644
--- a/install/ui/test/widget_tests.js
+++ b/install/ui/test/widget_tests.js
@@ -20,6 +20,9 @@
var widget_container;
+var widget;
+var factory
+var spec;
module('widget',{
@@ -35,40 +38,46 @@ module('widget',{
}
);
widget_container = $('<div id="widget"/>').appendTo(document.body);
+
+ widget = null;
+ factory = null;
+ spec = null;
+
+
},
teardown: function() {
widget_container.remove();
}}
);
-function base_widget_test(widget,entity_name, value){
+
+function base_widget_test(value){
+ spec.entity = {
+ name:'user'
+ };
+
+ widget = factory(spec);
+
+ var entity_name = 'user';
var field_name = widget.name;
ok (widget, "Created Widget");
- widget.init();
- ok(!widget.label,'widget with no entity has no label');
- ok(!widget.tooltip,'widget with entity and name has no tooltip');
//init reads param info for an entity. We'll use the user entity
- widget.entity_name = entity_name;
widget.name = field_name;
- widget.init();
ok(widget.label,'widget with entity and name has label');
ok(widget.tooltip,'widget with entity and name has tooltip');
- ok(!widget.container,'widget has no container before setup');
+ ok(!widget.container,'widget has no container before create');
widget.create(widget_container);
- widget.setup(widget_container);
-
- ok(widget.container,'widget has container after setup');
-
+ ok(widget.container,'widget has container after create');
}
-function widget_string_test(widget) {
- var value = 'test_title';
+function widget_string_test() {
+ var value = 'test_title';
var mock_record = {'title': value};
widget.load(mock_record);
@@ -143,9 +152,17 @@ function multivalued_text_tests(widget) {
}
test("IPA.table_widget" ,function(){
- var widget = IPA.table_widget({undo:true,name:'users'});
-
+ factory = IPA.table_widget;
+ spec = {
+ undo:true,
+ name:'users',
+ entity: {
+ name:'user'
+ }
+ };
+ widget = factory(spec);
widget.add_column(IPA.column({
+ entity: spec.entity,
name:'uid',
label:'User ID',
primary_key:'uid',
@@ -153,6 +170,7 @@ test("IPA.table_widget" ,function(){
entity_name:'user'
}));
widget.add_column(IPA.column({
+ entity: spec.entity,
name:'title',
lable:'Title',
primary_key:'uid',
@@ -160,13 +178,9 @@ test("IPA.table_widget" ,function(){
entity_name:'user'
}));
- widget.init();
-
- ok(!widget.container,'widget has no container before setup');
+ ok(!widget.container,'widget has no container before create');
widget.create(widget_container);
- widget.setup(widget_container);
-
- ok(widget.container,'widget has container after setup');
+ ok(widget.container,'widget has container after create');
var mock_results = {
@@ -184,49 +198,48 @@ test("IPA.table_widget" ,function(){
test("Testing base widget.", function() {
var update_called = false;
- var spec = {
+ spec = {
name:'title'
};
- var widget = IPA.widget(spec);
- widget.update = function() {
- update_called = true;
- };
-
- base_widget_test(widget,'user','test_value');
- widget_string_test(widget);
- ok (update_called, 'Update called');
-
+ factory = IPA.widget;
+ base_widget_test('test_value');
+ widget_string_test();
});
+
test("IPA.textarea_widget" ,function(){
- var widget = IPA.textarea_widget({undo:true,name:'title'});
- base_widget_test(widget,'user','test_value');
- widget_string_test(widget);
+ spec = {undo:true,name:'title'};
+ factory = IPA.textarea_widget;
+ base_widget_test('test_value');
+ widget_string_test();
text_tests(widget, $('textarea',widget_container));
});
test("Testing text widget.", function() {
- var widget = IPA.text_widget({undo:true,name:'title'});
- base_widget_test(widget,'user','test_value');
- widget_string_test(widget);
+ factory = IPA.text_widget;
+ spec = {undo:true,name:'title'};
+ base_widget_test('test_value');
+ widget_string_test();
text_tests(widget, $('input[type=text]',widget_container));
});
test("Testing multi-valued text widget.", function() {
- var widget = IPA.multivalued_text_widget({undo:true,name:'title'});
- base_widget_test(widget,'user','test_value');
- widget_string_test(widget);
+ factory = IPA.multivalued_text_widget;
+ spec = {undo:true,name:'title'};
+ base_widget_test('test_value');
+ widget_string_test();
multivalued_text_tests(widget);
});
test("Testing checkbox widget.", function() {
- var widget = IPA.checkbox_widget({name:'title'});
- base_widget_test(widget,'user','test_value');
+ factory = IPA.checkbox_widget;
+ spec = {name:'title'};
+ base_widget_test('test_value');
mock_record = {'title':'something'};
@@ -252,28 +265,30 @@ test("Testing checkbox widget.", function() {
test("IPA.checkboxes_widget" ,function(){
- var widget = IPA.checkboxes_widget({undo:true, name:'title' });
- base_widget_test(widget,'user','test_value');
+ factory = IPA.checkboxes_widget;
+ spec = {undo:true, name:'title' };
+ base_widget_test('test_value');
});
test("IPA.select_widget" ,function(){
- var widget = IPA.select_widget({undo:true,name:'title'});
- base_widget_test(widget,'user','test_value');
+ factory = IPA.select_widget;
+ spec = {undo:true,name:'title'};
+ base_widget_test('test_value');
});
test("IPA.entity_select_widget" ,function(){
-
- var widget = IPA.entity_select_widget({
+ factory = IPA.entity_select_widget;
+ spec = {
name: 'uid',
- other_entity: 'user',
- other_field: 'uid'
- });
+ other_entity:'user',
+ field_name:'uid',
+ other_field: 'uid' };
- base_widget_test(widget,'user','test_value');
- ok( $('option', widget.container).length > 1,"options populated from AJAX");
+ base_widget_test('test_value');
+ ok( $('option',widget.list ).length > 1,"options come from AJAX");
mock_record = {'uid':'kfrog'};
widget.load(mock_record);
same(widget.values[0],'kfrog','select set from values');
@@ -281,10 +296,11 @@ test("IPA.entity_select_widget" ,function(){
test("IPA.entity_link_widget" ,function(){
- var widget = IPA.entity_link_widget({
+ factory = IPA.entity_link_widget;
+ spec = {
name: 'gidnumber',
other_entity:'group'
- });
+ };
base_widget_test(widget,'user','test_value');
var mock_entity = {
@@ -315,15 +331,14 @@ test("IPA.entity_link_widget" ,function(){
});
-
-
test("IPA.radio_widget" ,function(){
var options = [{label:"Engineer",value:"engineer"},
{label:"Manager", value:"manager"},
{label:"Director",value:"director"},
{label:"Vice President",value:"VP"}];
- var widget = IPA.radio_widget({undo:true, name: 'title',options:options});
- base_widget_test(widget,'user','test_value');
+ factory = IPA.radio_widget;
+ spec = {undo:true, name: 'title',options:options};
+ base_widget_test('test_value');
var mock_record = {'title':["director"]};
widget.load(mock_record);
var values = widget.save();
diff --git a/install/ui/user.js b/install/ui/user.js
index fbcc728..7247035 100644
--- a/install/ui/user.js
+++ b/install/ui/user.js
@@ -172,8 +172,7 @@ IPA.user_status_widget = function(spec) {
name: 'link',
click: function() {
- var entity = IPA.get_entity(that.entity_name);
- var facet = entity.get_facet();
+ var facet = that.entity.get_facet();
if (facet.is_dirty()) {
var dialog = IPA.dirty_dialog({
@@ -184,7 +183,6 @@ IPA.user_status_widget = function(spec) {
that.show_activation_dialog();
};
- dialog.init();
dialog.open(container);
} else {
@@ -255,8 +253,7 @@ IPA.user_status_widget = function(spec) {
that.set_status(
action == 'activate',
function(data, textStatus, xhr) {
- var entity = IPA.get_entity(that.entity_name);
- var facet = entity.get_facet();
+ var facet = that.entity.get_facet();
facet.refresh();
dialog.close();
}
@@ -267,8 +264,6 @@ IPA.user_status_widget = function(spec) {
dialog.close();
});
- dialog.init();
-
dialog.open(that.container);
};
@@ -383,8 +378,6 @@ IPA.user_password_widget = function(spec) {
dialog.close();
});
- dialog.init();
-
dialog.open(that.container);
};
diff --git a/install/ui/widget.js b/install/ui/widget.js
index 1932bee..b60b2a6 100644
--- a/install/ui/widget.js
+++ b/install/ui/widget.js
@@ -31,6 +31,8 @@ IPA.widget = function(spec) {
var that = {};
+
+ that.entity = spec.entity;
that.id = spec.id;
that.name = spec.name;
that.label = spec.label;
@@ -41,14 +43,12 @@ IPA.widget = function(spec) {
that.conditional = spec.conditional;
that.optional = spec.optional || false;
- // read_only is set during initialization
+ // read_only is set when widget is created
that.read_only = spec.read_only;
// writable is set during load
that.writable = true;
- that._entity_name = spec.entity_name;
-
that.width = spec.width;
that.height = spec.height;
@@ -62,13 +62,21 @@ IPA.widget = function(spec) {
that.dirty = false;
that.valid = true;
- that.__defineGetter__("entity_name", function(){
- return that._entity_name;
- });
- that.__defineSetter__("entity_name", function(entity_name){
- that._entity_name = entity_name;
- });
+ function set_param_info(){
+ if (!that.param_info && that.entity){
+ that.param_info =
+ IPA.get_entity_param(that.entity.name, that.name);
+ }
+ if (that.param_info) {
+ if (that.label === undefined) {
+ that.label = that.param_info.label;
+ }
+ if (that.tooltip === undefined) {
+ that.tooltip = that.param_info.doc;
+ }
+ }
+ }
function meta_validate(meta, value){
@@ -159,25 +167,6 @@ IPA.widget = function(spec) {
}
};
- that.init = function() {
- if (that.entity_name) {
- that.entity = IPA.get_entity(that.entity_name);
- if (!that.param_info){
- that.param_info =
- IPA.get_entity_param(that.entity_name, that.name);
- }
- if (that.param_info) {
-
- if (that.label === undefined) {
- that.label = that.param_info.label;
- }
-
- if (that.tooltip === undefined) {
- that.tooltip = that.param_info.doc;
- }
- }
- }
- };
/**
* This function compares the original values and the
@@ -231,10 +220,6 @@ IPA.widget = function(spec) {
that.container = container;
};
- that.setup = function(container) {
- that.container = container;
- };
-
/**
* This function stores the entire record and the values
* of the field, then invoke reset() to update the UI.
@@ -352,10 +337,12 @@ IPA.widget = function(spec) {
that.refresh = function() {
};
+
+ /*widget initialization*/
+ set_param_info();
+
// methods that should be invoked by subclasses
- that.widget_init = that.init;
that.widget_create = that.create;
- that.widget_setup = that.setup;
that.widget_load = that.load;
that.widget_reset = that.reset;
that.widget_save = that.save;
@@ -419,11 +406,6 @@ IPA.text_widget = function(spec) {
}
that.create_error_link(container);
- };
-
- that.setup = function(container) {
-
- that.widget_setup(container);
var input = $('input[name="'+that.name+'"]', that.container);
input.keyup(function() {
@@ -587,11 +569,6 @@ IPA.multivalued_text_widget = function(spec) {
'class': 'ui-state-highlight ui-corner-all undo',
html: 'undo all'
}).appendTo(container);
- };
-
- that.setup = function(container) {
-
- that.widget_setup(container);
that.template = $('div[name=value]', that.container);
that.template.detach();
@@ -789,11 +766,6 @@ IPA.checkbox_widget = function (spec) {
if (that.undo) {
that.create_undo(container);
}
- };
-
- that.setup = function(container) {
-
- that.widget_setup(container);
var input = $('input[name="'+that.name+'"]', that.container);
input.change(function() {
@@ -874,11 +846,6 @@ IPA.checkboxes_widget = function (spec) {
if (that.undo) {
that.create_undo(container);
}
- };
-
- that.setup = function(container) {
-
- that.widget_setup(container);
var input = $('input[name="'+that.name+'"]', that.container);
input.change(function() {
@@ -891,6 +858,7 @@ IPA.checkboxes_widget = function (spec) {
});
};
+
that.load = function(record) {
that.values = record[that.name] || [];
that.reset();
@@ -956,11 +924,6 @@ IPA.radio_widget = function(spec) {
if (that.undo) {
that.create_undo(container);
}
- };
-
- that.setup = function(container) {
-
- that.widget_setup(container);
var input = $('input[name="'+that.name+'"]', that.container);
input.change(function() {
@@ -1038,10 +1001,6 @@ IPA.select_widget = function(spec) {
container.append(' ');
that.create_undo(container);
}
- };
-
- that.setup = function(container) {
- that.widget_setup(container);
that.select = $('select[name="'+that.name+'"]', that.container);
that.select.change(function() {
@@ -1118,12 +1077,6 @@ IPA.textarea_widget = function (spec) {
that.create_error_link(container);
- };
-
- that.setup = function(container) {
-
- that.widget_setup(container);
-
var input = $('textarea[name="'+that.name+'"]', that.container);
input.keyup(function() {
that.set_dirty(that.test_dirty());
@@ -1160,7 +1113,9 @@ IPA.textarea_widget = function (spec) {
return that;
};
-
+/*
+ The entity name must be set in the spec either directly or via entity.name
+*/
IPA.column = function (spec) {
spec = spec || {};
@@ -1170,26 +1125,22 @@ IPA.column = function (spec) {
that.name = spec.name;
that.label = spec.label;
that.width = spec.width;
-
- that.entity_name = spec.entity_name;
+ that.entity_name = spec.entity ? spec.entity.name : spec.entity_name;
that.primary_key = spec.primary_key;
that.link = spec.link;
-
that.format = spec.format;
- that.init = function() {
- if (that.entity_name && !that.label) {
- var param_info = IPA.get_entity_param(that.entity_name, that.name);
- if (param_info) {
- that.label = param_info.label;
- } else {
- alert('Cannot find label for ' + that.entity_name + ' ' +
- that.name);
- }
- }
- };
+ if (!that.entity_name){
+ var except = {
+ expected: false,
+ message:'Column created without an entity_name.'
+ };
+ throw except;
+ }
function setup(container, record) {
+
+
container.empty();
var value = record[that.name];
@@ -1218,6 +1169,16 @@ IPA.column = function (spec) {
return false;
};
+
+ /*column initialization*/
+ if (that.entity_name && !that.label) {
+ var param_info = IPA.get_entity_param(that.entity_name, that.name);
+ if (param_info) {
+ that.label = param_info.label;
+ }
+ }
+
+
return that;
};
@@ -1267,15 +1228,6 @@ IPA.table_widget = function (spec) {
return column;
};
- that.init = function() {
- that.widget_init();
-
- var columns = that.columns.values;
- for (var i=0; i<columns.length; i++) {
- var column = columns[i];
- column.init();
- }
- };
that.create = function(container) {
@@ -1312,7 +1264,10 @@ IPA.table_widget = function (spec) {
select_all_checkbox.change(function() {
var checked = select_all_checkbox.is(':checked');
- select_all_checkbox.attr('title', checked ? IPA.messages.search.unselect_all : IPA.messages.search.select_all);
+ select_all_checkbox.attr(
+ 'title', checked ?
+ IPA.messages.search.unselect_all :
+ IPA.messages.search.select_all);
var checkboxes = $('input[name=select]', that.tbody).get();
for (var i=0; i<checkboxes.length; i++) {
checkboxes[i].checked = checked;
@@ -1338,7 +1293,9 @@ IPA.table_widget = function (spec) {
/* don't use the checkbox column as part of the overall
calculation for column widths. It is so small
that it throws off the average. */
- width = (that.table.width() - (that.selectable ? IPA.checkbox_column_width : 0)) /
+ width = (that.table.width() -
+ (that.selectable ?
+ IPA.checkbox_column_width : 0)) /
columns.length;
}
width += 'px';
@@ -1492,11 +1449,6 @@ IPA.table_widget = function (spec) {
that.select_changed = function() {
};
- that.setup = function(container) {
-
- that.widget_setup(container);
- };
-
that.empty = function() {
that.tbody.empty();
};
@@ -1622,9 +1574,7 @@ IPA.table_widget = function (spec) {
}
// methods that should be invoked by subclasses
- that.table_init = that.init;
that.table_create = that.create;
- that.table_setup = that.setup;
that.table_set_enabled = that.set_enabled;
that.table_prev_page = that.prev_page;
that.table_next_page = that.next_page;
@@ -1644,7 +1594,6 @@ IPA.combobox_widget = function(spec) {
that.list_size = spec.list_size || 5;
that.create = function(container) {
-
that.widget_create(container);
container.addClass('combobox-widget');
@@ -1926,4 +1875,44 @@ IPA.entity_link_widget = function(spec) {
return that;
-}; \ No newline at end of file
+};
+
+IPA.action_button = function(spec) {
+ var button = IPA.button(spec);
+ button.removeClass("ui-state-default").addClass("action-button");
+ return button;
+};
+
+IPA.button = function(spec) {
+
+ spec = spec || {};
+
+ var button = $('<a/>', {
+ id: spec.id,
+ name: spec.name,
+ href: spec.href || '#' + (spec.name || 'button'),
+ title: spec.title || spec.label,
+ 'class': 'ui-state-default ui-corner-all input_link',
+ style: spec.style,
+ click: spec.click,
+ blur: spec.blur
+ });
+
+ if (spec['class']) button.addClass(spec['class']);
+
+ if (spec.icon) {
+ $('<span/>', {
+ 'class': 'icon '+spec.icon
+ }).appendTo(button);
+ }
+
+ if (spec.label) {
+ $('<span/>', {
+ 'class': 'button-label',
+ html: spec.label
+ }).appendTo(button);
+ }
+
+ return button;
+};
+
diff --git a/ipalib/plugins/internal.py b/ipalib/plugins/internal.py
index 8556d94..4bb63cf 100644
--- a/ipalib/plugins/internal.py
+++ b/ipalib/plugins/internal.py
@@ -94,6 +94,8 @@ class i18n_messages(Command):
messages={
"login": {"header" :_("Logged In As")},
+ "true": "True",
+ "false": "False",
"objects": {
"aci": {
"attribute":_("Attribute"),