diff --git a/rbac/engine/classes/model/Roles.php b/rbac/engine/classes/model/Roles.php index cbd429460..000b5f8e9 100755 --- a/rbac/engine/classes/model/Roles.php +++ b/rbac/engine/classes/model/Roles.php @@ -55,7 +55,6 @@ class Roles extends BaseRoles { * Function load * access public */ - public function load($Uid) { try { $oRow = RolesPeer::retrieveByPK($Uid); @@ -137,49 +136,49 @@ class Roles extends BaseRoles { $oCriteria2->addSelectColumn('COUNT(*) AS CNT'); $oCriteria2->add(RolesPeer::ROL_UID, '', Criteria::NOT_EQUAL); - $oCriteria2->add(SystemsPeer::SYS_CODE, $systemCode); - $oCriteria2->add(RolesPeer::ROL_CREATE_DATE, '', Criteria::NOT_EQUAL); - $oCriteria2->add(RolesPeer::ROL_UPDATE_DATE, '', Criteria::NOT_EQUAL); - $oCriteria2->addJoin(RolesPeer::ROL_SYSTEM, SystemsPeer::SYS_UID); - if ($filter != ''){ - $oCriteria2->add(RolesPeer::ROL_CODE, '%'.$filter.'%', Criteria::LIKE); - } - $result['COUNTER'] = $oCriteria2; - $oCriteria = new Criteria('rbac'); - $oCriteria->clear(); - $oCriteria->addSelectColumn(RolesPeer::ROL_UID); - $oCriteria->addSelectColumn(RolesPeer::ROL_PARENT); - $oCriteria->addSelectColumn(RolesPeer::ROL_SYSTEM); - $oCriteria->addSelectColumn(SystemsPeer::SYS_CODE); - $oCriteria->addSelectColumn(RolesPeer::ROL_CODE); - $oCriteria->addSelectColumn(RolesPeer::ROL_CREATE_DATE); - $oCriteria->addSelectColumn(RolesPeer::ROL_UPDATE_DATE); - $oCriteria->addSelectColumn(RolesPeer::ROL_STATUS); - $oCriteria->add(RolesPeer::ROL_UID, '', Criteria::NOT_EQUAL); - $oCriteria->add(SystemsPeer::SYS_CODE, $systemCode); - $oCriteria->add(RolesPeer::ROL_CREATE_DATE, '', Criteria::NOT_EQUAL); - $oCriteria->add(RolesPeer::ROL_UPDATE_DATE, '', Criteria::NOT_EQUAL); - $oCriteria->addJoin(RolesPeer::ROL_SYSTEM, SystemsPeer::SYS_UID); - - if ($filter != ''){ - $oCriteria->add(RolesPeer::ROL_CODE, '%'.$filter.'%', Criteria::LIKE); - } - - $oCriteria->setOffset($start); - $oCriteria->setLimit($limit); - - $result['LIST'] = $oCriteria; - - return $result; + $oCriteria2->add(SystemsPeer::SYS_CODE, $systemCode); + $oCriteria2->add(RolesPeer::ROL_CREATE_DATE, '', Criteria::NOT_EQUAL); + $oCriteria2->add(RolesPeer::ROL_UPDATE_DATE, '', Criteria::NOT_EQUAL); + $oCriteria2->addJoin(RolesPeer::ROL_SYSTEM, SystemsPeer::SYS_UID); + if ($filter != '') { + $oCriteria2->add(RolesPeer::ROL_CODE, '%'.$filter.'%', Criteria::LIKE); + } + $result['COUNTER'] = $oCriteria2; + $oCriteria = new Criteria('rbac'); + $oCriteria->clear(); + $oCriteria->addSelectColumn(RolesPeer::ROL_UID); + $oCriteria->addSelectColumn(RolesPeer::ROL_PARENT); + $oCriteria->addSelectColumn(RolesPeer::ROL_SYSTEM); + $oCriteria->addSelectColumn(SystemsPeer::SYS_CODE); + $oCriteria->addSelectColumn(RolesPeer::ROL_CODE); + $oCriteria->addSelectColumn(RolesPeer::ROL_CREATE_DATE); + $oCriteria->addSelectColumn(RolesPeer::ROL_UPDATE_DATE); + $oCriteria->addSelectColumn(RolesPeer::ROL_STATUS); + $oCriteria->add(RolesPeer::ROL_UID, '', Criteria::NOT_EQUAL); + $oCriteria->add(SystemsPeer::SYS_CODE, $systemCode); + $oCriteria->add(RolesPeer::ROL_CREATE_DATE, '', Criteria::NOT_EQUAL); + $oCriteria->add(RolesPeer::ROL_UPDATE_DATE, '', Criteria::NOT_EQUAL); + $oCriteria->addJoin(RolesPeer::ROL_SYSTEM, SystemsPeer::SYS_UID); + + if ($filter != '') { + $oCriteria->add(RolesPeer::ROL_CODE, '%'.$filter.'%', Criteria::LIKE); + } + + $oCriteria->setOffset($start); + $oCriteria->setLimit($limit); + + $result['LIST'] = $oCriteria; + + return $result; } function getAllRoles($systemCode = 'PROCESSMAKER') { $c = $this->listAllRoles($systemCode); - $rs = RolesPeer::DoSelectRs($c); + $rs = RolesPeer::DoSelectRs($c); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $aRows = Array(); - while($rs->next()){ + while($rs->next()) { $row = $rs->getRow(); $o = new Roles(); $o->load($row['ROL_UID']); @@ -548,6 +547,7 @@ class Roles extends BaseRoles { $oDataset = RolesPeer::doSelectRS($criteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + return $oDataset; } catch( exception $e ) { @@ -607,6 +607,7 @@ class Roles extends BaseRoles { $o = new RolesPermissions(); $o->setPerUid($sData['PER_UID']); $o->setRolUid($sData['ROL_UID']); + $o->setPermissionName($sData['PER_NAME']); $o->save(); } diff --git a/rbac/engine/classes/model/RolesPermissions.php b/rbac/engine/classes/model/RolesPermissions.php index cec3f31f7..f571c823e 100755 --- a/rbac/engine/classes/model/RolesPermissions.php +++ b/rbac/engine/classes/model/RolesPermissions.php @@ -41,8 +41,21 @@ require_once 'classes/model/om/BaseRolesPermissions.php'; * * @package rbac-classes-model */ -class RolesPermissions extends BaseRolesPermissions { - function create($aData) { +class RolesPermissions extends BaseRolesPermissions +{ + /** + * The value for the permission_name field. + * @var string + */ + protected $permission_name = ''; + + /** + * + * @param array $aData + * @return boolean + */ + function create($aData) + { try { $oCriteria = new Criteria('rbac'); $oCriteria->add(RolesPermissionsPeer::ROL_UID, $aData['ROL_UID']); @@ -51,8 +64,11 @@ class RolesPermissions extends BaseRolesPermissions { $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); $aRow = $oDataset->getRow(); - if (is_array($aRow)) return true; - + if (is_array($aRow)) { + return true; + } + $this->permission_name = $aData['PER_NAME']; + $oRolesPermissions = new RolesPermissions(); $oRolesPermissions->fromArray($aData, BasePeer::TYPE_FIELDNAME); $iResult = $oRolesPermissions->save(); @@ -62,4 +78,37 @@ class RolesPermissions extends BaseRolesPermissions { throw($oError); } } + + /** + * @return string + */ + public function getPermissionName() + { + if ($this->getPerUid() == '') { + throw (new Exception("Error in getPerName, the PER_UID can't be blank")); + } + $lang = defined('SYS_LANG') ? SYS_LANG : 'en'; + $this->permission_name = Content::load('PER_NAME', '', $this->getPerUid(), $lang); + return $this->permission_name; + } + + /** + * + * @param string $name + */ + public function setPermissionName($name) + { + if ($this->getPerUid() == '') { + throw (new Exception("Error in setPerTitle, the PER_UID can't be blank")); + } + if ($name !== null && ! is_string($name)) { + $name = (string)$name; + } + + if ($this->permission_name !== $name || $name === '') { + $this->permission_name = $name; + $lang = defined('SYS_LANG') ? SYS_LANG : 'en'; + $res = Content::addContent('PER_NAME', '', $this->getPerUid(), $lang, $this->permission_name); + } + } } // RolesPermissions diff --git a/workflow/engine/data/mssql/insert.sql b/workflow/engine/data/mssql/insert.sql index 312583696..b89018bb7 100755 --- a/workflow/engine/data/mssql/insert.sql +++ b/workflow/engine/data/mssql/insert.sql @@ -6,6 +6,27 @@ SELECT 'ROL_NAME','','00000000000000000000000000000002','en','System Administrat SELECT 'ROL_NAME','','00000000000000000000000000000003','en','Operator' UNION ALL SELECT 'ROL_NAME','','00000000000000000000000000000004','en','Manager'; +INSERT INTO CONTENT (CON_CATEGORY,CON_PARENT,CON_ID,CON_LANG,CON_VALUE) VALUES +('PER_NAME','','00000000000000000000000000000001','en','Login'), +('PER_NAME','','00000000000000000000000000000002','en','Setup'), +('PER_NAME','','00000000000000000000000000000003','en','Users'), +('PER_NAME','','00000000000000000000000000000004','en','Factory'), +('PER_NAME','','00000000000000000000000000000005','en','Create cases'), +('PER_NAME','','00000000000000000000000000000006','en','All cases'), +('PER_NAME','','00000000000000000000000000000008','en','Reports'), +('PER_NAME','','00000000000000000000000000000007','en','Reassign case'), +('PER_NAME','','00000000000000000000000000000009','en','Supervisor'), +('PER_NAME','','00000000000000000000000000000010','en','Setup Advanced'), +('PER_NAME','','00000000000000000000000000000011','en','Dashboard'), +('PER_NAME','','00000000000000000000000000000012','en','WebDav'), +('PER_NAME','','00000000000000000000000000000013','en','Delete cases'), +('PER_NAME','','00000000000000000000000000000014','en','Edit Personal Info'), +('PER_NAME','','00000000000000000000000000000015','en','View Folders'), +('PER_NAME','','00000000000000000000000000000016','en','Add Folders'), +('PER_NAME','','00000000000000000000000000000017','en','Add file in folders'), +('PER_NAME','','00000000000000000000000000000018','en','Cancel cases'), +('PER_NAME','','00000000000000000000000000000019','en','Delete folders'); + INSERT INTO [LANGUAGE] ([LAN_ID],[LAN_NAME],[LAN_NATIVE_NAME],[LAN_DIRECTION],[LAN_WEIGHT],[LAN_ENABLED],[LAN_CALENDAR]) SELECT 'aa','Afar','','L','0','0','GREGORIAN' UNION ALL SELECT 'ab','Abkhazian','','L','1','0','GREGORIAN' UNION ALL diff --git a/workflow/engine/data/mysql/insert.sql b/workflow/engine/data/mysql/insert.sql index d61068d61..fb28dd419 100755 --- a/workflow/engine/data/mysql/insert.sql +++ b/workflow/engine/data/mysql/insert.sql @@ -6,6 +6,27 @@ INSERT INTO CONTENT (CON_CATEGORY,CON_PARENT,CON_ID,CON_LANG,CON_VALUE) VALUES ('ROL_NAME','','00000000000000000000000000000003','en','Operator'), ('ROL_NAME','','00000000000000000000000000000004','en','Manager'); +INSERT INTO CONTENT (CON_CATEGORY,CON_PARENT,CON_ID,CON_LANG,CON_VALUE) VALUES +('PER_NAME','','00000000000000000000000000000001','en','Login'), +('PER_NAME','','00000000000000000000000000000002','en','Setup'), +('PER_NAME','','00000000000000000000000000000003','en','Users'), +('PER_NAME','','00000000000000000000000000000004','en','Factory'), +('PER_NAME','','00000000000000000000000000000005','en','Create cases'), +('PER_NAME','','00000000000000000000000000000006','en','All cases'), +('PER_NAME','','00000000000000000000000000000008','en','Reports'), +('PER_NAME','','00000000000000000000000000000007','en','Reassign case'), +('PER_NAME','','00000000000000000000000000000009','en','Supervisor'), +('PER_NAME','','00000000000000000000000000000010','en','Setup Advanced'), +('PER_NAME','','00000000000000000000000000000011','en','Dashboard'), +('PER_NAME','','00000000000000000000000000000012','en','WebDav'), +('PER_NAME','','00000000000000000000000000000013','en','Delete cases'), +('PER_NAME','','00000000000000000000000000000014','en','Edit Personal Info'), +('PER_NAME','','00000000000000000000000000000015','en','View Folders'), +('PER_NAME','','00000000000000000000000000000016','en','Add Folders'), +('PER_NAME','','00000000000000000000000000000017','en','Add file in folders'), +('PER_NAME','','00000000000000000000000000000018','en','Cancel cases'), +('PER_NAME','','00000000000000000000000000000019','en','Delete folders'); + INSERT INTO LANGUAGE (LAN_ID,LAN_NAME,LAN_NATIVE_NAME,LAN_DIRECTION,LAN_WEIGHT,LAN_ENABLED,LAN_CALENDAR) VALUES ('aa','Afar','','L','0','0','GREGORIAN'), ('ab','Abkhazian','','L','1','0','GREGORIAN'), diff --git a/workflow/engine/methods/roles/data_rolesPermissions.php b/workflow/engine/methods/roles/data_rolesPermissions.php index 17829c61e..40a545f00 100755 --- a/workflow/engine/methods/roles/data_rolesPermissions.php +++ b/workflow/engine/methods/roles/data_rolesPermissions.php @@ -41,8 +41,13 @@ if ($TYPE_DATA == 'show') $oDataset = $RBAC->getAllPermissions( $ROL_UID, $RBAC->sSystem, $filter, 1 ); $rows = Array (); +$per = new RolesPermissions(); while ($oDataset->next()) { - $rows[] = $oDataset->getRow(); + $row = $oDataset->getRow(); + $per->setPerUid($row['PER_UID']); + $row['PER_NAME'] = $per->getPermissionName(); + $rows[] = $row; } + echo '{permissions: ' . G::json_encode( $rows ) . '}'; diff --git a/workflow/engine/methods/roles/roles_Ajax.php b/workflow/engine/methods/roles/roles_Ajax.php index c095c76bc..061435b13 100755 --- a/workflow/engine/methods/roles/roles_Ajax.php +++ b/workflow/engine/methods/roles/roles_Ajax.php @@ -251,13 +251,20 @@ switch ($REQUEST) { $content = new Content(); $rNames = $content->getAllContentsByRole(); $aUsers = $RBAC->getAllUsersByRole(); - $aRows = Array (); while ($rs->next()) { $aRows[] = $rs->getRow(); $index = sizeof( $aRows ) - 1; - $aRows[$index]['ROL_NAME'] = isset( $rNames[$aRows[$index]['ROL_UID']] ) ? $rNames[$aRows[$index]['ROL_UID']] : ''; - $aRows[$index]['TOTAL_USERS'] = isset( $aUsers[$aRows[$index]['ROL_UID']] ) ? $aUsers[$aRows[$index]['ROL_UID']] : 0; + $roleUid = $aRows[$index]['ROL_UID']; + if (!isset($rNames[$roleUid])) { + $rol = new Roles(); + $row = $rol->load($roleUid); + $rolname = $row['ROL_NAME']; + } else { + $rolname = $rNames[$roleUid]; + } + $aRows[$index]['ROL_NAME'] = $rolname; + $aRows[$index]['TOTAL_USERS'] = isset( $aUsers[$roleUid] ) ? $aUsers[$roleUid] : 0; } $oData = RolesPeer::doSelectRS( $Criterias['COUNTER'] ); @@ -297,6 +304,18 @@ switch ($REQUEST) { } echo '{success:' . $response . '}'; break; + case 'updatePermissionContent': + /* + $per_code = $_POST['PER_NAME']; + $per_uid = isset( $_POST['PER_UID'] ) ? $_POST['PER_UID'] : ''; + require_once 'classes/model/Content.php'; + $oCriteria = new Criteria( 'workflow' ); + $oCriteria->add( ContentPeer::CON_CATEGORY, 'PER_NAME' ); + $oCriteria->add( ContentPeer::CON_ID, $per_uid ); + $oCriteria->add( ContentPeer::CON_VALUE, $per_code ); + $oDataset = ContentPeer::doSelectRS( $oCriteria ); + */ + break; default: echo 'default'; } diff --git a/workflow/engine/templates/roles/rolesUsersPermission.js b/workflow/engine/templates/roles/rolesUsersPermission.js index 55987347d..ec81f7565 100755 --- a/workflow/engine/templates/roles/rolesUsersPermission.js +++ b/workflow/engine/templates/roles/rolesUsersPermission.js @@ -52,6 +52,7 @@ var assignUAllButton; var removeUButton; var removeUAllButton; var backButton; +var editForm; var sw_func_permissions; var sw_func_users; @@ -63,11 +64,17 @@ Ext.onReady(function(){ sw_func_permissions = false; sw_func_users = false; - editPermissionsButton = new Ext.Action({ + editPermissionsButton = new Ext.Action({ text: _('ID_EDIT_PERMISSIONS'), iconCls: 'button_menu_ext ss_sprite ss_key_add', handler: EditPermissionsAction }); + + editPermissionsContentsButton = new Ext.Action({ + text: _('ID_EDIT_PERMISSIONS_CONTENT'), + iconCls: 'button_menu_ext ss_sprite ss_key_add', + handler: EditPermissionsContentsAction + }); cancelEditPermissionsButton = new Ext.Action({ text: _('ID_CLOSE'), @@ -102,6 +109,7 @@ Ext.onReady(function(){ fields : [ {name : 'PER_UID'}, {name : 'PER_CODE'}, + {name : 'PER_NAME'}, {name : 'PER_CREATE_DATE'}, {name : 'PER_STATUS'} ] @@ -117,6 +125,7 @@ Ext.onReady(function(){ fields : [ {name : 'PER_UID'}, {name : 'PER_CODE'}, + {name : 'PER_NAME'}, {name : 'PER_CREATE_DATE'}, {name : 'PER_STATUS'} ] @@ -130,7 +139,8 @@ Ext.onReady(function(){ }, columns: [ {id:'PER_UID', dataIndex: 'PER_UID', hidden:true, hideable:false}, - {header: _('ID_PERMISSION_CODE'), dataIndex: 'PER_CODE', width: 60, align:'left'} + {header: _('ID_PERMISSION_CODE'), dataIndex: 'PER_CODE', width: 60, align:'left'}, + {header: _('ID_PERMISSION_NAME'), dataIndex: 'PER_NAME', width: 60, align:'left'} ] }); @@ -157,7 +167,7 @@ Ext.onReady(function(){ if (ROLES.ROL_UID == pm_admin) { var permissionUid = assignedGrid.getSelectionModel().getSelections(); permissionUid = permissionUid[0].get('PER_UID'); - for (var i=0; i 0){ + if (permissionUid[0].get('PER_UID') == '00000000000000000000000000000002'){ + PMExt.warning(_('ID_PERMISSION'),_('ID_PERMISSION_MSG')); + }else{ + editForm.getForm().findField('per_uid').setValue(permissionUid[0].get('PER_UID')); + editForm.getForm().findField('code').setValue(permissionUid[0].get('PER_CODE')); + editForm.getForm().findField('name').setValue(permissionUid[0].get('PER_NAME')); + w = new Ext.Window({ + autoHeight: true, + id: 'w', + modal: true, + width: 420, + title: _('ID_EDIT_PERMISSION_TITLE'), + items: [editForm] + }); + w.show(); + } + } +}; + //Function DoSearch Available DoSearchA = function(){ availableGrid.store.load({params: {textFilter: searchTextA.getValue()}}); @@ -873,6 +955,14 @@ EditPermissionsAction = function(){ PermissionsPanel.doLayout(); }; +EditPermissionsContentsAction = function(){ + //availableGrid.show(); + //buttonsPanel.show(); + editPermissionsContentsButton.disable(); + editPermissionsButton.disable(); + EditPermissionsWindow(); +}; + //CancelEditPermissions Function CancelEditPermissionsAction = function(){ availableGrid.hide(); diff --git a/workflow/engine/templates/setup/main.js b/workflow/engine/templates/setup/main.js index b433c74b8..1d8e17832 100755 --- a/workflow/engine/templates/setup/main.js +++ b/workflow/engine/templates/setup/main.js @@ -21,7 +21,7 @@ var main = function(){ Ext.state.Manager.setProvider(cookiep); - for(i=0; i