summaryrefslogtreecommitdiffstats
path: root/install/ui
diff options
context:
space:
mode:
authorAdam Young <ayoung@redhat.com>2011-05-27 11:32:17 -0400
committerAdam Young <ayoung@redhat.com>2011-06-01 22:15:11 -0400
commitc0f155bbfe5c5448af1b38b9da9bb75e9cdac9b4 (patch)
tree6fb9f9f374bb8734b2cea37aa68688172d978f36 /install/ui
parent6039fdd6b3002f65ecd0121b7ca6d31e49b9590e (diff)
downloadfreeipa-c0f155bbfe5c5448af1b38b9da9bb75e9cdac9b4.tar.gz
freeipa-c0f155bbfe5c5448af1b38b9da9bb75e9cdac9b4.tar.xz
freeipa-c0f155bbfe5c5448af1b38b9da9bb75e9cdac9b4.zip
automount delete key
indirect automount maps code review changes for automount: Removed: fields for mount and parentmap in maps details since they are not present in show or mod Hid undo link for adder dialog set up click handler for checkboxes when row does not have primary key removed add override in automountmap_adder_dialog moved 'var input...' in automount.js line 158 to start of method. changed logic in if statmenet ,dialog.js line 628 it if (!first) as suggested
Diffstat (limited to 'install/ui')
-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);