diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php index 85d6e4977..b9a9199c1 100644 --- a/workflow/engine/classes/class.processMap.php +++ b/workflow/engine/classes/class.processMap.php @@ -5719,7 +5719,9 @@ class processMap { } return $aReportTable; } - function getExtAvailableUsersList($sTaskUID = '', $iType = 1) { + + + function getExtAvailableUsersList($sTaskUID = '', $iType = 2) { try { $oTasks = new Tasks ( ); $aAux = $oTasks->getGroupsOfTask($sTaskUID, $iType); @@ -5782,13 +5784,85 @@ class processMap { $_DBArray ['availableUsers'] = $aUsers; $_SESSION ['_DBArray'] = $_DBArray; return $_SESSION ['_DBArray']['availableUsers']; - return $oCriteria; } catch (Exception $oError) { throw ($oError); } } - +function getExtTaskUsersAdHocCriteria($sTaskUID = '', $iType = 1) { + try { + $aUsers = array(); + $aUsers [] = array('LABEL' => 'char', 'TAS_UID' => 'char', 'USR_UID' => 'char', 'TU_TYPE' => 'integer', 'TU_RELATION' => 'integer'); + $sDelimiter = DBAdapter::getStringDelimiter (); + $oCriteria = new Criteria('workflow'); + $oCriteria->addAsColumn('GRP_TITLE', 'C.CON_VALUE'); + $oCriteria->addSelectColumn(TaskUserPeer::TAS_UID); + $oCriteria->addSelectColumn(TaskUserPeer::USR_UID); + $oCriteria->addSelectColumn(TaskUserPeer::TU_TYPE); + $oCriteria->addSelectColumn(TaskUserPeer::TU_RELATION); + $oCriteria->addAlias('C', 'CONTENT'); + $aConditions = array(); + $aConditions [] = array(TaskUserPeer::USR_UID, 'C.CON_ID'); + $aConditions [] = array('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter); + $aConditions [] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter); + $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); + $oCriteria->add(TaskUserPeer::TAS_UID, $sTaskUID); + $oCriteria->add(TaskUserPeer::TU_TYPE, $iType); + $oCriteria->add(TaskUserPeer::TU_RELATION, 2); + $oDataset = TaskUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + $c = 0; + while ($aRow = $oDataset->getRow()) { + $c++; + $oGroup = new Groupwf ( ); + $aFields = $oGroup->load($aRow ['USR_UID']); + if ($aFields ['GRP_STATUS'] == 'ACTIVE') { + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); + $oCriteria->add(GroupUserPeer::GRP_UID, $aRow ['USR_UID']); + $oDataset2 = GroupUserPeer::doSelectRS($oCriteria); + $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset2->next(); + $aRow2 = $oDataset2->getRow(); + } else { + $aRow2 ['GROUP_INACTIVE'] = '(' . G::LoadTranslation('ID_GROUP_INACTIVE') . ')'; + } + $aUsers [] = array('LABEL' => (!isset($aRow2 ['GROUP_INACTIVE']) ? $aRow ['GRP_TITLE'] . ' (' . $aRow2 ['MEMBERS_NUMBER'] . ' ' . ((int) $aRow2 ['MEMBERS_NUMBER'] == 1 ? G::LoadTranslation('ID_USER') : G::LoadTranslation('ID_USERS')) . ')
' : $aRow ['GRP_TITLE'] . ' ' . $aRow2 ['GROUP_INACTIVE']), 'TAS_UID' => $aRow ['TAS_UID'], 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $aRow ['TU_TYPE'], 'TU_RELATION' => $aRow ['TU_RELATION']); + $oDataset->next(); + } + $oCriteria = new Criteria('workflow'); + $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); + $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); + $oCriteria->addSelectColumn(TaskUserPeer::TAS_UID); + $oCriteria->addSelectColumn(TaskUserPeer::USR_UID); + $oCriteria->addSelectColumn(TaskUserPeer::TU_TYPE); + $oCriteria->addSelectColumn(TaskUserPeer::TU_RELATION); + $oCriteria->addJoin(TaskUserPeer::USR_UID, UsersPeer::USR_UID, Criteria::LEFT_JOIN); + $oCriteria->add(TaskUserPeer::TAS_UID, $sTaskUID); + $oCriteria->add(TaskUserPeer::TU_TYPE, $iType); + $oCriteria->add(TaskUserPeer::TU_RELATION, 1); + $oDataset = TaskUserPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + $aUsers [] = array('LABEL' => $aRow ['USR_FIRSTNAME'] . ' ' . $aRow ['USR_LASTNAME'], 'TAS_UID' => $aRow ['TAS_UID'], 'USR_UID' => $aRow ['USR_UID'], 'TU_TYPE' => $aRow ['TU_TYPE'], 'TU_RELATION' => $aRow ['TU_RELATION']); + $oDataset->next(); + } + global $_DBArray; + $_DBArray = (isset($_SESSION ['_DBArray']) ? $_SESSION ['_DBArray'] : ''); + $_DBArray ['taskUsers'] = $aUsers; + $_SESSION ['_DBArray'] = $_DBArray; + G::LoadClass('ArrayPeer'); + $oCriteria = new Criteria('dbarray'); + $oCriteria->setDBArrayTable('taskUsers'); + $oCriteria->addDescendingOrderByColumn(TaskUserPeer::TU_RELATION); + $oCriteria->addAscendingOrderByColumn('LABEL'); + return $oCriteria; + } catch (Exception $oError) { + throw ($oError); + } + } @@ -5820,8 +5894,8 @@ class processMap { $G_PUBLISH = new Publisher ( ); $oTask = new Task ( ); $aTask = $oTask->load($sTaskUID); - - $this->getExtTaskUsersCriteria ( $sTaskUID, $_SESSION ['iType'] ); + //$assignedUsers = getExtTaskUsersCriteria($sTaskUID, $_SESSION ['iType']); + $this->getExtTaskUsersAdHocCriteria ( $sTaskUID, $_SESSION ['iType'] ); return $_SESSION ['_DBArray']['taskUsers']; } catch ( Exception $oError ) { diff --git a/workflow/engine/methods/bpmn/proxyExtjs.php b/workflow/engine/methods/bpmn/proxyExtjs.php index af4a81ef3..890698040 100644 --- a/workflow/engine/methods/bpmn/proxyExtjs.php +++ b/workflow/engine/methods/bpmn/proxyExtjs.php @@ -171,6 +171,7 @@ switch($_GET['action']) case 'availableUsers': $rows = $oProcessMap->getExtAvailableUsersList($_GET['tid']); + array_shift($rows); break; case 'assignedUsers': diff --git a/workflow/engine/methods/users/users_Ajax.php b/workflow/engine/methods/users/users_Ajax.php index 8b7a16f55..b2f66fe58 100644 --- a/workflow/engine/methods/users/users_Ajax.php +++ b/workflow/engine/methods/users/users_Ajax.php @@ -42,8 +42,15 @@ try { { $_POST = $_POST['form']; } - $_POST['function'] = get_ajax_value('function'); - switch ($_POST['function']) + if(isset($_POST['function'])) + {$value= $_POST['function']; + $value = get_ajax_value('function');} + else + {$value= $_POST['functions']; + $value = get_ajax_value('functions');} + + + switch ($value) { case 'verifyUsername': //print_r($_POST); die; diff --git a/workflow/engine/templates/bpmn/ProcessOptions.js b/workflow/engine/templates/bpmn/ProcessOptions.js index cae5090d5..609b45417 100755 --- a/workflow/engine/templates/bpmn/ProcessOptions.js +++ b/workflow/engine/templates/bpmn/ProcessOptions.js @@ -2337,6 +2337,8 @@ var formWindow = new Ext.Window({ success: function(response) { Ext.MessageBox.alert ('Status','Report Table Edited Successfully.'); } + + }); } @@ -2346,6 +2348,7 @@ var formWindow = new Ext.Window({ formWindow.close(); reportStore.reload(); + } },{ text: 'Cancel', @@ -2355,5 +2358,6 @@ var formWindow = new Ext.Window({ } }] }); + gridWindow.show(); } diff --git a/workflow/engine/templates/bpmn/TaskContext.js b/workflow/engine/templates/bpmn/TaskContext.js index 3a7bd7572..c99be9136 100755 --- a/workflow/engine/templates/bpmn/TaskContext.js +++ b/workflow/engine/templates/bpmn/TaskContext.js @@ -1807,6 +1807,29 @@ TaskContext.prototype.editUsersAdHoc= function(_5625) var editor = new Ext.ux.grid.RowEditor({ saveText: 'Update' }); + var taskUsers = new Ext.data.JsonStore({ + root : 'data', + totalProperty: 'totalCount', + idProperty : 'gridIndex', + remoteSort : true, + fields : userFields, + proxy: new Ext.data.HttpProxy({ + url: 'proxyExtjs?pid='+pro_uid+'&tid='+taskId+'&action=assignedUsers' + }) + }); + //taskUsers.setDefaultSort('LABEL', 'asc'); + taskUsers.load(); + + // create the Data Store of users that are not assigned to a task + var storeUsers = new Ext.data.JsonStore({ + root : 'data', + url : 'proxyExtjs?tid='+taskId+'&action=availableUsers', + totalProperty : 'totalCount', + idProperty : 'gridIndex', + remoteSort : false, //true, + autoLoad : true, + fields : userFields + }); var btnAdd = new Ext.Button({ @@ -1834,8 +1857,11 @@ TaskContext.prototype.editUsersAdHoc= function(_5625) grid.getView().refresh(); //grid.getSelectionModel().selectRow(0); editor.startEditing(0, 0); + } - } + + } + }); var btnRemove = new Ext.Button({ @@ -1889,29 +1915,7 @@ TaskContext.prototype.editUsersAdHoc= function(_5625) }); // create the Data Store of users that are already assigned to a task - var taskUsers = new Ext.data.JsonStore({ - root : 'data', - totalProperty: 'totalCount', - idProperty : 'gridIndex', - remoteSort : true, - fields : userFields, - proxy: new Ext.data.HttpProxy({ - url: 'proxyExtjs?pid='+pro_uid+'&tid='+taskId+'&action=assignedUsers' - }) - }); - //taskUsers.setDefaultSort('LABEL', 'asc'); - taskUsers.load(); - - // create the Data Store of users that are not assigned to a task - var storeUsers = new Ext.data.JsonStore({ - root : 'data', - url : 'proxyExtjs?tid='+taskId+'&action=availableUsers', - totalProperty : 'totalCount', - idProperty : 'gridIndex', - remoteSort : false, //true, - autoLoad : true, - fields : userFields - }); + var grid = new Ext.grid.GridPanel({ @@ -1941,7 +1945,7 @@ TaskContext.prototype.editUsersAdHoc= function(_5625) fieldLabel: 'Users_groups', hiddenName: 'number', store : storeUsers, - displayField : 'LABEL' , + displayField : 'LABEL', valueField : 'LABEL', name : 'LABEL', scope : _5625, @@ -1991,13 +1995,22 @@ TaskContext.prototype.editUsersAdHoc= function(_5625) var userId = record.data.USR_UID; var tu_Type = record.data.TU_TYPE; var tu_Relation = record.data.TU_RELATION; - var urlparams = '?action=assign&data={"TAS_UID":"'+taskId+'","USR_UID":"'+userId+'","TU_TYPE":"'+tu_Type+'","TU_RELATION":"'+tu_Relation+'"}'; + ///var urlparams = '?action=assign&data={"TAS_UID":"'+taskId+'","USR_UID":"'+userId+'","TU_TYPE":"'+tu_Type+'","TU_RELATION":"'+tu_Relation+'"}'; Ext.Ajax.request({ - url: 'processes_Ajax.php' +urlparams , + url: '../users/users_Ajax.php', + METHOD:'post', success: function (response) { // When saving data success Ext.MessageBox.alert ('Status','User has been successfully assigned'); }, + params:{ + functions : 'assign', + TAS_UID : taskId, + USR_UID : userId, + TU_TYPE : tu_Type, + TU_RELATION:tu_Relation + + }, failure: function () { // when saving data failed Ext.MessageBox.alert ('Status','Failed saving User Assigned to Task'); } @@ -2009,15 +2022,24 @@ TaskContext.prototype.editUsersAdHoc= function(_5625) var user_TURel = record.json.TU_RELATION; var userUID = record.json.USR_UID; var user_TUtype = record.json.TU_TYPE; - urlparams = '?action=ofToAssign&data={"TAS_UID":"'+taskId+'","TU_RELATION":"'+user_TURel+'","USR_UID":"'+userUID+'","TU_TYPE":"'+user_TUtype+'"}'; + //urlparams = '?action=ofToAssign&data={"TAS_UID":"'+taskId+'","TU_RELATION":"'+user_TURel+'","USR_UID":"'+userUID+'","TU_TYPE":"'+user_TUtype+'"}'; Ext.Ajax.request({ - url : 'processes_Ajax.php' +urlparams , + url : '../users/users_Ajax.php', + method: 'POST', success: function(response) { - //Ext.MessageBox.alert ('Status','User has been updated successfully.'); - } + Ext.MessageBox.alert ('Status','User has been updated successfully.'); + }, + params:{ + functions : 'ofToAssign', + TAS_UID : taskId, + USR_UID : userId, + TU_TYPE : tu_Type, + TU_RELATION:tu_Relation + + } }); } - storeUsers.reload(); + //storeUsers.reload(); } });