One known issue: uses the wrong style for automount tabs, leaving excess white space

From 6aa8e9a6c46c2ba61af6f56b5b856f965057a1a6 Mon Sep 17 00:00:00 2001
From: Adam Young <ayo...@redhat.com>
Date: Tue, 28 Jun 2011 13:39:10 -0400
Subject: [PATCH] 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
---
 install/ui/association.js        |   20 ++++++++++----------
 install/ui/details.js            |    8 ++++----
 install/ui/dns.js                |   10 +++++-----
 install/ui/entity.js             |   12 ++++++------
 install/ui/hbac.js               |    8 ++++----
 install/ui/navigation.js         |   35 +++++++++++++++++++++++++++++++++--
 install/ui/rule.js               |    2 +-
 install/ui/search.js             |   12 ++++++------
 install/ui/sudo.js               |   12 ++++++------
 install/ui/test/details_tests.js |    7 +++++++
 install/ui/user.js               |    4 ++--
 install/ui/webui.js              |    9 ++++++---
 12 files changed, 90 insertions(+), 49 deletions(-)

diff --git a/install/ui/association.js b/install/ui/association.js
index ad2268f5c25523ccc09cbeeaf91fec4ae08cebe4..6f74bf628fbec4c8019b12dfac4edf78d3f6953e 100644
--- a/install/ui/association.js
+++ b/install/ui/association.js
@@ -514,7 +514,7 @@ IPA.association_table_widget = function (spec) {
     };
 
     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 title = IPA.messages.association.add;
 
@@ -562,7 +562,7 @@ IPA.association_table_widget = function (spec) {
 
     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({
             entity: that.entity_name,
@@ -587,7 +587,7 @@ IPA.association_table_widget = function (spec) {
             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 title = IPA.messages.association.remove;
 
@@ -625,7 +625,7 @@ IPA.association_table_widget = function (spec) {
 
     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({
             entity: that.entity_name,
@@ -651,7 +651,7 @@ IPA.association_table_widget = function (spec) {
             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({
             entity: that.entity_name,
             method: 'show',
@@ -814,7 +814,7 @@ IPA.association_facet = function (spec) {
 
         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;
 
         if (!that.read_only) {
@@ -891,13 +891,13 @@ IPA.association_facet = function (spec) {
     that.show = function() {
         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.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 title = IPA.messages.association.add;
 
@@ -920,7 +920,7 @@ IPA.association_facet = function (spec) {
 
         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({
                 'entity_name': that.entity_name,
@@ -958,7 +958,7 @@ IPA.association_facet = function (spec) {
             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;
 
         title = title.replace('${entity}', that.entity_name);
diff --git a/install/ui/details.js b/install/ui/details.js
index 91e349a387269a4e9fabd24dcaba13cfed6ea9db..afab5a7e7449b844351a44b806c7e381f09e4b7c 100644
--- a/install/ui/details.js
+++ b/install/ui/details.js
@@ -378,7 +378,7 @@ IPA.details_facet = function(spec) {
 
         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();
 
@@ -486,7 +486,7 @@ IPA.details_facet = function(spec) {
     that.show = function() {
         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);
     };
 
@@ -505,7 +505,7 @@ IPA.details_facet = function(spec) {
     };
 
     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;
     }
     that.new_key = new_key;
@@ -626,7 +626,7 @@ IPA.details_facet = function(spec) {
 
     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({
             entity: that.entity_name,
diff --git a/install/ui/dns.js b/install/ui/dns.js
index 14be464689e90e4cf06184a17ede687c15885d82..ec61e963ba4fa2843574d1ec27ce2848bdae0273 100644
--- a/install/ui/dns.js
+++ b/install/ui/dns.js
@@ -218,7 +218,7 @@ IPA.dnsrecord_facet = function(spec) {
 
         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 options = {};
@@ -251,7 +251,7 @@ IPA.dnsrecord_facet = function(spec) {
             return;
         }
 
-        var zone = $.bbq.getState('dnszone-pkey');
+        var zone = IPA.nav.get_state('dnszone-pkey');
 
         var records = [];
 
@@ -423,8 +423,8 @@ IPA.dnsrecord_facet = function(spec) {
     that.show = function() {
         that.facet_show();
 
-        that.record = $.bbq.getState(that.entity_name+'-record');
-        that.pkey = $.bbq.getState(that.entity_name+'-pkey');
+        that.record = IPA.nav.get_state(that.entity_name+'-record');
+        that.pkey = IPA.nav.get_state(that.entity_name+'-pkey');
         that.header.set_pkey(that.pkey);
     };
 
@@ -507,7 +507,7 @@ IPA.dnsrecord_facet = function(spec) {
             options.data = data_filter;
         }
 */
-        var args = [$.bbq.getState(that.entity_name+'-pkey')];
+        var args = [IPA.nav.get_state(that.entity_name+'-pkey')];
 
         if (filter) {
             args.push(filter);
diff --git a/install/ui/entity.js b/install/ui/entity.js
index 4a22c58ab0c6f094c6ac09a9904ce8bdc961645a..c04f85d6de4815c9707513d787cadc85e361ce23 100644
--- a/install/ui/entity.js
+++ b/install/ui/entity.js
@@ -196,7 +196,7 @@ IPA.facet_header = function(spec) {
         if (that.facet.disable_facet_tabs) return;
 
         $(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') {
             that.facet_tabs.find('a:first').addClass('selected');
@@ -215,7 +215,7 @@ IPA.facet_header = function(spec) {
 
             while (entity) {
                 breadcrumb.unshift($('<a/>', {
-                    text: $.bbq.getState(entity.name+'-pkey'),
+                    text: IPA.nav.get_state(entity.name+'-pkey'),
                     title: entity.name,
                     click: function(entity) {
                         return function() {
@@ -260,7 +260,7 @@ IPA.facet_header = function(spec) {
                     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);
 
                 return false;
@@ -584,7 +584,7 @@ IPA.entity = function (spec) {
         var current_entity = that;
         current_entity = current_entity.containing_entity;
         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;
         }
         return pkey;
@@ -594,7 +594,7 @@ IPA.entity = function (spec) {
     that.get_primary_key = function() {
         var pkey = that.get_primary_key_prefix();
         var current_entity = that;
-        pkey.unshift($.bbq.getState(current_entity.name+'-pkey'));
+        pkey.unshift(IPA.nav.get_state(current_entity.name+'-pkey'));
         return pkey;
     };
 
@@ -605,7 +605,7 @@ IPA.entity = function (spec) {
 };
 
 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;
     if (!facet_name  && facets.length) {
         facet_name = facets[0].name;
diff --git a/install/ui/hbac.js b/install/ui/hbac.js
index 4c29abaab99c46fa107da7bb8071d6f79b2cda0e..c082056bb5005d6698eea1015fa50586ad9c415d 100644
--- a/install/ui/hbac.js
+++ b/install/ui/hbac.js
@@ -324,7 +324,7 @@ IPA.hbacrule_details_facet = function (spec) {
 
     that.update = function() {
 
-        var pkey = $.bbq.getState(that.entity_name+'-pkey');
+        var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
 
         var modify_operation = {
             'execute': false,
@@ -819,7 +819,7 @@ IPA.hbacrule_accesstime_widget = function (spec) {
 
     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;
         title = title.replace('${entity}', IPA.metadata.objects[that.entity_name].label);
         title = title.replace('${primary_key}', pkey);
@@ -928,7 +928,7 @@ IPA.hbacrule_accesstime_widget = function (spec) {
             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 = title.replace('${entity}', IPA.metadata.objects[that.entity_name].label);
         title = title.replace('${primary_key}', pkey);
@@ -983,7 +983,7 @@ IPA.hbacrule_accesstime_widget = function (spec) {
             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({
             entity: that.entity_name,
             method: 'show',
diff --git a/install/ui/navigation.js b/install/ui/navigation.js
index 5d70f879293b1319f1be560f7df3a103e3a1b948..5ab254b5ecde1565880ab59ba486358d31d597aa 100644
--- a/install/ui/navigation.js
+++ b/install/ui/navigation.js
@@ -82,6 +82,8 @@ IPA.navigation = function(spec) {
         return state;
     };
 
+    var state = {};
+
     that.push_state = function(params) {
 
         if (IPA.current_entity) {
@@ -104,15 +106,44 @@ 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.search('^'+entity) > -1){
+                    url_state[key2] = state[key2];
+                }
+            }
+
+
+            key = value;
+        }
+
+
+        $.bbq.pushState(url_state,2);
         return true;
     };
 
     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) {
+        state.removeAttribute(key);
         $.bbq.removeState(key);
     };
 
diff --git a/install/ui/rule.js b/install/ui/rule.js
index 08c27e6d16cc41b268ebfd630124096e5e413c12..4969ffb5dc7bf38861a0668a473b1a81ae4c0880 100644
--- a/install/ui/rule.js
+++ b/install/ui/rule.js
@@ -134,7 +134,7 @@ IPA.rule_association_table_widget = function (spec) {
 
     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({
             'on_success': on_success,
diff --git a/install/ui/search.js b/install/ui/search.js
index 4f38027819dc9a465fe6a708c956241e292a8f41..8a9907220a75dadd4ce527627cc2bfc6d5011b32 100644
--- a/install/ui/search.js
+++ b/install/ui/search.js
@@ -156,7 +156,7 @@ IPA.search_facet = function(spec) {
         that.facet_show();
 
         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);
         }
     };
@@ -301,11 +301,11 @@ IPA.search_facet = function(spec) {
 
         var filter = [];
         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;
         while(current_entity !== null){
             filter.unshift(
-                $.bbq.getState(current_entity.name+'-pkey'));
+                IPA.nav.get_state(current_entity.name+'-pkey'));
             current_entity = current_entity.containing_entity;
         }
 
@@ -349,17 +349,17 @@ IPA.nested_search_facet = function(spec) {
         that.facet_show();
 
         that.header.set_pkey(
-            $.bbq.getState(IPA.current_entity.name+'-pkey'));
+            IPA.nav.get_state(IPA.current_entity.name+'-pkey'));
 
         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.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)) {
             that.redirect();
diff --git a/install/ui/sudo.js b/install/ui/sudo.js
index b3882b05fc05d525670acef81fd70ff809495609..0ed46d8cd89b55dc6f846319e270674a12730de3 100644
--- a/install/ui/sudo.js
+++ b/install/ui/sudo.js
@@ -202,7 +202,7 @@ IPA.sudocmd_member_sudocmdgroup_table_widget = function (spec) {
             '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++) {
             var value = values[i];
@@ -231,7 +231,7 @@ IPA.sudocmd_member_sudocmdgroup_table_widget = function (spec) {
             '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++) {
             var value = values[i];
@@ -353,7 +353,7 @@ IPA.sudorule_details_facet = function (spec) {
 
     that.update = function() {
 
-        var pkey = $.bbq.getState(that.entity_name+'-pkey');
+        var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
 
         var modify_operation = {
             'execute': false,
@@ -1045,7 +1045,7 @@ IPA.sudorule_association_table_widget = function (spec) {
     that.external = spec.external;
 
     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 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) {
 
-        var pkey = $.bbq.getState(that.entity_name+'-pkey');
+        var pkey = IPA.nav.get_state(that.entity_name+'-pkey');
 
         var batch = IPA.batch_command({
             'on_success': on_success,
@@ -1281,7 +1281,7 @@ IPA.sudorule_command_table_widget = function (spec) {
 
     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({
             entity: that.entity_name,
diff --git a/install/ui/test/details_tests.js b/install/ui/test/details_tests.js
index dc84dc020ce3a9d0e83bf64ac2e7687e1ffdb9e4..051adc33531c5a05f911ffc883977ec98ccdf666 100644
--- a/install/ui/test/details_tests.js
+++ b/install/ui/test/details_tests.js
@@ -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);
 
         var obj_name = 'user';
@@ -43,6 +49,7 @@ module('details', {
                 return IPA.entity({name:obj_name,
                                    metadata:IPA.metadata.objects.user});
             };
+        
     },
     teardown: function() {
         details_container.remove();
diff --git a/install/ui/user.js b/install/ui/user.js
index ce925d8e0c3259765711dee74f3ab2d82da90b66..d721754256ab72755054f54d964066c201aea522 100644
--- a/install/ui/user.js
+++ b/install/ui/user.js
@@ -177,7 +177,7 @@ IPA.user_status_widget = function(spec) {
                   click: function() {
                       var jobj = $(this);
                       var val = jobj.attr('title');
-                      var pkey =  $.bbq.getState('user-pkey');
+                      var pkey =  IPA.nav.get_state('user-pkey');
                       var method = 'enable';
                       if (val == IPA.messages.objects.user.active) {
                           method = 'disable';
@@ -266,7 +266,7 @@ IPA.user_password_widget = function(spec) {
                 return;
             }
 
-            var user_pkey = $.bbq.getState('user-pkey');
+            var user_pkey = IPA.nav.get_state('user-pkey');
 
             var args;
             if (user_pkey === IPA.whoami.uid[0]) {
diff --git a/install/ui/webui.js b/install/ui/webui.js
index 72f9f729cd5d17c09d6a8e2c838f57d130e60329..2c4451489fd4a3acb00621ab57824e051952cf0f 100644
--- a/install/ui/webui.js
+++ b/install/ui/webui.js
@@ -53,9 +53,12 @@ IPA.admin_navigation = function(spec) {
                  {entity: 'sudocmd'},
                  {entity: 'sudocmdgroup'}
             ]},
-            {entity: 'automountlocation', label: IPA.messages.tabs.automount},
-            {entity: 'automountmap', hidden: true},
-            {entity: 'automountkey', hidden: true},
+            {name:'automount',
+             label: IPA.messages.tabs.automount,
+             children:[
+                {entity: 'automountlocation', hidden:true},
+                {entity: 'automountmap', hidden: true},
+                {entity: 'automountkey', hidden: true}]},
             {entity: 'pwpolicy'},
             {entity: 'krbtpolicy'}
         ]},
-- 
1.7.5.2

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to