diff --git a/workflow/engine/methods/departments/departments_Ajax.php b/workflow/engine/methods/departments/departments_Ajax.php index 2196b2113..bca544211 100644 --- a/workflow/engine/methods/departments/departments_Ajax.php +++ b/workflow/engine/methods/departments/departments_Ajax.php @@ -278,6 +278,9 @@ switch ($_POST['action']) case 'assignedUsers': $filter = isset($_POST['textFilter']) ? $_POST['textFilter'] : ''; $dep_uid = $_REQUEST['dUID']; + $oDept = new Department(); + $oDept->Load($dep_uid); + $manager = $oDept->getDepManager(); $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(UsersPeer::USR_UID); $oCriteria->addSelectColumn(UsersPeer::USR_USERNAME); @@ -296,6 +299,8 @@ switch ($_POST['action']) $aUsers = array(); while ($oDataset->next()){ $aUsers[] = $oDataset->getRow(); + $index = sizeof($aUsers)-1; + $aUsers[$index]['USR_SUPERVISOR'] = ($manager == $aUsers[$index]['USR_UID'])? true : false; } echo '{users:'.G::json_encode($aUsers).'}'; break; @@ -356,4 +361,14 @@ $oCriteria->add(UsersPeer::USR_STATUS,'CLOSED',Criteria::NOT_EQUAL); } } break; + case 'updateSupervisor': + $dep_manager = $_POST['USR_UID']; + $dep_uid = $_POST['DEP_UID']; + $editDepartment['DEP_UID'] = $dep_uid; + $editDepartment['DEP_MANAGER'] = $dep_manager; + $oDept = new Department(); + $oDept->update($editDepartment); + $oDept->updateDepartmentManager($dep_uid); + echo '{success: true}'; + break; } diff --git a/workflow/engine/templates/departments/departmentUsers.js b/workflow/engine/templates/departments/departmentUsers.js index 151e92a58..55410b6db 100755 --- a/workflow/engine/templates/departments/departmentUsers.js +++ b/workflow/engine/templates/departments/departmentUsers.js @@ -63,26 +63,23 @@ Ext.onReady(function(){ handler: CancelEditMembersAction //hidden: true }); + + supervisorButton = new Ext.Action({ + text: _('ID_SET_SUPERVISOR'), + iconCls: 'button_menu_ext ss_sprite ss_user_edit', + handler: UpdateSupervisor, + disabled: true + }); backButton = new Ext.Action({ text : _('ID_BACK'), iconCls: 'button_menu_ext ss_sprite ss_arrow_redo', handler: BackToUsers }); - -// saveChangesButton = new Ext.Action({ -// text: _('ID_SAVE_CHANGES'), -// //iconCls: 'button_menu_ext ss_sprite ss_arrow_redo', -// handler: SaveChangesAuthForm, -// disabled: true -// }); - -// discardChangesButton = new Ext.Action({ -// text: _('ID_DISCARD_CHANGES'), -// //iconCls: 'button_menu_ext ss_sprite ss_arrow_redo', -// handler: LoadAuthForm, -// disabled: true -// }); + + contextMenu = new Ext.menu.Menu({ + items: [supervisorButton] + }); storeP = new Ext.data.GroupingStore( { proxy : new Ext.data.HttpProxy({ @@ -94,7 +91,8 @@ Ext.onReady(function(){ {name : 'USR_UID'}, {name : 'USR_USERNAME'}, {name : 'USR_FIRSTNAME'}, - {name : 'USR_LASTNAME'} + {name : 'USR_LASTNAME'}, + {name : 'USR_SUPERVISOR'} ] }) }); @@ -125,6 +123,28 @@ Ext.onReady(function(){ ] }); + smodelP = new Ext.grid.RowSelectionModel({ + selectSingle: false, + listeners:{ + selectionchange: function(sm){ + switch(sm.getCount()){ + case 0: Ext.getCmp('removeButton').disable(); + supervisorButton.disable(); + break; + case 1: Ext.getCmp('removeButton').enable(); + if (availableGrid.hidden) + supervisorButton.enable(); + else + supervisorButton.disable(); + break; + default: Ext.getCmp('removeButton').enable(); + supervisorButton.disable(); + break; + } + } + } + }); + smodelA = new Ext.grid.RowSelectionModel({ selectSingle: false, listeners:{ @@ -137,18 +157,6 @@ Ext.onReady(function(){ } }); - smodelP = new Ext.grid.RowSelectionModel({ - selectSingle: false, - listeners:{ - selectionchange: function(sm){ - switch(sm.getCount()){ - case 0: Ext.getCmp('removeButton').disable(); break; - default: Ext.getCmp('removeButton').enable(); break; - } - } - } - }); - searchTextA = new Ext.form.TextField ({ id: 'searchTextA', ctCls:'pm_search_text_field', @@ -240,12 +248,24 @@ Ext.onReady(function(){ frame : false, columnLines : false, viewConfig : {forceFit:true}, - tbar: [editMembersButton,{xtype: 'tbfill'},'-',searchTextP,clearTextButtonP], + tbar: [editMembersButton,'-',supervisorButton,{xtype: 'tbfill'},'-',searchTextP,clearTextButtonP], //bbar: [{xtype: 'tbfill'},editMembersButton], listeners: {rowdblclick: function(){ - (availableGrid.hidden)? DoNothing() : RemoveGroupsAction(); - }} + (availableGrid.hidden)? DoNothing() : RemoveGroupsAction(); + } + } }); + + assignedGrid.on('rowcontextmenu', + function (grid, rowIndex, evt) { + var sm = grid.getSelectionModel(); + sm.selectRow(rowIndex, sm.isSelected(rowIndex)); + }, + this + ); + + assignedGrid.on('contextmenu', function(evt){evt.preventDefault();}, this); + assignedGrid.addListener('rowcontextmenu',onMessageContextMenu, this); buttonsPanel = new Ext.Panel({ width : 40, @@ -298,6 +318,13 @@ Ext.onReady(function(){ }); +//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(){}; @@ -460,6 +487,7 @@ EditMembersAction = function(){ availableGrid.show(); buttonsPanel.show(); editMembersButton.disable(); + supervisorButton.disable(); UsersPanel.doLayout(); }; @@ -468,10 +496,36 @@ CancelEditMembersAction = function(){ availableGrid.hide(); buttonsPanel.hide(); editMembersButton.enable(); + rowsSelected = assignedGrid.getSelectionModel().getSelections(); + if (rowsSelected.length == 1) + supervisorButton.enable(); + else + supervisorButton.disable(); UsersPanel.doLayout(); }; //Render Full User Name show_user = function(v,i,s){ - return _FNF(v,s.data.USR_FIRSTNAME, s.data.USR_LASTNAME); + var sName = _FNF(v,s.data.USR_FIRSTNAME, s.data.USR_LASTNAME); + if (s.data.USR_SUPERVISOR) sName = sName + ' [' + _('ID_SUPERVISOR') + ']'; + return sName; +}; + +//Update Department Supervisor +UpdateSupervisor = function(){ + rowsSelected = assignedGrid.getSelectionModel().getSelections(); + viewport.getEl().mask(_('ID_PROCESSING')); + Ext.Ajax.request({ + url: 'departments_Ajax', + params: {action: 'updateSupervisor', USR_UID: rowsSelected[0].get('USR_UID'), DEP_UID: DEPARTMENT.DEP_UID}, + success: function(r,o){ + viewport.getEl().unmask(); + supervisorButton.disable(); + DoSearchP(); + PMExt.notify(_('ID_DEPARTMENTS'),_('ID_SET_SUPERVISOR_SUCCESS')); + }, + failure: function (r,o){ + viewport.getEl().unmask(); + } + }); }; \ No newline at end of file