mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
Added facet container.
Facet container has been added to hold facet header (i.e. title, search fields, buttons, links) and facet content. Each facet now occupies separate container, so it can be shown/hidden without having to redraw the content.
This commit is contained in:
parent
dd89c28654
commit
a4aba826a0
@ -799,7 +799,9 @@ IPA.association_facet = function (spec) {
|
||||
return pkey != that.pkey;
|
||||
};
|
||||
|
||||
that.create_content = function(container) {
|
||||
that.create_header = function(container) {
|
||||
|
||||
that.facet_create_header(container);
|
||||
|
||||
that.pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
|
||||
|
||||
@ -812,41 +814,44 @@ IPA.association_facet = function (spec) {
|
||||
var other_label = IPA.metadata.objects[that.other_entity].label;
|
||||
|
||||
/* TODO: generic handling of different relationships */
|
||||
var header_message = '';
|
||||
var title = '';
|
||||
if (relationship[0] == 'Member') {
|
||||
header_message = IPA.messages.association.member;
|
||||
|
||||
} else if (relationship[0] == 'Parent') {
|
||||
header_message = IPA.messages.association.parent;
|
||||
title = IPA.messages.association.member;
|
||||
|
||||
} else if (relationship[0] == 'Member Of') {
|
||||
title = IPA.messages.association.parent;
|
||||
}
|
||||
|
||||
header_message = header_message.replace('${entity}', that.entity_name);
|
||||
header_message = header_message.replace('${primary_key}', that.pkey);
|
||||
header_message = header_message.replace('${other_entity}', other_label);
|
||||
title = title.replace('${entity}', that.entity_name);
|
||||
title = title.replace('${primary_key}', that.pkey);
|
||||
title = title.replace('${other_entity}', other_label);
|
||||
|
||||
$('<div/>', {
|
||||
'id': that.entity_name+'-'+that.other_entity,
|
||||
html: $('<h2/>',{ html: header_message })
|
||||
}).appendTo(container);
|
||||
that.set_title(container, title);
|
||||
|
||||
that.remove_button = IPA.action_button({
|
||||
label: IPA.messages.buttons.remove,
|
||||
icon: 'ui-icon-trash',
|
||||
click: function() {
|
||||
that.show_remove_dialog();
|
||||
return false;
|
||||
}
|
||||
}).appendTo(that.controls);
|
||||
|
||||
that.add_button = IPA.action_button({
|
||||
label: IPA.messages.buttons.enroll,
|
||||
icon: 'ui-icon-plus',
|
||||
click: function() {
|
||||
that.show_add_dialog();
|
||||
return false;
|
||||
}
|
||||
}).appendTo(that.controls);
|
||||
};
|
||||
|
||||
that.create_content = function(container) {
|
||||
|
||||
var span = $('<span/>', { 'name': 'association' }).appendTo(container);
|
||||
|
||||
that.table.create(span);
|
||||
|
||||
var li = that.entity_header.buttons;
|
||||
|
||||
// creating generic buttons for layout
|
||||
$('<input/>', {
|
||||
'type': 'button',
|
||||
'name': 'remove',
|
||||
'value': IPA.messages.buttons.remove
|
||||
}).appendTo(li);
|
||||
|
||||
$('<input/>', {
|
||||
'type': 'button',
|
||||
'name': 'add',
|
||||
'value': IPA.messages.buttons.enroll
|
||||
}).appendTo(li);
|
||||
};
|
||||
|
||||
that.setup = function(container) {
|
||||
@ -856,22 +861,16 @@ IPA.association_facet = function (spec) {
|
||||
var span = $('span[name=association]', that.container);
|
||||
|
||||
that.table.setup(span);
|
||||
};
|
||||
|
||||
// replacing generic buttons with IPA.button and setting click handler
|
||||
that.show = function() {
|
||||
that.facet_show();
|
||||
|
||||
var button = $('input[name=remove]', that.entity_header.buttons);
|
||||
button.replaceWith(IPA.action_button({
|
||||
'label': button.val(),
|
||||
'icon': 'ui-icon-trash',
|
||||
'click': function() { that.show_remove_dialog(); }
|
||||
}));
|
||||
that.pkey = $.bbq.getState(that.entity_name+'-pkey', true) || '';
|
||||
that.entity.header.set_pkey(that.pkey);
|
||||
|
||||
button = $('input[name=add]', that.entity_header.buttons);
|
||||
button.replaceWith(IPA.action_button({
|
||||
'label': button.val(),
|
||||
'icon': 'ui-icon-plus',
|
||||
'click': function() { that.show_add_dialog(); }
|
||||
}));
|
||||
that.entity.header.back_link.css('visibility', 'visible');
|
||||
that.entity.header.facet_tabs.css('visibility', 'visible');
|
||||
};
|
||||
|
||||
that.show_add_dialog = function() {
|
||||
@ -1010,9 +1009,7 @@ IPA.association_facet = function (spec) {
|
||||
that.refresh = function() {
|
||||
|
||||
function on_success(data, text_status, xhr) {
|
||||
if (that.pkey){
|
||||
that.entity_header.set_pkey(that.pkey);
|
||||
}
|
||||
|
||||
that.table.empty();
|
||||
|
||||
var pkeys = data.result.result[that.name];
|
||||
|
@ -266,9 +266,6 @@ IPA.details_facet = function(spec) {
|
||||
|
||||
that.label = (IPA.messages && IPA.messages.facets && IPA.messages.facets.details) || spec.label;
|
||||
|
||||
that.update = spec.update || IPA.details_update;
|
||||
that.refresh = spec.refresh || IPA.details_refresh;
|
||||
|
||||
that.sections = [];
|
||||
|
||||
that.__defineGetter__("entity_name", function(){
|
||||
@ -319,38 +316,82 @@ IPA.details_facet = function(spec) {
|
||||
}
|
||||
};
|
||||
|
||||
that.create_content = function(container) {
|
||||
that.create_header = function(container) {
|
||||
|
||||
that.facet_create_header(container);
|
||||
|
||||
that.pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
|
||||
var label = IPA.metadata.objects[that.entity_name].label;
|
||||
|
||||
var title = IPA.messages.details.settings;
|
||||
title = title.replace('${entity}', label);
|
||||
title = title.replace('${primary_key}', that.pkey);
|
||||
|
||||
$('<h1/>',{
|
||||
html: "<span id='headerpkey' />"+title
|
||||
}).append(IPA.create_network_spinner()).
|
||||
appendTo(container);
|
||||
that.set_title(container, title);
|
||||
|
||||
var details = $('<div/>', {
|
||||
'name': 'details'
|
||||
}).appendTo(container);
|
||||
that.reset_button = IPA.action_button({
|
||||
label: IPA.messages.buttons.reset,
|
||||
icon: 'ui-icon-refresh',
|
||||
'class': 'details-reset',
|
||||
click: function() {
|
||||
that.reset();
|
||||
return false;
|
||||
}
|
||||
}).appendTo(that.controls);
|
||||
|
||||
$('<a/>', {
|
||||
that.update_button = IPA.action_button({
|
||||
label: IPA.messages.buttons.update,
|
||||
icon: 'ui-icon-check',
|
||||
'class': 'details-update',
|
||||
click: function() {
|
||||
that.update();
|
||||
return false;
|
||||
}
|
||||
}).appendTo(that.controls);
|
||||
|
||||
that.expand_button = $('<a/>', {
|
||||
name: 'expand_all',
|
||||
href: 'expand_all',
|
||||
text: 'Expand All',
|
||||
'class': 'expand-collapse-all',
|
||||
style: 'display: none;'
|
||||
}).appendTo(details);
|
||||
style: 'display: none;',
|
||||
click: function() {
|
||||
that.expand_button.css('display', 'none');
|
||||
that.collapse_button.css('display', 'inline');
|
||||
|
||||
$('<a/>', {
|
||||
for (var i=0; i<that.sections.length; i++) {
|
||||
var section = that.sections[i];
|
||||
that.toggle(section, true);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}).appendTo(that.controls);
|
||||
|
||||
that.collapse_button = $('<a/>', {
|
||||
name: 'collapse_all',
|
||||
href: 'collapse_all',
|
||||
text: 'Collapse All',
|
||||
'class': 'expand-collapse-all'
|
||||
}).appendTo(details);
|
||||
'class': 'expand-collapse-all',
|
||||
click: function() {
|
||||
that.expand_button.css('display', 'inline');
|
||||
that.collapse_button.css('display', 'none');
|
||||
|
||||
details.append('<br/>');
|
||||
for (var i=0; i<that.sections.length; i++) {
|
||||
var section = that.sections[i];
|
||||
that.toggle(section, false);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}).appendTo(that.controls);
|
||||
};
|
||||
|
||||
that.create_content = function(container) {
|
||||
|
||||
var details = $('<div/>', {
|
||||
'name': 'details'
|
||||
}).appendTo(container);
|
||||
|
||||
for (var i = 0; i < that.sections.length; ++i) {
|
||||
var section = that.sections[i];
|
||||
@ -374,6 +415,13 @@ IPA.details_facet = function(spec) {
|
||||
'class': 'details-section'
|
||||
}).appendTo(details);
|
||||
|
||||
header.click(function(section, div) {
|
||||
return function() {
|
||||
var visible = div.is(":visible");
|
||||
that.toggle(section, !visible);
|
||||
};
|
||||
}(section, div));
|
||||
|
||||
section.create(div);
|
||||
|
||||
details.append('<hr/>');
|
||||
@ -384,72 +432,33 @@ IPA.details_facet = function(spec) {
|
||||
|
||||
that.facet_setup(container);
|
||||
|
||||
that.reset_button = IPA.action_button({
|
||||
'label': 'Reset',
|
||||
'icon': 'ui-icon-refresh',
|
||||
'class': 'details-reset',
|
||||
'click': function() {
|
||||
that.reset();
|
||||
return false;
|
||||
}
|
||||
}).appendTo(that.entity_header.buttons);
|
||||
|
||||
that.update_button = IPA.action_button({
|
||||
'label': 'Update',
|
||||
'icon': 'ui-icon-check',
|
||||
'class': 'details-update',
|
||||
'click': function() {
|
||||
that.update();
|
||||
return false;
|
||||
}
|
||||
}).appendTo(that.entity_header.buttons);
|
||||
|
||||
var details = $('div[name=details]', that.container);
|
||||
|
||||
var expand_all = $('a[name=expand_all]', details);
|
||||
expand_all.click(function() {
|
||||
expand_all.css('display', 'none');
|
||||
collapse_all.css('display', 'inline');
|
||||
|
||||
for (var i=0; i<that.sections.length; i++) {
|
||||
var section = that.sections[i];
|
||||
toggle(section, true);
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
var collapse_all = $('a[name=collapse_all]', details);
|
||||
collapse_all.click(function() {
|
||||
expand_all.css('display', 'inline');
|
||||
collapse_all.css('display', 'none');
|
||||
|
||||
for (var i=0; i<that.sections.length; i++) {
|
||||
var section = that.sections[i];
|
||||
toggle(section, false);
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
for (var i = 0; i < that.sections.length; ++i) {
|
||||
var section = that.sections[i];
|
||||
|
||||
var header = $('h2[name='+section.name+']', that.container);
|
||||
var div = $('div.details-section[name='+section.name+']', that.container);
|
||||
|
||||
header.click(function(section, div) {
|
||||
return function() {
|
||||
var visible = div.is(":visible");
|
||||
toggle(section, !visible);
|
||||
};
|
||||
}(section, div));
|
||||
|
||||
section.setup(div);
|
||||
}
|
||||
};
|
||||
|
||||
function toggle(section, visible) {
|
||||
that.show = function() {
|
||||
that.facet_show();
|
||||
|
||||
that.pkey = $.bbq.getState(that.entity_name+'-pkey', true) || '';
|
||||
that.entity.header.set_pkey(that.pkey);
|
||||
|
||||
if (that.entity.facets.length == 1) {
|
||||
that.entity.header.back_link.css('visibility', 'hidden');
|
||||
that.entity.header.facet_tabs.css('visibility', 'hidden');
|
||||
} else {
|
||||
that.entity.header.back_link.css('visibility', 'visible');
|
||||
that.entity.header.facet_tabs.css('visibility', 'visible');
|
||||
}
|
||||
};
|
||||
|
||||
that.toggle = function(section, visible) {
|
||||
var header = $('h2[name='+section.name+']', that.container);
|
||||
|
||||
var icon = $('span[name=icon]', header);
|
||||
@ -461,7 +470,7 @@ IPA.details_facet = function(spec) {
|
||||
if (visible != div.is(":visible")) {
|
||||
div.slideToggle();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function new_key(){
|
||||
var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
|
||||
@ -488,9 +497,6 @@ IPA.details_facet = function(spec) {
|
||||
var section = that.sections[i];
|
||||
section.load(record);
|
||||
}
|
||||
if (that.pkey){
|
||||
that.entity_header.set_pkey(that.pkey);
|
||||
}
|
||||
};
|
||||
|
||||
that.reset = function() {
|
||||
@ -501,6 +507,123 @@ IPA.details_facet = function(spec) {
|
||||
}
|
||||
};
|
||||
|
||||
that.update = function(on_win, on_fail) {
|
||||
|
||||
var entity_name = that.entity_name;
|
||||
|
||||
function on_success(data, text_status, xhr) {
|
||||
if (on_win)
|
||||
on_win(data, text_status, xhr);
|
||||
if (data.error)
|
||||
return;
|
||||
|
||||
var result = data.result.result;
|
||||
that.load(result);
|
||||
}
|
||||
|
||||
function on_error(xhr, text_status, error_thrown) {
|
||||
if (on_fail)
|
||||
on_fail(xhr, text_status, error_thrown);
|
||||
}
|
||||
|
||||
var values;
|
||||
var modlist = {'all': true, 'setattr': [], 'addattr': [], 'rights': true};
|
||||
var attrs_wo_option = {};
|
||||
|
||||
for (var i=0; i<that.sections.length; i++) {
|
||||
var section = that.sections[i];
|
||||
|
||||
if (section.save){
|
||||
section.save(modlist);
|
||||
continue;
|
||||
}
|
||||
|
||||
for (var j=0; j<section.fields.length; j++) {
|
||||
var field = section.fields[j];
|
||||
|
||||
var span = $('span[name='+field.name+']', section.container).first();
|
||||
values = field.save();
|
||||
if (!values) continue;
|
||||
|
||||
var param_info = IPA.get_entity_param(entity_name, field.name);
|
||||
if (param_info) {
|
||||
if (param_info['primary_key']) continue;
|
||||
if (values.length === 1) {
|
||||
modlist[field.name] = values[0];
|
||||
} else if (values.length > 1){
|
||||
if (field.join) {
|
||||
modlist[field.name] = values.join(',');
|
||||
} else {
|
||||
modlist[field.name] = values;
|
||||
}
|
||||
} else if (param_info['multivalue']){
|
||||
modlist[field.name] = [];
|
||||
}
|
||||
} else {
|
||||
if (values.length) attrs_wo_option[field.name] = values;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var attr in attrs_wo_option) {
|
||||
values = attrs_wo_option[attr];
|
||||
modlist['setattr'].push(attr + '=' + values[0]);
|
||||
for (var k = 1; k < values.length; ++k){
|
||||
modlist['addattr'].push(attr + '=' + values[k]);
|
||||
}
|
||||
}
|
||||
|
||||
var pkey = that.get_primary_key();
|
||||
|
||||
var args = pkey ? [pkey] : [];
|
||||
|
||||
var command = IPA.command({
|
||||
entity: entity_name,
|
||||
method: 'mod',
|
||||
args: args,
|
||||
options: modlist,
|
||||
on_success: on_success,
|
||||
on_error: on_error
|
||||
});
|
||||
|
||||
//alert(JSON.stringify(command.to_json()));
|
||||
|
||||
command.execute();
|
||||
};
|
||||
|
||||
that.refresh = function() {
|
||||
|
||||
that.pkey = $.bbq.getState(that.entity_name + '-pkey', true) ;
|
||||
|
||||
var command = IPA.command({
|
||||
entity: that.entity_name,
|
||||
method: 'show',
|
||||
options: { all: true, rights: true }
|
||||
});
|
||||
|
||||
if (IPA.details_refresh_devel_hook){
|
||||
IPA.details_refresh_devel_hook(that.entity_name,command,that.pkey);
|
||||
}
|
||||
|
||||
|
||||
if (that.pkey){
|
||||
command.args = [that.pkey];
|
||||
}
|
||||
|
||||
command.on_success = function(data, text_status, xhr) {
|
||||
that.load(data.result.result);
|
||||
};
|
||||
|
||||
command.on_error = function(xhr, text_status, error_thrown) {
|
||||
var details = $('.details', that.container).empty();
|
||||
details.append('<p>Error: '+error_thrown.name+'</p>');
|
||||
details.append('<p>'+error_thrown.title+'</p>');
|
||||
details.append('<p>'+error_thrown.message+'</p>');
|
||||
};
|
||||
|
||||
command.execute();
|
||||
};
|
||||
|
||||
that.details_facet_init = that.init;
|
||||
that.details_facet_create_content = that.create_content;
|
||||
that.details_facet_load = that.load;
|
||||
@ -540,122 +663,3 @@ IPA.button = function(spec) {
|
||||
|
||||
return button;
|
||||
};
|
||||
|
||||
IPA.details_refresh = function() {
|
||||
|
||||
var that = this;
|
||||
|
||||
that.pkey = $.bbq.getState(that.entity_name + '-pkey', true) ;
|
||||
|
||||
var command = IPA.command({
|
||||
entity: that.entity_name,
|
||||
method: 'show',
|
||||
options: { all: true, rights: true }
|
||||
});
|
||||
|
||||
if (IPA.details_refresh_devel_hook){
|
||||
IPA.details_refresh_devel_hook(that.entity_name,command,that.pkey);
|
||||
}
|
||||
|
||||
|
||||
if (that.pkey){
|
||||
command.args = [that.pkey];
|
||||
}
|
||||
|
||||
command.on_success = function(data, text_status, xhr) {
|
||||
that.load(data.result.result);
|
||||
};
|
||||
|
||||
command.on_error = function(xhr, text_status, error_thrown) {
|
||||
var details = $('.details', that.container).empty();
|
||||
details.append('<p>Error: '+error_thrown.name+'</p>');
|
||||
details.append('<p>'+error_thrown.title+'</p>');
|
||||
details.append('<p>'+error_thrown.message+'</p>');
|
||||
};
|
||||
|
||||
command.execute();
|
||||
};
|
||||
|
||||
IPA.details_update = function(on_win, on_fail) {
|
||||
var that = this;
|
||||
var entity_name = that.entity_name;
|
||||
|
||||
function on_success(data, text_status, xhr) {
|
||||
if (on_win)
|
||||
on_win(data, text_status, xhr);
|
||||
if (data.error)
|
||||
return;
|
||||
|
||||
var result = data.result.result;
|
||||
that.load(result);
|
||||
}
|
||||
|
||||
function on_error(xhr, text_status, error_thrown) {
|
||||
if (on_fail)
|
||||
on_fail(xhr, text_status, error_thrown);
|
||||
}
|
||||
|
||||
var values;
|
||||
var modlist = {'all': true, 'setattr': [], 'addattr': [], 'rights': true};
|
||||
var attrs_wo_option = {};
|
||||
|
||||
for (var i=0; i<that.sections.length; i++) {
|
||||
var section = that.sections[i];
|
||||
|
||||
if (section.save){
|
||||
section.save(modlist);
|
||||
continue;
|
||||
}
|
||||
|
||||
for (var j=0; j<section.fields.length; j++) {
|
||||
var field = section.fields[j];
|
||||
|
||||
var span = $('span[name='+field.name+']', section.container).first();
|
||||
values = field.save();
|
||||
if (!values) continue;
|
||||
|
||||
var param_info = IPA.get_entity_param(entity_name, field.name);
|
||||
if (param_info) {
|
||||
if (param_info['primary_key']) continue;
|
||||
if (values.length === 1) {
|
||||
modlist[field.name] = values[0];
|
||||
} else if (values.length > 1){
|
||||
if (field.join) {
|
||||
modlist[field.name] = values.join(',');
|
||||
} else {
|
||||
modlist[field.name] = values;
|
||||
}
|
||||
} else if (param_info['multivalue']){
|
||||
modlist[field.name] = [];
|
||||
}
|
||||
} else {
|
||||
if (values.length) attrs_wo_option[field.name] = values;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var attr in attrs_wo_option) {
|
||||
values = attrs_wo_option[attr];
|
||||
modlist['setattr'].push(attr + '=' + values[0]);
|
||||
for (var k = 1; k < values.length; ++k){
|
||||
modlist['addattr'].push(attr + '=' + values[k]);
|
||||
}
|
||||
}
|
||||
|
||||
var pkey = that.get_primary_key();
|
||||
|
||||
var args = pkey ? [pkey] : [];
|
||||
|
||||
var command = IPA.command({
|
||||
entity: entity_name,
|
||||
method: 'mod',
|
||||
args: args,
|
||||
options: modlist,
|
||||
on_success: on_success,
|
||||
on_error: on_error
|
||||
});
|
||||
|
||||
//alert(JSON.stringify(command.to_json()));
|
||||
|
||||
command.execute();
|
||||
};
|
||||
|
@ -112,11 +112,7 @@ IPA.records_facet = function (spec){
|
||||
return type_select;
|
||||
}
|
||||
|
||||
|
||||
var entry_attrs = {};
|
||||
|
||||
|
||||
function add_click(){
|
||||
that.add = function() {
|
||||
|
||||
var dialog = IPA.dialog({
|
||||
title: IPA.messages.objects.dnsrecord.add
|
||||
@ -194,17 +190,17 @@ IPA.records_facet = function (spec){
|
||||
dialog.init();
|
||||
|
||||
dialog.open(that.container);
|
||||
}
|
||||
};
|
||||
|
||||
function delete_records(records_table){
|
||||
that.remove = function() {
|
||||
|
||||
var zone = $.bbq.getState('dnszone-pkey', true);
|
||||
|
||||
var thead = records_table.find('thead');
|
||||
var thead = that.records_table.find('thead');
|
||||
thead.find("INPUT[type='checkbox']").
|
||||
attr('checked', false);
|
||||
|
||||
var tbody = records_table.find('tbody');
|
||||
var tbody = that.records_table.find('tbody');
|
||||
|
||||
var records = [];
|
||||
|
||||
@ -296,7 +292,7 @@ IPA.records_facet = function (spec){
|
||||
dialog.init();
|
||||
|
||||
dialog.open(that.container);
|
||||
}
|
||||
};
|
||||
|
||||
that.is_dirty = function() {
|
||||
var pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
|
||||
@ -304,73 +300,76 @@ IPA.records_facet = function (spec){
|
||||
return pkey != that.pkey || record != that.record;
|
||||
};
|
||||
|
||||
function create_content(container) {
|
||||
that.create_header = function(container) {
|
||||
|
||||
$('<h1/>',{
|
||||
}).append(IPA.create_network_spinner()).
|
||||
appendTo(container);
|
||||
that.facet_create_header(container);
|
||||
|
||||
$('<input/>', {
|
||||
type: 'text',
|
||||
id: 'dns-record-resource-filter',
|
||||
name: 'filter'
|
||||
}).appendTo(that.controls);
|
||||
|
||||
/*
|
||||
THe OLD DNS plugin allowed for search based on record type.
|
||||
This one does not. If the plugin gets modified to support
|
||||
Record type searches, uncomment the following lines and
|
||||
adjust the code that modifies the search parameters.
|
||||
|
||||
that.controls.append('Type');
|
||||
create_type_select('dns-record-type-filter',true).
|
||||
appendTo(that.controls);
|
||||
*/
|
||||
|
||||
that.find_button = IPA.button({
|
||||
label: IPA.messages.buttons.find,
|
||||
icon: 'ui-icon-search',
|
||||
click: function(){
|
||||
that.refresh();
|
||||
return false;
|
||||
}
|
||||
}).appendTo(that.controls);
|
||||
|
||||
that.controls.append(IPA.create_network_spinner());
|
||||
|
||||
that.remove_button = IPA.action_button({
|
||||
label: IPA.messages.buttons.remove,
|
||||
icon: 'ui-icon-trash',
|
||||
click: function() {
|
||||
that.remove();
|
||||
return false;
|
||||
}
|
||||
}).appendTo(that.controls);
|
||||
|
||||
that.add_button = IPA.action_button({
|
||||
label: IPA.messages.buttons.add,
|
||||
icon: 'ui-icon-plus',
|
||||
click: function() {
|
||||
that.add();
|
||||
return false;
|
||||
}
|
||||
}).appendTo(that.controls);
|
||||
};
|
||||
|
||||
that.create_content = function(container) {
|
||||
|
||||
var details = $('<div/>', {
|
||||
'name': 'details'
|
||||
}).appendTo(container);
|
||||
|
||||
var div = $('<div class="search-controls"></div>').
|
||||
appendTo(details);
|
||||
|
||||
var control_span =$('<span class="record-filter"></span>').appendTo(div);
|
||||
control_span.append(IPA.messages.objects.dnsrecord.resource);
|
||||
control_span.append($('<input />',{
|
||||
type: "text",
|
||||
id: 'dns-record-resource-filter',
|
||||
name: 'search-' + that.entity_name + '-filter'
|
||||
}));
|
||||
|
||||
/*
|
||||
THe OLD DNS plugin allowed for search based on record type.
|
||||
This one does not. If the plugin gets modified to support
|
||||
Record type searches, uncomment the followin lines and
|
||||
adjust the code that modifies the search parameters.
|
||||
|
||||
control_span.append('Type');
|
||||
create_type_select('dns-record-type-filter',true).
|
||||
appendTo(control_span);
|
||||
*/
|
||||
|
||||
IPA.button({
|
||||
'label': IPA.messages.buttons.find,
|
||||
'icon': 'ui-icon-search',
|
||||
'click': function(){refresh();}
|
||||
}).appendTo(control_span);
|
||||
|
||||
|
||||
var buttons = that.entity_header.buttons;
|
||||
|
||||
var button = $('input[name=remove]', buttons);
|
||||
that.remove_button = IPA.action_button({
|
||||
label: IPA.messages.buttons.remove,
|
||||
icon: 'ui-icon-trash',
|
||||
click: function(){ delete_records(records_table); }
|
||||
}).appendTo(buttons);
|
||||
|
||||
that.add_button = IPA.action_button({
|
||||
label: IPA.messages.buttons.add,
|
||||
icon: 'ui-icon-plus',
|
||||
click: add_click
|
||||
}).appendTo(buttons);
|
||||
|
||||
div.append('<span class="records-buttons"></span>');
|
||||
details.append('<span class="records-buttons"></span>');
|
||||
|
||||
var records_results = $('<div/>', {
|
||||
'class': 'records-results'
|
||||
}).appendTo(details);
|
||||
|
||||
var records_table = $('<table/>', {
|
||||
that.records_table = $('<table/>', {
|
||||
'class': 'search-table'
|
||||
}).appendTo(records_results);
|
||||
|
||||
var thead = $('<thead><tr></tr></thead>').appendTo(records_table);
|
||||
var tbody = $('<tbody></tbody>').appendTo(records_table);
|
||||
var tfoot = $('<tfoot></tfoot>').appendTo(records_table);
|
||||
var thead = $('<thead><tr></tr></thead>').appendTo(that.records_table);
|
||||
var tbody = $('<tbody></tbody>').appendTo(that.records_table);
|
||||
var tfoot = $('<tfoot></tfoot>').appendTo(that.records_table);
|
||||
|
||||
var tr = thead.find('tr');
|
||||
tr.append($('<th style="width: 15px" />').append(
|
||||
@ -386,20 +385,18 @@ IPA.records_facet = function (spec){
|
||||
tr.append($('<th>Record Type</th>'));
|
||||
tr.append($('<th>Data</th>'));
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
function setup(container){
|
||||
that.setup = function(container) {
|
||||
|
||||
that.facet_setup(container);
|
||||
|
||||
that.pkey = $.bbq.getState(that.entity_name + '-pkey', true) || '';
|
||||
that.record = $.bbq.getState(that.entity_name + '-record', true) || '';
|
||||
|
||||
|
||||
that.pkey = $.bbq.getState(that.entity_name+'-pkey', true) || '';
|
||||
$('h1',container).
|
||||
html("<span id='headerpkey' />"+IPA.messages.objects.dnsrecord.title+":" + that.pkey);
|
||||
|
||||
|
||||
//commented out until data is searchable
|
||||
//control_span.append('Data');
|
||||
//control_span.append($('<input />',{
|
||||
@ -407,12 +404,17 @@ IPA.records_facet = function (spec){
|
||||
// id: 'dns-record-data-filter',
|
||||
// name: 'search-' + obj_name + '-filter'
|
||||
//}));
|
||||
};
|
||||
|
||||
that.show = function() {
|
||||
that.facet_show();
|
||||
|
||||
that.pkey = $.bbq.getState(that.entity_name+'-pkey', true) || '';
|
||||
that.entity.header.set_pkey(that.pkey);
|
||||
|
||||
refresh();
|
||||
}
|
||||
|
||||
that.entity.header.back_link.css('visibility', 'visible');
|
||||
that.entity.header.facet_tabs.css('visibility', 'visible');
|
||||
};
|
||||
|
||||
function load_on_win(data){
|
||||
display(that.entity_name,data);
|
||||
@ -423,11 +425,11 @@ IPA.records_facet = function (spec){
|
||||
}
|
||||
|
||||
function reload(){
|
||||
refresh();
|
||||
that.refresh();
|
||||
}
|
||||
|
||||
|
||||
function refresh(){
|
||||
that.refresh = function() {
|
||||
|
||||
var options = {};
|
||||
|
||||
@ -460,7 +462,7 @@ IPA.records_facet = function (spec){
|
||||
on_success: load_on_win,
|
||||
on_error:load_on_fail
|
||||
}).execute();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
function generate_tr(thead, tbody, result){
|
||||
@ -518,7 +520,7 @@ IPA.records_facet = function (spec){
|
||||
|
||||
//TODO this is cut and pasted from search, we need to unify
|
||||
function display(obj_name, data){
|
||||
var selector = '.entity-container[name=' + obj_name + ']';
|
||||
var selector = '.entity[name=' + obj_name + ']';
|
||||
var thead = $(selector + ' thead');
|
||||
var tbody = $(selector + ' tbody');
|
||||
var tfoot = $(selector + ' tfoot');
|
||||
@ -545,10 +547,6 @@ IPA.records_facet = function (spec){
|
||||
|
||||
}
|
||||
|
||||
that.create_content = create_content;
|
||||
that.setup = setup;
|
||||
that.refresh = refresh;
|
||||
|
||||
return that;
|
||||
};
|
||||
|
||||
|
@ -260,47 +260,14 @@ IPA.entitle.search_facet = function(spec) {
|
||||
|
||||
var that = IPA.search_facet(spec);
|
||||
|
||||
that.setup = function(container) {
|
||||
that.create_header = function(container) {
|
||||
|
||||
that.search_facet_setup(container);
|
||||
|
||||
var buttons = that.entity_header.buttons;
|
||||
|
||||
$('a', buttons).remove();
|
||||
that.facet_create_header(container);
|
||||
|
||||
that.register_buttons = $('<span/>', {
|
||||
style: 'display: none;'
|
||||
}).appendTo(buttons);
|
||||
}).appendTo(that.controls);
|
||||
|
||||
$('<input/>', {
|
||||
type: 'button',
|
||||
name: 'register_online',
|
||||
value: 'Register'
|
||||
}).appendTo(that.register_buttons);
|
||||
|
||||
$('<input/>', {
|
||||
type: 'button',
|
||||
name: 'register_offline',
|
||||
value: 'Import'
|
||||
}).appendTo(that.register_buttons);
|
||||
|
||||
that.consume_buttons = $('<span/>', {
|
||||
style: 'display: none;'
|
||||
}).appendTo(buttons);
|
||||
|
||||
$('<input/>', {
|
||||
type: 'button',
|
||||
name: 'consume',
|
||||
value: 'Consume'
|
||||
}).appendTo(that.consume_buttons);
|
||||
|
||||
$('<input/>', {
|
||||
type: 'button',
|
||||
name: 'import',
|
||||
value: 'Import'
|
||||
}).appendTo(that.consume_buttons);
|
||||
|
||||
var button = $('input[name=register_online]', that.entity_header.buttons);
|
||||
that.register_online_button = IPA.action_button({
|
||||
label: 'Register',
|
||||
icon: 'ui-icon-plus',
|
||||
@ -308,10 +275,8 @@ IPA.entitle.search_facet = function(spec) {
|
||||
var dialog = that.entity.get_dialog('online_registration');
|
||||
dialog.open(that.container);
|
||||
}
|
||||
});
|
||||
button.replaceWith(that.register_online_button);
|
||||
}).appendTo(that.register_buttons);
|
||||
|
||||
button = $('input[name=register_offline]', that.entity_header.buttons);
|
||||
that.register_offline_button = IPA.action_button({
|
||||
label: 'Import',
|
||||
icon: 'ui-icon-plus',
|
||||
@ -319,10 +284,12 @@ IPA.entitle.search_facet = function(spec) {
|
||||
var dialog = that.entity.get_dialog('offline_registration');
|
||||
dialog.open(that.container);
|
||||
}
|
||||
});
|
||||
button.replaceWith(that.register_offline_button);
|
||||
}).appendTo(that.register_buttons);
|
||||
|
||||
that.consume_buttons = $('<span/>', {
|
||||
style: 'display: none;'
|
||||
}).appendTo(that.controls);
|
||||
|
||||
button = $('input[name=consume]', that.entity_header.buttons);
|
||||
that.consume_button = IPA.action_button({
|
||||
label: 'Consume',
|
||||
icon: 'ui-icon-plus',
|
||||
@ -331,10 +298,8 @@ IPA.entitle.search_facet = function(spec) {
|
||||
var dialog = that.entity.get_dialog('consume');
|
||||
dialog.open(that.container);
|
||||
}
|
||||
});
|
||||
button.replaceWith(that.consume_button);
|
||||
}).appendTo(that.consume_buttons);
|
||||
|
||||
button = $('input[name=import]', that.entity_header.buttons);
|
||||
that.import_button = IPA.action_button({
|
||||
label: 'Import',
|
||||
icon: 'ui-icon-plus',
|
||||
@ -343,8 +308,15 @@ IPA.entitle.search_facet = function(spec) {
|
||||
var dialog = that.entity.get_dialog('import');
|
||||
dialog.open(that.container);
|
||||
}
|
||||
});
|
||||
button.replaceWith(that.import_button);
|
||||
}).appendTo(that.consume_buttons);
|
||||
};
|
||||
|
||||
that.show = function() {
|
||||
that.facet_show();
|
||||
|
||||
that.entity.header.set_pkey(null);
|
||||
that.entity.header.back_link.css('visibility', 'hidden');
|
||||
that.entity.header.facet_tabs.css('visibility', 'hidden');
|
||||
};
|
||||
|
||||
that.refresh = function() {
|
||||
|
@ -30,16 +30,12 @@ IPA.facet = function (spec) {
|
||||
spec = spec || {};
|
||||
|
||||
var that = {};
|
||||
|
||||
that.display_class = spec.display_class || 'entity-facet';
|
||||
that.name = spec.name;
|
||||
that.label = spec.label;
|
||||
that._entity_name = spec.entity_name;
|
||||
|
||||
that.init = spec.init || init;
|
||||
that.create_content = spec.create_content || create_content;
|
||||
that.setup = spec.setup || setup;
|
||||
that.load = spec.load || load;
|
||||
|
||||
that.dialogs = [];
|
||||
that.dialogs_by_name = {};
|
||||
|
||||
@ -63,29 +59,67 @@ IPA.facet = function (spec) {
|
||||
return that;
|
||||
};
|
||||
|
||||
function init() {
|
||||
|
||||
that.entity = IPA.get_entity(that.entity_name);
|
||||
that.init = function() {
|
||||
|
||||
for (var i=0; i<that.dialogs.length; i++){
|
||||
var dialog = that.dialogs[i];
|
||||
dialog.entity_name = that._entity_name;
|
||||
dialog.init();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function create_content(container) {
|
||||
}
|
||||
that.create = function(container) {
|
||||
|
||||
function setup(container) {
|
||||
that.container = container;
|
||||
that.entity_header.facet_tabs.css('visibility','visible');
|
||||
$('#back_to_search', that.entity_header.search_bar).
|
||||
css('display','inline');
|
||||
}
|
||||
|
||||
function load() {
|
||||
}
|
||||
that.header = $('<div/>', {
|
||||
'class': 'facet-header'
|
||||
}).appendTo(container);
|
||||
that.create_header(that.header);
|
||||
|
||||
that.content = $('<div/>', {
|
||||
'class': 'facet-content'
|
||||
}).appendTo(container);
|
||||
that.create_content(that.content);
|
||||
};
|
||||
|
||||
that.create_header = function(container) {
|
||||
|
||||
that.title = $('<div/>', {
|
||||
'class': 'facet-title'
|
||||
}).appendTo(container);
|
||||
|
||||
$('<h1/>').append(IPA.create_network_spinner()).appendTo(that.title);
|
||||
|
||||
that.set_title(container, that.label);
|
||||
|
||||
that.controls = $('<div/>', {
|
||||
'class': 'facet-controls'
|
||||
}).appendTo(container);
|
||||
};
|
||||
|
||||
that.create_content = function(container) {
|
||||
};
|
||||
|
||||
that.set_title = function(container, title) {
|
||||
var element = $('h1', that.title);
|
||||
element.html(title);
|
||||
};
|
||||
|
||||
that.setup = function(container) {
|
||||
that.container = container;
|
||||
};
|
||||
|
||||
that.show = function() {
|
||||
that.container.css('display', 'inline');
|
||||
};
|
||||
|
||||
that.hide = function() {
|
||||
that.container.css('display', 'none');
|
||||
};
|
||||
|
||||
that.load = function() {
|
||||
};
|
||||
|
||||
that.is_dirty = function (){
|
||||
return false;
|
||||
@ -97,12 +131,77 @@ IPA.facet = function (spec) {
|
||||
|
||||
// methods that should be invoked by subclasses
|
||||
that.facet_init = that.init;
|
||||
that.facet_create_header = that.create_header;
|
||||
that.facet_create_content = that.create_content;
|
||||
that.facet_setup = that.setup;
|
||||
that.facet_show = that.show;
|
||||
that.facet_hide = that.hide;
|
||||
|
||||
return that;
|
||||
};
|
||||
|
||||
IPA.table_facet = function(spec) {
|
||||
|
||||
spec = spec || {};
|
||||
|
||||
var that = IPA.facet(spec);
|
||||
|
||||
that.columns = [];
|
||||
that.columns_by_name = {};
|
||||
|
||||
that.__defineGetter__('entity_name', function() {
|
||||
return that._entity_name;
|
||||
});
|
||||
|
||||
that.__defineSetter__('entity_name', function(entity_name) {
|
||||
that._entity_name = entity_name;
|
||||
|
||||
for (var i=0; i<that.columns.length; i++) {
|
||||
that.columns[i].entity_name = entity_name;
|
||||
}
|
||||
});
|
||||
|
||||
that.get_columns = function() {
|
||||
return that.columns;
|
||||
};
|
||||
|
||||
that.get_column = function(name) {
|
||||
return that.columns_by_name[name];
|
||||
};
|
||||
|
||||
that.add_column = function(column) {
|
||||
column.entity_name = that.entity_name;
|
||||
that.columns.push(column);
|
||||
that.columns_by_name[column.name] = column;
|
||||
};
|
||||
|
||||
that.create_column = function(spec) {
|
||||
var column = IPA.column(spec);
|
||||
that.add_column(column);
|
||||
return column;
|
||||
};
|
||||
|
||||
that.column = function(spec){
|
||||
that.create_column(spec);
|
||||
return that;
|
||||
};
|
||||
|
||||
var columns = spec.columns || [];
|
||||
for (var i=0; i<columns.length; i++) {
|
||||
var column_spec = columns[i];
|
||||
var column;
|
||||
|
||||
if (column_spec instanceof Object) {
|
||||
var factory = column_spec.factory || IPA.column;
|
||||
column = factory(column_spec);
|
||||
} else {
|
||||
column = IPA.column({ name: column_spec });
|
||||
}
|
||||
that.add_column(column);
|
||||
}
|
||||
|
||||
return that;
|
||||
};
|
||||
|
||||
IPA.fetch_facet_group = function (name,attribute_member){
|
||||
var relationships = IPA.metadata.objects[name].relationships;
|
||||
@ -124,7 +223,7 @@ IPA.entity = function (spec) {
|
||||
that.name = spec.name;
|
||||
that.label = spec.label || spec.metadata.label || spec.name;
|
||||
|
||||
that.setup = spec.setup || IPA.entity_setup;
|
||||
that.header = spec.header || IPA.entity_header({entity: that});
|
||||
|
||||
that.dialogs = [];
|
||||
that.dialogs_by_name = {};
|
||||
@ -199,10 +298,6 @@ IPA.entity = function (spec) {
|
||||
return that;
|
||||
};
|
||||
|
||||
that.facet = function(facet) {
|
||||
return that.add_facet(facet);
|
||||
};
|
||||
|
||||
that.create_association_facet = function(attribute_member, other_entity, label, facet_group) {
|
||||
|
||||
var association_name = attribute_member+'_'+other_entity;
|
||||
@ -263,17 +358,68 @@ IPA.entity = function (spec) {
|
||||
|
||||
for (var i=0; i<that.facets.length; i++) {
|
||||
var facet = that.facets[i];
|
||||
facet.entity = that;
|
||||
facet.init();
|
||||
}
|
||||
init_dialogs();
|
||||
};
|
||||
|
||||
that.create = function(container) {
|
||||
var entity_header = $('<div/>', {
|
||||
'class': 'entity-header'
|
||||
}).appendTo(container);
|
||||
that.header.create(entity_header);
|
||||
|
||||
that.content = $('<div/>', {
|
||||
'class': 'entity-content'
|
||||
}).appendTo(container);
|
||||
};
|
||||
|
||||
that.setup = function(container) {
|
||||
|
||||
var prev_facet = that.facet;
|
||||
|
||||
IPA.current_entity = that;
|
||||
var facet_name = IPA.current_facet(that);
|
||||
|
||||
that.facet = that.get_facet(facet_name);
|
||||
if (!that.facet) return;
|
||||
|
||||
if (IPA.entity_name == that.name) {
|
||||
if (that.facet_name == that.facet.name) {
|
||||
if (that.facet.new_key && (!that.facet.new_key())) return;
|
||||
} else {
|
||||
that.facet_name = that.facet.name;
|
||||
}
|
||||
} else {
|
||||
IPA.entity_name = that.name;
|
||||
}
|
||||
|
||||
if (prev_facet) {
|
||||
prev_facet.hide();
|
||||
}
|
||||
|
||||
var facet_container = $('.facet[name="'+that.facet.name+'"]', that.content);
|
||||
if (!facet_container.length) {
|
||||
facet_container = $('<div/>', {
|
||||
name: that.facet.name,
|
||||
'class': 'facet'
|
||||
}).appendTo(that.content);
|
||||
|
||||
that.facet.create(facet_container);
|
||||
that.facet.setup(facet_container);
|
||||
}
|
||||
|
||||
that.facet.show();
|
||||
that.header.select_tab();
|
||||
that.facet.refresh();
|
||||
};
|
||||
|
||||
that.entity_init = that.init;
|
||||
|
||||
return that;
|
||||
};
|
||||
|
||||
|
||||
IPA.current_facet = function (entity){
|
||||
var facet_name = $.bbq.getState(entity.name + '-facet', true);
|
||||
if (!facet_name && entity.facets.length) {
|
||||
@ -282,38 +428,6 @@ IPA.current_facet = function (entity){
|
||||
return facet_name;
|
||||
};
|
||||
|
||||
IPA.entity_setup = function(container) {
|
||||
|
||||
var entity = this;
|
||||
|
||||
IPA.current_entity = this;
|
||||
var facet_name = IPA.current_facet(entity);
|
||||
|
||||
var facet = entity.get_facet(facet_name);
|
||||
if (!facet) return;
|
||||
|
||||
if (IPA.entity_name == entity.name) {
|
||||
if (entity.facet_name == facet.name) {
|
||||
if (facet.new_key && (!facet.new_key())) return;
|
||||
} else {
|
||||
entity.facet_name = facet.name;
|
||||
}
|
||||
} else {
|
||||
IPA.entity_name = entity.name;
|
||||
}
|
||||
|
||||
if (!entity.header){
|
||||
entity.header = IPA.entity_header({entity:entity,container:container});
|
||||
}
|
||||
facet.entity_header = entity.header;
|
||||
|
||||
entity.header.reset();
|
||||
facet.create_content(facet.entity_header.content);
|
||||
facet.setup(facet.entity_header.content);
|
||||
entity.header.select_tab();
|
||||
facet.refresh();
|
||||
};
|
||||
|
||||
IPA.nested_tab_labels = {};
|
||||
|
||||
IPA.get_nested_tab_label = function(entity_name){
|
||||
@ -383,177 +497,140 @@ IPA.nested_tabs = function(entity_name) {
|
||||
IPA.selected_icon = '<span class="ipa-icon">▶</span>';
|
||||
IPA.back_icon = '<span class="ipa-icon">◀</span>';
|
||||
|
||||
IPA.entity_header = function(spec) {
|
||||
|
||||
IPA.entity_header = function(spec){
|
||||
var entity = spec.entity;
|
||||
var container = spec.container;
|
||||
spec = spec || {};
|
||||
|
||||
var that = {};
|
||||
that.entity = entity;
|
||||
that.entity = spec.entity;
|
||||
|
||||
function pkey(){
|
||||
that.pkey_field = $("<input type='hidden' id='pkey' />");
|
||||
return that.pkey_field;
|
||||
}
|
||||
|
||||
function select_tab(){
|
||||
that.select_tab = function() {
|
||||
$(that.facet_tabs).find('a').removeClass('selected');
|
||||
var facet_name = $.bbq.getState(entity.name + '-facet', true);
|
||||
var facet_name = $.bbq.getState(that.entity.name + '-facet', true);
|
||||
|
||||
if (!facet_name) return;
|
||||
|
||||
if (facet_name === 'default'){
|
||||
if (!facet_name || facet_name === 'default') {
|
||||
that.facet_tabs.find('a:first').addClass('selected');
|
||||
}else{
|
||||
} else {
|
||||
that.facet_tabs.find('a#' + facet_name ).addClass('selected');
|
||||
}
|
||||
};
|
||||
|
||||
}
|
||||
that.select_tab = select_tab;
|
||||
that.set_pkey = function(value) {
|
||||
|
||||
function set_pkey(val){
|
||||
that.pkey_field.val(val);
|
||||
that.title.empty();
|
||||
var title = $('<h3/>',{ text: entity.metadata.label+": "});
|
||||
title.append ($('<span/>',{text:val}));
|
||||
that.title.append(title);
|
||||
}
|
||||
that.set_pkey = set_pkey;
|
||||
if (value) {
|
||||
var span = $('.entity-pkey', that.pkey);
|
||||
span.text(value);
|
||||
that.pkey.css('display', 'inline');
|
||||
|
||||
function title(){
|
||||
that.title =
|
||||
$("<div/>",
|
||||
{
|
||||
'class':'entity-title'
|
||||
});
|
||||
|
||||
var title = $('<h3/>',{ text: entity.metadata.label});
|
||||
that.title.append(title);
|
||||
|
||||
return that.title;
|
||||
}
|
||||
|
||||
function buttons(){
|
||||
that.buttons = $("<span class='action-controls' />");
|
||||
return that.buttons;
|
||||
|
||||
}
|
||||
function search_bar(){
|
||||
that.search_bar =
|
||||
$("<span class='entity-search'/>");
|
||||
|
||||
if (entity.facets_by_name.search){
|
||||
that.search_bar.prepend(
|
||||
$('<span />',{
|
||||
id:'back_to_search',
|
||||
"class":"input_link",
|
||||
click: function(){
|
||||
if($(this).hasClass('entity-facet-disabled')){
|
||||
return false;
|
||||
}
|
||||
|
||||
IPA.nav.show_page(entity.name, 'search');
|
||||
$(that.facet_tabs).find('a').removeClass('selected');
|
||||
return false;
|
||||
|
||||
}
|
||||
}).
|
||||
append(IPA.back_icon + ' ' +
|
||||
IPA.messages.buttons.back_to_list+' '));
|
||||
} else {
|
||||
that.pkey.css('display', 'none');
|
||||
}
|
||||
};
|
||||
|
||||
return that.search_bar;
|
||||
}
|
||||
that.facet_link = function(container, other_facet) {
|
||||
|
||||
function facet_link(other_facet){
|
||||
var entity_name = that.entity.name;
|
||||
var other_facet_name = other_facet.name;
|
||||
var li = $('<li/>', {
|
||||
title: other_facet.name,
|
||||
html: $('<a />',{
|
||||
text: other_facet.label,
|
||||
id: other_facet_name
|
||||
}),
|
||||
click: function(entity_name, other_facet_name) {
|
||||
return function() {
|
||||
if($(this).hasClass('entity-facet-disabled')){
|
||||
return false;
|
||||
}
|
||||
var this_pkey = that.pkey_field.val();
|
||||
IPA.nav.show_page(
|
||||
entity_name, other_facet_name,
|
||||
this_pkey);
|
||||
$(that.facet_tabs).find('a').removeClass('selected');
|
||||
$(this).find('a').addClass('selected');
|
||||
|
||||
click: function() {
|
||||
if (li.hasClass('entity-facet-disabled')) {
|
||||
return false;
|
||||
};
|
||||
}(entity_name, other_facet_name)
|
||||
});
|
||||
return li;
|
||||
}
|
||||
}
|
||||
|
||||
var pkey = $.bbq.getState(that.entity.name+'-pkey', true);
|
||||
|
||||
function facet_group(label){
|
||||
var facets= entity.facet_groups[label];
|
||||
if (facets){
|
||||
that.facet_tabs.append(tab_section(label, facets));
|
||||
IPA.nav.show_page(that.entity.name, other_facet.name, pkey);
|
||||
$('a', that.facet_tabs).removeClass('selected');
|
||||
$('a', li).addClass('selected');
|
||||
|
||||
return false;
|
||||
}
|
||||
}).appendTo(container);
|
||||
|
||||
$('<a/>', {
|
||||
text: other_facet.label,
|
||||
id: other_facet.name
|
||||
}).appendTo(li);
|
||||
};
|
||||
|
||||
that.facet_group = function(container, label) {
|
||||
var facets = that.entity.facet_groups[label];
|
||||
if (facets) {
|
||||
that.tab_section(container, label, facets);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function tab_section(label, facets){
|
||||
var tab_section = $("<span class='entity-tabs-section'/>").
|
||||
append("<label>"+label+"</label>");
|
||||
that.tab_section = function(container, label, facets) {
|
||||
|
||||
var ul = $("<ul class='entity-tabs'/>").appendTo(tab_section);
|
||||
var section = $('<span/>', {
|
||||
'class': 'facet-tab-group'
|
||||
}).appendTo(container);
|
||||
|
||||
var i;
|
||||
for (i = 0; i < facets.length; i += 1){
|
||||
$('<label/>', {
|
||||
text: label
|
||||
}).appendTo(section);
|
||||
|
||||
var ul = $('<ul/>', {
|
||||
'class': 'facet-tab'
|
||||
}).appendTo(section);
|
||||
|
||||
for (var i=0; i<facets.length; i++) {
|
||||
var other_facet = facets[i];
|
||||
ul.append(facet_link(other_facet));
|
||||
that.facet_link(ul, other_facet);
|
||||
}
|
||||
return tab_section;
|
||||
}
|
||||
};
|
||||
|
||||
function facet_tabs(){
|
||||
that.facet_tabs = $("<div class='entity-tabs'/>");
|
||||
that.create = function(container) {
|
||||
|
||||
facet_group("Member");
|
||||
that.title = $('<div/>', {
|
||||
'class': 'entity-title'
|
||||
}).appendTo(container);
|
||||
|
||||
if (entity.facets_by_name.details){
|
||||
var title_text = $('<h3/>', {
|
||||
text: that.entity.metadata.label
|
||||
}).appendTo(that.title);
|
||||
|
||||
that.pkey = $('<span/>').appendTo(title_text);
|
||||
|
||||
that.pkey.append(': ');
|
||||
that.pkey.append($('<span/>', {
|
||||
'class': 'entity-pkey'
|
||||
}));
|
||||
|
||||
var search_bar = $('<span/>', {
|
||||
'class': 'entity-search'
|
||||
}).appendTo(container);
|
||||
|
||||
that.back_link = $('<span/>', {
|
||||
'class': 'back-link',
|
||||
click: function() {
|
||||
if ($(this).hasClass('entity-facet-disabled')) {
|
||||
return false;
|
||||
}
|
||||
|
||||
IPA.nav.show_page(that.entity.name, 'search');
|
||||
$('a', that.facet_tabs).removeClass('selected');
|
||||
return false;
|
||||
}
|
||||
}).appendTo(search_bar);
|
||||
|
||||
that.back_link.append(IPA.back_icon);
|
||||
that.back_link.append(' ');
|
||||
that.back_link.append(IPA.messages.buttons.back_to_list);
|
||||
|
||||
that.facet_tabs = $('<div/>', {
|
||||
'class': 'entity-tabs'
|
||||
}).appendTo(container);
|
||||
|
||||
that.facet_group(that.facet_tabs, "Member");
|
||||
|
||||
if (that.entity.facets_by_name.details) {
|
||||
that.facet_tabs.append(
|
||||
tab_section('Settings',[entity.facets_by_name.details]));
|
||||
that.tab_section(that.facet_tabs, 'Settings', [that.entity.facets_by_name.details]));
|
||||
}
|
||||
facet_group("Member Of");
|
||||
facet_group("Managed by");
|
||||
|
||||
return that.facet_tabs;
|
||||
}
|
||||
function content(){
|
||||
that.content = $("<div class='content'/>"); return that.content;
|
||||
}
|
||||
|
||||
function entity_container() {
|
||||
that.entity_container =
|
||||
$('<div/>').
|
||||
append(facet_tabs()).
|
||||
append(content());
|
||||
return that.entity_container;
|
||||
}
|
||||
|
||||
function reset(){
|
||||
that.buttons.empty();
|
||||
that.content.empty();
|
||||
}
|
||||
that.reset = reset;
|
||||
|
||||
that.header = $("<div class='entity-header'/>").
|
||||
append(title(entity)).
|
||||
append(buttons()).
|
||||
append(pkey()).
|
||||
append(search_bar()).
|
||||
append(entity_container());
|
||||
container.append(that.header);
|
||||
that.facet_group(that.facet_tabs, "Member Of");
|
||||
that.facet_group(that.facet_tabs, "Managed By");
|
||||
};
|
||||
|
||||
return that;
|
||||
};
|
||||
@ -642,7 +719,7 @@ IPA.entity_builder = function(){
|
||||
spec.sections = null;
|
||||
spec.entity_name = entity.name;
|
||||
facet =IPA.details_facet(spec);
|
||||
entity.facet(facet);
|
||||
entity.add_facet(facet);
|
||||
|
||||
var i;
|
||||
for ( i =0; i < sections.length; i += 1){
|
||||
@ -655,7 +732,7 @@ IPA.entity_builder = function(){
|
||||
that.facet = function(spec) {
|
||||
spec.entity_name = entity.name;
|
||||
facet = spec.factory(spec);
|
||||
entity.facet(facet);
|
||||
entity.add_facet(facet);
|
||||
return that;
|
||||
};
|
||||
|
||||
@ -665,14 +742,14 @@ IPA.entity_builder = function(){
|
||||
search_all: spec.search_all || false,
|
||||
columns: spec.columns
|
||||
});
|
||||
entity.facet(facet);
|
||||
entity.add_facet(facet);
|
||||
return that;
|
||||
};
|
||||
|
||||
|
||||
that.association_facet = function(spec){
|
||||
spec.entity_name = entity.name;
|
||||
entity.facet(IPA.association_facet(spec));
|
||||
entity.add_facet(IPA.association_facet(spec));
|
||||
return that;
|
||||
};
|
||||
|
||||
|
@ -22,8 +22,9 @@ body{
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.network-activity-indicator{
|
||||
display:none;
|
||||
.network-activity-indicator {
|
||||
visibility: hidden;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.center-container {
|
||||
@ -453,8 +454,7 @@ span.ui-icon-search {
|
||||
|
||||
|
||||
[title=">>"] {
|
||||
display: block;
|
||||
margin-top: 1em !important;
|
||||
margin-top: 1em !important;
|
||||
}
|
||||
|
||||
|
||||
@ -573,13 +573,17 @@ span.main-separator{
|
||||
/* Entity */
|
||||
|
||||
|
||||
.entity-container h1{
|
||||
.entity h1{
|
||||
margin: 0 0 10px;
|
||||
/*
|
||||
margin-left: 0.5em;
|
||||
margin-right: 0.5em;
|
||||
|
||||
-moz-border-radius: 0.5em 0.5em 0 0;
|
||||
-webkit-border-radius: 0.5em 0.5em 0 0;
|
||||
background: -moz-linear-gradient(center top , #EEEEEE, #DFDFDF) repeat scroll 0 0 transparent;
|
||||
background: -webkit-gradient(linear, left top, left bottom, from(#EEEEEE), to(#DFDFDF));
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@ -595,13 +599,6 @@ a.action-button-disabled {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.content {
|
||||
font-size: 10px;
|
||||
margin-top: 1.4em;
|
||||
float: left;
|
||||
min-width: 70em;
|
||||
}
|
||||
|
||||
|
||||
/* Search */
|
||||
|
||||
@ -728,17 +725,17 @@ dl.modal dd {
|
||||
padding-bottom: 0;
|
||||
margin-left: 0.8em;
|
||||
}
|
||||
|
||||
/*
|
||||
#dns-record-resource-filter {
|
||||
padding: 0em 1em;
|
||||
padding: 0 1em;
|
||||
margin: 0 1em;
|
||||
}
|
||||
|
||||
#dns-record-type-filter {
|
||||
margin: 0 1em 0 0.5em;
|
||||
}
|
||||
|
||||
.ui-widget-content {
|
||||
*/
|
||||
.ui-widget-content, #content {
|
||||
border:0;
|
||||
}
|
||||
|
||||
@ -786,8 +783,8 @@ table.scrollable tbody {
|
||||
.adder-dialog-buttons {
|
||||
position: absolute;
|
||||
top: 7.5em;
|
||||
left: 24.4em;
|
||||
right: 25;
|
||||
left: 23em;
|
||||
right: 23em;
|
||||
bottom: 0;
|
||||
text-align: center;
|
||||
}
|
||||
@ -818,18 +815,17 @@ table.scrollable tbody {
|
||||
padding-right: 1.5em;
|
||||
}
|
||||
|
||||
div.entity-header {
|
||||
padding: 0px 20px 10px;
|
||||
.entity-header {
|
||||
padding: 0 20px 10px;
|
||||
}
|
||||
|
||||
|
||||
.entity-header h3{
|
||||
.entity-header .entity-title {
|
||||
text-transform: uppercase;
|
||||
color:gray;
|
||||
padding-right:5em;
|
||||
}
|
||||
|
||||
.entity-header h3 span{
|
||||
.entity-header .entity-title .entity-pkey {
|
||||
color:black;
|
||||
}
|
||||
|
||||
@ -838,15 +834,24 @@ div.entity-header {
|
||||
}
|
||||
|
||||
.entity-tabs {
|
||||
list-style-type: none;
|
||||
#margin: 30px 0 0 0;
|
||||
padding: 1em 0 0.3em 0;
|
||||
height: 3em;
|
||||
}
|
||||
.entity-tabs li {
|
||||
|
||||
.back-link {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.facet-tab {
|
||||
list-style-type: none;
|
||||
margin: 0;
|
||||
padding: 1em 0 0.3em 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.facet-tab li {
|
||||
display: inline;
|
||||
}
|
||||
.entity-tabs li a {
|
||||
|
||||
.facet-tab li a {
|
||||
color: #42454a;
|
||||
background-color: #dedbde;
|
||||
border: 1px solid #c9c3ba;
|
||||
@ -855,40 +860,55 @@ div.entity-header {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.entity-tabs li a:hover {
|
||||
.facet-tab li a:hover {
|
||||
background-color: #f1f0ee;
|
||||
}
|
||||
.entity-tabs li a.selected {
|
||||
.facet-tab li a.selected {
|
||||
color: #000;
|
||||
background-color: #f1f0ee;
|
||||
font-weight: bold;
|
||||
padding: 0.7em 0.3em 0.38em 0.3em;
|
||||
}
|
||||
|
||||
.entity-tabs-section {
|
||||
.facet-tab-group {
|
||||
float: left;
|
||||
height: 3em;
|
||||
/* height: 3em; */
|
||||
display:inline;
|
||||
margin-right:1em;
|
||||
}
|
||||
|
||||
|
||||
ul.entity-tabs li.settings {
|
||||
.facet-tab li.settings {
|
||||
margin-left:1em; margin-right:1em;
|
||||
}
|
||||
|
||||
div.content {
|
||||
padding-top: 1em;
|
||||
margin-top: 1em;
|
||||
width: 100%;
|
||||
.entity-content {
|
||||
clear: both;
|
||||
font-size: 10px;
|
||||
padding: 0 20px 10px;
|
||||
}
|
||||
|
||||
div.content div.content-buttons {
|
||||
.entity-content div.content-buttons {
|
||||
float: right;
|
||||
margin-right: 1.5em;
|
||||
|
||||
}
|
||||
|
||||
div.content div.content-buttons img {
|
||||
.entity-content div.content-buttons img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.facet-header {
|
||||
padding: 10px 10px 10px;
|
||||
|
||||
border-color: #C9C3BA;
|
||||
border-style: solid;
|
||||
border-width: 1px;
|
||||
|
||||
background: -moz-linear-gradient(top, #eeeeee, #dfdfdf);
|
||||
background: -webkit-gradient(linear, left top, left bottom, from(#eeeeee), to(#dfdfdf));
|
||||
}
|
||||
|
||||
.facet-content {
|
||||
margin: 10px 0 0;
|
||||
}
|
@ -126,11 +126,11 @@ var IPA = ( function () {
|
||||
batch.execute();
|
||||
};
|
||||
|
||||
that.get_entities = function () {
|
||||
that.get_entities = function() {
|
||||
return that.entities;
|
||||
};
|
||||
|
||||
that.get_entity = function (name) {
|
||||
that.get_entity = function(name) {
|
||||
return that.entities_by_name[name];
|
||||
};
|
||||
|
||||
@ -139,6 +139,17 @@ var IPA = ( function () {
|
||||
that.entities_by_name[entity.name] = entity;
|
||||
};
|
||||
|
||||
that.remove_entity = function(name) {
|
||||
for (var i=0; i<that.entities.length; i++) {
|
||||
var entity = that.entities[i];
|
||||
if (name == entity.name) {
|
||||
that.entities.splice(i, 1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
delete that.entities_by_name[entity.name];
|
||||
};
|
||||
|
||||
that.start_entities = function() {
|
||||
var factory;
|
||||
var name;
|
||||
@ -187,14 +198,14 @@ var IPA = ( function () {
|
||||
|
||||
that.display_activity_icon = function() {
|
||||
that.network_call_count++;
|
||||
$('.network-activity-indicator').css('display','inline');
|
||||
$('.network-activity-indicator').css('visibility', 'visible');
|
||||
};
|
||||
|
||||
that.hide_activity_icon = function() {
|
||||
that.network_call_count--;
|
||||
|
||||
if (0 === that.network_call_count) {
|
||||
$('.network-activity-indicator').css('display','none');
|
||||
$('.network-activity-indicator').css('visibility', 'hidden');
|
||||
}
|
||||
};
|
||||
|
||||
@ -316,6 +327,7 @@ IPA.command = function(spec) {
|
||||
}
|
||||
|
||||
if (xhr.status === 401) {
|
||||
error_thrown = {}; // error_thrown is string
|
||||
error_thrown.name = 'Kerberos ticket no longer valid.';
|
||||
if (IPA.messages && IPA.messages.ajax) {
|
||||
error_thrown.message = IPA.messages.ajax["401"];
|
||||
|
@ -136,7 +136,7 @@ IPA.navigation = function(spec) {
|
||||
for (var i=0; i<tabs.length; i++) {
|
||||
var tab = tabs[i];
|
||||
var tab_id = parent_id+'-'+i;
|
||||
var label = tab.name;
|
||||
|
||||
if (tab.entity) {
|
||||
var entity = IPA.get_entity(tab.entity);
|
||||
if (!entity){
|
||||
@ -144,17 +144,17 @@ IPA.navigation = function(spec) {
|
||||
i--;
|
||||
continue;
|
||||
}
|
||||
label = entity.label;
|
||||
tab.entity = entity;
|
||||
}
|
||||
if (tab.label){
|
||||
label = tab.label;
|
||||
|
||||
if (!tab.label) {
|
||||
tab.label = entity.label;
|
||||
}
|
||||
|
||||
$('<li/>').append($('<a/>', {
|
||||
href: '#'+tab_id,
|
||||
title: label,
|
||||
html: label
|
||||
title: tab.label,
|
||||
html: tab.label
|
||||
})).appendTo(ul);
|
||||
|
||||
tab.container = $('<div/>', {
|
||||
@ -164,19 +164,12 @@ IPA.navigation = function(spec) {
|
||||
|
||||
if (tab.children && tab.children.length) {
|
||||
that._create(tab.children, tab.container, depth+1);
|
||||
|
||||
} else if (tab.entity) {
|
||||
tab.content = $('<div/>', {
|
||||
name: tab.name,
|
||||
title: label,
|
||||
'class': 'entity-container'
|
||||
}).appendTo(that.content);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
that.update = function() {
|
||||
$('.entity-container', that.content).css('display', 'none');
|
||||
$('.entity', that.content).css('display', 'none');
|
||||
that._update(that.tabs, that.container, 1);
|
||||
};
|
||||
|
||||
@ -197,7 +190,17 @@ IPA.navigation = function(spec) {
|
||||
that._update(tab.children, tab.container, depth+1);
|
||||
|
||||
} else if (tab.entity) {
|
||||
$('.entity-container[name="'+tab.entity.name+'"]', that.content).css('display', 'inline');
|
||||
var entity_container = $('.entity[name="'+tab.entity.name+'"]', that.content);
|
||||
if (!entity_container.length) {
|
||||
tab.content = $('<div/>', {
|
||||
name: tab.name,
|
||||
title: tab.label,
|
||||
'class': 'entity'
|
||||
}).appendTo(that.content);
|
||||
tab.entity.create(tab.content);
|
||||
}
|
||||
|
||||
entity_container.css('display', 'inline');
|
||||
tab.entity.setup(tab.content);
|
||||
}
|
||||
};
|
||||
|
@ -24,136 +24,19 @@
|
||||
|
||||
/* REQUIRES: ipa.js */
|
||||
|
||||
IPA.search_widget = function (spec) {
|
||||
|
||||
spec = spec || {};
|
||||
|
||||
var that = IPA.table_widget(spec);
|
||||
|
||||
that.entity_name = spec.entity_name;
|
||||
that.search_all = spec.search_all || false;
|
||||
|
||||
that.create = function(container) {
|
||||
|
||||
var search_controls = $('<div/>', {
|
||||
'class': 'search-controls'
|
||||
}).appendTo(container);
|
||||
|
||||
var search_filter = $('<span/>', {
|
||||
'class': 'search-filter',
|
||||
'name': 'search-filter'
|
||||
}).appendTo(search_controls);
|
||||
|
||||
search_controls.append(IPA.create_network_spinner());
|
||||
|
||||
that.filter = $('<input/>', {
|
||||
'type': 'text',
|
||||
'name': 'search-' + that.entity_name + '-filter'
|
||||
}).appendTo(search_filter);
|
||||
|
||||
$('<input/>', {
|
||||
'type': 'button',
|
||||
'name': 'find',
|
||||
'value': IPA.messages.buttons.find
|
||||
}).appendTo(search_filter);
|
||||
|
||||
$('<div/>', {
|
||||
'class': 'search-results'
|
||||
}).appendTo(container);
|
||||
|
||||
that.table_create(container);
|
||||
};
|
||||
|
||||
that.setup = function(container) {
|
||||
|
||||
that.table_setup(container);
|
||||
|
||||
var search_filter = $('span[name=search-filter]', that.container);
|
||||
|
||||
$('input[type=text]',search_filter).keypress(
|
||||
function(e) {
|
||||
/* if the key pressed is the enter key */
|
||||
if (e.which == 13) {
|
||||
that.find();
|
||||
}
|
||||
});
|
||||
var button = $('input[name=find]', search_filter);
|
||||
that.find_button = IPA.button({
|
||||
'label': IPA.messages.buttons.find,
|
||||
'icon': 'ui-icon-search',
|
||||
'click': function() {
|
||||
that.find();
|
||||
}
|
||||
});
|
||||
button.replaceWith(that.find_button);
|
||||
|
||||
var filter = $.bbq.getState(that.entity_name + '-filter', true) || '';
|
||||
that.filter.val(filter);
|
||||
};
|
||||
|
||||
that.find = function() {
|
||||
var filter = that.filter.val();
|
||||
var state = {};
|
||||
state[that.entity_name + '-filter'] = filter;
|
||||
IPA.nav.push_state(state);
|
||||
};
|
||||
|
||||
return that;
|
||||
};
|
||||
|
||||
IPA.search_facet = function(spec) {
|
||||
|
||||
spec = spec || {};
|
||||
|
||||
spec.name = spec.name || 'search';
|
||||
spec.label = spec.label || IPA.messages.facets.search;
|
||||
spec.label = spec.label || IPA.messages.facets.search;
|
||||
|
||||
spec.display_class = 'search-facet';
|
||||
|
||||
var that = IPA.facet(spec);
|
||||
var that = IPA.table_facet(spec);
|
||||
|
||||
that.entity_name = spec.entity_name;
|
||||
that.columns = [];
|
||||
that.columns_by_name = {};
|
||||
that.search_all = spec.search_all || false;
|
||||
|
||||
that.__defineGetter__('entity_name', function() {
|
||||
return that._entity_name;
|
||||
});
|
||||
|
||||
that.__defineSetter__('entity_name', function(entity_name) {
|
||||
that._entity_name = entity_name;
|
||||
|
||||
for (var i=0; i<that.columns.length; i++) {
|
||||
that.columns[i].entity_name = entity_name;
|
||||
}
|
||||
});
|
||||
|
||||
that.get_columns = function() {
|
||||
return that.columns;
|
||||
};
|
||||
|
||||
that.get_column = function(name) {
|
||||
return that.columns_by_name[name];
|
||||
};
|
||||
|
||||
that.add_column = function(column) {
|
||||
column.entity_name = that.entity_name;
|
||||
that.columns.push(column);
|
||||
that.columns_by_name[column.name] = column;
|
||||
};
|
||||
|
||||
that.create_column = function(spec) {
|
||||
var column = IPA.column(spec);
|
||||
that.add_column(column);
|
||||
return column;
|
||||
};
|
||||
|
||||
that.column = function(spec){
|
||||
that.create_column(spec);
|
||||
return that;
|
||||
};
|
||||
|
||||
that.setup_column = function(column) {
|
||||
column.setup = function(container, record) {
|
||||
container.empty();
|
||||
@ -178,7 +61,7 @@ IPA.search_facet = function(spec) {
|
||||
|
||||
that.facet_init();
|
||||
|
||||
that.table = IPA.search_widget({
|
||||
that.table = IPA.table_widget({
|
||||
id: that.entity_name+'-search',
|
||||
name: 'search',
|
||||
label: IPA.metadata.objects[that.entity_name].label,
|
||||
@ -211,85 +94,84 @@ IPA.search_facet = function(spec) {
|
||||
|
||||
};
|
||||
|
||||
that.create_header = function(container) {
|
||||
|
||||
that.facet_create_header(container);
|
||||
|
||||
that.filter = $('<input/>', {
|
||||
type: 'text',
|
||||
name: 'filter'
|
||||
}).appendTo(that.controls);
|
||||
|
||||
that.filter.keypress(function(e) {
|
||||
/* if the key pressed is the enter key */
|
||||
if (e.which == 13) {
|
||||
that.find();
|
||||
}
|
||||
});
|
||||
|
||||
that.find_button = IPA.button({
|
||||
label: IPA.messages.buttons.find,
|
||||
icon: 'ui-icon-search',
|
||||
click: function() {
|
||||
that.find();
|
||||
return false;
|
||||
}
|
||||
}).appendTo(that.controls);
|
||||
|
||||
that.controls.append(IPA.create_network_spinner());
|
||||
|
||||
that.remove_button = IPA.action_button({
|
||||
label: IPA.messages.buttons.remove,
|
||||
icon: 'ui-icon-trash',
|
||||
'class': 'input_link_disabled',
|
||||
click: function() {
|
||||
if (that.remove_button.hasClass('input_link_disabled')) return false;
|
||||
that.remove();
|
||||
return false;
|
||||
}
|
||||
}).appendTo(that.controls);
|
||||
|
||||
that.add_button = IPA.action_button({
|
||||
label: IPA.messages.buttons.add,
|
||||
icon: 'ui-icon-plus',
|
||||
click: function() {
|
||||
that.add();
|
||||
return false;
|
||||
}
|
||||
}).appendTo(that.controls);
|
||||
};
|
||||
|
||||
that.create_content = function(container) {
|
||||
|
||||
var span = $('<span/>', { 'name': 'search' }).appendTo(container);
|
||||
|
||||
that.table.create(span);
|
||||
that.table.setup(span);
|
||||
};
|
||||
|
||||
that.setup = function(container) {
|
||||
|
||||
that.facet_setup(container);
|
||||
};
|
||||
|
||||
that.entity_header.title.empty();
|
||||
that.entity_header.title.append(
|
||||
$('<h3/>',{
|
||||
text:that.entity.metadata.label
|
||||
}));
|
||||
that.show = function() {
|
||||
that.facet_show();
|
||||
|
||||
that.entity_header.facet_tabs.css('visibility','hidden');
|
||||
$('#back_to_search', that.entity_header.search_bar).
|
||||
css('display','none');
|
||||
that.entity.header.set_pkey(null);
|
||||
that.entity.header.back_link.css('visibility', 'hidden');
|
||||
that.entity.header.facet_tabs.css('visibility', 'hidden');
|
||||
|
||||
|
||||
var buttons = that.entity_header.buttons;
|
||||
|
||||
$('<input/>', {
|
||||
'type': 'button',
|
||||
'name': 'remove',
|
||||
'value': IPA.messages.buttons.remove
|
||||
}).appendTo(buttons);
|
||||
|
||||
$('<input/>', {
|
||||
'type': 'button',
|
||||
'name': 'add',
|
||||
'value': IPA.messages.buttons.add
|
||||
}).appendTo(buttons);
|
||||
|
||||
|
||||
var span = $('span[name=search]', that.container);
|
||||
that.table.setup(span);
|
||||
|
||||
var search_buttons = that.entity_header.buttons;
|
||||
|
||||
var button = $('input[name=remove]', search_buttons);
|
||||
that.remove_button = IPA.action_button({
|
||||
'label': IPA.messages.buttons.remove,
|
||||
'icon': 'ui-icon-trash',
|
||||
'click': function() {
|
||||
if (that.remove_button.hasClass('input_link_disabled')) return;
|
||||
that.remove();
|
||||
}
|
||||
});
|
||||
button.replaceWith(that.remove_button);
|
||||
that.remove_button.addClass('input_link_disabled');
|
||||
|
||||
button = $('input[name=add]', search_buttons);
|
||||
that.add_button = IPA.action_button({
|
||||
'label': IPA.messages.buttons.add,
|
||||
'icon': 'ui-icon-plus',
|
||||
'click': function() { that.add(); }
|
||||
});
|
||||
button.replaceWith(that.add_button);
|
||||
if (that.filter) {
|
||||
var filter = $.bbq.getState(that.entity_name + '-filter', true) || '';
|
||||
that.filter.val(filter);
|
||||
}
|
||||
};
|
||||
|
||||
that.select_changed = function() {
|
||||
|
||||
var values = that.table.get_selected_values();
|
||||
|
||||
var links = $('li', that.entity_header.tabs);
|
||||
var input = $('input[id=pkey]', that.entity_header.buttons);
|
||||
|
||||
if (values.length == 1) {
|
||||
links.removeClass('entity-facet-disabled');
|
||||
input.val(values[0]);
|
||||
|
||||
} else {
|
||||
links.addClass('entity-facet-disabled');
|
||||
input.val(null);
|
||||
}
|
||||
|
||||
if (values.length === 0) {
|
||||
that.remove_button.addClass('input_link_disabled');
|
||||
|
||||
@ -354,12 +236,17 @@ IPA.search_facet = function(spec) {
|
||||
dialog.open(that.container);
|
||||
};
|
||||
|
||||
that.find = function() {
|
||||
var filter = that.filter.val();
|
||||
var state = {};
|
||||
state[that.entity_name + '-filter'] = filter;
|
||||
IPA.nav.push_state(state);
|
||||
};
|
||||
|
||||
that.refresh = function() {
|
||||
|
||||
function on_success(data, text_status, xhr) {
|
||||
|
||||
$("input id=[pkey]", that.entity_header.buttons).val(null);
|
||||
|
||||
that.table.empty();
|
||||
|
||||
var result = data.result.result;
|
||||
@ -387,12 +274,12 @@ IPA.search_facet = function(spec) {
|
||||
summary.append('<p>'+error_thrown.message+'</p>');
|
||||
}
|
||||
|
||||
that.filter = $.bbq.getState(that.entity_name + '-filter', true) || '';
|
||||
var filter = $.bbq.getState(that.entity_name + '-filter', true) || '';
|
||||
|
||||
var command = IPA.command({
|
||||
entity: that.entity_name,
|
||||
method: 'find',
|
||||
args: [that.filter],
|
||||
args: [filter],
|
||||
options: {
|
||||
all: that.search_all
|
||||
},
|
||||
@ -408,19 +295,5 @@ IPA.search_facet = function(spec) {
|
||||
that.search_facet_create_content = that.create_content;
|
||||
that.search_facet_setup = that.setup;
|
||||
|
||||
var columns = spec.columns || [];
|
||||
for (var i=0; i<columns.length; i++) {
|
||||
var column_spec = columns[i];
|
||||
var column;
|
||||
|
||||
if (column_spec instanceof Object) {
|
||||
var factory = column_spec.factory || IPA.column;
|
||||
column = factory(column_spec);
|
||||
} else {
|
||||
column = IPA.column({ name: column_spec });
|
||||
}
|
||||
that.add_column(column);
|
||||
}
|
||||
|
||||
return that;
|
||||
};
|
||||
|
@ -37,7 +37,7 @@
|
||||
"details": {
|
||||
"general": "General",
|
||||
"identity": "Identity Settings",
|
||||
"settings": "${entity} Settings",
|
||||
"settings": "${entity} ${primary_key} Settings",
|
||||
"to_top": "Back to Top"
|
||||
},
|
||||
"dialogs": {
|
||||
|
@ -9986,7 +9986,7 @@
|
||||
"details": {
|
||||
"general": "General",
|
||||
"identity": "Identity Settings",
|
||||
"settings": "${entity} Settings",
|
||||
"settings": "${entity} ${primary_key} Settings",
|
||||
"to_top": "Back to Top"
|
||||
},
|
||||
"dialogs": {
|
||||
|
@ -150,10 +150,6 @@ test("Testing details lifecycle: create, setup, load.", function(){
|
||||
load_called = true;
|
||||
}
|
||||
|
||||
var container = details_container;
|
||||
|
||||
var obj_name = 'user';
|
||||
|
||||
function test_widget(){
|
||||
var widget = IPA.widget({name: 'cn'});
|
||||
|
||||
@ -195,35 +191,38 @@ test("Testing details lifecycle: create, setup, load.", function(){
|
||||
{factory: IPA.multivalued_text_widget, name:'mobile'},
|
||||
{factory: IPA.multivalued_text_widget,
|
||||
name:'facsimiletelephonenumber'}]
|
||||
},
|
||||
}
|
||||
]}).build();
|
||||
entity.init();
|
||||
|
||||
var entity_container = $('<div/>', {
|
||||
name: 'user',
|
||||
title: 'User',
|
||||
'class': 'entity'
|
||||
}).appendTo(entities_container);
|
||||
|
||||
entity.create(entity_container);
|
||||
|
||||
var facet = entity.get_facet('details');
|
||||
facet.init();
|
||||
|
||||
var container = $('<div/>', {
|
||||
'class': 'content'
|
||||
}).appendTo(container);
|
||||
|
||||
|
||||
entity.header = IPA.entity_header({entity:entity,container:container});
|
||||
facet.entity_header = entity.header;
|
||||
entity.header.reset();
|
||||
facet.create_content(facet.entity_header.content);
|
||||
facet.setup(facet.entity_header.content);
|
||||
var facet_container = $('<div/>', {
|
||||
name: facet.name,
|
||||
'class': 'facet'
|
||||
});
|
||||
|
||||
facet.create(facet_container);
|
||||
facet.setup(facet_container);
|
||||
|
||||
facet.load(result);
|
||||
|
||||
var contact = container.find('dl#contact.entryattrs');
|
||||
var contact = facet_container.find('dl#contact.entryattrs');
|
||||
|
||||
ok(
|
||||
contact,
|
||||
'dl tag for contact is created'
|
||||
);
|
||||
|
||||
var identity = container.find('dl#identity.entryattrs');
|
||||
var identity = facet_container.find('dl#identity.entryattrs');
|
||||
|
||||
ok(
|
||||
identity,
|
||||
@ -237,7 +236,7 @@ test("Testing details lifecycle: create, setup, load.", function(){
|
||||
'Checking dt tags for identity'
|
||||
);
|
||||
|
||||
container.attr('id','user');
|
||||
facet_container.attr('id','user');
|
||||
|
||||
ok (
|
||||
setup_called,
|
||||
|
@ -61,7 +61,6 @@ test('Testing IPA.entity_set_search_definition().', function() {
|
||||
return true;
|
||||
};
|
||||
|
||||
|
||||
var entity = IPA.
|
||||
entity_builder().
|
||||
entity('user').
|
||||
@ -70,16 +69,23 @@ test('Testing IPA.entity_set_search_definition().', function() {
|
||||
build();
|
||||
entity.init();
|
||||
|
||||
var entity_container = $('<div/>', {
|
||||
name: 'user',
|
||||
title: 'User',
|
||||
'class': 'entity'
|
||||
}).appendTo(entities_container);
|
||||
|
||||
entity.create(entity_container);
|
||||
|
||||
var facet = entity.get_facet('search');
|
||||
facet.init();
|
||||
|
||||
var container = $("<div/>");
|
||||
|
||||
entity.header = IPA.entity_header({entity:entity,container:container});
|
||||
facet.entity_header = entity.header;
|
||||
facet.create_content(facet.entity_header.content);
|
||||
facet.setup(facet.entity_header.content);
|
||||
var facet_container = $('<div/>', {
|
||||
name: facet.name,
|
||||
'class': 'facet'
|
||||
});
|
||||
|
||||
facet.create(facet_container);
|
||||
facet.setup(facet_container);
|
||||
|
||||
var column = facet.get_columns()[0];
|
||||
ok(
|
||||
|
@ -354,8 +354,8 @@ class i18n_messages(Command):
|
||||
},
|
||||
"details":{
|
||||
"general":_("General"),
|
||||
"settings":_("${entity} Settings"),
|
||||
"identity":_("Identity Settings"),
|
||||
"settings":_("${entity} ${primary_key} Settings"),
|
||||
"to_top":_("Back to Top")
|
||||
},
|
||||
"tabs": {
|
||||
|
Loading…
Reference in New Issue
Block a user