/*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: widget.js */ /** * This is a base class for dialog boxes. */ IPA.dialog = function(spec) { spec = spec || {}; var that = {}; that.entity = spec.entity; that.name = spec.name; that.id = spec.id; that.title = spec.title; that.width = spec.width || 400; that.height = spec.height; that.buttons = {}; that.sections = $.ordered_map(); var init = function() { var sections = spec.sections || []; for (var i=0; i', { name: section.name, 'class': 'dialog-section' }).appendTo(that.container); section.create(div); } }; /** * Open dialog */ that.open = function(container) { that.container = $('
', { id : that.id }); if (container) { container.append(that.container); } that.create(); that.reset(); that.container.dialog({ title: that.title, modal: true, width: that.width, minWidth: that.width, height: that.height, minHeight: that.height, buttons: that.buttons, close: function(event, ui) { that.close(); } }); }; that.option = function(name, value) { that.container.dialog('option', name, value); }; that.save = function(record) { var sections = that.sections.values; for (var i=0; i', { 'class': 'adder-dialog' }).appendTo(that.container); var top_panel = $('
', { 'class': 'adder-dialog-top' }).appendTo(container); $('', { type: 'text', name: 'filter' }).appendTo(top_panel); top_panel.append(' '); $('', { type: 'button', name: 'find', value: IPA.messages.buttons.find }).appendTo(top_panel); top_panel.append(IPA.create_network_spinner()); var left_panel = $('
', { 'class': 'adder-dialog-left' }).appendTo(container); var available_panel = $('
', { name: 'available', 'class': 'adder-dialog-available' }).appendTo(left_panel); $('
', { html: IPA.messages.dialogs.available, 'class': 'adder-dialog-header ui-widget-header' }).appendTo(available_panel); var available_content = $('
', { 'class': 'adder-dialog-content' }).appendTo(available_panel); that.available_table.create(available_content); var right_panel = $('
', { 'class': 'adder-dialog-right' }).appendTo(container); var selected_panel = $('
', { name: 'selected', 'class': 'adder-dialog-selected' }).appendTo(right_panel); $('
', { html: IPA.messages.dialogs.prospective, 'class': 'adder-dialog-header ui-widget-header' }).appendTo(selected_panel); var selected_content = $('
', { 'class': 'adder-dialog-content' }).appendTo(selected_panel); that.selected_table.create(selected_content); var buttons_panel = $('
', { name: 'buttons', 'class': 'adder-dialog-buttons' }).appendTo(container); var p = $('

').appendTo(buttons_panel); $('', { type: 'button', name: 'remove', value: '<<' }).appendTo(p); p = $('

').appendTo(buttons_panel); $('', { type: 'button', name: 'add', value: '>>' }).appendTo(p); that.filter_field = $('input[name=filter]', that.container); var button = $('input[name=find]', that.container); that.find_button = IPA.button({ name: 'find', 'label': button.val(), 'click': function() { that.search(); return false; } }); button.replaceWith(that.find_button); button = $('input[name=remove]', that.container); that.remove_button = IPA.button({ name: 'remove', 'label': button.val(), 'click': function() { that.remove(); return false; } }); button.replaceWith(that.remove_button); button = $('input[name=add]', that.container); that.add_button = IPA.button({ name: 'add', 'label': button.val(), 'click': function() { that.add(); return false; } }); button.replaceWith(that.add_button); if (that.external) { container.addClass('adder-dialog-with-external'); var external_panel = $('

', { name: 'external', 'class': 'adder-dialog-external' }).appendTo(left_panel); $('
', { html: IPA.messages.objects.sudorule.external, 'class': 'adder-dialog-header ui-widget-header' }).appendTo(external_panel); var external_content = $('
', { 'class': 'adder-dialog-content' }).appendTo(external_panel); that.external_field = $('', { type: 'text', name: 'external' }).appendTo(external_content); } that.search(); }; that.open = function(container) { that.buttons[IPA.messages.buttons.enroll] = that.execute; that.buttons[IPA.messages.buttons.cancel] = 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(); }; init(); that.adder_dialog_create = that.create; 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.buttons.remove; that.values = spec.values || []; that.add_value = function(value) { that.values.push(value); }; that.set_values = function(values) { that.values = values; }; that.create = function() { $('

', { 'text': IPA.messages.search.delete_confirm }).appendTo(that.container); var div = $('

', { style: 'overflow:auto; max-height: 100px' }).appendTo(that.container); var ul = $('
    '); ul.appendTo(div); for (var i=0; i',{ 'text': value }).appendTo(ul); } }; that.open = function(container) { that.buttons[IPA.messages.buttons.remove] = that.execute; that.buttons[IPA.messages.buttons.cancel] = that.close; that.dialog_open(container); }; that.deleter_dialog_create = that.create; return that; }; IPA.message_dialog = function(spec) { var that = IPA.dialog(spec); var init = function() { spec = spec || {}; that.message = spec.message || ''; that.on_ok = spec.on_ok; }; that.create = function() { $('

    ', { 'text': that.message }).appendTo(that.container); }; that.add_button(IPA.messages.buttons.ok, function() { that.close(); if(that.on_ok) { that.on_ok(); } }); init(); return that; };