diff options
author | Adam Young <ayoung@redhat.com> | 2011-06-29 09:26:49 -0400 |
---|---|---|
committer | Adam Young <ayoung@redhat.com> | 2011-06-29 17:09:57 -0400 |
commit | b8b2ac53573620711ce1acfce34a919ffa23e143 (patch) | |
tree | c55df575254b663889e7f15332e6798bfeff9a17 | |
parent | 66eeaceb8cc50902b408e5c97c6d04e59e57f97a (diff) | |
download | freeipa-b8b2ac53573620711ce1acfce34a919ffa23e143.tar.gz freeipa-b8b2ac53573620711ce1acfce34a919ffa23e143.tar.xz freeipa-b8b2ac53573620711ce1acfce34a919ffa23e143.zip |
containing entity pkeys
Instead of looking for a match on the entity name, use the nesting structure
of containing entites to grab their pkeys.
Code review fixes
https://fedorahosted.org/freeipa/ticket/674
-rw-r--r-- | install/ui/entity.js | 7 | ||||
-rw-r--r-- | install/ui/navigation.js | 28 |
2 files changed, 29 insertions, 6 deletions
diff --git a/install/ui/entity.js b/install/ui/entity.js index c04f85d6d..7fa00f1fa 100644 --- a/install/ui/entity.js +++ b/install/ui/entity.js @@ -597,7 +597,12 @@ IPA.entity = function (spec) { pkey.unshift(IPA.nav.get_state(current_entity.name+'-pkey')); return pkey; }; - + /* most entites only require -pkey for their primary keys, but some + are more specific. This call allows those entites a place + to override the other parameters. */ + that.get_key_names = function() { + return [that.name + '-pkey']; + }; that.entity_init = that.init; diff --git a/install/ui/navigation.js b/install/ui/navigation.js index d0b45cc3c..9bcb20f05 100644 --- a/install/ui/navigation.js +++ b/install/ui/navigation.js @@ -115,14 +115,32 @@ IPA.navigation = function(spec) { 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; + } + + /*We are at the leaf node, which is the sleected entity.*/ + var entity = value; + for (var key2 in state){ + if ((key2 === entity) || (key2.search('^'+entity +'-') > -1)){ + url_state[key2] = state[key2]; + } + } + + /* + Trace back up the nested entities for their pkeys as well + */ + var current_entity = IPA.get_entity(entity); + while(current_entity !== null){ + var key_names = current_entity.get_key_names(); + for (var j = 0; j < key_names.length; j+= 1){ + var key_name = key_names[j]; + if (state[key_name]){ + url_state[key_name] = state[key_name]; } } - key = value; + current_entity = current_entity.containing_entity; } + $.bbq.pushState(url_state,2); return true; }; |