From c539c357a8f70040b84dff183dce1f7580475afd Mon Sep 17 00:00:00 2001 From: Robert Anderson <randerson@lbsd.net> Date: Thu, 14 May 2009 08:42:00 +0000 Subject: [PATCH] List location members, remove a user from a location --- .../ajax/functions/WiSPLocationMembers.php | 61 +++++++++ webgui/index.html | 4 + webgui/js/app/windows/WiSPLocationMembers.js | 126 ++++++++++++++++++ webgui/js/app/windows/WiSPLocations.js | 2 +- 4 files changed, 192 insertions(+), 1 deletion(-) create mode 100644 webgui/include/ajax/functions/WiSPLocationMembers.php create mode 100644 webgui/js/app/windows/WiSPLocationMembers.js diff --git a/webgui/include/ajax/functions/WiSPLocationMembers.php b/webgui/include/ajax/functions/WiSPLocationMembers.php new file mode 100644 index 00000000..94537ba6 --- /dev/null +++ b/webgui/include/ajax/functions/WiSPLocationMembers.php @@ -0,0 +1,61 @@ +<?php + +include_once("include/db.php"); + +# Remove group attribute +function removeWiSPLocationMember($params) { + global $db; + + var_dump($params); + $res = DBDo("UPDATE wisp_userdata SET LocationID = NULL WHERE UserID = ?",array($params[0])); + if (!is_numeric($res)) { + return $res; + } + + return NULL; +} + +# Return list of attributes +function getWiSPLocationMembers($params) { + global $db; + + # Filters and sorts are the same here + $filtersorts = array( + 'ID' => 'users.ID', + 'Username' => 'users.Username' + ); + + $res = DBSelectSearch(" + SELECT + users.ID, users.Username + FROM + wisp_userdata, users + WHERE + wisp_userdata.LocationID = ".DBQuote($params[0])." + AND + users.ID = wisp_userdata.UserID + ",$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['Username'] = $row->username; + + # push this row onto array + array_push($resultArray,$item); + } + + return array($resultArray,$numResults); +} + +?> diff --git a/webgui/index.html b/webgui/index.html index d41668f9..1b13e11a 100644 --- a/webgui/index.html +++ b/webgui/index.html @@ -74,8 +74,12 @@ <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/WiSPLocationMembers.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/AdminRealmAttributes.js"></script> <script type="text/javascript" src="js/app/windows/AdminUsers.js"></script> <script type="text/javascript" src="js/app/windows/AdminUserLogs.js"></script> diff --git a/webgui/js/app/windows/WiSPLocationMembers.js b/webgui/js/app/windows/WiSPLocationMembers.js new file mode 100644 index 00000000..b11bd2d6 --- /dev/null +++ b/webgui/js/app/windows/WiSPLocationMembers.js @@ -0,0 +1,126 @@ + + +function showWiSPLocationMembersWindow(locationID) { + + var WiSPLocationMembersWindow = new Ext.ux.GenericGridWindow( + // Window config + { + title: "Members", + + width: 600, + height: 335, + + minWidth: 600, + minHeight: 335, + }, + // Grid config + { + // Inline toolbars + tbar: [ + { + text:'Remove', + tooltip:'Remove member', + iconCls:'remove', + handler: function() { + var selectedItem = WiSPLocationMembersWindow.getComponent('gridpanel').getSelectionModel().getSelected(); + // Check if we have selected item + if (selectedItem) { + // If so display window + showWiSPLocationMemberRemoveWindow(WiSPLocationMembersWindow,selectedItem.data.ID); + } else { + WiSPLocationMembersWindow.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() { + WiSPLocationMembersWindow.getEl().unmask(); + } + }); + } + } + } + ], + // Column model + colModel: new Ext.grid.ColumnModel([ + { + id: 'ID', + header: "ID", + sortable: true, + dataIndex: 'ID' + }, + { + header: "Username", + sortable: true, + dataIndex: 'Username' + } + ]), + autoExpandColumn: 'Username' + }, + // Store config + { + baseParams: { + ID: locationID, + SOAPUsername: globalConfig.soap.username, + SOAPPassword: globalConfig.soap.password, + SOAPAuthType: globalConfig.soap.authtype, + SOAPModule: 'WiSPLocationMembers', + SOAPFunction: 'getWiSPLocationMembers', + SOAPParams: 'ID,__search' + } + }, + // Filter config + { + filters: [ + {type: 'numeric', dataIndex: 'ID'}, + {type: 'string', dataIndex: 'Username'} + ] + } + ); + + WiSPLocationMembersWindow.show(); +} + + +// Display remove form +function showWiSPLocationMemberRemoveWindow(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: 'WiSPLocationMembers', + SOAPFunction: 'removeWiSPLocationMember', + SOAPParams: 'ID' + } + }); + + + // Unmask if user answered no + } else { + parent.getEl().unmask(); + } + } + }); +} + diff --git a/webgui/js/app/windows/WiSPLocations.js b/webgui/js/app/windows/WiSPLocations.js index b069e2ed..20484233 100644 --- a/webgui/js/app/windows/WiSPLocations.js +++ b/webgui/js/app/windows/WiSPLocations.js @@ -91,7 +91,7 @@ function showWiSPLocationWindow() { // Check if we have selected item if (selectedItem) { // If so display window - showWiSPLocationMembersWindow(WiSPLocationWindow,selectedItem.data.ID); + showWiSPLocationMembersWindow(selectedItem.data.ID); } else { WiSPLocationWindow.getEl().mask(); -- GitLab