mirror of
https://salsa.debian.org/freeipa-team/freeipa.git
synced 2025-02-25 18:55:28 -06:00
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
This commit is contained in:
parent
5b7084aeb5
commit
d46687ea91
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
/* Authors:
|
/* Authors:
|
||||||
* Adam Young <ayoung@redhat.com>
|
* Adam Young <ayoung@redhat.com>
|
||||||
|
* Petr Vobornik <pvoborni@redhat.com>
|
||||||
*
|
*
|
||||||
* Copyright (C) 2010 Red Hat
|
* Copyright (C) 2010 Red Hat
|
||||||
* see file 'COPYING' for use and warranty information
|
* 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.field_factories['association_table'] = IPA.association_table_field;
|
||||||
|
|
||||||
|
|
||||||
IPA.association_facet = function (spec) {
|
IPA.association_facet = function (spec, no_init) {
|
||||||
|
|
||||||
spec = spec || {};
|
spec = spec || {};
|
||||||
|
|
||||||
@ -698,7 +699,56 @@ IPA.association_facet = function (spec) {
|
|||||||
spec.link = spec.link === undefined ? true : spec.link;
|
spec.link = spec.link === undefined ? true : spec.link;
|
||||||
spec.managed_entity = IPA.get_entity(spec.other_entity);
|
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.attribute_member = spec.attribute_member;
|
||||||
that.indirect_attribute_member = spec.indirect_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.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) {
|
if (that.indirect_attribute_member) {
|
||||||
|
|
||||||
var div = $('<div/>', {
|
var div = $('<div/>', {
|
||||||
@ -883,6 +895,8 @@ IPA.association_facet = function (spec) {
|
|||||||
'for': indirect_id
|
'for': indirect_id
|
||||||
}).appendTo(div);
|
}).appendTo(div);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
that.create_control_buttons(that.controls);
|
||||||
};
|
};
|
||||||
|
|
||||||
that.get_attribute_name = function() {
|
that.get_attribute_name = function() {
|
||||||
@ -1025,12 +1039,8 @@ IPA.association_facet = function (spec) {
|
|||||||
|
|
||||||
if (that.association_type == 'direct') {
|
if (that.association_type == 'direct') {
|
||||||
if (that.direct_radio) that.direct_radio.attr('checked', true);
|
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 {
|
} else {
|
||||||
if (that.indirect_radio) that.indirect_radio.attr('checked', true);
|
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();
|
var pkey = that.entity.get_primary_key();
|
||||||
@ -1071,7 +1081,15 @@ IPA.association_facet = function (spec) {
|
|||||||
return that.facet_needs_update();
|
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;
|
return that;
|
||||||
};
|
};
|
||||||
|
@ -1628,6 +1628,62 @@ IPA.self_service_state_evaluator = function(spec) {
|
|||||||
return that;
|
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) {
|
IPA.action_button_widget = function(spec) {
|
||||||
|
|
||||||
spec = spec || {};
|
spec = spec || {};
|
||||||
|
Loading…
Reference in New Issue
Block a user