BUG 9713 User administration: Add a way to disable/enable users from users list SOLVED

- Add the functionallity to enable/disable users in the users list
This commit is contained in:
Julio Cesar Laura
2012-09-07 11:44:08 -04:00
parent d72e506112
commit 34b60d3dd7
2 changed files with 122 additions and 23 deletions

View File

@@ -151,21 +151,21 @@ try {
}
break;
//This case is used to check if any of the user group has as role 'PROCESSMAKER_ADMIN',
//This case is used to check if any of the user group has as role 'PROCESSMAKER_ADMIN',
case 'usersAdminGroupExtJS':
G::LoadClass('groups');
$oGroup = new Groups();
$aGroup = $oGroup->getUsersOfGroup($_POST['GRP_UID']);
$aGroup = $oGroup->getUsersOfGroup($_POST['GRP_UID']);
$responseUser = 'false';
$usersAdmin = '';
foreach ($aGroup as $iIndex => $aValues) {
foreach ($aGroup as $iIndex => $aValues) {
if ($aValues['USR_ROLE'] == 'PROCESSMAKER_ADMIN') {
$responseUser = 'true';
$usersAdmin .= $aValues['USR_FIRSTNAME'] . ' ' . $aValues['USR_LASTNAME'].', ';
$usersAdmin .= $aValues['USR_FIRSTNAME'] . ' ' . $aValues['USR_LASTNAME'].', ';
}
}
$usersAdmin = substr($usersAdmin, 0, -2);
$result = new stdClass();
$result->reponse = $responseUser;
$result->users = $usersAdmin;
@@ -178,7 +178,7 @@ try {
$USR_UID = $_POST['uUID'];
$total = 0;
$history = 0;
$c = $oProcessMap->getCriteriaUsersCases('TO_DO', $USR_UID);
$c = $oProcessMap->getCriteriaUsersCases('TO_DO', $USR_UID);
$total += ApplicationPeer::doCount($c);
$c = $oProcessMap->getCriteriaUsersCases('DRAFT', $USR_UID);
$total += ApplicationPeer::doCount($c);
@@ -211,6 +211,23 @@ try {
$aFields['USR_USERNAME'] = '';
$oUser->update($aFields);
break;
case 'changeUserStatus':
$response = new stdclass();
if (isset($_REQUEST['USR_UID']) && isset($_REQUEST['NEW_USR_STATUS'])) {
$RBAC->changeUserStatus($_REQUEST['USR_UID'], $_REQUEST['NEW_USR_STATUS']);
require_once 'classes/model/Users.php';
$userInstance = new Users();
$userData = $userInstance->load($_REQUEST['USR_UID']);
$userData['USR_STATUS'] = $_REQUEST['NEW_USR_STATUS'];
$userInstance->update($userData);
$response->status = 'OK';
}
else {
$response->status = 'ERROR';
$response->message = 'USR_UID and NEW_USR_STATUS parameters are required.';
}
die(G::json_encode($response));
break;
case 'availableGroups':
G::LoadClass('groups');
$filter = (isset($_POST['textFilter']))? $_POST['textFilter'] : '';
@@ -243,7 +260,7 @@ try {
G::LoadClass('groups');
$oGroup = new Groups();
foreach ($gUIDs as $GRP_UID){
$oGroup->addUserToGroup($GRP_UID, $USR_UID);
$oGroup->addUserToGroup($GRP_UID, $USR_UID);
}
break;
case 'deleteGroupsToUserMultiple':
@@ -252,7 +269,7 @@ try {
G::LoadClass('groups');
$oGroup = new Groups();
foreach ($gUIDs as $GRP_UID){
$oGroup->removeUserOfGroup($GRP_UID, $USR_UID);
$oGroup->removeUserOfGroup($GRP_UID, $USR_UID);
}
break;
case 'authSources':
@@ -299,7 +316,7 @@ try {
$arr = Array();
$arr['AUTH_SOURCE_NAME'] = 'ProcessMaker (MYSQL)';
$arr['AUTH_SOURCE_PROVIDER'] = 'MYSQL';
$aFields = $arr;
$aFields = $arr;
}
$res = Array();
$res['data'] = $oCriteria;
@@ -322,7 +339,7 @@ try {
$aData['USR_AUTH_TYPE'] = $aFields['AUTH_SOURCE_PROVIDER'];
$aData['UID_AUTH_SOURCE'] = $auth_uid;
}
if (isset($_POST['auth_dn'])){
if (isset($_POST['auth_dn'])){
$auth_dn = $_POST['auth_dn'];
}else{
$auth_dn = "";
@@ -342,7 +359,7 @@ try {
$config = $co->getConfiguration('usersList', 'pageSize','',$_SESSION['USER_LOGGED']);
$limit_size = isset($config['pageSize']) ? $config['pageSize'] : 20;
$start = isset($_REQUEST['start']) ? $_REQUEST['start'] : 0;
$limit = isset($_REQUEST['limit']) ? $_REQUEST['limit'] : $limit_size;
$limit = isset($_REQUEST['limit']) ? $_REQUEST['limit'] : $limit_size;
$filter = isset($_REQUEST['textFilter']) ? $_REQUEST['textFilter'] : '';
$auths = isset($_REQUEST['auths']) ? $_REQUEST['auths'] : '';
$sort = isset($_REQUEST['sort']) ? $_REQUEST['sort'] : '';
@@ -398,7 +415,7 @@ try {
// $tmpL = $tmpL->addOr($oCriteria->getNewCriterion(UsersPeer::USR_UID, $aUsers[$i],Criteria::EQUAL));
// }else{
// $uList = $oCriteria->getNewCriterion(UsersPeer::USR_UID, $aUsers[$i],Criteria::EQUAL);
// $tmpL = $uList;
// $tmpL = $uList;
// $sw_add = true;
// }
// }
@@ -469,8 +486,8 @@ try {
$aTypes = Array();
$aTypes['to_do'] = 'CASES_INBOX';
$aTypes['draft'] = 'CASES_DRAFT';
$aTypes['cancelled'] = 'CASES_CANCELLED';
$aTypes['sent'] = 'CASES_SENT';
$aTypes['cancelled'] = 'CASES_CANCELLED';
$aTypes['sent'] = 'CASES_SENT';
$aTypes['paused'] = 'CASES_PAUSED';
$aTypes['completed'] = 'CASES_COMPLETED';
$aTypes['selfservice'] = 'CASES_SELFSERVICE';

View File

@@ -40,6 +40,7 @@ var viewport;
var smodel;
var newButton;
var editButton;
var changeStatusButton;
var deleteButton;
var summaryButton;
var groupsButton;
@@ -83,6 +84,14 @@ Ext.onReady(function(){
disabled: true
});
changeStatusButton = new Ext.Button({
text: _('ID_STATUS'),
icon: '',
iconCls: 'silk-add',
handler: changeStatusCheck,
disabled: true
});
deleteButton = new Ext.Action({
text: _('ID_DELETE'),
iconCls: 'button_menu_ext ss_sprite ss_delete',
@@ -155,8 +164,9 @@ Ext.onReady(function(){
singleSelect: true,
listeners:{
rowselect: function(sm){
editButton.enable();
deleteButton.enable();
editButton.enable();
changeStatusButton.enable();
deleteButton.enable();
groupsButton.enable();
//reassignButton.enable();
authenticationButton.enable();
@@ -164,11 +174,14 @@ Ext.onReady(function(){
},
rowdeselect: function(sm){
editButton.disable();
deleteButton.disable();
groupsButton.disable();
//reassignButton.disable();
authenticationButton.disable();
summaryButton.disable();
changeStatusButton.setIcon('');
changeStatusButton.setText(_('ID_STATUS'));
changeStatusButton.disable();
deleteButton.disable();
groupsButton.disable();
//reassignButton.disable();
authenticationButton.disable();
summaryButton.disable();
}
}
});
@@ -353,10 +366,24 @@ Ext.onReady(function(){
store: store,
cm: cmodel,
sm: smodel,
tbar: [newButton, '-',summaryButton,'-', editButton, deleteButton, '-', groupsButton, '-',authenticationButton, {xtype: 'tbfill'}, /* _('ID_AUTH_SOURCES')+': ',comboAuthSources,'-', */ searchText,clearTextButton,searchButton],
tbar: [newButton, '-',summaryButton,'-', editButton, changeStatusButton, deleteButton, '-', groupsButton, '-',authenticationButton, {xtype: 'tbfill'}, searchText,clearTextButton,searchButton],
bbar: bbarpaging,
listeners: {
rowdblclick : EditUserAction
rowdblclick : EditUserAction,
render: function() {
infoGrid.getSelectionModel().on('rowselect', function() {
var rowSelected = infoGrid.getSelectionModel().getSelected();
changeStatusButton.enable();
if (rowSelected.data.USR_STATUS == 'ACTIVE') {
changeStatusButton.setIcon('/images/deactivate.png');
changeStatusButton.setText(_('ID_DISABLE'));
}
else {
changeStatusButton.setIcon('/images/activate.png');
changeStatusButton.setText(_('ID_ENABLE'));
}
});
}
},
view: new Ext.grid.GroupingView({
forceFit:true,
@@ -405,6 +432,61 @@ NewUserAction = function(){
location.href = 'usersNew?MODE=new';
};
//Change user status
changeStatus = function(userUid, newUsrStatus) {
viewport.getEl().mask(_('ID_PROCESSING'));
Ext.Ajax.request({
url: 'users_Ajax',
params: {'function': 'changeUserStatus', USR_UID: userUid, NEW_USR_STATUS: newUsrStatus},
success: function(res, opt) {
viewport.getEl().unmask();
changeStatusButton.disable();
changeStatusButton.setIcon('');
changeStatusButton.setText(_('ID_STATUS'));
DoSearch();
},
failure: DoNothing
});
};
//Check change user status
changeStatusCheck = function() {
var row = infoGrid.getSelectionModel().getSelected();
if (row) {
if (row.data.USR_UID == user_admin){
Ext.Msg.alert(_('ID_USERS'), _('ID_CANNOT_CHANGE_STATUS_ADMIN_USER'));
}
else {
viewport.getEl().mask(_('ID_PROCESSING'));
Ext.Ajax.request({
url: 'users_Ajax',
params: {'function': 'canDeleteUser', uUID: row.data.USR_UID},
success: function(res, opt) {
viewport.getEl().unmask();
response = Ext.util.JSON.decode(res.responseText);
if (!response.candelete && row.data.USR_STATUS == 'ACTIVE') {
Ext.Msg.confirm(_('ID_CONFIRM'), _('ID_USERS_HAS_ASSIGNED_CASES'), function(btn) {
if (btn == 'yes') {
changeStatus(row.data.USR_UID, row.data.USR_STATUS == 'ACTIVE' ? 'INACTIVE' : 'ACTIVE');
}
else {
viewport.getEl().unmask();
}
});
}
else {
changeStatus(row.data.USR_UID, row.data.USR_STATUS == 'ACTIVE' ? 'INACTIVE' : 'ACTIVE');
}
},
failure: function(r, o) {
viewport.getEl().unmask();
DoNothing();
}
});
}
}
};
//Delete User Action
DeleteUserAction = function(){
var uid = infoGrid.getSelectionModel().getSelected();