diff options
Diffstat (limited to 'install')
-rw-r--r-- | install/ui/add.js | 4 | ||||
-rw-r--r-- | install/ui/automount.js | 86 | ||||
-rw-r--r-- | install/ui/dialog.js | 51 | ||||
-rw-r--r-- | install/ui/search.js | 23 | ||||
-rw-r--r-- | install/ui/test/data/automountmap_add_indirect.json | 21 | ||||
-rw-r--r-- | install/ui/webui.js | 3 | ||||
-rw-r--r-- | install/ui/widget.js | 15 |
7 files changed, 185 insertions, 18 deletions
diff --git a/install/ui/add.js b/install/ui/add.js index 73a423f00..33df62abc 100644 --- a/install/ui/add.js +++ b/install/ui/add.js @@ -32,7 +32,7 @@ IPA.add_dialog = function (spec) { that.name = spec.name; that.title = spec.title; that._entity_name = spec.entity_name; - + that.method = spec.method || 'add'; that.init = function() { that.add_button(IPA.messages.buttons.add, function() { @@ -102,7 +102,7 @@ IPA.add_dialog = function (spec) { var command = IPA.command({ entity: that.entity_name, - method: 'add', + method: that.method, on_success: on_success, on_error: on_error }); diff --git a/install/ui/automount.js b/install/ui/automount.js index f865fe73f..d008c964f 100644 --- a/install/ui/automount.js +++ b/install/ui/automount.js @@ -63,7 +63,8 @@ IPA.entity_factories.automountmap = function() { nested_entity : 'automountkey', label : IPA.metadata.objects.automountkey.label, name: 'keys', - columns:['description'] + get_values: IPA.get_option_values, + columns:['automountkey','automountinformation'] }). details_facet({ sections:[ @@ -75,7 +76,27 @@ IPA.entity_factories.automountmap = function() { ] }). adder_dialog({ - fields:['automountmapname','description'] + factory: IPA.automountmap_adder_dialog, + fields:[{factory:IPA.method_radio_widget, + name: 'method', + undo: false, + label:'Map Type', + options:[{value:'add',label:'Direct'}, + {value:'add_indirect',label:'Indirect'}] + }, + 'automountmapname','description', + { + name:'key', + label:'Mount Point', + conditional:true, + undo: false + }, + { + name:'parentmap', + label:'Parent Map', + conditional:true, + undo: false + }] }). build(); }; @@ -99,3 +120,64 @@ IPA.entity_factories.automountkey = function() { }). build(); }; + + +IPA.automountmap_adder_dialog = function(spec){ + var that = IPA.add_dialog(spec); + + that.super_setup = that.setup; + that.setup = function(container) { + that.super_setup(container); + that.disable_conditional_fields(); + }; + + return that; +}; + + +IPA.get_option_values = function(){ + + var values = []; + $('input[name="select"]:checked', this.table.tbody).each(function() { + var value = {}; + $('span',$(this).parent().parent()).each(function(){ + var name = this.attributes['name'].value; + + value[name] = $(this).text(); + }); + values.push (value); + }); + return values; +}; + +IPA.method_radio_widget = function(spec){ + var direct = true; + + var that = IPA.radio_widget(spec); + + that.setup = function(container) { + + var input = $('input[name="'+that.name+'"]', that.container); + input. + filter("[value="+ that.dialog.method+"]"). + attr('checked', true); + + + input.change(function() { + that.dialog.method = this.value; + + if (this.value === 'add_indirect'){ + that.dialog.enable_conditional_fields(); + }else{ + that.dialog.disable_conditional_fields(); + } + }); + }; + + that.reset = function(){ + var input = $('input[name="'+that.name+'"]', that.container); + input.filter("[value=add]").click(); + }; + + return that; +}; diff --git a/install/ui/dialog.js b/install/ui/dialog.js index 4f93760bf..3bcb4556d 100644 --- a/install/ui/dialog.js +++ b/install/ui/dialog.js @@ -43,6 +43,31 @@ IPA.dialog = function(spec) { that.fields = $.ordered_map(); that.sections = $.ordered_map(); + that.conditional_fields = []; + + that.enable_conditional_fields = function(){ + for (var i =0; i < that.conditional_fields.length; i+=1) { + $('label[id='+ + that.conditional_fields[i] +'-label]', + that.container).css('visibility','visible'); + $('input[name='+ + that.conditional_fields[i] + + ']',that.container).css('visibility','visible'); + } + }; + + that.disable_conditional_fields = function(){ + for (var i =0; i < that.conditional_fields.length; i+=1) { + $('label[id='+ + that.conditional_fields[i] +'-label]', + that.container).css('visibility','hidden'); + + $('input[name='+ + that.conditional_fields[i] + + ']',that.container).css('visibility','hidden'); + } + }; + that.__defineGetter__("entity_name", function(){ return that._entity_name; }); @@ -70,7 +95,12 @@ IPA.dialog = function(spec) { }; that.add_field = function(field) { + field.dialog = that; that.fields.put(field.name, field); + if (field.conditional){ + that.conditional_fields.push(field.name); + } + }; that.field = function(field) { @@ -149,7 +179,8 @@ IPA.dialog = function(spec) { style: 'vertical-align: top;', title: field.label }).appendTo(tr); - td.append(field.label+': '); + td.append($('<label />',{id: field.name+'-label', + text:field.label+': '})); td = $('<td/>', { style: 'vertical-align: top;' @@ -595,8 +626,24 @@ IPA.deleter_dialog = function (spec) { ul.appendTo(div); for (var i=0; i<that.values.length; i++) { + var value = that.values[i]; + if (value instanceof Object){ + var first = true; + var str_value = ""; + for (var key in value){ + if (value.hasOwnProperty(key)){ + if (!first){ + str_value += ','; + } + str_value += (key + ':' +value[key]); + first = false; + } + } + value = str_value; + } + $('<li/>',{ - 'text': that.values[i] + 'text': value }).appendTo(ul); } }; diff --git a/install/ui/search.js b/install/ui/search.js index 5786886ac..ba27cc9dd 100644 --- a/install/ui/search.js +++ b/install/ui/search.js @@ -37,6 +37,12 @@ IPA.search_facet = function(spec) { that.search_all = spec.search_all || false; + function get_values (){ + return that.table.get_selected_values(); + } + + that.get_values = spec.get_values || get_values; + that.init = function() { that.facet_init(); that.managed_entity = IPA.get_entity(that.managed_entity_name); @@ -193,9 +199,10 @@ IPA.search_facet = function(spec) { that.remove_instances(that.managed_entity); }; + that.remove_instances = function(entity) { - var values = that.table.get_selected_values(); + var values = that.get_values(); var title; if (!values.length) { @@ -240,8 +247,16 @@ IPA.search_facet = function(spec) { for (var k=0; k<pkeys.length; k++) { command.add_arg(pkeys[k]); } - - command.add_arg(values[i]); + var value = values[i]; + if (value instanceof Object){ + for (var key in value){ + if (value.hasOwnProperty(key)){ + command.set_option(key, value[key]); + } + } + }else{ + command.add_arg(value); + } batch.add_command(command); } @@ -266,6 +281,8 @@ IPA.search_facet = function(spec) { that.search_refresh = function(entity){ + $('input[type=checkbox]',that.table.thead).removeAttr("checked"); + function on_success(data, text_status, xhr) { that.table.empty(); diff --git a/install/ui/test/data/automountmap_add_indirect.json b/install/ui/test/data/automountmap_add_indirect.json new file mode 100644 index 000000000..f5ea1ed23 --- /dev/null +++ b/install/ui/test/data/automountmap_add_indirect.json @@ -0,0 +1,21 @@ +{ + "error": null, + "id": null, + "result": { + "result": { + "automountmapname": [ + "test" + ], + "description": [ + "test" + ], + "dn": "automountmapname=test,cn=default,cn=automount,dc=server15,dc=ayoung,dc=boston,dc=devel,dc=redhat,dc=com", + "objectclass": [ + "automountmap", + "top" + ] + }, + "summary": null, + "value": "test" + } +} diff --git a/install/ui/webui.js b/install/ui/webui.js index ce2cf2dfe..4f27272f8 100644 --- a/install/ui/webui.js +++ b/install/ui/webui.js @@ -53,8 +53,7 @@ IPA.admin_navigation = function(spec) { ]}, {name: 'automount', label: IPA.messages.tabs.automount, children: [ {entity: 'automountlocation'}, - {entity: 'automountmap'}, - {entity: 'automountkey'} + {entity: 'automountmap'} ]}, {entity: 'pwpolicy'}, {entity: 'krbtpolicy'} diff --git a/install/ui/widget.js b/install/ui/widget.js index ac78de259..1c12ac480 100644 --- a/install/ui/widget.js +++ b/install/ui/widget.js @@ -36,7 +36,7 @@ IPA.widget = function(spec) { that.disabled = spec.disabled; that.hidden = spec.hidden; - + that.conditional = spec.conditional; // read_only is set during initialization that.read_only = spec.read_only; @@ -1143,7 +1143,8 @@ IPA.table_widget = function (spec) { if (that.scrollable && (i == columns.length-1)) { if (column.width) { - var width = parseInt(column.width.substring(0, column.width.length-2),10); + var width = parseInt( + column.width.substring(0, column.width.length-2),10); width += 16; th.css('width', width+'px'); } @@ -1348,6 +1349,11 @@ IPA.table_widget = function (spec) { var tr = that.row.clone(); tr.appendTo(that.tbody); + $('input[name="select"]', tr).click(function(){ + that.select_changed(); + }); + + var columns = that.columns.values; for (var i=0; i<columns.length; i++){ var column = columns[i]; @@ -1356,12 +1362,7 @@ IPA.table_widget = function (spec) { value = value ? value.toString() : ''; if (column.primary_key) { - // set checkbox value $('input[name="select"]', tr).val(value); - - $('input[name="select"]', tr).click(function(){ - that.select_changed(); - }); } var span = $('span[name="'+column.name+'"]', tr); |