summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--install/ui/add.js4
-rw-r--r--install/ui/automount.js86
-rw-r--r--install/ui/dialog.js51
-rw-r--r--install/ui/search.js23
-rw-r--r--install/ui/test/data/automountmap_add_indirect.json21
-rw-r--r--install/ui/webui.js3
-rw-r--r--install/ui/widget.js15
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);