diff --git a/webgui/include/ajax/functions/AdminUserGroups.php b/webgui/include/ajax/functions/AdminUserGroups.php new file mode 100644 index 0000000000000000000000000000000000000000..24626e4c9751aa69c0bfa0284ed4659613978b6d --- /dev/null +++ b/webgui/include/ajax/functions/AdminUserGroups.php @@ -0,0 +1,53 @@ +<?php + +include_once("include/db.php"); + + +# Return list of attributes +function getAdminUserGroups($params) { + global $db; + + # Filters and sorts are the same here + $filtersorts = array( + 'ID' => 'users_to_groups.GroupID', + 'Name' => 'groups.Name' + ); + + $resultArray = array(); + $res = DBDo("SELECT GroupID FROM users_to_groups WHERE UserID = ?",$params[0]); + if ($res !== FALSE) { + while ($row = $res->fetchObject()) { + $item = array(); + $item['ID'] = $row->groupid; + + $res2 = DBDo("SELECT Name FROM groups WHERE ID = ?",$item['ID']); + if ($res !== FALSE) { + $row = $res->fetchObject(); + $item['Name'] = $row->name; + if (isset($item['Name'])) { + array_push($resultArray,$item); + } + } + } + } + + # If STH is blank, return the error back to whoever requested the data + if ($res == FALSE) { + return $res; + } + + # loop through rows + while ($row = $sth->fetchObject()) { + $item = array(); + + $item['ID'] = $row->groupid; + $item['Name'] = $row->name; + + # push this row onto array + array_push($resultArray,$item); + } + + return array($resultArray,$numResults); +} + +?> diff --git a/webgui/js/app/windows/AdminUserGroups.js b/webgui/js/app/windows/AdminUserGroups.js new file mode 100644 index 0000000000000000000000000000000000000000..77de8827879c8b76560bca542711294ae43d4433 --- /dev/null +++ b/webgui/js/app/windows/AdminUserGroups.js @@ -0,0 +1,215 @@ + + +function showAdminUserGroupsWindow(id) { + + var AdminUserGroupsWindow = new Ext.ux.GenericGridWindow( + // Window config + { + title: "Groups", + + width: 600, + height: 335, + + minWidth: 600, + minHeight: 335, + }, + // Grid config + { + // Inline toolbars + tbar: [ + { + text:'Add', + tooltip:'Add group', + iconCls:'add', + handler: function() { + showAdminUserGroupAddEditWindow(); + } + }, + '-', + { + text:'Remove', + tooltip:'Remove group', + iconCls:'remove', + handler: function() { + var selectedItem = AdminUserGroupsWindow.getComponent('gridpanel').getSelectionModel().getSelected(); + // Check if we have selected item + if (selectedItem) { + // If so display window + showAdminUserGroupRemoveWindow(AdminUserGroupsWindow,selectedItem.data.ID); + } else { + AdminUserGroupsWindow.getEl().mask(); + + // Display error + Ext.Msg.show({ + title: "Nothing selected", + msg: "No group selected", + icon: Ext.MessageBox.ERROR, + buttons: Ext.Msg.CANCEL, + modal: false, + fn: function() { + AdminUserGroupsWindow.getEl().unmask(); + } + }); + } + } + } + ], + // Column model + colModel: new Ext.grid.ColumnModel([ + { + id: 'ID', + header: "ID", + sortable: true, + dataIndex: 'ID' + }, + { + header: "Name", + sortable: true, + dataIndex: 'Name' + } + ]), + autoExpandColumn: 'Name' + }, + // Store config + { + baseParams: { + ID: id, + SOAPUsername: globalConfig.soap.username, + SOAPPassword: globalConfig.soap.password, + SOAPAuthType: globalConfig.soap.authtype, + SOAPModule: 'AdminUserGroups', + SOAPFunction: 'getAdminUserGroups', + SOAPParams: 'ID,__search' + } + }, + // Filter config + { + filters: [ + {type: 'numeric', dataIndex: 'ID'}, + {type: 'string', dataIndex: 'Name'} + ] + } + ); + + AdminUserGroupsWindow.show(); +} + + +// Display edit/add form +function showAdminGroupAddEditWindow(id) { + + var submitAjaxConfig; + + + // We doing an update + if (id) { + submitAjaxConfig = { + ID: id, + SOAPFunction: 'updateAdminGroup', + SOAPParams: + '0:ID,'+ + '0:Name' + }; + + // We doing an Add + } else { + submitAjaxConfig = { + SOAPFunction: 'createAdminGroup', + SOAPParams: + '0:Name' + }; + } + + // Create window + var adminGroupFormWindow = new Ext.ux.GenericFormWindow( + // Window config + { + title: "Group 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: 'AdminGroups' + }, + items: [ + { + fieldLabel: 'Name', + name: 'Name', + vtype: 'usernamePart', + maskRe: usernamePartRe, + allowBlank: false + }, + ], + }, + // Submit button config + submitAjaxConfig + ); + + adminGroupFormWindow.show(); + + if (id) { + adminGroupFormWindow.getComponent('formpanel').load({ + params: { + ID: id, + SOAPUsername: globalConfig.soap.username, + SOAPPassword: globalConfig.soap.password, + SOAPAuthType: globalConfig.soap.authtype, + SOAPModule: 'AdminGroups', + SOAPFunction: 'getAdminGroup', + SOAPParams: 'ID' + } + }); + } +} + + + + +// Display edit/add form +function showAdminGroupRemoveWindow(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 group?", + 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: 'AdminGroups', + SOAPFunction: 'removeAdminGroup', + SOAPParams: 'ID' + } + }); + + + // Unmask if user answered no + } else { + parent.getEl().unmask(); + } + } + }); +} +