diff --git a/install/ui/src/freeipa/entity.js b/install/ui/src/freeipa/entity.js
index 2d0e97f84..e20efc0f4 100644
--- a/install/ui/src/freeipa/entity.js
+++ b/install/ui/src/freeipa/entity.js
@@ -21,7 +21,8 @@
* along with this program. If not, see .
*/
-define(['./ipa', './jquery', './text', './facet'], function(IPA, $, text) {
+define(['./ipa', './jquery', './text', './facets', './facet'],
+ function(IPA, $, text, facet_reg) {
IPA.entity = function(spec) {
@@ -117,12 +118,26 @@ IPA.entity = function(spec) {
that.facet_groups.empty();
};
+ that.add_redirect_info = function(facet_name) {
+ if (!that.redirect_facet && facet_name){
+ that.redirect_facet = facet_name;
+ }
+ };
+
that.get_facet = function(name) {
+ var i, facets;
+
//build all facets on the first time
if(!that.facets_created) {
- var builder = IPA.facet_builder(that);
- builder.build_facets();
+ facets = facet_reg.builder.build(that.facet_specs, { entity: that });
+ for (i=0; i -1) {
+ return true;
+ }
+ }
+ return false;
+ };
+
+ var entity = context.entity;
+ su.context_entity(spec, context);
spec.entity = entity;
var index = spec.name.indexOf('_');
@@ -1576,14 +1550,12 @@ exp.facet_builder = IPA.facet_builder = function(entity) {
spec.facet_group = spec.facet_group || spec.attribute_member;
- spec.$factory = spec.$factory || IPA.association_facet;
-
spec.label = spec.label || entity.metadata.label_singular;
spec.tab_label = spec.tab_label ||
(IPA.metadata.objects[spec.other_entity] ?
IPA.metadata.objects[spec.other_entity].label : spec.other_entity);
- if (that.has_indirect_attribute_member(spec)) {
+ if (has_indirect_attribute_member(spec)) {
spec.indirect_attribute_member = spec.attribute_member + 'indirect';
}
@@ -1601,24 +1573,52 @@ exp.facet_builder = IPA.facet_builder = function(entity) {
}));
return spec;
- };
-
- that.has_indirect_attribute_member = function(spec) {
-
- var indirect_members = entity.metadata.attribute_members[spec.attribute_member + 'indirect'];
- if (indirect_members) {
- if (indirect_members.indexOf(spec.other_entity) > -1) {
- return true;
- }
- }
- return false;
- };
-
- init();
-
- return that;
+ }
};
+phases.on('registration', function() {
+
+ facets.register({
+ type: 'search',
+ factory: IPA.search_facet,
+ pre_ops: [
+ exp.facet_preops.search
+ ]
+ });
+
+ facets.register({
+ type: 'nested_search',
+ factory: IPA.nested_search_facet,
+ pre_ops: [
+ exp.facet_preops.nested_search
+ ]
+ });
+
+ facets.register({
+ type: 'details',
+ factory: IPA.details_facet,
+ pre_ops: [
+ exp.facet_preops.details
+ ]
+ });
+
+ facets.register({
+ type: 'association',
+ factory: IPA.association_facet,
+ pre_ops: [
+ exp.facet_preops.association
+ ]
+ });
+
+ facets.register({
+ type: 'attribute',
+ factory: IPA.attribute_facet,
+ pre_ops: [
+ exp.facet_preops.attribute
+ ]
+ });
+});
+
exp.action = IPA.action = function(spec) {
spec = spec || {};
diff --git a/install/ui/test/details_tests.js b/install/ui/test/details_tests.js
index 7326d553c..1d4530838 100644
--- a/install/ui/test/details_tests.js
+++ b/install/ui/test/details_tests.js
@@ -18,8 +18,8 @@
* along with this program. If not, see .
*/
-define(['freeipa/ipa', 'freeipa/jquery', 'freeipa/details',
- 'freeipa/entity'], function(IPA, $) {
+define(['freeipa/ipa', 'freeipa/jquery','freeipa/facet', 'freeipa/facets', 'freeipa/details',
+ 'freeipa/entity'], function(IPA, $, mod_facet, facets) {
return function() {
var details_container;
@@ -29,6 +29,14 @@ module('details', {
setup: function() {
IPA.ajax_options.async = false;
+ facets.register({
+ type: 'details',
+ factory: IPA.details_facet,
+ pre_ops: [
+ mod_facet.facet_preops.details
+ ]
+ });
+
IPA.init({
url: 'data',
on_error: function(xhr, text_status, error_thrown) {
@@ -36,12 +44,6 @@ module('details', {
}
});
- IPA.nav = {};
-
- IPA.nav.get_state = function(key){
- return $.bbq.getState(key);
- };
-
details_container = $('').appendTo(document.body);
IPA.register('user', function(spec) {
@@ -54,6 +56,7 @@ module('details', {
},
teardown: function() {
details_container.remove();
+ facets.remove('details');
}
});
diff --git a/install/ui/test/entity_tests.js b/install/ui/test/entity_tests.js
index 26d73090c..c9b7a1047 100644
--- a/install/ui/test/entity_tests.js
+++ b/install/ui/test/entity_tests.js
@@ -19,8 +19,9 @@
* along with this program. If not, see .
*/
-define(['freeipa/ipa', 'freeipa/jquery', 'freeipa/entity', 'freeipa/search',
- 'freeipa/details'], function(IPA, $) {
+define(['freeipa/ipa', 'freeipa/jquery','freeipa/facet', 'freeipa/facets',
+ 'freeipa/entity', 'freeipa/search',
+ 'freeipa/details'], function(IPA, $, mod_facet, facets) {
return function() {
var container;
@@ -30,6 +31,14 @@ module('entity',{
IPA.ajax_options.async = false;
+ facets.register({
+ type: 'search',
+ factory: IPA.search_facet,
+ pre_ops: [
+ mod_facet.facet_preops.search
+ ]
+ });
+
IPA.init({
url: 'data',
on_success: function(data, text_status, xhr) {
@@ -59,7 +68,7 @@ module('entity',{
},
teardown: function() {
container.remove();
-
+ facets.remove('search');
}
});