summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--install/ui/Makefile.am1
-rw-r--r--install/ui/aci.js30
-rw-r--r--install/ui/add.js24
-rw-r--r--install/ui/details.js1
-rw-r--r--install/ui/dialog.js553
-rw-r--r--install/ui/index.html1
-rw-r--r--install/ui/jsl.conf1
-rwxr-xr-xinstall/ui/test/aci_tests.html1
-rw-r--r--install/ui/test/all_tests.html1
-rw-r--r--install/ui/test/details_tests.html1
-rw-r--r--install/ui/test/entity_tests.html1
-rw-r--r--install/ui/widget.js475
12 files changed, 598 insertions, 492 deletions
diff --git a/install/ui/Makefile.am b/install/ui/Makefile.am
index 88dd6b165..327225e52 100644
--- a/install/ui/Makefile.am
+++ b/install/ui/Makefile.am
@@ -14,6 +14,7 @@ app_DATA = \
caution.png \
centered-bg.png \
check.png \
+ dialog.js \
ipa_logo_180x50.png \
ipa.js \
ipa.css \
diff --git a/install/ui/aci.js b/install/ui/aci.js
index 3f56cbed6..6f3d218b7 100644
--- a/install/ui/aci.js
+++ b/install/ui/aci.js
@@ -323,12 +323,14 @@ IPA.rights_section = function () {
IPA.target_section = function () {
- var spec = {
+
+ var spec = {
'name':'target',
'label': 'Target'
};
var that = IPA.details_section(spec);
+
var groupings = ['aci_by_type', 'aci_by_query', 'aci_by_group',
'aci_by_filter' ];
var inputs = ['input', 'select', 'textarea'];
@@ -575,6 +577,14 @@ IPA.target_section = function () {
}
};
+ that.init = function() {
+ that.create_text({'name': 'targetgroup'});
+ that.create_textarea({'name': 'subtree'});
+ that.create_text({'name': 'type'});
+ that.create_text({'name': 'attrs'});
+ that.create_text({'name': 'filter'});
+ };
+
that.save = function (record){
var record_type = $("input[name='type']:checked").attr('id');
@@ -584,23 +594,13 @@ IPA.target_section = function () {
$('#aci_target_group_select option:selected').val();
}else if (record_type === 'aci_by_type'){
record.type = $('#object_type_select option:selected').val();
+ record.attrs = that.attribute_table.save().join(',');
}else if (record_type === 'aci_by_query'){
record.subtree = $('#aci_query_text').val();
}else if (record_type === 'aci_by_filter'){
var filter = $('#aci_filter').val();
record.filter = filter;
}
-
- var attrs = $('.aci-attribute:checked').each(function(){
- var id = this.id.split('-')[1];
-
- if (!record.attributes){
- record.attributes = "";
- }else{
- record.attributes += ",";
- }
- record.attributes += id;
- });
};
return that;
};
@@ -613,7 +613,8 @@ IPA.entity_factories.permission = function () {
}).add_dialog(
IPA.add_dialog({
name: 'add',
- title: 'Add New Permission'
+ title: 'Add New Permission',
+ width: '700px'
}).
field(IPA.text_widget({
name: 'cn',
@@ -624,8 +625,7 @@ IPA.entity_factories.permission = function () {
undo: false
})).
field(IPA.rights_widget({name:'permissions'})).
- field(IPA.hidden_widget(
- {name:'filter','value':'objectClass=changethisvalue'}))).
+ section(IPA.target_section())).
facet(IPA.search_facet().
column({name:'cn'}).
column({name:'description'})).
diff --git a/install/ui/add.js b/install/ui/add.js
index 33712b45e..2f5dff999 100644
--- a/install/ui/add.js
+++ b/install/ui/add.js
@@ -102,11 +102,13 @@ IPA.add_dialog = function (spec) {
on_error: on_error
});
+ var field, value;
+
for (var i=0; i<that.fields.length; i++) {
- var field = that.fields[i];
+ field = that.fields[i];
if (!field.valid) return;
- var value = record[field.name];
+ value = record[field.name];
if (!value) continue;
if (field.name == pkey_name) {
@@ -116,6 +118,24 @@ IPA.add_dialog = function (spec) {
}
}
+ for (var j=0; j<that.sections.length; j++) {
+ var section = that.sections[j];
+
+ for (var k=0; k<section.fields.length; k++) {
+ field = section.fields[k];
+ if (!field.valid) return;
+
+ value = record[field.name];
+ if (!value) continue;
+
+ if (field.name == pkey_name) {
+ command.add_arg(value);
+ } else {
+ command.set_option(field.name, value);
+ }
+ }
+ }
+
//alert(JSON.stringify(command.to_json()));
command.execute();
diff --git a/install/ui/details.js b/install/ui/details.js
index c5006c710..2fb3889b9 100644
--- a/install/ui/details.js
+++ b/install/ui/details.js
@@ -523,6 +523,7 @@ IPA.details_facet = function (spec) {
that.refresh = spec.refresh || IPA.details_refresh;
that.sections = [];
+
that.__defineGetter__("entity_name", function(){
return that._entity_name;
});
diff --git a/install/ui/dialog.js b/install/ui/dialog.js
new file mode 100644
index 000000000..c2640267a
--- /dev/null
+++ b/install/ui/dialog.js
@@ -0,0 +1,553 @@
+/*jsl:import ipa.js */
+/* Authors:
+ * Endi Sukma Dewata <edewata@redhat.com>
+ *
+ * Copyright (C) 2010 Red Hat
+ * see file 'COPYING' for use and warranty information
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+/* REQUIRES: widget.js */
+
+/**
+ * This is a base class for dialog boxes.
+ */
+IPA.dialog = function(spec) {
+
+ spec = spec || {};
+
+ var that = {};
+
+ that.name = spec.name;
+ that.title = spec.title;
+ that.template = spec.template;
+ that._entity_name = spec.entity_name;
+
+ that.width = spec.width || '400px';
+
+ that.buttons = {};
+
+ that.fields = [];
+ that.fields_by_name = {};
+
+ that.sections = [];
+
+ that.__defineGetter__("entity_name", function(){
+ return that._entity_name;
+ });
+
+ that.__defineSetter__("entity_name", function(entity_name){
+ that._entity_name = entity_name;
+
+ for (var i=0; i<that.fields.length; i++) {
+ that.fields[i].entity_name = entity_name;
+ }
+
+ for (var j=0; j<that.sections.length; j++) {
+ that.sections[j].entity_name = entity_name;
+ }
+ });
+
+ that.add_button = function(name, handler) {
+ that.buttons[name] = handler;
+ };
+
+ that.get_field = function(name) {
+ return that.fields_by_name[name];
+ };
+
+ that.add_field = function(field) {
+ that.fields.push(field);
+ that.fields_by_name[field.name] = field;
+ };
+
+ that.field = function(field){
+ that.add_field(field);
+ return that;
+ };
+
+ that.add_section = function(section) {
+ that.sections.push(section);
+ return that;
+ };
+
+ that.section = function(section) {
+ that.add_section(section);
+ return that;
+ };
+
+ that.create_section = function(spec) {
+ var section = IPA.details_section(spec);
+ that.add_section(section);
+ return section;
+ };
+
+ that.init = function() {
+ for (var i=0; i<that.fields.length; i++) {
+ var field = that.fields[i];
+ field.entity_name = that.entity_name;
+ field.init();
+ }
+
+ for (var j=0; j<that.sections.length; j++) {
+ var section = that.sections[j];
+ section.entity_name = that.entity_name;
+ section.init();
+ }
+ };
+
+ /**
+ * Create content layout
+ */
+ that.create = function() {
+
+ var table = $('<table/>').appendTo(that.container);
+
+ for (var i=0; i<that.fields.length; i++) {
+ var field = that.fields[i];
+
+ var tr = $('<tr/>').appendTo(table);
+
+ var td = $('<td/>', {
+ style: 'vertical-align: top;',
+ title: field.label
+ }).appendTo(tr);
+ td.append(field.label+': ');
+
+ td = $('<td/>', {
+ style: 'vertical-align: top;'
+ }).appendTo(tr);
+
+ var span = $('<span/>', { 'name': field.name }).appendTo(td);
+ field.create(span);
+ }
+
+ for (var j=0; j<that.sections.length; j++) {
+ var section = that.sections[j];
+
+ var div = $('<div/>', {
+ 'id': that.entity_name+'-'+that.name+'-'+section.name,
+ 'class': 'details-section'
+ }).appendTo(that.container);
+
+ section.create(div);
+ }
+ };
+
+ /**
+ * Setup behavior
+ */
+ that.setup = function() {
+ for (var i=0; i<that.fields.length; i++) {
+ var field = that.fields[i];
+
+ var span = $('span[name="'+field.name+'"]', that.container);
+ field.setup(span);
+ }
+
+ for (var j = 0; i<that.sections.length; j++) {
+ var section = that.sections[j];
+
+ var div = $('#'+that.entity_name+'-'+that.name+'-'+section.name,
+ that.container);
+
+ section.setup(div);
+ }
+ };
+
+ /**
+ * Open dialog
+ */
+ that.open = function(container) {
+
+ that.container = $('<div/>').appendTo(container);
+
+ if (that.template) {
+ var template = IPA.get_template(that.template);
+ that.container.load(
+ template,
+ function(data, text_status, xhr) {
+ that.setup();
+ that.container.dialog({
+ 'title': that.title,
+ 'modal': true,
+ 'width': that.width,
+ 'height': that.height,
+ 'buttons': that.buttons
+ });
+ }
+ );
+
+ } else {
+ that.create();
+ that.setup();
+
+ that.container.dialog({
+ 'title': that.title,
+ 'modal': true,
+ 'width': that.width,
+ 'height': that.height,
+ 'buttons': that.buttons
+ });
+ }
+ };
+
+ that.option = function(name, value) {
+ that.container.dialog('option', name, value);
+ };
+
+ that.save = function(record) {
+ for (var i=0; i<that.fields.length; i++) {
+ var field = that.fields[i];
+ var values = field.save();
+ record[field.name] = values.join(',');
+ }
+
+ for (var j=0; j<that.sections.length; j++) {
+ var section = that.sections[j];
+
+ if (section.save) {
+ section.save(record);
+ }
+ }
+ };
+
+ that.close = function() {
+ that.container.dialog('destroy');
+ that.container.remove();
+ };
+
+ that.reset = function() {
+ for (var i=0; i<that.fields.length; i++) {
+ var field = that.fields[i];
+ field.reset();
+ }
+ };
+
+ that.dialog_init = that.init;
+ that.dialog_create = that.create;
+ that.dialog_setup = that.setup;
+ that.dialog_open = that.open;
+
+ return that;
+};
+
+/**
+ * This dialog provides an interface for searching and selecting
+ * values from the available results.
+ */
+IPA.adder_dialog = function (spec) {
+
+ spec = spec || {};
+
+ var that = IPA.dialog(spec);
+
+ that.width = spec.width || '600px';
+
+ that.columns = [];
+ that.columns_by_name = {};
+
+ that.get_column = function(name) {
+ return that.columns_by_name[name];
+ };
+
+ that.add_column = function(column) {
+ that.columns.push(column);
+ that.columns_by_name[column.name] = column;
+ };
+
+ that.set_columns = function(columns) {
+ that.clear_columns();
+ for (var i=0; i<columns.length; i++) {
+ that.add_column(columns[i]);
+ }
+ };
+
+ that.clear_columns = function() {
+ that.columns = [];
+ that.columns_by_name = {};
+ };
+
+ that.create_column = function(spec) {
+ var column = IPA.column(spec);
+ that.add_column(column);
+ return column;
+ };
+
+ that.init = function() {
+ that.available_table = IPA.table_widget({
+ name: 'available',
+ scrollable: true,
+ height: '151px'
+ });
+
+ that.available_table.set_columns(that.columns);
+
+ that.available_table.init();
+
+ that.selected_table = IPA.table_widget({
+ name: 'selected',
+ scrollable: true,
+ height: '151px'
+ });
+
+ that.selected_table.set_columns(that.columns);
+
+ that.selected_table.init();
+
+ that.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: 'Find'
+ }).appendTo(search_panel);
+
+ $('<input/>', {
+ type: 'checkbox',
+ name: 'hidememb',
+ id: 'hidememb',
+ checked: 'checked',
+ style: 'margin-left: 5px; vertical-align: middle'
+ }).appendTo(search_panel);
+
+ var label = $('<label/>', {
+ 'for': 'hidememb',
+ style: 'margin-left: 3px'
+ });
+
+ label.text('Hide already enrolled.');
+
+ label.appendTo(search_panel);
+
+ search_panel.append(IPA.create_network_spinner());
+
+ var results_panel = $('<div/>', {
+ 'class': 'adder-dialog-results'
+ }).appendTo(that.container);
+
+ var available_panel = $('<div/>', {
+ name: 'available',
+ 'class': 'adder-dialog-available'
+ }).appendTo(results_panel);
+
+ $('<div/>', {
+ html: '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: 'Prospective',
+ 'class': 'ui-widget-header'
+ }).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);
+
+ var button = $('input[name=find]', that.container);
+ that.find_button = IPA.button({
+ 'label': button.val(),
+ 'icon': 'ui-icon-search',
+ 'click': function() { that.search(); }
+ });
+ button.replaceWith(that.find_button);
+
+ button = $('input[name=remove]', that.container);
+ that.remove_button = IPA.button({
+ 'label': button.val(),
+ 'click': function() {
+ that.remove();
+ }
+ });
+ button.replaceWith(that.remove_button);
+
+ button = $('input[name=add]', that.container);
+ that.add_button = IPA.button({
+ 'label': button.val(),
+ 'click': function() {
+ that.add();
+ }
+ });
+ button.replaceWith(that.add_button);
+
+ that.search();
+ };
+
+ that.open = function(container) {
+ that.buttons = {
+ 'Enroll': function() {
+ that.execute();
+ },
+ 'Cancel': function() {
+ that.close();
+ }
+ };
+
+ that.dialog_open(container);
+ };
+
+ that.add = function() {
+ var rows = that.available_table.remove_selected_rows();
+ that.selected_table.add_rows(rows);
+ };
+
+ that.remove = function() {
+ var rows = that.selected_table.remove_selected_rows();
+ that.available_table.add_rows(rows);
+ };
+
+ that.get_filter = function() {
+ return that.filter_field.val();
+ };
+
+ that.get_hide_checkbox = function() {
+ return that.hide_checkbox.checked;
+ };
+
+ that.clear_available_values = function() {
+ that.available_table.empty();
+ };
+
+ that.clear_selected_values = function() {
+ that.selected_table.empty();
+ };
+
+ that.add_available_value = function(record) {
+ that.available_table.add_record(record);
+ };
+
+ that.get_selected_values = function() {
+ return that.selected_table.save();
+ };
+
+ that.close = function() {
+ that.container.dialog('close');
+ };
+
+ that.adder_dialog_init = that.init;
+ that.adder_dialog_create = that.create;
+ that.adder_dialog_setup = that.setup;
+
+ return that;
+};
+
+/**
+ * This dialog displays the values to be deleted.
+ */
+IPA.deleter_dialog = function (spec) {
+
+ spec = spec || {};
+
+ var that = IPA.dialog(spec);
+
+ that.title = spec.title || IPA.messages.button.remove;
+ that.remove = spec.remove;
+
+ that.values = spec.values || [];
+
+ that.add_value = function(value) {
+ that.values.push(value);
+ };
+
+ that.set_values = function(values) {
+ that.values = that.values.concat(values);
+ };
+
+ that.create = function() {
+
+ $('<p/>', {
+ 'text': IPA.messages.search.delete_confirm
+ }).appendTo(that.container);
+
+ var div = $('<div/>', {
+ style: 'overflow:auto; max-height: 100px'
+ }).appendTo(that.container);
+
+ var ul = $('<ul/>');
+ ul.appendTo(div);
+
+ for (var i=0; i<that.values.length; i++) {
+ $('<li/>',{
+ 'text': that.values[i]
+ }).appendTo(ul);
+ }
+ };
+
+ that.open = function(container) {
+ that.buttons = {
+ 'Delete': that.remove,
+ 'Cancel': that.close
+ };
+
+ that.dialog_open(container);
+ };
+
+ return that;
+};
diff --git a/install/ui/index.html b/install/ui/index.html
index 7ee4aa61c..8d83f3627 100644
--- a/install/ui/index.html
+++ b/install/ui/index.html
@@ -12,6 +12,7 @@
<script type="text/javascript" src="ipa.js"></script>
<script type="text/javascript" src="widget.js"></script>
+ <script type="text/javascript" src="dialog.js"></script>
<script type="text/javascript" src="search.js"></script>
<script type="text/javascript" src="details.js"></script>
<script type="text/javascript" src="add.js"></script>
diff --git a/install/ui/jsl.conf b/install/ui/jsl.conf
index 1d7190e43..67cf84b12 100644
--- a/install/ui/jsl.conf
+++ b/install/ui/jsl.conf
@@ -126,6 +126,7 @@
#
+process ipa.js
+process widget.js
++process dialog.js
+process search.js
+process details.js
+process add.js
diff --git a/install/ui/test/aci_tests.html b/install/ui/test/aci_tests.html
index 7cdbeffa3..16ab0f7d7 100755
--- a/install/ui/test/aci_tests.html
+++ b/install/ui/test/aci_tests.html
@@ -12,6 +12,7 @@
<script type="text/javascript" src="../jquery-ui.js"></script>
<script type="text/javascript" src="../ipa.js"></script>
<script type="text/javascript" src="../widget.js"></script>
+ <script type="text/javascript" src="../dialog.js"></script>
<script type="text/javascript" src="../details.js"></script>
<script type="text/javascript" src="../search.js"></script>
<script type="text/javascript" src="../add.js"></script>
diff --git a/install/ui/test/all_tests.html b/install/ui/test/all_tests.html
index 6a29daffa..f703519b3 100644
--- a/install/ui/test/all_tests.html
+++ b/install/ui/test/all_tests.html
@@ -9,6 +9,7 @@
<script type="text/javascript" src="../jquery-ui.js"></script>
<script type="text/javascript" src="../ipa.js"></script>
<script type="text/javascript" src="../widget.js"></script>
+ <script type="text/javascript" src="../dialog.js"></script>
<script type="text/javascript" src="../details.js"></script>
<script type="text/javascript" src="../search.js"></script>
<script type="text/javascript" src="../add.js"></script>
diff --git a/install/ui/test/details_tests.html b/install/ui/test/details_tests.html
index 3cb20c562..ee3679b9c 100644
--- a/install/ui/test/details_tests.html
+++ b/install/ui/test/details_tests.html
@@ -9,6 +9,7 @@
<script type="text/javascript" src="../jquery-ui.js"></script>
<script type="text/javascript" src="../ipa.js"></script>
<script type="text/javascript" src="../widget.js"></script>
+ <script type="text/javascript" src="../dialog.js"></script>
<script type="text/javascript" src="../details.js"></script>
<script type="text/javascript" src="../entity.js"></script>
diff --git a/install/ui/test/entity_tests.html b/install/ui/test/entity_tests.html
index cd6b64095..e512d4380 100644
--- a/install/ui/test/entity_tests.html
+++ b/install/ui/test/entity_tests.html
@@ -8,6 +8,7 @@
<script type="text/javascript" src="../jquery.ba-bbq.js"></script>
<script type="text/javascript" src="../ipa.js"></script>
<script type="text/javascript" src="../widget.js"></script>
+ <script type="text/javascript" src="../dialog.js"></script>
<script type="text/javascript" src="../details.js"></script>
<script type="text/javascript" src="../search.js"></script>
<script type="text/javascript" src="../add.js"></script>
diff --git a/install/ui/widget.js b/install/ui/widget.js
index 19dc4d121..ee5e47107 100644
--- a/install/ui/widget.js
+++ b/install/ui/widget.js
@@ -883,478 +883,3 @@ IPA.table_widget = function (spec) {
return that;
};
-
-/**
- * This is a base class for dialog boxes.
- */
-IPA.dialog = function(spec) {
-
- spec = spec || {};
-
- var that = {};
-
- that.name = spec.name;
- that.title = spec.title;
- that.template = spec.template;
- that._entity_name = spec.entity_name;
-
- that.width = spec.width || 400;
-
- that.buttons = {};
-
- that.fields = [];
- that.fields_by_name = {};
-
- that.__defineGetter__("entity_name", function(){
- return that._entity_name;
- });
-
- that.__defineSetter__("entity_name", function(entity_name){
- that._entity_name = entity_name;
-
- for (var i=0; i<that.fields.length; i++) {
- that.fields[i].entity_name = entity_name;
- }
- });
-
- that.add_button = function(name, handler) {
- that.buttons[name] = handler;
- };
-
- that.get_field = function(name) {
- return that.fields_by_name[name];
- };
-
- that.add_field = function(field) {
- that.fields.push(field);
- that.fields_by_name[field.name] = field;
- };
-
- that.field = function(field){
- that.add_field(field);
- return that;
- };
-
- that.init = function() {
- for (var i=0; i<that.fields.length; i++) {
- var field = that.fields[i];
- field.entity_name = that.entity_name;
- field.init();
- }
- };
-
- /**
- * Create content layout
- */
- that.create = function() {
-
- var table = $('<table/>').appendTo(that.container);
-
- for (var i=0; i<that.fields.length; i++) {
- var field = that.fields[i];
-
- var tr = $('<tr/>').appendTo(table);
-
- var td = $('<td/>', {
- style: 'vertical-align: top;',
- title: field.label
- }).appendTo(tr);
- td.append(field.label+': ');
-
- td = $('<td/>', {
- style: 'vertical-align: top;'
- }).appendTo(tr);
-
- var span = $('<span/>', { 'name': field.name }).appendTo(td);
- field.create(span);
- }
- };
-
- /**
- * Setup behavior
- */
- that.setup = function() {
- for (var i=0; i<that.fields.length; i++) {
- var field = that.fields[i];
-
- var span = $('span[name="'+field.name+'"]', that.container);
- field.setup(span);
- }
- };
-
- /**
- * Open dialog
- */
- that.open = function(container) {
-
- that.container = $('<div/>').appendTo(container);
-
- if (that.template) {
- var template = IPA.get_template(that.template);
- that.container.load(
- template,
- function(data, text_status, xhr) {
- that.setup();
- that.container.dialog({
- 'title': that.title,
- 'modal': true,
- 'width': that.width,
- 'height': that.height,
- 'buttons': that.buttons
- });
- }
- );
-
- } else {
- that.create();
- that.setup();
-
- that.container.dialog({
- 'title': that.title,
- 'modal': true,
- 'width': that.width,
- 'height': that.height,
- 'buttons': that.buttons
- });
- }
- };
-
- that.option = function(name, value) {
- that.container.dialog('option', name, value);
- };
-
- that.save = function(record) {
- for (var i=0; i<that.fields.length; i++) {
- var field = that.fields[i];
- var values = field.save();
- record[field.name] = values.join(',');
- }
- };
-
- that.close = function() {
- that.container.dialog('destroy');
- that.container.remove();
- };
-
- that.reset = function() {
- for (var i=0; i<that.fields.length; i++) {
- var field = that.fields[i];
- field.reset();
- }
- };
-
- that.dialog_init = that.init;
- that.dialog_create = that.create;
- that.dialog_setup = that.setup;
- that.dialog_open = that.open;
-
- return that;
-};
-
-/**
- * This dialog provides an interface for searching and selecting
- * values from the available results.
- */
-IPA.adder_dialog = function (spec) {
-
- spec = spec || {};
-
- var that = IPA.dialog(spec);
-
- that.width = spec.width || '600px';
-
- that.columns = [];
- that.columns_by_name = {};
-
- that.get_column = function(name) {
- return that.columns_by_name[name];
- };
-
- that.add_column = function(column) {
- that.columns.push(column);
- that.columns_by_name[column.name] = column;
- };
-
- that.set_columns = function(columns) {
- that.clear_columns();
- for (var i=0; i<columns.length; i++) {
- that.add_column(columns[i]);
- }
- };
-
- that.clear_columns = function() {
- that.columns = [];
- that.columns_by_name = {};
- };
-
- that.create_column = function(spec) {
- var column = IPA.column(spec);
- that.add_column(column);
- return column;
- };
-
- that.init = function() {
- that.available_table = IPA.table_widget({
- name: 'available',
- scrollable: true,
- height: '151px'
- });
-
- that.available_table.set_columns(that.columns);
-
- that.available_table.init();
-
- that.selected_table = IPA.table_widget({
- name: 'selected',
- scrollable: true,
- height: '151px'
- });
-
- that.selected_table.set_columns(that.columns);
-
- that.selected_table.init();
-
- that.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: 'Find'
- }).appendTo(search_panel);
-
- $('<input/>', {
- type: 'checkbox',
- name: 'hidememb',
- id: 'hidememb',
- checked: 'checked',
- style: 'margin-left: 5px; vertical-align: middle'
- }).appendTo(search_panel);
-
- var label = $('<label/>', {
- 'for': 'hidememb',
- style: 'margin-left: 3px'
- });
-
- label.text('Hide already enrolled.');
-
- label.appendTo(search_panel);
-
- search_panel.append(IPA.create_network_spinner());
-
- var results_panel = $('<div/>', {
- 'class': 'adder-dialog-results'
- }).appendTo(that.container);
-
- var available_panel = $('<div/>', {
- name: 'available',
- 'class': 'adder-dialog-available'
- }).appendTo(results_panel);
-
- $('<div/>', {
- html: '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: 'Prospective',
- 'class': 'ui-widget-header'
- }).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);
-
- var button = $('input[name=find]', that.container);
- that.find_button = IPA.button({
- 'label': button.val(),
- 'icon': 'ui-icon-search',
- 'click': function() { that.search(); }
- });
- button.replaceWith(that.find_button);
-
- button = $('input[name=remove]', that.container);
- that.remove_button = IPA.button({
- 'label': button.val(),
- 'click': function() {
- that.remove();
- }
- });
- button.replaceWith(that.remove_button);
-
- button = $('input[name=add]', that.container);
- that.add_button = IPA.button({
- 'label': button.val(),
- 'click': function() {
- that.add();
- }
- });
- button.replaceWith(that.add_button);
-
- that.search();
- };
-
- that.open = function(container) {
- that.buttons = {
- 'Enroll': function() {
- that.execute();
- },
- 'Cancel': function() {
- that.close();
- }
- };
-
- that.dialog_open(container);
- };
-
- that.add = function() {
- var rows = that.available_table.remove_selected_rows();
- that.selected_table.add_rows(rows);
- };
-
- that.remove = function() {
- var rows = that.selected_table.remove_selected_rows();
- that.available_table.add_rows(rows);
- };
-
- that.get_filter = function() {
- return that.filter_field.val();
- };
-
- that.get_hide_checkbox = function() {
- return that.hide_checkbox.checked;
- };
-
- that.clear_available_values = function() {
- that.available_table.empty();
- };
-
- that.clear_selected_values = function() {
- that.selected_table.empty();
- };
-
- that.add_available_value = function(record) {
- that.available_table.add_record(record);
- };
-
- that.get_selected_values = function() {
- return that.selected_table.save();
- };
-
- that.close = function() {
- that.container.dialog('close');
- };
-
- that.adder_dialog_init = that.init;
- that.adder_dialog_create = that.create;
- that.adder_dialog_setup = that.setup;
-
- return that;
-};
-
-/**
- * This dialog displays the values to be deleted.
- */
-IPA.deleter_dialog = function (spec) {
-
- spec = spec || {};
-
- var that = IPA.dialog(spec);
-
- that.title = spec.title || IPA.messages.button.remove;
- that.remove = spec.remove;
-
- that.values = spec.values || [];
-
- that.add_value = function(value) {
- that.values.push(value);
- };
-
- that.set_values = function(values) {
- that.values = that.values.concat(values);
- };
-
- that.create = function() {
-
- $('<p/>', {
- 'text': IPA.messages.search.delete_confirm
- }).appendTo(that.container);
-
- var div = $('<div/>', {
- style: 'overflow:auto; max-height: 100px'
- }).appendTo(that.container);
-
- var ul = $('<ul/>');
- ul.appendTo(div);
-
- for (var i=0; i<that.values.length; i++) {
- $('<li/>',{
- 'text': that.values[i]
- }).appendTo(ul);
- }
- };
-
- that.open = function(container) {
- that.buttons = {
- 'Delete': that.remove,
- 'Cancel': that.close
- };
-
- that.dialog_open(container);
- };
-
- return that;
-};