/*jsl:import ipa.js */ /* Authors: * Pavel Zuna * 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 */ IPA.add_dialog = function (spec) { spec = spec || {}; var that = IPA.dialog(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; var pkey = result[pkey_name]; if (pkey instanceof Array) { pkey = pkey[0]; } IPA.nav.show_page(that.entity_name, '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 command = IPA.command({ 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(); for (var h=0; h