From 17caa5dd5af37826d5fe830edcab344e6a975608 Mon Sep 17 00:00:00 2001 From: Petr Vobornik Date: Tue, 14 May 2013 18:13:48 +0200 Subject: Unite and move facet pre_ops to related modules Facet pre_ops defined in ./facet module were moved to modules where facet are actually defined. Moved pre_ops were united with the ones defined for the facets in these modules. The move simplifies module dependencies - there is no reason to have general facet module dependent on specialized facet modules. Pre_ops uniting makes the code simpler. https://fedorahosted.org/freeipa/ticket/3605 --- install/ui/src/freeipa/association.js | 67 +++++++++++++++++++- install/ui/src/freeipa/details.js | 10 ++- install/ui/src/freeipa/facet.js | 115 +--------------------------------- install/ui/src/freeipa/search.js | 21 +++++-- 4 files changed, 90 insertions(+), 123 deletions(-) diff --git a/install/ui/src/freeipa/association.js b/install/ui/src/freeipa/association.js index e599001de..e2ddaf866 100644 --- a/install/ui/src/freeipa/association.js +++ b/install/ui/src/freeipa/association.js @@ -24,16 +24,19 @@ define([ 'dojo/Deferred', + './_base/metadata_provider', './ipa', './jquery', './navigation', './phases', './reg', + './spec_util', './text', './facet', './search', './dialog'], - function(Deferred, IPA, $, navigation, phases, reg, text, mod_facet) { + function(Deferred, metadata_provider, IPA, $, navigation, + phases, reg, su, text) { var exp = {}; @@ -765,6 +768,45 @@ IPA.association_table_field = function (spec) { exp.association_facet_pre_op = function(spec, context) { + var has_indirect_attribute_member = function(spec) { + + var indirect_members = entity.metadata.attribute_members[spec.attribute_member + 'indirect']; + var has_indirect = !!(indirect_members && indirect_members.indexOf(spec.other_entity) > -1); + return has_indirect; + }; + + var entity = context.entity; + su.context_entity(spec, context); + spec.entity = entity; + + var index = spec.name.indexOf('_'); + spec.attribute_member = spec.attribute_member || + spec.name.substring(0, index); + spec.other_entity = spec.other_entity || + spec.name.substring(index+1); + + spec.add_title = '@i18n:association.add.'+spec.attribute_member; + spec.remove_title = '@i18n:association.remove.'+spec.attribute_member; + + spec.facet_group = spec.facet_group || spec.attribute_member; + + spec.label = spec.label || entity.metadata.label_singular; + + spec.tab_label = spec.tab_label || + metadata_provider.get('@mo:'+spec.other_entity+'.label') || + spec.other_entity; + + if (has_indirect_attribute_member(spec)) { + + spec.indirect_attribute_member = spec.attribute_member + 'indirect'; + } + + if (spec.facet_group === 'memberindirect' || + spec.facet_group === 'memberofindirect') { + + spec.read_only = true; + } + /* Link parameter is used to turn off the links in self-service mode. Default it to true if not set so that facets that would not otherwise @@ -824,6 +866,12 @@ exp.association_facet_pre_op = function(spec, context) { IPA.association_type_state_evaluator, IPA.read_only_state_evaluator); + entity.policies.add_policy(IPA.build({ + $factory: IPA.facet_update_policy, + source_facet: 'search', + dest_facet: spec.name + })); + return spec; }; @@ -1191,6 +1239,21 @@ exp.association_facet = IPA.association_facet = function (spec, no_init) { exp.attribute_facet_pre_op = function(spec, context) { + var entity = context.entity; + su.context_entity(spec, context); + + spec.title = spec.title || entity.metadata.label_singular; + spec.label = spec.label || entity.metadata.label_singular; + + var attr_metadata = IPA.get_entity_param(entity.name, spec.attribute); + spec.tab_label = spec.tab_label || attr_metadata.label; + + entity.policies.add_policy(IPA.build({ + $factory: IPA.facet_update_policy, + source_facet: 'search', + dest_facet: spec.name + })); + //default buttons and their actions spec.actions = spec.actions || []; spec.actions.unshift( @@ -1494,7 +1557,6 @@ phases.on('registration', function() { type: 'association', factory: exp.association_facet, pre_ops: [ - mod_facet.facet_preops.association, exp.association_facet_pre_op ] }); @@ -1503,7 +1565,6 @@ phases.on('registration', function() { type: 'attribute', factory: exp.attribute_facet, pre_ops: [ - mod_facet.facet_preops.attribute, exp.attribute_facet_pre_op ] }); diff --git a/install/ui/src/freeipa/details.js b/install/ui/src/freeipa/details.js index 6811a1dfb..149a04e43 100644 --- a/install/ui/src/freeipa/details.js +++ b/install/ui/src/freeipa/details.js @@ -30,10 +30,11 @@ define([ './jquery', './phases', './reg', + './spec_util', './text', './facet', './add'], - function(lang, builder, IPA, $, phases, reg, text, mod_facet) { + function(lang, builder, IPA, $, phases, reg, su, text) { var exp = {}; @@ -243,7 +244,13 @@ exp.facet_policies = IPA.facet_policies = function(spec) { exp.details_facet_pre_op = function(spec, context) { + var entity = context.entity; + su.context_entity(spec, context); + spec.name = spec.name || 'details'; + spec.title = spec.title || entity.metadata.label_singular; + spec.label = spec.label || entity.metadata.label_singular; + spec.tab_label = spec.tab_label || '@i18n:facets.details'; spec.actions = spec.actions || []; spec.actions.unshift( @@ -1241,7 +1248,6 @@ exp.register = function() { type: 'details', factory: IPA.details_facet, pre_ops: [ - mod_facet.facet_preops.details, exp.details_facet_pre_op ] }); diff --git a/install/ui/src/freeipa/facet.js b/install/ui/src/freeipa/facet.js index 46aea0cc3..80e867125 100644 --- a/install/ui/src/freeipa/facet.js +++ b/install/ui/src/freeipa/facet.js @@ -28,7 +28,6 @@ define([ 'dojo/on', 'dojo/Stateful', 'dojo/Evented', - './_base/metadata_provider', './_base/Singleton_registry', './builder', './ipa', @@ -41,7 +40,7 @@ define([ './dialog', './field', './widget' - ], function(declare, lang, construct, on, Stateful, Evented, metadata_provider, + ], function(declare, lang, construct, on, Stateful, Evented, Singleton_registry, builder, IPA, $, navigation, phases, reg, su, text) { /** @@ -1467,118 +1466,6 @@ exp.facet_group = IPA.facet_group = function(spec) { return that; }; -exp.facet_preops = { - search: function(spec, context) { - - var entity = context.entity; - su.context_entity(spec, context); - - spec.title = spec.title || entity.metadata.label; - spec.label = spec.label || entity.metadata.label; - spec.tab_label = spec.tab_label || '@i18n:facets.search'; - - return spec; - }, - - nested_search: function(spec, context) { - - var entity = context.entity; - su.context_entity(spec, context); - - spec.title = spec.title || entity.metadata.label_singular; - spec.label = spec.label || entity.metadata.label; - spec.tab_label = spec.tab_label || '@i18n:facets.search'; - - return spec; - }, - - details: function(spec, context) { - - var entity = context.entity; - su.context_entity(spec, context); - - spec.title = spec.title || entity.metadata.label_singular; - spec.label = spec.label || entity.metadata.label_singular; - spec.tab_label = spec.tab_label || '@i18n:facets.details'; - - return spec; - }, - - attribute: function(spec, context) { - - var entity = context.entity; - su.context_entity(spec, context); - - spec.title = spec.title || entity.metadata.label_singular; - spec.label = spec.label || entity.metadata.label_singular; - - var attr_metadata = IPA.get_entity_param(entity.name, spec.attribute); - spec.tab_label = spec.tab_label || attr_metadata.label; - - entity.policies.add_policy(IPA.build({ - $factory: IPA.facet_update_policy, - source_facet: 'search', - dest_facet: spec.name - })); - - return spec; - }, - - association: function(spec, context) { - - var 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; - }; - - var entity = context.entity; - su.context_entity(spec, context); - spec.entity = entity; - - var index = spec.name.indexOf('_'); - spec.attribute_member = spec.attribute_member || - spec.name.substring(0, index); - spec.other_entity = spec.other_entity || - spec.name.substring(index+1); - - spec.add_title = '@i18n:association.add.'+spec.attribute_member; - spec.remove_title = '@i18n:association.remove.'+spec.attribute_member; - - spec.facet_group = spec.facet_group || spec.attribute_member; - - spec.label = spec.label || entity.metadata.label_singular; - - spec.tab_label = spec.tab_label || - metadata_provider.get('@mo:'+spec.other_entity+'.label') || - spec.other_entity; - - if (has_indirect_attribute_member(spec)) { - - spec.indirect_attribute_member = spec.attribute_member + 'indirect'; - } - - if (spec.facet_group === 'memberindirect' || - spec.facet_group === 'memberofindirect') { - - spec.read_only = true; - } - - entity.policies.add_policy(IPA.build({ - $factory: IPA.facet_update_policy, - source_facet: 'search', - dest_facet: spec.name - })); - - return spec; - } -}; - exp.action = IPA.action = function(spec) { spec = spec || {}; diff --git a/install/ui/src/freeipa/search.js b/install/ui/src/freeipa/search.js index 8dc80cd55..e923316f6 100644 --- a/install/ui/src/freeipa/search.js +++ b/install/ui/src/freeipa/search.js @@ -26,15 +26,23 @@ define([ './jquery', './phases', './reg', + './spec_util', './text', './facet'], - function(IPA, $, phases, reg, text, mod_facet) { + function(IPA, $, phases, reg, su, text, mod_facet) { var exp = {}; exp.search_facet_pre_op = function(spec, context) { + var entity = context.entity; + su.context_entity(spec, context); + spec.name = spec.name || 'search'; + spec.title = spec.title || entity.metadata.label; + spec.label = spec.label || entity.metadata.label; + spec.tab_label = spec.tab_label || '@i18n:facets.search'; + spec.managed_entity = spec.managed_entity ? IPA.get_entity(spec.managed_entity) : spec.entity; spec.disable_breadcrumb = @@ -361,7 +369,14 @@ IPA.search_deleter_dialog = function(spec) { exp.nested_search_facet_preop = function(spec, context) { - spec.managed_entity = IPA.get_entity(spec.nested_entity); + var entity = context.entity; + su.context_entity(spec, context); + + spec.title = spec.title || entity.metadata.label_singular; + spec.label = spec.label || entity.metadata.label; + spec.tab_label = spec.tab_label || '@i18n:facets.search'; + + spec.managed_entity = spec.nested_entity; spec.disable_breadcrumb = false; spec.disable_facet_tabs = false; @@ -537,7 +552,6 @@ exp.register = function() { type: 'search', factory: IPA.search_facet, pre_ops: [ - mod_facet.facet_preops.search, exp.search_facet_pre_op ] }); @@ -546,7 +560,6 @@ exp.register = function() { type: 'nested_search', factory: IPA.nested_search_facet, pre_ops: [ - mod_facet.facet_preops.nested_search, exp.nested_search_facet_preop ] }); -- cgit