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/automount.js | 354 ++++++++++++++++++++++++++++++++++++ 1 file changed, 354 insertions(+) create mode 100644 install/ui/src/freeipa/automount.js (limited to 'install/ui/src/freeipa/automount.js') diff --git a/install/ui/src/freeipa/automount.js b/install/ui/src/freeipa/automount.js new file mode 100644 index 000000000..3a4491d8b --- /dev/null +++ b/install/ui/src/freeipa/automount.js @@ -0,0 +1,354 @@ +/*jsl:import ipa.js */ +/*jsl:import search.js */ + +/* Authors: + * Adam Young + * + * 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.automount = {}; + +IPA.automount.location_entity = function(spec) { + + var that = IPA.entity(spec); + + that.init = function() { + that.entity_init(); + + that.builder.facet_groups([ 'automountmap', 'settings' ]). + search_facet({ + title: IPA.metadata.objects.automountlocation.label, + columns:['cn'] + }). + nested_search_facet({ + facet_group: 'automountmap', + nested_entity: 'automountmap', + label: IPA.metadata.objects.automountmap.label, + tab_label: IPA.metadata.objects.automountmap.label, + name: 'maps', + columns: [ 'automountmapname' ] + }). + details_facet({ + sections:[ + { + name: 'identity', + label: IPA.messages.details.identity, + fields: [ 'cn' ] + } + ] + }). + adder_dialog({ + fields: [ 'cn' ] + }); + }; + + return that; +}; + +IPA.automount.map_entity = function(spec) { + + var that = IPA.entity(spec); + + that.init = function() { + that.entity_init(); + + that.builder.containing_entity('automountlocation'). + facet_groups([ 'automountkey', 'settings' ]). + nested_search_facet({ + factory: IPA.automount.key_search_facet, + facet_group: 'automountkey', + nested_entity: 'automountkey', + search_all_entries: true, + label: IPA.metadata.objects.automountkey.label, + tab_label: IPA.metadata.objects.automountkey.label, + name: 'keys', + columns: [ + { + factory: IPA.automount_key_column, + name: 'automountkey', + label: IPA.get_entity_param('automountkey', 'automountkey').label + }, + 'automountinformation' + ] + }). + details_facet({ + sections: [ + { + name: 'identity', + label: IPA.messages.details.identity, + fields: [ + 'automountmapname', + { + type: 'textarea', + name: 'description' + } + ] + } + ] + }). + adder_dialog({ + factory: IPA.automountmap_adder_dialog, + sections: [ + { + name: 'general', + fields: [ + { + type: 'radio', + name: 'method', + enabled: false, //don't use value in add command + 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 + } + ] + }, + 'automountmapname', + { + type: 'textarea', + name: 'description' + } + ] + }, + { + name: 'indirect', + fields: [ + { + name: 'key', + label: IPA.get_command_option( + 'automountmap_add_indirect', 'key').label + }, + { + name: 'parentmap', + label: IPA.get_command_option( + 'automountmap_add_indirect', 'parentmap').label + } + ] + } + ] + }); + }; + + return that; +}; + +IPA.automount.key_entity = function(spec) { + + spec = spec || {}; + + spec.policies = spec.policies || [ + IPA.facet_update_policy({ + source_facet: 'details', + dest_entity: 'automountmap', + dest_facet: 'keys' + }) + ]; + + var that = IPA.entity(spec); + + that.init = function() { + that.entity_init(); + + that.builder.containing_entity('automountmap'). + details_facet({ + factory: IPA.automount.key_details_facet, + sections: [ + { + name:'identity', + label: IPA.messages.details.identity, + fields: [ + { + name: 'automountkey', + read_only: true + }, + 'automountinformation' + ] + } + ], + disable_breadcrumb: false + }). + adder_dialog({ + 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; + IPA.nav.push_state(state); + return false; + }, + fields:['automountkey','automountinformation'] + }); + }; + + return that; +}; + +IPA.automount.key_details_facet = function(spec) { + + var that = IPA.details_facet(spec); + + that.create_update_command = function() { + + var command = that.details_facet_create_update_command(); + + command.args.pop(); + + var key = IPA.nav.get_state(that.entity.name + '-pkey'); + var info = IPA.nav.get_state(that.entity.name + '-info'); + + command.options.newautomountinformation = command.options.automountinformation; + command.options.automountkey = key; + command.options.automountinformation = info; + + return command; + }; + + that.create_refresh_command = function() { + + var command = that.details_facet_create_refresh_command(); + + command.args.pop(); + + var key = IPA.nav.get_state(that.entity.name + '-pkey'); + var info = IPA.nav.get_state(that.entity.name + '-info'); + + command.options.automountkey = key; + command.options.automountinformation = info; + + return command; + }; + + return that; +}; + +IPA.automount_key_column = function(spec) { + + var that = IPA.column(spec); + + that.setup = function(container, record) { + + container.empty(); + + var key = record.automountkey; + if (key instanceof Array) key = key[0]; + var info = record.automountinformation; + if (info instanceof Array) info = info[0]; + + $('', { + href: '#'+key, + text: key, + click: function() { + var state = IPA.nav.get_path_state(that.entity.name); + state[that.entity.name + '-facet'] = 'default'; + state[that.entity.name + '-info'] = info; + state[that.entity.name + '-pkey'] = key; + IPA.nav.push_state(state); + return false; + } + }).appendTo(container); + + }; + + return that; +}; + +IPA.automountmap_adder_dialog = function(spec) { + + var that = IPA.entity_adder_dialog(spec); + + that.create = function() { + that.entity_adder_dialog_create(); + + var method_widget = that.widgets.get_widget('general.method'); + var indirect_section = that.widgets.get_widget('indirect'); + var key_field = that.fields.get_field('key'); + var parentmap_field = that.fields.get_field('parentmap'); + + var direct_input = $('input[value="add"]', method_widget.container); + direct_input.change(function() { + that.method = 'add'; + + key_field.set_enabled(false); + parentmap_field.set_enabled(false); + + key_field.set_required(false); + indirect_section.set_visible(false); + }); + + var indirect_input = $('input[value="add_indirect"]', method_widget.container); + indirect_input.change(function() { + that.method = 'add_indirect'; + + key_field.set_enabled(true); + parentmap_field.set_enabled(true); + + key_field.set_required(true); + indirect_section.set_visible(true); + }); + + direct_input.click(); + }; + + that.reset = function() { + that.dialog_reset(); + + var method_widget = that.widgets.get_widget('general.method'); + + var direct_input = $('input[value="add"]', method_widget.container); + direct_input.click(); + }; + + return that; +}; + +IPA.automount.key_search_facet = function(spec) { + + var that = IPA.nested_search_facet(spec); + + that.get_selected_values = function() { + + var values = []; + + $('input[name="description"]:checked', that.table.tbody).each(function() { + var value = {}; + $('div', $(this).parent().parent()).each(function() { + var div = $(this); + var name = div.attr('name'); + value[name] = div.text(); + }); + values.push(value); + }); + + return values; + }; + + return that; +}; + +IPA.register('automountlocation', IPA.automount.location_entity); +IPA.register('automountmap', IPA.automount.map_entity); +IPA.register('automountkey', IPA.automount.key_entity); -- cgit