diff --git a/webgui/include/ajax/functions/AdminRealmAttributes.php b/webgui/include/ajax/functions/AdminRealmAttributes.php new file mode 100644 index 0000000000000000000000000000000000000000..44e941108999ea3788177d1298b54958b6a75bdc --- /dev/null +++ b/webgui/include/ajax/functions/AdminRealmAttributes.php @@ -0,0 +1,108 @@ +<?php + +include_once("include/db.php"); + +# Add user attribute +function addAdminRealmAttribute($params) { + global $db; + + $res = DBDo("INSERT INTO realm_attributes (RealmID,Name) VALUES (?,?)",array($params[0]['RealmID'],$params[0]['Name'])); + if (!is_numeric($res)) { + return $res; + } + + return NULL; +} + +# Remove user attribute +function removeAdminRealmAttribute($params) { + global $db; + + $res = DBDo("DELETE FROM realm_attributes WHERE ID = ?",array($params[0])); + if (!is_numeric($res)) { + return $res; + } + + return NULL; +} + +# Edit attribute +function updateAdminRealmAttribute($params) { + global $db; + + $res = DBDo("UPDATE realm_attributes SET Name = ? WHERE ID = ?",array($params[0]['Name'],$params[0]['ID'])); + if (!is_numeric($res)) { + return $res; + } + + return NULL; +} + +# Return specific attribute row +function getAdminRealmAttribute($params) { + global $db; + + + $res = DBSelect("SELECT ID, Name FROM realm_attributes WHERE ID = ?",array($params[0])); + if (!is_object($res)) { + return $res; + } + + $resultArray = array(); + + $row = $res->fetchObject(); + + $resultArray['ID'] = $row->id; + $resultArray['Name'] = $row->name; + + return $resultArray; +} + +# Return list of attributes +function getAdminRealmAttributes($params) { + global $db; + + # Filters and sorts are the same here + $filtersorts = array( + 'ID' => 'realm_attributes.ID', + 'Name' => 'realm_attributes.Name', + 'Operator' => 'realm_attributes.Operator', + 'Value' => 'realm_attributes.Value', + 'Disabled' => 'realm_attributes.Disabled' + ); + + $res = DBSelectSearch(" + SELECT + ID, Name, Operator, Value, Disabled + FROM + realm_attributes + WHERE + RealmID = ".DBQuote($params[0])." + ",$params[1],$filtersorts,$filtersorts); + + $sth = $res[0]; $numResults = $res[1]; + # If STH is blank, return the error back to whoever requested the data + if (!isset($sth)) { + return $res; + } + + $resultArray = array(); + + # loop through rows + while ($row = $sth->fetchObject()) { + $item = array(); + + $item['ID'] = $row->id; + $item['Name'] = $row->name; + $item['Operator'] = $row->operator; + $item['Value'] = $row->value; + $item['Disabled'] = $row->disabled; + + # push this row onto array + array_push($resultArray,$item); + } + + return array($resultArray,$numResults); +} + +?> diff --git a/webgui/js/app/windows/AdminRealmAttributes.js b/webgui/js/app/windows/AdminRealmAttributes.js new file mode 100644 index 0000000000000000000000000000000000000000..b6558c57cdf93894828a62e15510867ff3fc2620 --- /dev/null +++ b/webgui/js/app/windows/AdminRealmAttributes.js @@ -0,0 +1,263 @@ + + +function showAdminRealmAttributesWindow(realmID) { + + var AdminRealmAttributesWindow = new Ext.ux.GenericGridWindow( + // Window config + { + title: "Attributes", + + width: 600, + height: 335, + + minWidth: 600, + minHeight: 335, + }, + // Grid config + { + // Inline toolbars + tbar: [ + { + text:'Add', + tooltip:'Add attribute', + iconCls:'add', + handler: function() { + showAdminRealmAttributeAddEditWindow(realmID); + } + }, + '-', + { + text:'Edit', + tooltip:'Edit attribute', + iconCls:'edit', + handler: function() { + var selectedItem = AdminRealmAttributesWindow.getComponent('gridpanel').getSelectionModel().getSelected(); + // Check if we have selected item + if (selectedItem) { + // If so display window + showAdminRealmAttributeAddEditWindow(realmID,selectedItem.data.ID); + } else { + AdminRealmAttributesWindow.getEl().mask(); + + // Display error + Ext.Msg.show({ + title: "Nothing selected", + msg: "No attribute selected", + icon: Ext.MessageBox.ERROR, + buttons: Ext.Msg.CANCEL, + modal: false, + fn: function() { + AdminRealmAttributesWindow.getEl().unmask(); + } + }); + } + } + }, + '-', + { + text:'Remove', + tooltip:'Remove attribute', + iconCls:'remove', + handler: function() { + var selectedItem = AdminRealmAttributesWindow.getComponent('gridpanel').getSelectionModel().getSelected(); + // Check if we have selected item + if (selectedItem) { + // If so display window + showAdminRealmAttributeRemoveWindow(AdminRealmAttributesWindow,selectedItem.data.ID); + } else { + AdminRealmAttributesWindow.getEl().mask(); + + // Display error + Ext.Msg.show({ + title: "Nothing selected", + msg: "No attribute selected", + icon: Ext.MessageBox.ERROR, + buttons: Ext.Msg.CANCEL, + modal: false, + fn: function() { + AdminRealmAttributesWindow.getEl().unmask(); + } + }); + } + } + } + ], + // Column model + colModel: new Ext.grid.ColumnModel([ + { + id: 'ID', + header: "ID", + sortable: true, + dataIndex: 'ID' + }, + { + header: "Name", + sortable: true, + dataIndex: 'Name' + }, + { + header: "Operator", + sortable: true, + dataIndex: 'Operator' + }, + { + header: "Value", + sortable: true, + dataIndex: 'Value' + }, + { + header: "Disabled", + sortable: true, + dataIndex: 'Disabled' + } + ]), + autoExpandColumn: 'Name' + }, + // Store config + { + baseParams: { + ID: realmID, + SOAPUsername: globalConfig.soap.username, + SOAPPassword: globalConfig.soap.password, + SOAPAuthType: globalConfig.soap.authtype, + SOAPModule: 'AdminRealmAttributes', + SOAPFunction: 'getAdminRealmAttributes', + SOAPParams: 'ID,__search' + } + }, + // Filter config + { + filters: [ + {type: 'numeric', dataIndex: 'ID'}, + {type: 'string', dataIndex: 'Name'}, + {type: 'string', dataIndex: 'Operator'}, + {type: 'string', dataIndex: 'Value'}, + {type: 'boolean', dataIndex: 'Disabled'} + ] + } + ); + + AdminRealmAttributesWindow.show(); +} + + +// Display edit/add form +function showAdminRealmAttributeAddEditWindow(realmID,attrID) { + + var submitAjaxConfig; + + + // We doing an update + if (attrID) { + submitAjaxConfig = { + ID: attrID, + SOAPFunction: 'updateAdminRealmAttribute', + SOAPParams: + '0:ID,'+ + '0:Name' + }; + + // We doing an Add + } else { + submitAjaxConfig = { + RealmID: realmID, + SOAPFunction: 'addAdminRealmAttribute', + SOAPParams: + '0:RealmID,'+ + '0:Name' + }; + } + + // Create window + var adminRealmAttributesFormWindow = new Ext.ux.GenericFormWindow( + // Window config + { + title: "Attribute Information", + + width: 475, + height: 260, + + minWidth: 475, + minHeight: 260 + }, + // Form panel config + { + labelWidth: 85, + baseParams: { + SOAPUsername: globalConfig.soap.username, + SOAPPassword: globalConfig.soap.password, + SOAPAuthType: globalConfig.soap.authtype, + SOAPModule: 'AdminRealmAttributes' + }, + items: [ + { + fieldLabel: 'Name', + name: 'Name', + vtype: 'usernamePart', + maskRe: usernamePartRe, + allowBlank: false + }, + ], + }, + // Submit button config + submitAjaxConfig + ); + + adminRealmAttributesFormWindow.show(); + + if (attrID) { + adminRealmAttributesFormWindow.getComponent('formpanel').load({ + params: { + ID: attrID, + SOAPUsername: globalConfig.soap.username, + SOAPPassword: globalConfig.soap.password, + SOAPAuthType: globalConfig.soap.authtype, + SOAPModule: 'AdminRealmAttributes', + SOAPFunction: 'getAdminRealmAttribute', + SOAPParams: 'ID' + } + }); + } +} + + + + +// Display remove form +function showAdminRealmAttributeRemoveWindow(parent,id) { + // Mask parent window + parent.getEl().mask(); + + // Display remove confirm window + Ext.Msg.show({ + title: "Confirm removal", + msg: "Are you very sure you wish to remove this attribute?", + icon: Ext.MessageBox.ERROR, + buttons: Ext.Msg.YESNO, + modal: false, + fn: function(buttonId,text) { + // Check if user clicked on 'yes' button + if (buttonId == 'yes') { + + // Do ajax request + uxAjaxRequest(parent,{ + params: { + ID: id, + SOAPUsername: globalConfig.soap.username, + SOAPPassword: globalConfig.soap.password, + SOAPAuthType: globalConfig.soap.authtype, + SOAPModule: 'AdminRealmAttributes', + SOAPFunction: 'removeAdminRealmAttribute', + SOAPParams: 'ID' + } + }); + + + // Unmask if user answered no + } else { + parent.getEl().unmask(); + } + } + }); +} + diff --git a/webgui/js/app/windows/AdminRealms.js b/webgui/js/app/windows/AdminRealms.js index 7ccee62e43eb85730e99e3dec605d5c90be38b7e..e1317f0b4f7580de21c6c6bb1f77bd90cb062c7b 100644 --- a/webgui/js/app/windows/AdminRealms.js +++ b/webgui/js/app/windows/AdminRealms.js @@ -82,15 +82,15 @@ function showAdminRealmWindow() { }, '-', { - text:'Members', - tooltip:'Realm members', + text:'Attributes', + tooltip:'Realm attributes', iconCls:'logs', handler: function() { var selectedItem = AdminRealmWindow.getComponent('gridpanel').getSelectionModel().getSelected(); // Check if we have selected item if (selectedItem) { // If so display window - showAdminRealmMembersWindow(selectedItem.data.ID); + showAdminRealmAttributesWindow(selectedItem.data.ID); } else { AdminRealmWindow.getEl().mask();