diff options
author | Petr Vobornik <pvoborni@redhat.com> | 2012-03-22 17:31:48 +0100 |
---|---|---|
committer | Petr Vobornik <pvoborni@redhat.com> | 2012-03-29 13:39:53 +0200 |
commit | 18a6ab356a159a88c5aab014f344eb14a9d38c81 (patch) | |
tree | 2bfa238383478b44615542e508b776065366a13e /install/ui/add.js | |
parent | bbe672a2aea1651a4a0eeca20b8339f0799f3431 (diff) | |
download | freeipa-18a6ab356a159a88c5aab014f344eb14a9d38c81.tar.gz freeipa-18a6ab356a159a88c5aab014f344eb14a9d38c81.tar.xz freeipa-18a6ab356a159a88c5aab014f344eb14a9d38c81.zip |
Inter-facet expiration
Problem:
When some facet perform action which modifies data, some other facet may become expired.
Example: User modifies group's description. Now group search facet contains old data and has to be refreshed.
Solution:
New event was added to facet: on_update. It should be executed when facet performs action which modifies data ie: details facet update or add entry to dnsrecord.
Then entity policies were introduced. Entity policies are a objects which are stored in entity.policies. They have similar function as facet_policies - performing communications and other functionality between facets. This way facets don't have to contain such logic and thus they aren't dependant on each other.
This patch adds IPA.facet_update_policy, IPA.adder_facet_update_policy, IPA.search_facet_update_policy, IPA.details_facet_update_policy.
IPA.facet_update_policy: On facets_created it bind itself to [current entity].[source facet].[event]. Default event is on_update. When the event is executed it sets expiration flag to [dest entity].[dest facet].
IPA.search_facet_update_policy: IPA.facet_update_policy where source facet = search, dest facet = details, dest entity = current entity. Its a default policy for updatein changes from search facet to details facet. Right now it isn't needed but it will be needed when action lists come to play.
IPA.details_facet_update_policy: same as IPA.search_facet_update_policy just reversed. Very important.
IPA.adder_facet_update_policy: similar functionality, just source of the event is dialog. Default event is added (new event in entity_adder_dialog).
Entity policies should be specified in entity's spec object. If none are specified a default ones are used. Default policies are: IPA.search_facet_update_policy and IPA.details_facet_update_policy.
https://fedorahosted.org/freeipa/ticket/2075
Diffstat (limited to 'install/ui/add.js')
-rw-r--r-- | install/ui/add.js | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/install/ui/add.js b/install/ui/add.js index 671d3f1fc..a9969a5cb 100644 --- a/install/ui/add.js +++ b/install/ui/add.js @@ -33,6 +33,7 @@ IPA.entity_adder_dialog = function(spec) { that.on_error = spec.on_error ; that.retry = typeof spec.retry !== 'undefined' ? spec.retry : true; that.command = null; + that.added = IPA.observer(); that.show_edit_page = spec.show_edit_page || show_edit_page; @@ -44,6 +45,7 @@ IPA.entity_adder_dialog = function(spec) { that.hide_message(); that.add( function(data, text_status, xhr) { + that.added.notify(); var facet = IPA.current_entity.get_facet(); facet.refresh(); that.close(); @@ -59,6 +61,7 @@ IPA.entity_adder_dialog = function(spec) { that.hide_message(); that.add( function(data, text_status, xhr) { + that.added.notify(); var label = that.entity.metadata.label_singular; var message = IPA.messages.dialogs.add_confirmation; message = message.replace('${entity}', label); @@ -79,6 +82,7 @@ IPA.entity_adder_dialog = function(spec) { that.hide_message(); that.add( function(data, text_status, xhr) { + that.added.notify(); that.close(); var result = data.result.result; that.show_edit_page(that.entity, result); |