shorten url cache state in a javascript variable, and leave on information about the current entity in the URL hash params

https://fedorahosted.org/freeipa/ticket/674

decrement depth for hidden tabs.

Initialize state from url
useing delete for removing state
stricter attribute matching
not incrementing depth for all hidden tabs.
whitespace cleanup
This commit is contained in:
Adam Young 2011-06-28 13:39:10 -04:00 committed by Endi S. Dewata
parent 67b807d640
commit 66eeaceb8c
12 changed files with 95 additions and 56 deletions

View File

@ -514,7 +514,7 @@ IPA.association_table_widget = function (spec) {
}; };
that.create_add_dialog = function() { that.create_add_dialog = function() {
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var label = IPA.metadata.objects[that.other_entity].label; var label = IPA.metadata.objects[that.other_entity].label;
var title = IPA.messages.association.add; var title = IPA.messages.association.add;
@ -562,7 +562,7 @@ IPA.association_table_widget = function (spec) {
that.add = function(values, on_success, on_error) { that.add = function(values, on_success, on_error) {
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var command = IPA.command({ var command = IPA.command({
entity: that.entity_name, entity: that.entity_name,
@ -587,7 +587,7 @@ IPA.association_table_widget = function (spec) {
return; return;
} }
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var label = IPA.metadata.objects[that.other_entity].label; var label = IPA.metadata.objects[that.other_entity].label;
var title = IPA.messages.association.remove; var title = IPA.messages.association.remove;
@ -625,7 +625,7 @@ IPA.association_table_widget = function (spec) {
that.remove = function(values, on_success, on_error) { that.remove = function(values, on_success, on_error) {
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var command = IPA.command({ var command = IPA.command({
entity: that.entity_name, entity: that.entity_name,
@ -651,7 +651,7 @@ IPA.association_table_widget = function (spec) {
summary.append(error_thrown.name+': '+error_thrown.message); summary.append(error_thrown.name+': '+error_thrown.message);
} }
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
IPA.command({ IPA.command({
entity: that.entity_name, entity: that.entity_name,
method: 'show', method: 'show',
@ -814,7 +814,7 @@ IPA.association_facet = function (spec) {
that.facet_create_header(container); that.facet_create_header(container);
that.pkey = $.bbq.getState(that.entity_name+'-pkey'); that.pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var other_label = IPA.metadata.objects[that.other_entity].label; var other_label = IPA.metadata.objects[that.other_entity].label;
if (!that.read_only) { if (!that.read_only) {
@ -891,13 +891,13 @@ IPA.association_facet = function (spec) {
that.show = function() { that.show = function() {
that.facet_show(); that.facet_show();
that.pkey = $.bbq.getState(that.entity_name+'-pkey'); that.pkey = IPA.nav.get_state(that.entity_name+'-pkey');
that.header.set_pkey(that.pkey); that.header.set_pkey(that.pkey);
}; };
that.show_add_dialog = function() { that.show_add_dialog = function() {
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var label = IPA.metadata.objects[that.other_entity] ? IPA.metadata.objects[that.other_entity].label : that.other_entity; var label = IPA.metadata.objects[that.other_entity] ? IPA.metadata.objects[that.other_entity].label : that.other_entity;
var title = IPA.messages.association.add; var title = IPA.messages.association.add;
@ -920,7 +920,7 @@ IPA.association_facet = function (spec) {
dialog.execute = function() { dialog.execute = function() {
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var associator = that.associator({ var associator = that.associator({
'entity_name': that.entity_name, 'entity_name': that.entity_name,
@ -958,7 +958,7 @@ IPA.association_facet = function (spec) {
return; return;
} }
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var title = IPA.messages.association.remove; var title = IPA.messages.association.remove;
title = title.replace('${entity}', that.entity_name); title = title.replace('${entity}', that.entity_name);

View File

@ -378,7 +378,7 @@ IPA.details_facet = function(spec) {
that.facet_create_header(container); that.facet_create_header(container);
that.pkey = $.bbq.getState(that.entity_name+'-pkey'); that.pkey = IPA.nav.get_state(that.entity_name+'-pkey');
that.create_controls(); that.create_controls();
@ -486,7 +486,7 @@ IPA.details_facet = function(spec) {
that.show = function() { that.show = function() {
that.facet_show(); that.facet_show();
that.pkey = $.bbq.getState(that.entity_name+'-pkey'); that.pkey = IPA.nav.get_state(that.entity_name+'-pkey');
that.header.set_pkey(that.pkey); that.header.set_pkey(that.pkey);
}; };
@ -505,7 +505,7 @@ IPA.details_facet = function(spec) {
}; };
function new_key(){ function new_key(){
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
return pkey != that.pkey; return pkey != that.pkey;
} }
that.new_key = new_key; that.new_key = new_key;
@ -626,7 +626,7 @@ IPA.details_facet = function(spec) {
that.refresh = function() { that.refresh = function() {
that.pkey = $.bbq.getState(that.entity_name+'-pkey'); that.pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var command = IPA.command({ var command = IPA.command({
entity: that.entity_name, entity: that.entity_name,

View File

@ -228,7 +228,7 @@ IPA.dnsrecord_facet = function(spec) {
dialog.add = function() { dialog.add = function() {
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var resource = dialog.resource.val(); var resource = dialog.resource.val();
var options = {}; var options = {};
@ -261,7 +261,7 @@ IPA.dnsrecord_facet = function(spec) {
return; return;
} }
var zone = $.bbq.getState('dnszone-pkey'); var zone = IPA.nav.get_state('dnszone-pkey');
var records = []; var records = [];
@ -433,8 +433,8 @@ IPA.dnsrecord_facet = function(spec) {
that.show = function() { that.show = function() {
that.facet_show(); that.facet_show();
that.record = $.bbq.getState(that.entity_name+'-record'); that.record = IPA.nav.get_state(that.entity_name+'-record');
that.pkey = $.bbq.getState(that.entity_name+'-pkey'); that.pkey = IPA.nav.get_state(that.entity_name+'-pkey');
that.header.set_pkey(that.pkey); that.header.set_pkey(that.pkey);
}; };
@ -517,7 +517,7 @@ IPA.dnsrecord_facet = function(spec) {
options.data = data_filter; options.data = data_filter;
} }
*/ */
var args = [$.bbq.getState(that.entity_name+'-pkey')]; var args = [IPA.nav.get_state(that.entity_name+'-pkey')];
if (filter) { if (filter) {
args.push(filter); args.push(filter);

View File

@ -196,7 +196,7 @@ IPA.facet_header = function(spec) {
if (that.facet.disable_facet_tabs) return; if (that.facet.disable_facet_tabs) return;
$(that.facet_tabs).find('a').removeClass('selected'); $(that.facet_tabs).find('a').removeClass('selected');
var facet_name = $.bbq.getState(that.facet.entity.name+'-facet'); var facet_name = IPA.nav.get_state(that.facet.entity.name+'-facet');
if (!facet_name || facet_name === 'default') { if (!facet_name || facet_name === 'default') {
that.facet_tabs.find('a:first').addClass('selected'); that.facet_tabs.find('a:first').addClass('selected');
@ -215,7 +215,7 @@ IPA.facet_header = function(spec) {
while (entity) { while (entity) {
breadcrumb.unshift($('<a/>', { breadcrumb.unshift($('<a/>', {
text: $.bbq.getState(entity.name+'-pkey'), text: IPA.nav.get_state(entity.name+'-pkey'),
title: entity.name, title: entity.name,
click: function(entity) { click: function(entity) {
return function() { return function() {
@ -260,7 +260,7 @@ IPA.facet_header = function(spec) {
return false; return false;
} }
var pkey = $.bbq.getState(that.facet.entity.name+'-pkey'); var pkey = IPA.nav.get_state(that.facet.entity.name+'-pkey');
IPA.nav.show_page(that.facet.entity.name, other_facet.name, pkey); IPA.nav.show_page(that.facet.entity.name, other_facet.name, pkey);
return false; return false;
@ -584,7 +584,7 @@ IPA.entity = function (spec) {
var current_entity = that; var current_entity = that;
current_entity = current_entity.containing_entity; current_entity = current_entity.containing_entity;
while(current_entity !== null){ while(current_entity !== null){
pkey.unshift($.bbq.getState(current_entity.name+'-pkey')); pkey.unshift(IPA.nav.get_state(current_entity.name+'-pkey'));
current_entity = current_entity.containing_entity; current_entity = current_entity.containing_entity;
} }
return pkey; return pkey;
@ -594,7 +594,7 @@ IPA.entity = function (spec) {
that.get_primary_key = function() { that.get_primary_key = function() {
var pkey = that.get_primary_key_prefix(); var pkey = that.get_primary_key_prefix();
var current_entity = that; var current_entity = that;
pkey.unshift($.bbq.getState(current_entity.name+'-pkey')); pkey.unshift(IPA.nav.get_state(current_entity.name+'-pkey'));
return pkey; return pkey;
}; };
@ -605,7 +605,7 @@ IPA.entity = function (spec) {
}; };
IPA.current_facet = function(entity) { IPA.current_facet = function(entity) {
var facet_name = $.bbq.getState(entity.name+'-facet'); var facet_name = IPA.nav.get_state(entity.name+'-facet');
var facets = entity.facets.values; var facets = entity.facets.values;
if (!facet_name && facets.length) { if (!facet_name && facets.length) {
facet_name = facets[0].name; facet_name = facets[0].name;

View File

@ -324,7 +324,7 @@ IPA.hbacrule_details_facet = function (spec) {
that.update = function() { that.update = function() {
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var modify_operation = { var modify_operation = {
'execute': false, 'execute': false,
@ -819,7 +819,7 @@ IPA.hbacrule_accesstime_widget = function (spec) {
that.add = function() { that.add = function() {
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var title = IPA.messages.association.add; var title = IPA.messages.association.add;
title = title.replace('${entity}', IPA.metadata.objects[that.entity_name].label); title = title.replace('${entity}', IPA.metadata.objects[that.entity_name].label);
title = title.replace('${primary_key}', pkey); title = title.replace('${primary_key}', pkey);
@ -928,7 +928,7 @@ IPA.hbacrule_accesstime_widget = function (spec) {
return; return;
} }
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
title = IPA.messages.association.remove; title = IPA.messages.association.remove;
title = title.replace('${entity}', IPA.metadata.objects[that.entity_name].label); title = title.replace('${entity}', IPA.metadata.objects[that.entity_name].label);
title = title.replace('${primary_key}', pkey); title = title.replace('${primary_key}', pkey);
@ -983,7 +983,7 @@ IPA.hbacrule_accesstime_widget = function (spec) {
summary.append(error_thrown.name+': '+error_thrown.message); summary.append(error_thrown.name+': '+error_thrown.message);
} }
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
IPA.command({ IPA.command({
entity: that.entity_name, entity: that.entity_name,
method: 'show', method: 'show',

View File

@ -65,23 +65,25 @@ IPA.navigation = function(spec) {
that.get_path_state = function(name) { that.get_path_state = function(name) {
var state = {}; var path_state = {};
var tab = that.get_tab(name); var tab = that.get_tab(name);
var parent = tab.parent; var parent = tab.parent;
while (parent) { while (parent) {
state[parent.name] = tab.name; path_state[parent.name] = tab.name;
tab = parent; tab = parent;
parent = tab.parent; parent = tab.parent;
} }
state[that.container.attr('id')] = tab.name; path_state[that.container.attr('id')] = tab.name;
return state; return path_state;
}; };
var state = $.bbq.getState();
that.push_state = function(params) { that.push_state = function(params) {
if (IPA.current_entity) { if (IPA.current_entity) {
@ -104,15 +106,37 @@ IPA.navigation = function(spec) {
} }
} }
$.bbq.pushState(params); for ( var param in params){
state[param] = params[param];
}
var url_state ={};
var key = 'navigation';
while(state[key]){
var value = state[key];
url_state[key] = value;
var entity = value;
for (var key2 in state){
if ((key2 === entity) || (key2.search('^'+entity) > -1)){
url_state[key2] = state[key2];
}
}
key = value;
}
$.bbq.pushState(url_state,2);
return true; return true;
}; };
that.get_state = function(key) { that.get_state = function(key) {
return $.bbq.getState(key); var url_state = $.bbq.getState(key);
if (!url_state){
url_state = state[key];
}
return url_state;
}; };
that.remove_state = function(key) { that.remove_state = function(key) {
delete state[key];
$.bbq.removeState(key); $.bbq.removeState(key);
}; };
@ -218,15 +242,21 @@ IPA.navigation = function(spec) {
container.tabs('select', index); container.tabs('select', index);
var tab = tabs[index]; var tab = tabs[index];
if (tab.hidden){
depth = depth -1;
}
if (tab.children && tab.children.length) { if (tab.children && tab.children.length) {
that._update(tab.children, tab.container, depth+1); var next_depth = depth + 1;
that._update(tab.children, tab.container, next_depth);
} else if (tab.entity) { } else if (tab.entity) {
that.container.addClass(that.tab_class+'-'+depth); that.container.addClass(that.tab_class+'-'+depth);
that.content.addClass(that.tab_class+'-'+depth); that.content.addClass(that.tab_class+'-'+depth);
var entity_container = $('.entity[name="'+tab.entity.name+'"]', that.content); var entity_container = $('.entity[name="'+tab.entity.name+'"]',
that.content);
if (!entity_container.length) { if (!entity_container.length) {
tab.content = $('<div/>', { tab.content = $('<div/>', {
name: tab.name, name: tab.name,

View File

@ -134,7 +134,7 @@ IPA.rule_association_table_widget = function (spec) {
that.add = function(values, on_success, on_error) { that.add = function(values, on_success, on_error) {
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var batch = IPA.batch_command({ var batch = IPA.batch_command({
'on_success': on_success, 'on_success': on_success,

View File

@ -102,7 +102,7 @@ IPA.search_facet = function(spec) {
that.filter = $('<input/>', { that.filter = $('<input/>', {
type: 'text', type: 'text',
'class': 'search-filter', 'class': 'search-filter',
name: 'filter' name: 'filter'
}).appendTo(span); }).appendTo(span);
@ -156,7 +156,7 @@ IPA.search_facet = function(spec) {
that.facet_show(); that.facet_show();
if (that.filter) { if (that.filter) {
var filter = $.bbq.getState(that.entity_name+'-filter'); var filter = IPA.nav.get_state(that.entity_name+'-filter');
that.filter.val(filter); that.filter.val(filter);
} }
}; };
@ -301,11 +301,11 @@ IPA.search_facet = function(spec) {
var filter = []; var filter = [];
var current_entity = entity; var current_entity = entity;
filter.unshift($.bbq.getState(current_entity.name+'-filter')); filter.unshift(IPA.nav.get_state(current_entity.name+'-filter'));
current_entity = current_entity.containing_entity; current_entity = current_entity.containing_entity;
while(current_entity !== null){ while(current_entity !== null){
filter.unshift( filter.unshift(
$.bbq.getState(current_entity.name+'-pkey')); IPA.nav.get_state(current_entity.name+'-pkey'));
current_entity = current_entity.containing_entity; current_entity = current_entity.containing_entity;
} }
@ -349,17 +349,17 @@ IPA.nested_search_facet = function(spec) {
that.facet_show(); that.facet_show();
that.header.set_pkey( that.header.set_pkey(
$.bbq.getState(IPA.current_entity.name+'-pkey')); IPA.nav.get_state(IPA.current_entity.name+'-pkey'));
if (that.filter) { if (that.filter) {
var filter = $.bbq.getState(that.managed_entity_name+'-filter'); var filter = IPA.nav.get_state(that.managed_entity_name+'-filter');
that.filter.val(filter); that.filter.val(filter);
} }
}; };
that.refresh = function(){ that.refresh = function(){
var pkey = $.bbq.getState(that.entity.name+'-pkey'); var pkey = IPA.nav.get_state(that.entity.name+'-pkey');
if ((!pkey) && (that.entity.redirect_facet)) { if ((!pkey) && (that.entity.redirect_facet)) {
that.redirect(); that.redirect();

View File

@ -202,7 +202,7 @@ IPA.sudocmd_member_sudocmdgroup_table_widget = function (spec) {
'on_error': on_error 'on_error': on_error
}); });
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
for (var i=0; i<values.length; i++) { for (var i=0; i<values.length; i++) {
var value = values[i]; var value = values[i];
@ -231,7 +231,7 @@ IPA.sudocmd_member_sudocmdgroup_table_widget = function (spec) {
'on_error': on_error 'on_error': on_error
}); });
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
for (var i=0; i<values.length; i++) { for (var i=0; i<values.length; i++) {
var value = values[i]; var value = values[i];
@ -353,7 +353,7 @@ IPA.sudorule_details_facet = function (spec) {
that.update = function() { that.update = function() {
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var modify_operation = { var modify_operation = {
'execute': false, 'execute': false,
@ -1045,7 +1045,7 @@ IPA.sudorule_association_table_widget = function (spec) {
that.external = spec.external; that.external = spec.external;
that.create_add_dialog = function() { that.create_add_dialog = function() {
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var label = IPA.metadata.objects[that.other_entity].label; var label = IPA.metadata.objects[that.other_entity].label;
var title = 'Add '+label+' to '+that.entity_name+' '+pkey; var title = 'Add '+label+' to '+that.entity_name+' '+pkey;
@ -1243,7 +1243,7 @@ IPA.sudorule_command_table_widget = function (spec) {
that.add = function(values, on_success, on_error) { that.add = function(values, on_success, on_error) {
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var batch = IPA.batch_command({ var batch = IPA.batch_command({
'on_success': on_success, 'on_success': on_success,
@ -1281,7 +1281,7 @@ IPA.sudorule_command_table_widget = function (spec) {
that.remove = function(values, on_success, on_error) { that.remove = function(values, on_success, on_error) {
var pkey = $.bbq.getState(that.entity_name+'-pkey'); var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
var command = IPA.command({ var command = IPA.command({
entity: that.entity_name, entity: that.entity_name,

View File

@ -35,6 +35,12 @@ module('details', {
} }
); );
IPA.nav = {};
IPA.nav.get_state = function(key){
return $.bbq.getState(key);
};
details_container = $('<div id="details"/>').appendTo(document.body); details_container = $('<div id="details"/>').appendTo(document.body);
var obj_name = 'user'; var obj_name = 'user';

View File

@ -177,7 +177,7 @@ IPA.user_status_widget = function(spec) {
click: function() { click: function() {
var jobj = $(this); var jobj = $(this);
var val = jobj.attr('title'); var val = jobj.attr('title');
var pkey = $.bbq.getState('user-pkey'); var pkey = IPA.nav.get_state('user-pkey');
var method = 'enable'; var method = 'enable';
if (val == IPA.messages.objects.user.active) { if (val == IPA.messages.objects.user.active) {
method = 'disable'; method = 'disable';
@ -266,7 +266,7 @@ IPA.user_password_widget = function(spec) {
return; return;
} }
var user_pkey = $.bbq.getState('user-pkey'); var user_pkey = IPA.nav.get_state('user-pkey');
var args; var args;
if (user_pkey === IPA.whoami.uid[0]) { if (user_pkey === IPA.whoami.uid[0]) {

View File

@ -53,9 +53,12 @@ IPA.admin_navigation = function(spec) {
{entity: 'sudocmd'}, {entity: 'sudocmd'},
{entity: 'sudocmdgroup'} {entity: 'sudocmdgroup'}
]}, ]},
{entity: 'automountlocation', label: IPA.messages.tabs.automount}, {name:'automount',
{entity: 'automountmap', hidden: true}, label: IPA.messages.tabs.automount,
{entity: 'automountkey', hidden: true}, children:[
{entity: 'automountlocation', hidden:true},
{entity: 'automountmap', hidden: true},
{entity: 'automountkey', hidden: true}]},
{entity: 'pwpolicy'}, {entity: 'pwpolicy'},
{entity: 'krbtpolicy'} {entity: 'krbtpolicy'}
]}, ]},