summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAdam Young <ayoung@redhat.com>2011-06-29 09:26:49 -0400
committerAdam Young <ayoung@redhat.com>2011-06-29 17:09:57 -0400
commitb8b2ac53573620711ce1acfce34a919ffa23e143 (patch)
treec55df575254b663889e7f15332e6798bfeff9a17
parent66eeaceb8cc50902b408e5c97c6d04e59e57f97a (diff)
downloadfreeipa-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.js7
-rw-r--r--install/ui/navigation.js28
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;
};