Skip to content
Snippets Groups Projects
Commit 2313b834 authored by Robert Anderson's avatar Robert Anderson
Browse files

Some support for listing group members

Cosmetic changes
parent d5d06848
No related branches found
No related tags found
No related merge requests found
......@@ -2,14 +2,18 @@
# Requires / Includes
include_once("include/ajax/json.php");
include_once("include/ajax/functions/AdminUsers.php");
include_once("include/ajax/functions/AdminUserAttributes.php");
include_once("include/ajax/functions/AdminUserGroups.php");
include_once("include/ajax/functions/AdminGroups.php");
include_once("include/ajax/functions/AdminGroupAttributes.php");
include_once("include/ajax/functions/AdminGroupMembers.php");
include_once("include/ajax/functions/AdminRealms.php");
include_once("include/ajax/functions/WiSPLocations.php");
include_once("include/ajax/functions/WiSPUsers.php");
include_once("include/ajax/functions/AdminUserAttributes.php");
include_once("include/ajax/functions/AdminUserGroups.php");
include_once("include/ajax/functions/AdminGroupAttributes.php");
define('RES_OK',0);
define('RES_ERR',-1);
......@@ -151,7 +155,34 @@
switch ($function) {
# getAdminUserLogs.js functions
# AdminGroupMembers.js functions
case "getAdminGroupMembers":
$res = getAdminGroupMembers($soapParams);
$rawData = $res[0]; $numResults = $res[1];
$res = new json_response;
$res->setID('ID');
$res->addField('ID','int');
$res->addField('Name','string');
$res->addField('Disabled','boolean');
$res->parseArray($rawData);
$res->setDatasetSize($numResults);
echo json_encode($res->export());
break;
case "removeAdminGroupMember":
$res = removeAdminGroupMember($soapParams);
if (isset($res)) {
ajaxException($res);
}
break;
# AdminUserLogs.js functions
case "getAdminUserLogs":
$rawData = getAdminUserLogs($soapParams);
......
<?php
include_once("include/db.php");
# Add group attribute
function addAdminGroupMember($params) {
global $db;
$res = DBDo("INSERT INTO group_attributes (GroupID,Name) VALUES (?,?)",array($params[0]['GroupID'],$params[0]['Name']));
if (!is_numeric($res)) {
return $res;
}
return NULL;
}
# Remove group attribute
function removeAdminGroupMember($params) {
global $db;
$res = DBDo("DELETE FROM users_to_groups WHERE ID = ?",array($params[0]));
if (!is_numeric($res)) {
return $res;
}
return NULL;
}
# Edit attribute
function updateAdminGroupMember($params) {
global $db;
$res = DBDo("UPDATE group_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 getAdminGroupMember($params) {
global $db;
$res = DBSelect("SELECT ID, Name FROM group_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 getAdminGroupMembers($params) {
global $db;
# Filters and sorts are the same here
$filtersorts = array(
'ID' => 'users_to_groups.ID',
'Name' => 'group_attributes.Name',
'Disabled' => 'group_attributes.Disabled'
);
$res = DBSelectSearch("
SELECT
ID, Name, Operator, Value, Disabled
FROM
group_attributes
WHERE
GroupID = ".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['Disabled'] = $row->disabled;
# push this row onto array
array_push($resultArray,$item);
}
return array($resultArray,$numResults);
}
?>
......@@ -69,19 +69,24 @@
<script type="text/javascript" src="js/app/menus.js"></script>
<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Windows...';</script>
<script type="text/javascript" src="js/app/windows/WiSPResellers.js"></script>
<script type="text/javascript" src="js/app/windows/WiSPUsers.js"></script>
<script type="text/javascript" src="js/app/windows/WiSPUserLogs.js"></script>
<script type="text/javascript" src="js/app/windows/WiSPUserTopups.js"></script>
<script type="text/javascript" src="js/app/windows/WiSPLocations.js"></script>
<script type="text/javascript" src="js/app/windows/AdminUsers.js"></script>
<script type="text/javascript" src="js/app/windows/AdminGroups.js"></script>
<script type="text/javascript" src="js/app/windows/AdminGroupAttributes.js"></script>
<script type="text/javascript" src="js/app/windows/WiSPResellers.js"></script>
<script type="text/javascript" src="js/app/windows/AdminRealms.js"></script>
<script type="text/javascript" src="js/app/windows/AdminUsers.js"></script>
<script type="text/javascript" src="js/app/windows/AdminUserLogs.js"></script>
<script type="text/javascript" src="js/app/windows/AdminUserAttributes.js"></script>
<script type="text/javascript" src="js/app/windows/AdminUserGroups.js"></script>
<script type="text/javascript" src="js/app/windows/AdminGroups.js"></script>
<script type="text/javascript" src="js/app/windows/AdminGroupAttributes.js"></script>
<script type="text/javascript" src="js/app/windows/AdminGroupMembers.js"></script>
<script type="text/javascript">document.getElementById('loading-msg').innerHTML = 'Layout...';</script>
<script type="text/javascript" src="js/app/main-layout.js"></script>
......
function showAdminGroupMembersWindow(groupID) {
var AdminGroupMembersWindow = new Ext.ux.GenericGridWindow(
// Window config
{
title: "Members",
width: 600,
height: 335,
minWidth: 600,
minHeight: 335,
},
// Grid config
{
// Inline toolbars
tbar: [
{
text:'Add',
tooltip:'Add member',
iconCls:'add',
handler: function() {
showAdminGroupMemberAddEditWindow(groupID);
}
},
'-',
{
text:'Edit',
tooltip:'Edit member',
iconCls:'edit',
handler: function() {
var selectedItem = AdminGroupMembersWindow.getComponent('gridpanel').getSelectionModel().getSelected();
// Check if we have selected item
if (selectedItem) {
// If so display window
showAdminGroupMemberAddEditWindow(groupID,selectedItem.data.ID);
} else {
AdminGroupMembersWindow.getEl().mask();
// Display error
Ext.Msg.show({
title: "Nothing selected",
msg: "No member selected",
icon: Ext.MessageBox.ERROR,
buttons: Ext.Msg.CANCEL,
modal: false,
fn: function() {
AdminGroupMembersWindow.getEl().unmask();
}
});
}
}
},
'-',
{
text:'Remove',
tooltip:'Remove member',
iconCls:'remove',
handler: function() {
var selectedItem = AdminGroupMembersWindow.getComponent('gridpanel').getSelectionModel().getSelected();
// Check if we have selected item
if (selectedItem) {
// If so display window
showAdminGroupMemberRemoveWindow(AdminGroupMembersWindow,selectedItem.data.ID);
} else {
AdminGroupMembersWindow.getEl().mask();
// Display error
Ext.Msg.show({
title: "Nothing selected",
msg: "No member selected",
icon: Ext.MessageBox.ERROR,
buttons: Ext.Msg.CANCEL,
modal: false,
fn: function() {
AdminGroupMembersWindow.getEl().unmask();
}
});
}
}
}
],
// Column model
colModel: new Ext.grid.ColumnModel([
{
id: 'ID',
header: "ID",
sortable: true,
dataIndex: 'ID'
},
{
header: "Name",
sortable: true,
dataIndex: 'Name'
},
{
header: "Disabled",
sortable: true,
dataIndex: 'Disabled'
}
]),
autoExpandColumn: 'Name'
},
// Store config
{
baseParams: {
ID: groupID,
SOAPUsername: globalConfig.soap.username,
SOAPPassword: globalConfig.soap.password,
SOAPAuthType: globalConfig.soap.authtype,
SOAPModule: 'AdminGroupMembers',
SOAPFunction: 'getAdminGroupMembers',
SOAPParams: 'ID,__search'
}
},
// Filter config
{
filters: [
{type: 'numeric', dataIndex: 'ID'},
{type: 'string', dataIndex: 'Name'},
{type: 'boolean', dataIndex: 'Disabled'}
]
}
);
AdminGroupMembersWindow.show();
}
// Display edit/add form
function showAdminGroupMemberAddEditWindow(groupID,userID) {
var submitAjaxConfig;
// We doing an update
if (userID) {
submitAjaxConfig = {
ID: userID,
SOAPFunction: 'updateAdminGroupMember',
SOAPParams:
'0:ID,'+
'0:Name'
};
// We doing an Add
} else {
submitAjaxConfig = {
GroupID: groupID,
SOAPFunction: 'addAdminGroupMember',
SOAPParams:
'0:GroupID,'+
'0:Name'
};
}
// Create window
var adminGroupMembersFormWindow = new Ext.ux.GenericFormWindow(
// Window config
{
title: "Member 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: 'AdminGroupMembers'
},
items: [
{
fieldLabel: 'Name',
name: 'Name',
vtype: 'usernamePart',
maskRe: usernamePartRe,
allowBlank: false
},
],
},
// Submit button config
submitAjaxConfig
);
adminGroupMembersFormWindow.show();
if (userID) {
adminGroupMembersFormWindow.getComponent('formpanel').load({
params: {
ID: userID,
SOAPUsername: globalConfig.soap.username,
SOAPPassword: globalConfig.soap.password,
SOAPAuthType: globalConfig.soap.authtype,
SOAPModule: 'AdminGroupMembers',
SOAPFunction: 'getAdminGroupMember',
SOAPParams: 'ID'
}
});
}
}
// Display remove form
function showAdminGroupMemberRemoveWindow(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 member?",
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: 'AdminGroupMembers',
SOAPFunction: 'removeAdminGroupMember',
SOAPParams: 'ID'
}
});
// Unmask if user answered no
} else {
parent.getEl().unmask();
}
}
});
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment