summaryrefslogtreecommitdiffstats
path: root/install
diff options
context:
space:
mode:
authorPetr Vobornik <pvoborni@redhat.com>2012-06-27 18:15:11 +0200
committerPetr Vobornik <pvoborni@redhat.com>2012-06-29 11:56:04 +0200
commitd46687ea91809b35b91d2127b3412679bedbcabc (patch)
tree119db6e3114b56785d874b192219c20039d1b51c /install
parent5b7084aeb587cd06dcfae8ab6fa3b175e6704138 (diff)
downloadfreeipa-d46687ea91809b35b91d2127b3412679bedbcabc.tar.gz
freeipa-d46687ea91809b35b91d2127b3412679bedbcabc.tar.xz
freeipa-d46687ea91809b35b91d2127b3412679bedbcabc.zip
Refactored associatin facet to use facet buttons with actions
Association facet was refactored to use new concept of control buttons. It is the last facet type which don't use this concept. It fixes regression introduced by previous refactoring of table facet (delete button was never enabled). https://fedorahosted.org/freeipa/ticket/2876
Diffstat (limited to 'install')
-rw-r--r--install/ui/association.js108
-rw-r--r--install/ui/facet.js56
2 files changed, 119 insertions, 45 deletions
diff --git a/install/ui/association.js b/install/ui/association.js
index 6a1978061..0594ea764 100644
--- a/install/ui/association.js
+++ b/install/ui/association.js
@@ -2,6 +2,7 @@
/* Authors:
* Adam Young <ayoung@redhat.com>
+ * Petr Vobornik <pvoborni@redhat.com>
*
* Copyright (C) 2010 Red Hat
* see file 'COPYING' for use and warranty information
@@ -684,7 +685,7 @@ IPA.widget_factories['association_table'] = IPA.association_table_widget;
IPA.field_factories['association_table'] = IPA.association_table_field;
-IPA.association_facet = function (spec) {
+IPA.association_facet = function (spec, no_init) {
spec = spec || {};
@@ -698,7 +699,56 @@ IPA.association_facet = function (spec) {
spec.link = spec.link === undefined ? true : spec.link;
spec.managed_entity = IPA.get_entity(spec.other_entity);
- var that = IPA.table_facet(spec);
+
+ //default buttons and their actions
+ spec.actions = spec.actions || [];
+ spec.actions.unshift(
+ IPA.refresh_action,
+ {
+ name: 'remove',
+ hide_cond: ['read-only'],
+ show_cond: ['direct'],
+ enable_cond: ['item-selected'],
+ handler: function(facet) {
+ facet.show_remove_dialog();
+ }
+ },
+ {
+ name: 'add',
+ hide_cond: ['read-only'],
+ show_cond: ['direct'],
+ handler: function(facet) {
+ facet.show_add_dialog();
+ }
+ }
+ );
+
+ spec.control_buttons = spec.control_buttons || [];
+ spec.control_buttons.unshift(
+ {
+ name: 'refresh',
+ label: IPA.messages.buttons.refresh,
+ icon: 'reset-icon'
+ },
+ {
+ name: 'remove',
+ label: IPA.messages.buttons.remove,
+ icon: 'remove-icon'
+ },
+ {
+ name: 'add',
+ label: IPA.messages.buttons.add,
+ icon: 'add-icon'
+ });
+
+ spec.state = spec.state || {};
+ spec.state.evaluators = spec.state.evaluators || [];
+ spec.state.evaluators.push(
+ IPA.selected_state_evaluator,
+ IPA.association_type_state_evaluator,
+ IPA.read_only_state_evaluator);
+
+ var that = IPA.table_facet(spec, true);
that.attribute_member = spec.attribute_member;
that.indirect_attribute_member = spec.indirect_attribute_member;
@@ -795,44 +845,6 @@ IPA.association_facet = function (spec) {
that.facet_create_header(container);
- that.refresh_button = IPA.action_button({
- name: 'refresh',
- href: 'refresh',
- label: IPA.messages.buttons.refresh,
- icon: 'reset-icon',
- click: function() {
- that.refresh();
- return false;
- }
- }).appendTo(that.controls);
-
- if (!that.read_only) {
- that.remove_button = IPA.action_button({
- name: 'remove',
- label: IPA.messages.buttons.remove,
- icon: 'remove-icon',
- 'class': 'action-button-disabled',
- click: function() {
- if (!that.remove_button.hasClass('action-button-disabled')) {
- that.show_remove_dialog();
- }
- return false;
- }
- }).appendTo(that.controls);
-
- that.add_button = IPA.action_button({
- name: 'add',
- label: IPA.messages.buttons.add,
- icon: 'add-icon',
- click: function() {
- if (!that.add_button.hasClass('action-button-disabled')) {
- that.show_add_dialog();
- }
- return false;
- }
- }).appendTo(that.controls);
- }
-
if (that.indirect_attribute_member) {
var div = $('<div/>', {
@@ -883,6 +895,8 @@ IPA.association_facet = function (spec) {
'for': indirect_id
}).appendTo(div);
}
+
+ that.create_control_buttons(that.controls);
};
that.get_attribute_name = function() {
@@ -1025,12 +1039,8 @@ IPA.association_facet = function (spec) {
if (that.association_type == 'direct') {
if (that.direct_radio) that.direct_radio.attr('checked', true);
- if (that.add_button) that.add_button.css('display', 'inline-block');
- if (that.remove_button) that.remove_button.css('display', 'inline-block');
} else {
if (that.indirect_radio) that.indirect_radio.attr('checked', true);
- if (that.add_button) that.add_button.css('display', 'none');
- if (that.remove_button) that.remove_button.css('display', 'none');
}
var pkey = that.entity.get_primary_key();
@@ -1071,7 +1081,15 @@ IPA.association_facet = function (spec) {
return that.facet_needs_update();
};
- init();
+ that.init_association_facet = function() {
+
+ that.init_facet();
+ that.init_table_columns();
+ init();
+ };
+
+ if (!no_init) that.init_association_facet();
+
return that;
};
diff --git a/install/ui/facet.js b/install/ui/facet.js
index 550407bb7..3f6d559ea 100644
--- a/install/ui/facet.js
+++ b/install/ui/facet.js
@@ -1628,6 +1628,62 @@ IPA.self_service_state_evaluator = function(spec) {
return that;
};
+IPA.facet_attr_state_evaluator = function(spec) {
+
+ spec = spec || {};
+
+ spec.event = spec.event || 'post_load';
+
+ var that = IPA.state_evaluator(spec);
+ that.name = spec.name || 'facet_attr_se';
+ that.attribute = spec.attribute;
+ that.value = spec.value;
+ that.state_value = spec.state_value;
+
+ that.on_event = function() {
+
+ var old_state = that.state;
+ that.state = [];
+
+ var facet = this;
+
+ if (facet[that.attribute] === that.value) {
+ that.state.push(that.state_value);
+ }
+
+ that.notify_on_change(old_state);
+ };
+
+ return that;
+};
+
+IPA.read_only_state_evaluator = function(spec) {
+
+ spec = spec || {};
+
+ spec.name = spec.name || 'read_only_se';
+ spec.attribute = spec.attribute || 'read_only';
+ spec.state_value = spec.state_value || 'read-only';
+ spec.value = spec.value !== undefined ? spec.value : true;
+
+ var that = IPA.facet_attr_state_evaluator(spec);
+ return that;
+};
+
+IPA.association_type_state_evaluator = function(spec) {
+
+
+ spec = spec || {};
+
+ spec.name = spec.name || 'association_type_se';
+ spec.attribute = spec.attribute || 'association_type';
+ spec.state_value = spec.state_value || 'direct';
+ spec.value = spec.value !== undefined ? spec.value : 'direct';
+
+ var that = IPA.facet_attr_state_evaluator(spec);
+ return that;
+};
+
IPA.action_button_widget = function(spec) {
spec = spec || {};