From b9ef6ab0c412913234f05f788b3fcd3c3277eb69 Mon Sep 17 00:00:00 2001 From: Petr Vobornik Date: Mon, 26 Nov 2012 14:28:32 +0100 Subject: Move of core Web UI files to AMD directory SSIA https://fedorahosted.org/freeipa/ticket/112 --- install/ui/src/freeipa/rule.js | 254 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 254 insertions(+) create mode 100644 install/ui/src/freeipa/rule.js (limited to 'install/ui/src/freeipa/rule.js') diff --git a/install/ui/src/freeipa/rule.js b/install/ui/src/freeipa/rule.js new file mode 100644 index 000000000..dfe710b91 --- /dev/null +++ b/install/ui/src/freeipa/rule.js @@ -0,0 +1,254 @@ +/*jsl:import ipa.js */ + +/* Authors: + * Endi Sukma Dewata + * + * 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 . + */ + +/* REQUIRES: ipa.js, details.js, search.js, add.js, facet.js, entity.js */ + +IPA.rule_details_widget = function(spec) { + + spec = spec || {}; + + var that = IPA.composite_widget(spec); + + that.radio_name = spec.radio_name; + that.options = spec.options || []; + that.tables = spec.tables || []; + that.columns = spec.columns; + + that.init = function() { + + that.enable_radio = IPA.radio_widget({ + name: that.radio_name, + options: that.options + }); + + that.widgets.add_widget(that.enable_radio); + that.enable_radio.value_changed.attach(that.on_enable_radio_changed); + }; + + that.on_enable_radio_changed = function(value) { + if(value.length > 0) { + var enabled = ('' === value[0]); + for (var i=0; i', { + name: that.radio_name, + title: title, + 'class': 'field' + }).appendTo(container); + + enable_radio_container.append(title+': '); + that.enable_radio.create(enable_radio_container); + + //tables + for (var j=0; j', { + name: table.name, + title: metadata ? metadata.doc : table.name, + 'class': 'field' + }).appendTo(container); + + var widget = that.widgets.get_widget(table.name); + widget.create(table_container); + } + }; + + that.init(); + + return that; +}; + + +IPA.rule_association_table_widget = function(spec) { + + spec = spec || {}; + + var that = IPA.association_table_widget(spec); + + that.external = spec.external; + + that.enabled = spec.enabled !== undefined ? spec.enabled : true; + + that.setup_column = function(column, div, record) { + var suppress_link = false; + if (that.external) { + suppress_link = record[that.external] === 'true'; + } + column.setup(div, record, suppress_link); + }; + + that.create_columns = function() { + + if (!that.columns.length) { + that.association_table_widget_create_columns(); + if (that.external) { + that.create_column({ + name: that.external, + label: IPA.messages.objects.sudorule.external, + entity: that.other_entity, + formatter: IPA.boolean_formatter(), + width: '200px' + }); + } + } + }; + + that.create_add_dialog = function() { + + var entity_label = that.entity.metadata.label_singular; + var pkey = IPA.nav.get_state(that.entity.name+'-pkey'); + var other_entity_label = that.other_entity.metadata.label; + + var title = that.add_title; + title = title.replace('${entity}', entity_label); + title = title.replace('${primary_key}', pkey); + title = title.replace('${other_entity}', other_entity_label); + + return IPA.rule_association_adder_dialog({ + title: title, + pkey: pkey, + other_entity: that.other_entity, + attribute_member: that.attribute_member, + entity: that.entity, + external: that.external, + exclude: that.values + }); + }; + + return that; +}; + +IPA.rule_association_table_field = function(spec) { + + spec = spec || {}; + + var that = IPA.association_table_field(spec); + + that.external = spec.external; + + that.set_values_external = function(values, external) { + + for (var i=0; i 0) { //no need to delete if has no values + + var command = IPA.command({ + entity: that.entity.name, + method: that.widget.remove_method, + args: that.entity.get_primary_key() + }); + + command.set_option(that.widget.other_entity.name, values); + update_info.append_command(command, that.priority); + } + } + + return update_info; + }; + + return that; +}; + +IPA.widget_factories['rule_association_table'] = IPA.rule_association_table_widget; +IPA.field_factories['rule_association_table'] = IPA.rule_association_table_field; + +IPA.rule_association_adder_dialog = function(spec) { + + spec = spec || {}; + + var that = IPA.association_adder_dialog(spec); + + that.external = spec.external; + + that.add = function() { + var rows = that.available_table.remove_selected_rows(); + that.selected_table.add_rows(rows); + + if (that.external) { + var pkey_name = that.other_entity.metadata.primary_key; + var value = that.external_field.val(); + if (!value) return; + + var record = {}; + record[pkey_name] = value; + that.selected_table.add_record(record); + that.external_field.val(''); + } + }; + + return that; +}; -- cgit