diff --git a/gulliver/system/class.rbac.php b/gulliver/system/class.rbac.php index 4f7f98b3b..a57242f2a 100644 --- a/gulliver/system/class.rbac.php +++ b/gulliver/system/class.rbac.php @@ -554,6 +554,18 @@ class RBAC function getAllRoles ( $systemCode = 'PROCESSMAKER') { return $this->rolesObj->getAllRoles($systemCode); } + +/** + * getting all roles by filter + * + * + * @access public + * @param string $filter + * @return $this->rolesObj->getAllRolesFilter + */ + function getAllRolesFilter ($filter) { + return $this->rolesObj->getAllRolesFilter($filter); + } /** * list all permission diff --git a/rbac/engine/classes/model/Roles.php b/rbac/engine/classes/model/Roles.php index 7b81615ce..01772cec0 100644 --- a/rbac/engine/classes/model/Roles.php +++ b/rbac/engine/classes/model/Roles.php @@ -86,8 +86,9 @@ class Roles extends BaseRoles { } } - function listAllRoles($systemCode = 'PROCESSMAKER') { + function listAllRoles($systemCode = 'PROCESSMAKER', $filter = '') { try { + $oCriteria = new Criteria('rbac'); $oCriteria->addSelectColumn(RolesPeer::ROL_UID); $oCriteria->addSelectColumn(RolesPeer::ROL_PARENT); @@ -101,8 +102,12 @@ class Roles extends BaseRoles { $oCriteria->add(SystemsPeer::SYS_CODE, $systemCode); $oCriteria->add(RolesPeer::ROL_CREATE_DATE, '', Criteria::NOT_EQUAL); $oCriteria->add(RolesPeer::ROL_UPDATE_DATE, '', Criteria::NOT_EQUAL); + //Added by QENNIX Jan 21th, 2011 + if ($filter != ''){ + $oCriteria->add(RolesPeer::ROL_CODE, '%'.$filter.'%', Criteria::LIKE); + } $oCriteria->addJoin(RolesPeer::ROL_SYSTEM, SystemsPeer::SYS_UID); - + return $oCriteria; } catch( exception $oError ) { @@ -110,6 +115,26 @@ class Roles extends BaseRoles { } } + //Added by QENNIX + function getAllRolesFilter($filter='') { + $systemCode = 'PROCESSMAKER'; + $c = $this->listAllRoles($systemCode,$filter); + $rs = RolesPeer::DoSelectRs($c); + $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); + + $aRows = Array(); + while($rs->next()){ + $row = $rs->getRow(); + $o = new Roles(); + $o->load($row['ROL_UID']); + $row['ROL_NAME'] = $o->getRolName(); + $aRows[] = $row; + } + return $aRows; + } + + + function getAllRoles($systemCode = 'PROCESSMAKER') { $c = $this->listAllRoles($systemCode); $rs = RolesPeer::DoSelectRs($c); diff --git a/workflow/engine/methods/roles/data_rolesList.php b/workflow/engine/methods/roles/data_rolesList.php new file mode 100755 index 000000000..58b0b5def --- /dev/null +++ b/workflow/engine/methods/roles/data_rolesList.php @@ -0,0 +1,46 @@ +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + * + */ + +require_once (PATH_RBAC . "model/RolesPeer.php"); +G::LoadClass('ArrayPeer'); + +isset($_POST['textFilter']) ? $filter = $_POST['textFilter'] : $filter = ''; + +if ($filter != ""){ + $aRoles = $RBAC->getAllRolesFilter($filter); +}else{ + $aRoles = $RBAC->getAllRoles(); +} + +//$ocaux = $oAdditionalTables->getDataCriteria($_GET['sUID']); +// +//$rs = AdditionalTablesPeer::DoSelectRs ($ocaux); +//$rs->setFetchmode (ResultSet::FETCHMODE_ASSOC); +// +//$rows = Array(); +//while($rs->next()){ +// $rows[] = $rs->getRow(); +//} +echo '{roles: '.G::json_encode($aRoles).'}'; \ No newline at end of file diff --git a/workflow/engine/methods/roles/data_rolesPermissions.php b/workflow/engine/methods/roles/data_rolesPermissions.php new file mode 100755 index 000000000..cd2ee67e8 --- /dev/null +++ b/workflow/engine/methods/roles/data_rolesPermissions.php @@ -0,0 +1,38 @@ +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + * + */ + +$ROL_UID = $_GET['rUID']; +$TYPE_DATA = $_GET["type"]; + +global $RBAC; + +if ($TYPE_DATA=='list') $oDataset = $RBAC->getRolePermissions($ROL_UID); +if ($TYPE_DATA=='show') $oDataset = $RBAC->getAllPermissions($ROL_UID,$RBAC->sSystem); + +$rows = Array(); +while($oDataset->next()){ + $rows[] = $oDataset->getRow(); +} +echo '{permissions: '.G::json_encode($rows).'}'; \ No newline at end of file diff --git a/workflow/engine/methods/roles/data_rolesUsers.php b/workflow/engine/methods/roles/data_rolesUsers.php new file mode 100755 index 000000000..a46b037e0 --- /dev/null +++ b/workflow/engine/methods/roles/data_rolesUsers.php @@ -0,0 +1,38 @@ +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + * + */ + +$ROL_UID = $_GET['rUID']; +$TYPE_DATA = $_GET["type"]; + +global $RBAC; + +if ($TYPE_DATA=='list') $oDataset = $RBAC->getRoleUsers($ROL_UID); +if ($TYPE_DATA=='show') $oDataset = $RBAC->getAllUsers($ROL_UID); + +$rows = Array(); +while($oDataset->next()){ + $rows[] = $oDataset->getRow(); +} +echo '{users: '.G::json_encode($rows).'}'; \ No newline at end of file diff --git a/workflow/engine/methods/roles/rolesUsersPermission.php b/workflow/engine/methods/roles/rolesUsersPermission.php new file mode 100755 index 000000000..de67ed1fa --- /dev/null +++ b/workflow/engine/methods/roles/rolesUsersPermission.php @@ -0,0 +1,75 @@ +. + * + * For more information, contact Colosa Inc, 2566 Le Jeune Rd., + * Coral Gables, FL, 33134, USA, or email info@colosa.com. + * + **/ + +global $RBAC; +switch ($RBAC->userCanAccess('PM_USERS')) { + case - 2: + G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels'); + G::header('location: ../login/login'); + die; + break; + case - 1: + G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels'); + G::header('location: ../login/login'); + die; + break; + case -3: + G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels'); + G::header('location: ../login/login'); + die; + break; +} + +$G_MAIN_MENU = 'processmaker'; +$G_SUB_MENU = 'users'; +$G_ID_MENU_SELECTED = 'USERS'; +$G_ID_SUB_MENU_SELECTED = 'ROLES'; + + +$G_PUBLISH = new Publisher; + +$oHeadPublisher =& headPublisher::getSingleton(); + +$oHeadPublisher->addExtJsScript('roles/rolesUsersPermission', false); //adding a javascript file .js +$oHeadPublisher->addContent('roles/rolesUsersPermission'); //adding a html file .html. + +$labels = G::getTranslations(Array('ID_PRO_CREATE_DATE','ID_CODE','ID_NAME','ID_LAN_UPDATE_DATE', 'ID_ROLES', + 'ID_USERS','ID_PERMISSIONS','ID_EDIT','ID_DELETE','ID_NEW','ID_STATUS','ID_SAVE','ID_CLOSE', + 'ID_ACTIVE','ID_INACTIVE','ID_ROLES_MSG','ID_ROLES_CAN_NOT_DELETE','ID_ROLES_SUCCESS_NEW','ID_ROLES_SUCCESS_UPDATE', + 'ID_ROLES_SUCCESS_DELETE','ID_REMOVE_ROLE','ID_ASSIGN','ID_REMOVE','ID_BACK','ID_PROCESSING', + 'ID_REMOVE_ALL_PERMISSIONS','ID_ASSIGN_ALL_PERMISSIONS','ID_ASSIGN_ALL_USERS','ID_REMOVE_ALL_USERS', + 'ID_USER_NAME','ID_PERMISSION_CODE','ID_AVAILABLE_PERMISSIONS','ID_ASSIGNED_PERMISSIONS', + 'ID_FIRST_NAME','ID_LAST_NAME','ID_AVAILABLE_USERS','ID_ASSIGNED_USERS','ID_MSG_CONFIRM_ASSIGN_ALL_USERS','ID_MSG_AJAX_FAILURE')); + +$roles = Array(); +$roles['ROL_UID'] = $_GET['rUID']; +$roles['ROL_CODE'] = $RBAC->getRoleCode($_GET['rUID']); +$roles['CURRENT_TAB'] = ($_GET['tab']=='permissions') ? 1 : 0; + +$oHeadPublisher->assign('TRANSLATIONS', $labels); +$oHeadPublisher->assign('ROLES', $roles); +G::RenderPage('publish', 'extJs'); + +?> \ No newline at end of file diff --git a/workflow/engine/methods/roles/roles_Ajax.php b/workflow/engine/methods/roles/roles_Ajax.php index 4d8f07f56..5a09fd0fe 100644 --- a/workflow/engine/methods/roles/roles_Ajax.php +++ b/workflow/engine/methods/roles/roles_Ajax.php @@ -34,6 +34,7 @@ switch ($REQUEST) { break; case 'saveNewRole': + $newid = md5($_POST['code'].date("d-M-Y_H:i:s")); g::pr($_POST); @@ -187,18 +188,17 @@ switch ($REQUEST) { case 'assignUserToRole': $ROL_UID = $_POST['ROL_UID']; - - $aUserIuds = explode(",",$_POST['aUsers']); - foreach($aUserIuds as $key=>$val){ - $sData['USR_UID'] = $val; - $sData['ROL_UID'] = $ROL_UID; - $RBAC->assignUserToRole($sData); - } + $aUserIuds = explode(",",$_POST['aUsers']); + foreach($aUserIuds as $key=>$val){ + $sData['USR_UID'] = $val; + $sData['ROL_UID'] = $ROL_UID; + $RBAC->assignUserToRole($sData); + } - $_GET['ROL_UID'] = $ROL_UID; - $G_PUBLISH = new Publisher; - $G_PUBLISH->AddContent('view', 'roles/roles_Tree' ); - G::RenderPage('publish', 'raw'); +// $_GET['ROL_UID'] = $ROL_UID; +// $G_PUBLISH = new Publisher; +// $G_PUBLISH->AddContent('view', 'roles/roles_Tree' ); +// G::RenderPage('publish', 'raw'); break; case 'assignPermissionToRole': @@ -208,10 +208,10 @@ switch ($REQUEST) { $sData['ROL_UID'] = $ROL_UID; $RBAC->assignPermissionRole($sData); - $_GET['ROL_UID'] = $ROL_UID; - $G_PUBLISH = new Publisher; - $G_PUBLISH->AddContent('view', 'roles/roles_permissionsTree' ); - G::RenderPage('publish', 'raw'); +// $_GET['ROL_UID'] = $ROL_UID; +// $G_PUBLISH = new Publisher; +// $G_PUBLISH->AddContent('view', 'roles/roles_permissionsTree' ); +// G::RenderPage('publish', 'raw'); break; case 'viewPermitions': @@ -232,6 +232,35 @@ switch ($REQUEST) { $G_PUBLISH->AddContent('view', 'roles/roles_permissionsTree'); G::RenderPage('publish', 'raw'); break; + + case 'assignPermissionToRoleMultiple': + $USR_UID = $_POST['PER_UID']; + $ROL_UID = $_POST['ROL_UID']; + $arrPer = explode(',',$USR_UID); + foreach ($arrPer as $PER_UID){ + unset($sData); + $sData['PER_UID'] = $PER_UID; + $sData['ROL_UID'] = $ROL_UID; + $RBAC->assignPermissionRole($sData); + } + break; + + case 'deletePermissionToRoleMultiple': + $USR_UID = $_POST['PER_UID']; + $ROL_UID = $_POST['ROL_UID']; + $arrPer = explode(',',$USR_UID); + foreach ($arrPer as $PER_UID){ + $RBAC->deletePermissionRole($ROL_UID, $PER_UID); + } + break; + case 'deleteUserRoleMultiple': + $USR_UID = $_POST['USR_UID']; + $ROL_UID = $_POST['ROL_UID']; + $arrUsers = explode(',',$USR_UID); + foreach ($arrUsers as $aUID){ + $RBAC->deleteUserRole($ROL_UID, $aUID); + } + break; default: echo 'default'; } diff --git a/workflow/engine/methods/roles/roles_List.php b/workflow/engine/methods/roles/roles_List.php index 36938ae65..ec38859c8 100644 --- a/workflow/engine/methods/roles/roles_List.php +++ b/workflow/engine/methods/roles/roles_List.php @@ -1,6 +1,6 @@ getAllRoles(); - - $fields = Array( - 'ROL_UID'=>'char', - 'ROL_PARENT'=>'char', - 'ROL_SYSTEM'=>'char', - 'ROL_CREATE_DATE'=>'char', - 'ROL_UPDATE_DATE'=>'char', - 'ROL_STATUS'=>'char' - ); - - $rows = array_merge(Array($fields), $aRoles); - - global $_DBArray; - $_DBArray['roles'] = $rows; - $_SESSION['_DBArray'] = $_DBArray; - $oCriteria = new Criteria('dbarray'); - $oCriteria->setDBArrayTable('roles'); +// require_once (PATH_RBAC . "model/RolesPeer.php"); +// G::LoadClass('ArrayPeer'); +// $aRoles = $RBAC->getAllRoles(); +// +// $fields = Array( +// 'ROL_UID'=>'char', +// 'ROL_PARENT'=>'char', +// 'ROL_SYSTEM'=>'char', +// 'ROL_CREATE_DATE'=>'char', +// 'ROL_UPDATE_DATE'=>'char', +// 'ROL_STATUS'=>'char' +// ); +// +// $rows = array_merge(Array($fields), $aRoles); +// +// global $_DBArray; +// $_DBArray['roles'] = $rows; +// $_SESSION['_DBArray'] = $_DBArray; +// $oCriteria = new Criteria('dbarray'); +// $oCriteria->setDBArrayTable('roles'); +// +// $G_PUBLISH = new Publisher; +// $G_PUBLISH->AddContent('propeltable', 'paged-table', 'roles/roles_List', $oCriteria); +// +// G::RenderPage('publish','blank'); + +$G_PUBLISH = new Publisher; + +$oHeadPublisher =& headPublisher::getSingleton(); + +//$oHeadPublisher->usingExtJs('ux/Ext.ux.fileUploadField'); +$oHeadPublisher->addExtJsScript('roles/rolesList', false); //adding a javascript file .js +$oHeadPublisher->addContent('roles/rolesList'); //adding a html file .html. + +$labels = G::getTranslations(Array('ID_PRO_CREATE_DATE','ID_CODE','ID_NAME','ID_LAN_UPDATE_DATE', 'ID_ROLES', + 'ID_USERS','ID_PERMISSIONS','ID_EDIT','ID_DELETE','ID_NEW','ID_STATUS','ID_SAVE','ID_CLOSE', + 'ID_ACTIVE','ID_INACTIVE','ID_ROLES_MSG','ID_ROLES_CAN_NOT_DELETE','ID_ROLES_SUCCESS_NEW','ID_ROLES_SUCCESS_UPDATE', + 'ID_ROLES_SUCCESS_DELETE','ID_REMOVE_ROLE','ID_SEARCH','ID_ENTER_SEARCH_TERM','ID_SELECT_STATUS')); + +$oHeadPublisher->assign('TRANSLATIONS', $labels); +G::RenderPage('publish', 'extJs'); - $G_PUBLISH = new Publisher; - $G_PUBLISH->AddContent('propeltable', 'paged-table', 'roles/roles_List', $oCriteria); - - G::RenderPage('publish','blank'); ?> diff --git a/workflow/engine/templates/roles/rolesList.html b/workflow/engine/templates/roles/rolesList.html new file mode 100755 index 000000000..432f567b5 --- /dev/null +++ b/workflow/engine/templates/roles/rolesList.html @@ -0,0 +1,3 @@ +
+
+
diff --git a/workflow/engine/templates/roles/rolesList.js b/workflow/engine/templates/roles/rolesList.js new file mode 100755 index 000000000..9422bcfb0 --- /dev/null +++ b/workflow/engine/templates/roles/rolesList.js @@ -0,0 +1,465 @@ +/* + * @author: Qennix + * Jan 18th, 2011 + */ + +//Keyboard Events +new Ext.KeyMap(document, [ + { + key: Ext.EventObject.F5, + fn: function(keycode, e) { + if (! e.ctrlKey) { + if (Ext.isIE) { + // IE6 doesn't allow cancellation of the F5 key, so trick it into + // thinking some other key was pressed (backspace in this case) + e.browserEvent.keyCode = 8; + } + e.stopEvent(); + document.location = document.location; + }else{ + Ext.Msg.alert('Refresh', 'You clicked: CTRL-F5'); + } + } +}, +{ + key: Ext.EventObject.DELETE, + fn: function(k,e){ + iGrid = Ext.getCmp('infoGrid'); + rowSelected = iGrid.getSelectionModel().getSelected(); + if (rowSelected){ + CanDeleteRole(); + } + } +} +]); + +var store; +var cmodel; +var infoGrid; +var viewport; +var smodel; + +var newButton; +var editButton; +var deleteButton; +var usersButton; +var permissionsButton; +var searchButton; + +var serachText; + +var newForm; +var comboStatusStore; +var editForm; + +var contextMenu; + +var w; + + +Ext.onReady(function(){ + Ext.QuickTips.init(); + + newButton = new Ext.Action({ + text: TRANSLATIONS.ID_NEW, + iconCls: 'button_menu_ext ss_sprite ss_add', + handler: NewRoleWindow + }); + + editButton = new Ext.Action({ + text: TRANSLATIONS.ID_EDIT, + iconCls: 'button_menu_ext ss_sprite ss_pencil', + handler: EditRole, + disabled: true + }); + + deleteButton = new Ext.Action({ + text: TRANSLATIONS.ID_DELETE, + iconCls: 'button_menu_ext ss_sprite ss_delete', + handler: CanDeleteRole, + disabled: true + }); + + usersButton = new Ext.Action({ + text: TRANSLATIONS.ID_USERS, + iconCls: 'button_menu_ext ss_sprite ss_user_add', + handler: RolesUserPage, + disabled: true + }); + permissionsButton = new Ext.Action({ + text: TRANSLATIONS.ID_PERMISSIONS, + iconCls: 'button_menu_ext ss_sprite ss_key_add', + handler: RolesPermissionPage, + disabled: true + }); + + searchButton = new Ext.Action({ + text: TRANSLATIONS.ID_SEARCH, + handler: DoSearch + }); + + contextMenu = new Ext.menu.Menu({ + items: [editButton, deleteButton,'-',usersButton, permissionsButton], + }); + + searchText = new Ext.form.TextField ({ + id: 'searchTxt', + ctCls:'pm_search_text_field', + allowBlank: true, + width: 150, + emptyText: TRANSLATIONS.ID_ENTER_SEARCH_TERM,//'enter search term', + listeners: { + specialkey: function(f,e){ + if (e.getKey() == e.ENTER) { + DoSearch(); + } + }, + focus: function(f,e) { + var row = infoGrid.getSelectionModel().getSelected(); + infoGrid.getSelectionModel().deselectRow(infoGrid.getStore().indexOf(row)); + } + } + }); + + clearTextButton = new Ext.Action({ + text: 'X', + ctCls:'pm_search_x_button', + handler: GridByDefault + }); + + comboStatusStore = new Ext.data.SimpleStore({ + fields: ['id','value'], + data: [['1',TRANSLATIONS.ID_ACTIVE],['0',TRANSLATIONS.ID_INACTIVE]] + }); + + newForm = new Ext.FormPanel({ + url: 'roles_Ajax?request=saveNewRole', + frame: true, + title: 'Create a new role', + items:[ + {xtype: 'textfield', fieldLabel: TRANSLATIONS.ID_CODE, name: 'code', width: 250, allowBlank: false}, + {xtype: 'textfield', fieldLabel: TRANSLATIONS.ID_NAME, name: 'name', width: 200, allowBlank: false}, + { + xtype: 'combo', + fieldLabel: TRANSLATIONS.ID_STATUS, + hiddenName: 'status', + typeAhead: true, + mode: 'local', + store: comboStatusStore, + displayField: 'value', + valueField:'id', + allowBlank: false, + triggerAction: 'all', + emptyText: TRANSLATIONS.ID_SELECT_STATUS, + selectOnFocus:true + } + ], + buttons: [ + {text: TRANSLATIONS.ID_CLOSE, handler: CloseWindow}, + {text: TRANSLATIONS.ID_SAVE, handler: SaveNewRole} + ] + }); + + editForm = new Ext.FormPanel({ + url: 'roles_Ajax?request=updateRole', + frame: true, + title: 'Updating role', + items:[ + {xtype: 'textfield', name: 'rol_uid', hidden: true }, + {xtype: 'textfield', fieldLabel: TRANSLATIONS.ID_CODE, name: 'code', width: 250, allowBlank: false}, + {xtype: 'textfield', fieldLabel: TRANSLATIONS.ID_NAME, name: 'name', width: 200, allowBlank: false}, + { + xtype: 'combo', + fieldLabel: TRANSLATIONS.ID_STATUS, + hiddenName: 'status', + typeAhead: true, + mode: 'local', + store: comboStatusStore, + displayField: 'value', + valueField:'id', + allowBlank: false, + triggerAction: 'all', + emptyText: TRANSLATIONS.ID_SELECT_STATUS, + selectOnFocus:true + } + ], + buttons: [ + {text: TRANSLATIONS.ID_CLOSE, handler: CloseWindow}, + {text: TRANSLATIONS.ID_SAVE, handler: UpdateRole} + ] + }); + + smodel = new Ext.grid.RowSelectionModel({ + singleSelect: true, + listeners:{ + rowselect: function(sm){ + editButton.enable(); + deleteButton.enable(); + usersButton.enable(); + permissionsButton.enable(); + }, + rowdeselect: function(sm){ + editButton.disable(); + deleteButton.disable(); + usersButton.disable(); + permissionsButton.disable(); + } + } + }); + + store = new Ext.data.GroupingStore( { + proxy : new Ext.data.HttpProxy({ + url: 'data_rolesList' + }), + reader : new Ext.data.JsonReader( { + root: 'roles', + fields : [ + {name : 'ROL_UID'}, + {name : 'ROL_CODE'}, + {name : 'ROL_NAME'}, + {name : 'ROL_CREATE_DATE'}, + {name : 'ROL_UPDATE_DATE'}, + {name : 'ROL_STATUS'} + ] + }) + }); + + cmodel = new Ext.grid.ColumnModel({ + defaults: { + width: 50, + sortable: true + }, + columns: [ + {id:'ROL_UID', dataIndex: 'ROL_UID', hidden:true, hideable:false}, + {header: TRANSLATIONS.ID_CODE, dataIndex: 'ROL_CODE', width: 60, align:'left'}, + {header: TRANSLATIONS.ID_NAME, dataIndex: 'ROL_NAME', width: 60, hidden:false, align:'left'}, + {header: TRANSLATIONS.ID_STATUS, dataIndex: 'ROL_STATUS', width: 20, hidden: false, align: 'center', renderer: status_role}, + {header: TRANSLATIONS.ID_PRO_CREATE_DATE, dataIndex: 'ROL_CREATE_DATE', width: 40, hidden:false, align:'center'}, + {header: TRANSLATIONS.ID_LAN_UPDATE_DATE, dataIndex: 'ROL_UPDATE_DATE', width: 40, hidden:false, align:'center'} + ] + }); + + infoGrid = new Ext.grid.GridPanel({ + region: 'center', + layout: 'fit', + id: 'infoGrid', + height:100, + autoWidth : true, + stateful : true, + stateId : 'grid', + enableColumnResize: true, + enableHdMenu: true, + frame:false, + iconCls:'icon-grid', + columnLines: false, + viewConfig: { + forceFit:true + }, + title : TRANSLATIONS.ID_ROLES, + store: store, + cm: cmodel, + sm: smodel, + tbar: [newButton, '-', editButton, deleteButton,'-',usersButton, permissionsButton, {xtype: 'tbfill'}, searchText,clearTextButton,searchButton], + listeners: { + rowdblclick: EditRole + }, + view: new Ext.grid.GroupingView({ + forceFit:true, + groupTextTpl: '{text}' + }) + }); + + infoGrid.on('rowcontextmenu', + function (grid, rowIndex, evt) { + var sm = grid.getSelectionModel(); + sm.selectRow(rowIndex, sm.isSelected(rowIndex)); + }, + this + ); + + infoGrid.on('contextmenu', + function (evt) { + evt.preventDefault(); + }, + this + ); + + infoGrid.addListener('rowcontextmenu',onMessageContextMenu,this); + + infoGrid.store.load(); + + viewport = new Ext.Viewport({ + layout: 'fit', + autoScroll: false, + items: [ + infoGrid + ] + }); +}); + +//Funtion Handles Context Menu Opening +onMessageContextMenu = function (grid, rowIndex, e) { + e.stopEvent(); + var coords = e.getXY(); + contextMenu.showAt([coords[0], coords[1]]); +} + +//Do Nothing Function +DoNothing = function(){} + +//Open New Role Form +NewRoleWindow = function(){ + w = new Ext.Window({ + height: 190, + width: 420, + title: TRANSLATIONS.ID_ROLES, + items: [newForm] + }); + w.show(); +} + +//Close Popup Window +CloseWindow = function(){ + w.hide(); +} + +//Save New Role +SaveNewRole = function(){ + newForm.getForm().submit({ + success: function(f,a){ + w.hide(); //Hide popup widow + newForm.getForm().reset(); //Set empty form to next use + textSearch.reset(); + infoGrid.store.load(); //Reload store grid + Ext.Msg.alert(TRANSLATIONS.ID_ROLES,TRANSLATIONS.ID_ROLES_SUCCESS_NEW); + }, + failure: function(f,a){ + switch(a.failureType){ + case Ext.form.Action.CLIENT_INVALID: + //Ext.Msg.alert('New Role Form','Invalid Data'); + break; + } + + } + }); +} + +//Update Selected Role +UpdateRole = function(){ + editForm.getForm().submit({ + success: function(f,a){ + w.hide(); //Hide popup widow + DoSearch(); //Reload store grid + editButton.disable(); //Disable Edit Button + deleteButton.disable(); //Disable Delete Button + Ext.Msg.alert(TRANSLATIONS.ID_ROLES,TRANSLATIONS.ID_ROLES_SUCCESS_UPDATE); + }, + failure: function(f,a){ + switch(a.failureType){ + case Ext.form.Action.CLIENT_INVALID: + //Ext.Msg.alert('New Role Form','Invalid Data'); + break; + } + + } + }); +} + +//Edit Selected Role +EditRole = function(){ + iGrid = Ext.getCmp('infoGrid'); + rowSelected = iGrid.getSelectionModel().getSelected(); + if (rowSelected){ + if (rowSelected.data.ROL_UID == '00000000000000000000000000000002'){ + Ext.Msg.alert(TRANSLATIONS.ID_ROLES,TRANSLATIONS.ID_ROLES_MSG); + }else{ + editForm.getForm().findField('rol_uid').setValue(rowSelected.data.ROL_UID); + editForm.getForm().findField('code').setValue(rowSelected.data.ROL_CODE); + editForm.getForm().findField('name').setValue(rowSelected.data.ROL_NAME); + editForm.getForm().findField('status').setValue(rowSelected.data.ROL_STATUS); + w = new Ext.Window({ + height: 190, + width: 420, + title: TRANSLATIONS.ID_ROLES, + items: [editForm] + }); + w.show(); + } + + } +} + +//Check Can Delete Role +CanDeleteRole = function(){ + iGrid = Ext.getCmp('infoGrid'); + rowSelected = iGrid.getSelectionModel().getSelected(); + if (rowSelected){ + var swDelete = false; + Ext.Ajax.request({ + url: 'roles_Ajax', + success: function(response, opts){ + swDelete = (response.responseText=='true') ? true : false; + if (swDelete){ + Ext.Msg.confirm(TRANSLATIONS.ID_CONFIRM, TRANSLATIONS.ID_REMOVE_ROLE, + function(btn, text){ + if (btn=="yes"){ + Ext.Ajax.request({ + url: 'roles_Ajax', + params: {request: 'deleteRole', ROL_UID: rowSelected.data.ROL_UID}, + success: function(r,o){ + infoGrid.store.load(); //Reload store grid + editButton.disable(); //Disable Edit Button + deleteButton.disable(); //Disable Delete Button + Ext.Msg.alert(TRANSLATIONS.ID_ROLES,TRANSLATIONS.ID_ROLES_SUCCESS_DELETE); + }, + failure: DoNothing + }); + } + }); + }else{ + Ext.Msg.alert(TRANSLATIONS.ID_ROLES,TRANSLATIONS.ID_ROLES_CAN_NOT_DELETE); + } + }, + failure: DoNothing, + params: {request: 'canDeleteRole', ROL_UID: rowSelected.data.ROL_UID} + }); + } +} + + +//Open User-Roles Manager +RolesUserPage = function(value){ + iGrid = Ext.getCmp('infoGrid'); + rowSelected = iGrid.getSelectionModel().getSelected(); + if (rowSelected){ + value = rowSelected.data.ROL_UID; + location.href = 'rolesUsersPermission?rUID=' + value + '&tab=users'; + } +} + + +//Open Permission-Roles Manager +RolesPermissionPage = function(value){ + iGrid = Ext.getCmp('infoGrid'); + rowSelected = iGrid.getSelectionModel().getSelected(); + if (rowSelected){ + value = rowSelected.data.ROL_UID; + location.href = 'rolesUsersPermission?rUID=' + value + '&tab=permissions'; + } +} + +//Renderer Active/Inactive Role +status_role = function(value){ + return (value==1) ? TRANSLATIONS.ID_ACTIVE : TRANSLATIONS.ID_INACTIVE; +} + +//Load Grid By Default +GridByDefault = function(){ + searchText.reset(); + infoGrid.store.load(); +} + +//Do Search Function +DoSearch = function(){ + infoGrid.store.load({params: {textFilter: searchText.getValue()}}); +} \ No newline at end of file diff --git a/workflow/engine/templates/roles/rolesUsersPermission.html b/workflow/engine/templates/roles/rolesUsersPermission.html new file mode 100755 index 000000000..7f6b02bfb --- /dev/null +++ b/workflow/engine/templates/roles/rolesUsersPermission.html @@ -0,0 +1,4 @@ +
+
+
+ diff --git a/workflow/engine/templates/roles/rolesUsersPermission.js b/workflow/engine/templates/roles/rolesUsersPermission.js new file mode 100755 index 000000000..537faa619 --- /dev/null +++ b/workflow/engine/templates/roles/rolesUsersPermission.js @@ -0,0 +1,687 @@ +/* + * @author: Qennix + * Jan 19th, 2011 + */ + +//Keyboard Events +new Ext.KeyMap(document, { + key: Ext.EventObject.F5, + fn: function(keycode, e) { + if (! e.ctrlKey) { + if (Ext.isIE) { + // IE6 doesn't allow cancellation of the F5 key, so trick it into + // thinking some other key was pressed (backspace in this case) + e.browserEvent.keyCode = 8; + } + e.stopEvent(); + document.location = document.location; + }else{ + Ext.Msg.alert('Refresh', 'You clicked: CTRL-F5'); + } + } +}); + +var storeP; +var storeA; +var cmodelP; +var smodelA; +var smodelP; +var storeU; +var storeX; +var cmodelU; +var smodelU; +var smodelX; + +var availableGrid; +var assignedGrid; +var availableUGrid; +var assignedUGrid; + +var PermissionsPanel; +var UsersPanel; +var northPanel; +var tabsPanel; +var viewport; + +var assignButton; +var assignAllButton; +var removeButton; +var removeAllButton; +var assignUButton; +var assignUAllButton; +var removeUButton; +var removeUAllButton; +var backButton; + +var sw_func_permissions; +var sw_func_users; + +const pm_admin = '00000000000000000000000000000002'; + +Ext.onReady(function(){ + + sw_func_permissions = false; + sw_func_users = false; + + assignButton = new Ext.Action({ + text: TRANSLATIONS.ID_ASSIGN, + iconCls: 'button_menu_ext ss_sprite ss_add', + handler: AssignPermissionAction, + disabled: true + }); + + assignAllButton = new Ext.Action({ + text: TRANSLATIONS.ID_ASSIGN_ALL_PERMISSIONS, + iconCls: 'button_menu_ext ss_sprite ss_add', + handler: AssignAllPermissionsAction + }); + + removeButton = new Ext.Action({ + text: TRANSLATIONS.ID_REMOVE, + iconCls: 'button_menu_ext ss_sprite ss_delete', + handler: RemovePermissionAction, + disabled: true + }); + + removeAllButton = new Ext.Action({ + text: TRANSLATIONS.ID_REMOVE_ALL_PERMISSIONS, + iconCls: 'button_menu_ext ss_sprite ss_delete', + handler: RemoveAllPermissionsAction, + disabled: (ROLES.ROL_UID==pm_admin) ? true : false + }); + + assignUButton = new Ext.Action({ + text: TRANSLATIONS.ID_ASSIGN, + iconCls: 'button_menu_ext ss_sprite ss_add', + handler: AssignUserAction, + disabled: true + }); + + assignUAllButton = new Ext.Action({ + text: TRANSLATIONS.ID_ASSIGN_ALL_USERS, + iconCls: 'button_menu_ext ss_sprite ss_add', + handler: AssignAllUsersAction + }); + + removeUButton = new Ext.Action({ + text: TRANSLATIONS.ID_REMOVE, + iconCls: 'button_menu_ext ss_sprite ss_delete', + handler: RemoveUserAction, + disabled: true + }); + + removeUAllButton = new Ext.Action({ + text: TRANSLATIONS.ID_REMOVE_ALL_USERS, + iconCls: 'button_menu_ext ss_sprite ss_delete', + handler: RemoveAllUsersAction + }); + + backButton = new Ext.Action({ + text: TRANSLATIONS.ID_BACK, + iconCls: 'button_menu_ext ss_sprite ss_arrow_redo', + handler: BackToRoles + }); + + storeP = new Ext.data.GroupingStore( { + proxy : new Ext.data.HttpProxy({ + url: 'data_rolesPermissions?rUID=' + ROLES.ROL_UID + '&type=list' + }), + reader : new Ext.data.JsonReader( { + root: 'permissions', + fields : [ + {name : 'PER_UID'}, + {name : 'PER_CODE'}, + {name : 'PER_CREATE_DATE'}, + {name : 'PER_STATUS'} + ] + }) + }); + + storeA = new Ext.data.GroupingStore( { + proxy : new Ext.data.HttpProxy({ + url: 'data_rolesPermissions?rUID=' + ROLES.ROL_UID + '&type=show' + }), + reader : new Ext.data.JsonReader( { + root: 'permissions', + fields : [ + {name : 'PER_UID'}, + {name : 'PER_CODE'}, + {name : 'PER_CREATE_DATE'}, + {name : 'PER_STATUS'} + ] + }) + }); + + cmodelP = new Ext.grid.ColumnModel({ + defaults: { + width: 50, + sortable: true + }, + columns: [ + {id:'PER_UID', dataIndex: 'PER_UID', hidden:true, hideable:false}, + {header: TRANSLATIONS.ID_PERMISSION_CODE, dataIndex: 'PER_CODE', width: 60, align:'left'} + ] + }); + + smodelA = new Ext.grid.RowSelectionModel({ + selectSingle: false, + listeners:{ + selectionchange: function(sm){ + switch(sm.getCount()){ + case 0: assignButton.disable(); break; + default: assignButton.enable(); break; + } + } + } + }); + + smodelP = new Ext.grid.RowSelectionModel({ + selectSingle: false, + listeners:{ + selectionchange: function(sm){ + switch(sm.getCount()){ + case 0: removeButton.disable(); break; + default: (ROLES.ROL_UID==pm_admin) ? removeButton.disable() : removeButton.enable(); break; + } + } + } + }); + + availableGrid = new Ext.grid.GridPanel({ + layout : 'fit', + region : 'center', + ddGroup : 'assignedGridDDGroup', + store : storeA, + cm : cmodelP, + sm : smodelA, + enableDragDrop : true, + stripeRows : true, + autoExpandColumn: 'PER_CODE', + iconCls : 'icon-grid', + id : 'availableGrid', + height : 100, + autoWidth : true, + stateful : true, + stateId : 'grid', + enableColumnResize : true, + enableHdMenu : true, + frame : false, + columnLines : false, + viewConfig : {forceFit:true}, + tbar: [TRANSLATIONS.ID_AVAILABLE_PERMISSIONS,{xtype: 'tbfill'},'-',assignButton], + bbar: [{xtype: 'tbfill'}, assignAllButton], + listeners: {rowdblclick: AssignPermissionAction} + }); + + assignedGrid = new Ext.grid.GridPanel({ + layout : 'fit', + ddGroup : 'availableGridDDGroup', + store : storeP, + cm : cmodelP, + sm : smodelP, + enableDragDrop : (ROLES.ROL_UID==pm_admin) ? false : true, + stripeRows : true, + autoExpandColumn: 'PER_CODE', + iconCls : 'icon-grid', + id : 'assignedGrid', + height : 100, + autoWidth : true, + stateful : true, + stateId : 'grid', + enableColumnResize : true, + enableHdMenu : true, + frame : false, + columnLines : false, + viewConfig : {forceFit:true}, + tbar: [TRANSLATIONS.ID_ASSIGNED_PERMISSIONS,{xtype: 'tbfill'},'-',removeButton], + bbar: [{xtype: 'tbfill'},removeAllButton], + listeners: {rowdblclick: RemovePermissionAction} + }); + + RefreshPermissions(); + + //PERMISSIONS DRAG AND DROP PANEL + PermissionsPanel = new Ext.Panel({ + title : TRANSLATIONS.ID_PERMISSIONS, + autoWidth : true, + layout : 'hbox', + defaults : { flex : 1 }, //auto stretch + layoutConfig : { align : 'stretch' }, + items : [availableGrid,{xtype: '', width: 10},assignedGrid], + viewConfig : {forceFit:true} + + }); + + storeU = new Ext.data.GroupingStore({ + proxy : new Ext.data.HttpProxy({ + url: 'data_rolesUsers?rUID=' + ROLES.ROL_UID + '&type=list' + }), + reader : new Ext.data.JsonReader( { + root: 'users', + fields : [ + {name : 'USR_UID'}, + {name : 'USR_USERNAME'}, + {name : 'USR_FIRSTNAME'}, + {name : 'USR_LASTNAME'} + ] + }) + }); + + storeX = new Ext.data.GroupingStore({ + proxy : new Ext.data.HttpProxy({ + url: 'data_rolesUsers?rUID=' + ROLES.ROL_UID + '&type=show' + }), + reader : new Ext.data.JsonReader( { + root: 'users', + fields : [ + {name : 'USR_UID'}, + {name : 'USR_USERNAME'}, + {name : 'USR_FIRSTNAME'}, + {name : 'USR_LASTNAME'} + ] + }) + }); + + cmodelU = new Ext.grid.ColumnModel({ + defaults: { + width: 50, + sortable: true + }, + columns: [ + {id:'USR_UID', dataIndex: 'USR_UID', hidden:true, hideable:false}, + {header: TRANSLATIONS.ID_FIRST_NAME, dataIndex: 'USR_FIRSTNAME', width: 60, align:'left'}, + {header: TRANSLATIONS.ID_LAST_NAME, dataIndex: 'USR_LASTNAME', width: 60, align:'left'}, + {header: TRANSLATIONS.ID_USER_NAME, dataIndex: 'USR_USERNAME', width: 60, align:'left'} + ] + }); + + smodelX = new Ext.grid.RowSelectionModel({ + selectSingle: false, + listeners:{ + selectionchange: function(sm){ + switch(sm.getCount()){ + case 0: assignUButton.disable(); break; + default: assignUButton.enable(); break; + } + } + } + }); + + smodelU = new Ext.grid.RowSelectionModel({ + selectSingle: false, + listeners:{ + selectionchange: function(sm){ + switch(sm.getCount()){ + case 0: removeUButton.disable(); break; + default: removeUButton.enable(); break; + } + } + } + }); + + availableUGrid = new Ext.grid.GridPanel({ + layout : 'fit', + region : 'center', + ddGroup : 'assignedUGridDDGroup', + store : storeX, + cm : cmodelU, + sm : smodelX, + enableDragDrop : true, + stripeRows : true, + autoExpandColumn: 'USR_USERNAME', + iconCls : 'icon-grid', + id : 'availableUGrid', + height : 100, + autoWidth : true, + stateful : true, + stateId : 'grid', + enableColumnResize : true, + enableHdMenu : true, + frame : false, + columnLines : false, + viewConfig : {forceFit:true}, + tbar: [TRANSLATIONS.ID_AVAILABLE_USERS,{xtype: 'tbfill'},'-',assignUButton], + bbar: [{xtype: 'tbfill'}, assignUAllButton], + listeners: {rowdblclick: AssignUserAction} + }); + + assignedUGrid = new Ext.grid.GridPanel({ + layout : 'fit', + ddGroup : 'availableUGridDDGroup', + store : storeU, + cm : cmodelU, + sm : smodelU, + enableDragDrop : true, + stripeRows : true, + autoExpandColumn: 'USR_USERNAME', + iconCls : 'icon-grid', + id : 'assignedUGrid', + height : 100, + autoWidth : true, + stateful : true, + stateId : 'grid', + enableColumnResize : true, + enableHdMenu : true, + frame : false, + columnLines : false, + viewConfig : {forceFit:true}, + tbar: [TRANSLATIONS.ID_ASSIGNED_USERS,{xtype: 'tbfill'},'-',removeUButton], + bbar: [{xtype: 'tbfill'},removeUAllButton], + listeners: {rowdblclick: RemoveUserAction} + }); + + RefreshUsers(); + + //PERMISSIONS DRAG AND DROP PANEL + UsersPanel = new Ext.Panel({ + title : TRANSLATIONS.ID_USERS, + autoWidth : true, + layout : 'hbox', + defaults : { flex : 1 }, //auto stretch + layoutConfig : { align : 'stretch' }, + items : [availableUGrid,{xtype: '', width: 10},assignedUGrid], + viewConfig : {forceFit:true} + }); + + //NORTH PANEL WITH TITLE AND ROLE DETAILS + northPanel = new Ext.Panel({ + region: 'north', + xtype: 'panel', + tbar: [TRANSLATIONS.ID_ROLES + ' : ' + ROLES.ROL_CODE,{xtype: 'tbfill'},backButton] + }); + + //TABS PANEL + tabsPanel = new Ext.TabPanel({ + region: 'center', + activeTab: ROLES.CURRENT_TAB, + items:[UsersPanel,PermissionsPanel], + listeners:{ + tabchange: function(p,t){ + switch(t.title){ + case TRANSLATIONS.ID_PERMISSIONS: + sw_func_permissions ? DoNothing() : DDLoadPermissions(); + break; + case TRANSLATIONS.ID_USERS: + sw_func_users ? DoNothing() : DDLoadUsers(); + break; + } + } + } + }); + + //LOAD ALL PANELS + viewport = new Ext.Viewport({ + layout: 'border', + items: [northPanel, tabsPanel] + }); + +}); + +//Do Nothing Function +DoNothing = function(){} + +//Return to Roles Main Page +BackToRoles = function(){ + location.href = 'roles_List'; +} + +//Loads Drag N Drop Functionality for Permissions +DDLoadPermissions = function(){ + //PERMISSIONS DRAG N DROP AVAILABLE + if (ROLES.ROL_UID!=pm_admin){ + var availableGridDropTargetEl = availableGrid.getView().scroller.dom; + var availableGridDropTarget = new Ext.dd.DropTarget(availableGridDropTargetEl, { + ddGroup : 'availableGridDDGroup', + notifyDrop : function(ddSource, e, data){ + var records = ddSource.dragData.selections; + var arrAux = new Array(); + for (var r=0; r < records.length; r++){ + arrAux[r] = records[r].data['PER_UID']; + } + DeletePermissionsRole(arrAux,RefreshPermissions,FailureProcess); + return true; + } + }); + } + //PERMISSIONS DRAG N DROP ASSIGNED + var assignedGridDropTargetEl = assignedGrid.getView().scroller.dom; + var assignedGridDropTarget = new Ext.dd.DropTarget(assignedGridDropTargetEl, { + ddGroup : 'assignedGridDDGroup', + notifyDrop : function(ddSource, e, data){ + var records = ddSource.dragData.selections; + var arrAux = new Array(); + for (var r=0; r < records.length; r++){ + arrAux[r] = records[r].data['PER_UID']; + } + SavePermissionsRole(arrAux,RefreshPermissions,FailureProcess); + return true; + } + }); + sw_func_permissions = true; +} + +DDLoadUsers = function(){ + //USERS DRAG N DROP AVAILABLE + var availableUGridDropTargetEl = availableUGrid.getView().scroller.dom; + var availableUGridDropTarget = new Ext.dd.DropTarget(availableUGridDropTargetEl, { + ddGroup : 'availableUGridDDGroup', + notifyDrop : function(ddSource, e, data){ + var records = ddSource.dragData.selections; + var arrAux = new Array(); + for (var r=0; r < records.length; r++){ + arrAux[r] = records[r].data['USR_UID']; + } + DeleteUsersRole(arrAux,RefreshUsers,FailureProcess); + return true + } + }); + + //USERS DRAG N DROP ASSIGNED + var assignedUGridDropTargetEl = assignedUGrid.getView().scroller.dom; + var assignedUGridDropTarget = new Ext.dd.DropTarget(assignedUGridDropTargetEl, { + ddGroup : 'assignedUGridDDGroup', + notifyDrop : function(ddSource, e, data){ + var records = ddSource.dragData.selections; + var arrAux = new Array(); + for (var r=0; r < records.length; r++){ + arrAux[r] = records[r].data['USR_UID']; + } + SaveUsersRole(arrAux,RefreshUsers,FailureProcess); + return true + } + }); + sw_func_users = true; +} + +//REFRESH PERMISSION GRIDS +RefreshPermissions = function(){ + availableGrid.store.load(); + assignedGrid.store.load(); +} + +//REFRESH USERS GRIDS +RefreshUsers = function(){ + availableUGrid.store.load(); + assignedUGrid.store.load(); +} + +//FAILURE AJAX FUNCTION +FailureProcess = function(){ + Ext.Msg.alert({title: TRANSLATIONS.ID_ROLES, msg: TRANSLATIONS.ID_MSG_AJAX_FAILURE}); +} + +//ASSIGN PERMISSION TO A ROLE +SavePermissionsRole = function(arr_per, function_success, function_failure){ + var sw_response; + viewport.getEl().mask(TRANSLATIONS.ID_PROCESSING); + Ext.Ajax.request({ + url: 'roles_Ajax', + params: {request: 'assignPermissionToRoleMultiple', ROL_UID: ROLES.ROL_UID, PER_UID: arr_per.join(',')}, + success: function(){ + function_success(); + viewport.getEl().unmask(); + }, + failure: function(){ + function_failure(); + viewport.getEl().unmask(); + } + }); +} + +//REMOVE PERMISSION FROM A ROLE +DeletePermissionsRole = function(arr_per, function_success, function_failure){ + var sw_response; + viewport.getEl().mask(TRANSLATIONS.ID_PROCESSING); + Ext.Ajax.request({ + url: 'roles_Ajax', + params: {request: 'deletePermissionToRoleMultiple', ROL_UID: ROLES.ROL_UID, PER_UID: arr_per.join(',')}, + success: function(){ + function_success(); + viewport.getEl().unmask(); + }, + failure: function(){ + function_failure(); + viewport.getEl().unmask(); + } + }); +} + +//AssignButton Functionality +AssignPermissionAction = function(){ + rowsSelected = availableGrid.getSelectionModel().getSelections(); + var arrAux = new Array(); + for(var a=0; a < rowsSelected.length; a++){ + arrAux[a] = rowsSelected[a].get('PER_UID'); + } + SavePermissionsRole(arrAux,RefreshPermissions,FailureProcess); +} + +//RemoveButton Functionality +RemovePermissionAction = function(){ + if (ROLES.ROL_UID != pm_admin){ + rowsSelected = assignedGrid.getSelectionModel().getSelections(); + var arrAux = new Array(); + for(var a=0; a < rowsSelected.length; a++){ + arrAux[a] = rowsSelected[a].get('PER_UID'); + } + DeletePermissionsRole(arrAux,RefreshPermissions,FailureProcess); + } +} + +//AssignALLButton Functionality +AssignAllPermissionsAction = function(){ + var allRows = availableGrid.getStore(); + var arrAux = new Array(); + if (allRows.getCount()>0){ + for (var r=0; r < allRows.getCount(); r++){ + row = allRows.getAt(r); + arrAux[r] = row.data['PER_UID']; + } + SavePermissionsRole(arrAux,RefreshPermissions,FailureProcess); + } +} + +//RevomeALLButton Functionality +RemoveAllPermissionsAction = function(){ + var allRows = assignedGrid.getStore(); + var arrAux = new Array(); + if (allRows.getCount()>0){ + for (var r=0; r < allRows.getCount(); r++){ + row = allRows.getAt(r); + arrAux[r] = row.data['PER_UID']; + } + DeletePermissionsRole(arrAux,RefreshPermissions,FailureProcess); + } +} + +//ASSIGN USERS TO A ROLE +SaveUsersRole = function(arr_usr, function_success, function_failure){ + var sw_response; + viewport.getEl().mask(TRANSLATIONS.ID_PROCESSING); + Ext.Ajax.request({ + url: 'roles_Ajax', + params: {request: 'assignUserToRole', ROL_UID: ROLES.ROL_UID, aUsers: arr_usr.join(',')}, + success: function(){ + viewport.getEl().unmask(); + function_success(); + }, + failure: function(){ + viewport.getEl().unmask(); + function_failure(); + } + }); +} + +//REMOVE USERS FROM A ROLE +DeleteUsersRole = function(arr_usr, function_success, function_failure){ + var sw_response; + viewport.getEl().mask(TRANSLATIONS.ID_PROCESSING); + Ext.Ajax.request({ + url: 'roles_Ajax', + params: {request: 'deleteUserRoleMultiple', ROL_UID: ROLES.ROL_UID, USR_UID: arr_usr.join(',')}, + success: function(){ + function_success(); + viewport.getEl().unmask(); + }, + failure: function(){ + function_failure(); + viewport.getEl().unmask(); + } + }); +} + +//AssignUButton Functionality +AssignUserAction = function(){ + rowsSelected = availableUGrid.getSelectionModel().getSelections(); + var arrAux = new Array(); + for(var a=0; a < rowsSelected.length; a++){ + arrAux[a] = rowsSelected[a].get('USR_UID'); + } + SaveUsersRole(arrAux,RefreshUsers,FailureProcess); +} + +//RemoveUButton Functionality +RemoveUserAction = function(){ + rowsSelected = assignedUGrid.getSelectionModel().getSelections(); + var arrAux = new Array(); + for(var a=0; a < rowsSelected.length; a++){ + arrAux[a] = rowsSelected[a].get('USR_UID'); + } + DeleteUsersRole(arrAux,RefreshUsers,FailureProcess); +} + +//AssignUALLButton Functionality +AssignAllUsersAction = function(){ + var allRows = availableUGrid.getStore(); + if (allRows.getCount()>0){ + Ext.Msg.confirm(TRANSLATIONS.ID_CONFIRM, TRANSLATIONS.ID_MSG_CONFIRM_ASSIGN_ALL_USERS, + function(btn, text){ + if (btn=="yes"){ + var arrAux = new Array(); + for (var r=0; r < allRows.getCount(); r++){ + row = allRows.getAt(r); + arrAux[r] = row.data['USR_UID']; + } + SaveUsersRole(arrAux,RefreshUsers,FailureProcess); + } + } + ); + } +} + +//RevomeALLButton Functionality +RemoveAllUsersAction = function(){ + var allRows = assignedUGrid.getStore(); + var arrAux = new Array(); + if (allRows.getCount()>0){ + for (var r=0; r < allRows.getCount(); r++){ + row = allRows.getAt(r); + arrAux[r] = row.data['USR_UID']; + } + DeleteUsersRole(arrAux,RefreshUsers,FailureProcess); + } +} + + + +