diff --git a/webgui/include/ajax/functions/WiSPLocationMembers.php b/webgui/include/ajax/functions/WiSPLocationMembers.php new file mode 100644 index 0000000000000000000000000000000000000000..94537ba6a69950f8e61ef8ccd07a94426213194c --- /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 d41668f9389ba37e9596a45946be9359c393db75..1b13e11aecf18c97175287bc03efbc5cae5dfaa0 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 0000000000000000000000000000000000000000..b11bd2d6f3e2e8aef3474e255d1e1d1030cfec6c --- /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 b069e2ed9f06fe4bda423e3664f8367c4a51d399..204842332fd7db92594c85cfc970fdd6d0c15622 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();