summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--install/static/associate.js52
-rw-r--r--install/static/entity.js19
-rw-r--r--install/static/group.js6
-rw-r--r--install/static/host.js4
-rw-r--r--install/static/hostgroup.js1
-rw-r--r--install/static/ipa.js7
-rw-r--r--install/static/rolegroup.js4
-rw-r--r--install/static/service.js4
-rw-r--r--install/static/user.js7
9 files changed, 78 insertions, 26 deletions
diff --git a/install/static/associate.js b/install/static/associate.js
index c3453e96..826641a7 100644
--- a/install/static/associate.js
+++ b/install/static/associate.js
@@ -42,14 +42,14 @@ function SerialAssociator(form, manyObjPkeys, on_success)
var args = [manyObjPkey];
ipa_cmd( form.method,args, options ,
- function(response){
- if (response.error){
- alert("error adding member: "+response.error.message);
+ function(data, text_status, xhr) {
+ if (data.error){
+ alert("error adding member: "+data.error.message);
}else{
associator.associateNext();
}
},
- function(response){
+ function(xhr, text_status, error_thrown) {
alert("associateFailure");
},
form.manyObj );
@@ -85,14 +85,14 @@ function BulkAssociator(form, manyObjPkeys, on_success)
var args = [form.pkey];
ipa_cmd( form.method,args, options ,
- function(response){
- if (response.error){
- alert("error adding member: "+response.error.message);
+ function(data, text_status, xhr) {
+ if (data.error){
+ alert("error adding member: "+data.error.message);
}else{
associator.on_success();
}
},
- function(response){
+ function(xhr, text_status, error_thrown) {
alert("associateFailure");
},
form.oneObj );
@@ -124,7 +124,7 @@ function AssociationForm(oneObj, pkey, manyObj, on_success, associatorConstructo
if (associatorConstructor)
this.associatorConstructor = associatorConstructor;
else
- this.associatorConstructor = SerialAssociator;
+ this.associatorConstructor = BulkAssociator;
this.setup = function() {
var label = ipa_objs[form.manyObj].label;
@@ -212,7 +212,7 @@ function AssociationForm(oneObj, pkey, manyObj, on_success, associatorConstructo
/**
A modfied version of search. It shows the associations for an object.
*/
-function AssociationList(obj, pkey, manyObj, associationColumns, jobj)
+function AssociationList(obj, pkey, manyObj, associationColumns, jobj, associationConstructor, method)
{
var form = this;
@@ -220,20 +220,22 @@ function AssociationList(obj, pkey, manyObj, associationColumns, jobj)
this.pkey = pkey;
this.associationColumns = associationColumns;
this.manyObj = manyObj;
- this.parentTab = jobj;
+ this.container = jobj;
+ this.associationConstructor = associationConstructor;
+ this.method = method;
this.refresh = function() {
- function refresh_on_success(userData) {
- var tbody = this.parentTab.find('.search-table tbody');
- tbody.empty();
- var associationList = userData.result.result[this.associationColumns[0].column];
- for (var j = 0; j < associationList.length; j++){
+ function refresh_on_success(data, text_status, xhr) {
+ var tbody = form.container.find('.search-table tbody');
+ tbody.empty();
+ var associationList = data.result.result[form.associationColumns[0].column];
+ for (var j = 0; j < associationList.length; j++){
var row = $("<tr/>").appendTo(tbody);
for (var k = 0; k < associationColumns.length ;k++){
- var column = this.associationColumns[k].column;
+ var column = form.associationColumns[k].column;
$("<td></td>",{
- html: userData.result.result[column][j]
+ html: data.result.result[column][j]
}).appendTo(row);
}
}
@@ -249,17 +251,17 @@ function AssociationList(obj, pkey, manyObj, associationColumns, jobj)
}
this.setup = function() {
- association_list_create(this.obj, this.parentTab);
- this.parentTab.find(".search-filter").css("display", "none");
- this.parentTab.find(".search-buttons").html("");
+ association_list_create(this.obj, this.container);
+ this.container.find(".search-filter").css("display", "none");
+ this.container.find(".search-buttons").html("");
$("<input/>", {
type: 'button',
value: 'enroll',
click: function() {
form.show_enrollment_dialog();
}
- }).appendTo(this.parentTab.find(".search-buttons"));
- var header = $("<tr></tr>").appendTo(this.parentTab.find('.search-table thead:last'));
+ }).appendTo(this.container.find(".search-buttons"));
+ var header = $("<tr></tr>").appendTo(this.container.find('.search-table thead:last'));
for (var i =0 ; i != associationColumns.length ;i++){
$("<th></th>",{
html: associationColumns[i].title
@@ -277,7 +279,9 @@ function AssociationList(obj, pkey, manyObj, associationColumns, jobj)
function() {
form.refresh();
enrollment_dialog.close();
- }
+ },
+ this.associationConstructor,
+ this.method
);
enrollment_dialog.setup();
}
diff --git a/install/static/entity.js b/install/static/entity.js
index 5be67a39..820c5670 100644
--- a/install/static/entity.js
+++ b/install/static/entity.js
@@ -1,5 +1,6 @@
/* Authors:
* Pavel Zuna <pzuna@redhat.com>
+ * Endi S. Dewata <edewata@redhat.com>
*
* Copyright (C) 2010 Red Hat
* see file 'COPYING' for use and warranty information
@@ -23,6 +24,7 @@
var ipa_entity_search_list = {};
var ipa_entity_add_list = {};
var ipa_entity_details_list = {};
+var ipa_entity_association_list = {};
/* use this to track individual changes between two hashchange events */
var window_hash_cache = {};
@@ -42,6 +44,11 @@ function ipa_entity_set_details_definition(obj_name, data)
ipa_entity_details_list[obj_name] = data;
}
+function ipa_entity_set_association_definition(obj_name, data)
+{
+ ipa_entity_association_list[obj_name] = data;
+}
+
function ipa_entity_setup(container)
{
var id = container.attr('id');
@@ -151,7 +158,17 @@ function _ipa_entity_setup(jobj) {
column: attr + '_' + enroll_obj_name
}
];
- var frm = new AssociationList(obj_name, pkey, enroll_obj_name, columns, jobj);
+
+ var association = ipa_entity_association_list[obj_name];
+ var association_config = association ? association[enroll_obj_name] : null;
+ var associator = association_config ? association_config.associator : null;
+ var method = association_config ? association_config.method : null;
+
+ var frm = new AssociationList(
+ obj_name, pkey, enroll_obj_name, columns, jobj,
+ associator, method
+ );
+
ipa_entity_generate_views(obj_name, jobj, switch_view);
frm.setup();
};
diff --git a/install/static/group.js b/install/static/group.js
index 4c2c5b0a..591184de 100644
--- a/install/static/group.js
+++ b/install/static/group.js
@@ -44,6 +44,12 @@ ipa_entity_set_details_definition('group', [
]]
]);
+ipa_entity_set_association_definition('group', {
+ 'netgroup': { associator: SerialAssociator },
+ 'rolegroup': { associator: SerialAssociator },
+ 'taskgroup': { associator: SerialAssociator }
+});
+
function f_posix(dlg, mode)
{
function checkbox_on_click() {
diff --git a/install/static/host.js b/install/static/host.js
index 432f2f75..d19ac0d0 100644
--- a/install/static/host.js
+++ b/install/static/host.js
@@ -42,3 +42,7 @@ ipa_entity_set_details_definition('host', [
]]
]);
+ipa_entity_set_association_definition('host', {
+ 'hostgroup': { associator: SerialAssociator },
+ 'rolegroup': { associator: SerialAssociator }
+});
diff --git a/install/static/hostgroup.js b/install/static/hostgroup.js
index e3863fe3..fd062dc5 100644
--- a/install/static/hostgroup.js
+++ b/install/static/hostgroup.js
@@ -39,4 +39,3 @@ ipa_entity_set_details_definition('hostgroup', [
['description', 'Description', null]
]]
]);
-
diff --git a/install/static/ipa.js b/install/static/ipa.js
index 9e84bb9e..31c91204 100644
--- a/install/static/ipa.js
+++ b/install/static/ipa.js
@@ -83,6 +83,13 @@ function ipa_cmd(name, args, options, win_callback, fail_callback, objname)
}
ipa_error_handler(xhr, text_status, error_thrown);
+ } else if (data.error) {
+ var error_thrown = {
+ name: 'IPA Error '+data.error.code,
+ message: data.error.message
+ }
+ ipa_error_handler(xhr, text_status, error_thrown);
+
} else if (win_callback) {
win_callback(data, text_status, xhr);
}
diff --git a/install/static/rolegroup.js b/install/static/rolegroup.js
index 0297554d..64728ab2 100644
--- a/install/static/rolegroup.js
+++ b/install/static/rolegroup.js
@@ -39,3 +39,7 @@ ipa_entity_set_details_definition('rolegroup', [
['description', 'Description', null],
]]
]);
+
+ipa_entity_set_association_definition('rolegroup', {
+ 'taskgroup': { associator: SerialAssociator }
+});
diff --git a/install/static/service.js b/install/static/service.js
index c12e5636..43ef968a 100644
--- a/install/static/service.js
+++ b/install/static/service.js
@@ -47,3 +47,7 @@ function service_add_krbprincipalname(add_dialog, flag) {
}
return null;
}
+
+ipa_entity_set_association_definition('service', {
+ 'host': { method: 'add_host' }
+});
diff --git a/install/static/user.js b/install/static/user.js
index 2698c8b0..d42d32d5 100644
--- a/install/static/user.js
+++ b/install/static/user.js
@@ -74,6 +74,13 @@ ipa_entity_set_details_definition('user', [
]]
]);
+ipa_entity_set_association_definition('user', {
+ 'group': { associator: SerialAssociator },
+ 'netgroup': { associator: SerialAssociator },
+ 'rolegroup': { associator: SerialAssociator },
+ 'taskgroup': { associator: SerialAssociator }
+});
+
/* Account status Toggle button */
function toggle_on_click(obj)