diff --git a/workflow/engine/methods/dynaforms/dynaforms_Delete.php b/workflow/engine/methods/dynaforms/dynaforms_Delete.php index f3de30a2c..979ec2ef5 100644 --- a/workflow/engine/methods/dynaforms/dynaforms_Delete.php +++ b/workflow/engine/methods/dynaforms/dynaforms_Delete.php @@ -51,8 +51,8 @@ else return print $result; break; - case 'getDynaformAssign': - $oStep = new Step(); + case 'getDynaformAssign': + $oStep = new Step(); $aDependent=$oStep->loadInfoAssigDynaform($_POST['PRO_UID'],$_POST['DYN_UID']); $result=false; if(is_array($aDependent)){ @@ -83,5 +83,96 @@ else //in table case_tracker_object $oCTO = new CaseTrackerObject(); $oCTO->removeByObject('DYNAFORM', $_POST['DYN_UID']); + break; + + /** erik: new and improved methods */ + case 'getDynaformSupervisorRelations': + try { + $oStepSupervisor = new StepSupervisor(); + $DYN_UIDS = explode(',', $_POST['DYN_UID']); + + $result->passed = true; + foreach($DYN_UIDS as $i=>$DYN_UID) { + $relationsList = $oStepSupervisor->loadInfo($DYN_UID); + if( is_array($relationsList) ) { + $result->passed = false; + break; + } + } + + $result->success = true; + $result->msg = $result->passed ? '' : G::LoadTranslation('ID_DYNAFORM_SUPERVISOR_RELATION_EXISTS'); + } catch (Exception $e) { + $result->success = false; + $result->passed = false; + $result->msg = $e->getMessage(); + } + + print G::json_encode($result); + break; + + case 'getDynaformTaskRelations': + try { + $oStepSupervisor = new StepSupervisor(); + $DYN_UIDS = explode(',', $_POST['DYN_UID']); + $results = Array(); + + $result->passed = true; + foreach($DYN_UIDS as $i=>$DYN_UID) { + $oStep = new Step(); + $aDependent = $oStep->loadInfoAssigDynaform($_POST['PRO_UID'], $DYN_UID); + if( is_array($aDependent) ) { + $result->passed = false; + break; + } + } + + $result->success = true; + $result->msg = $result->passed ? '' : G::LoadTranslation('ID_DYNAFORM_TASK_RELATION_EXISTS'); + } catch (Exception $e) { + $result->success = false; + $result->msg = $e->getMessage(); + } + + print G::json_encode($result); + break; + + case 'removeDynaform': + try { + if ( ! isset($_POST['DYN_UID']) ) + throw new Exception('DYN_UID was not set!'); + + $DYN_UIDS = explode(',', $_POST['DYN_UID']); + + foreach($DYN_UIDS as $i=>$DYN_UID) { + $dynaform = new dynaform(); + //in table dynaform + $dynaform->remove( $DYN_UID ); + + //in table Step + $oStep = new Step(); + $oStep->removeStep('DYNAFORM', $DYN_UID); + + //in table ObjectPermission + $oOP = new ObjectPermission(); + $oOP->removeByObject('DYNAFORM', $DYN_UID); + + //in table Step_supervisor + $oSS = new StepSupervisor(); + $oSS->removeByObject('DYNAFORM', $DYN_UID); + + //in table case_tracker_object + $oCTO = new CaseTrackerObject(); + $oCTO->removeByObject('DYNAFORM', $DYN_UID); + } + + $result->success = true; + $result->msg = G::LoadTranslation('ID_DYNAFORM_REMOVED'); + } catch (Exception $e) { + $result->success = false; + $result->msg = $e->getMessage(); + } + + print G::json_encode($result); break; } \ No newline at end of file diff --git a/workflow/engine/templates/bpmn/ProcessOptions.js b/workflow/engine/templates/bpmn/ProcessOptions.js index 9b0c0fcec..14a99e7bb 100755 --- a/workflow/engine/templates/bpmn/ProcessOptions.js +++ b/workflow/engine/templates/bpmn/ProcessOptions.js @@ -10,8 +10,8 @@ ProcessOptions.prototype.type="ProcessOptions"; * dynaforms available */ ProcessOptions.prototype.addDynaform= function(_5625) -{ - var dynaFields = Ext.data.Record.create([ +{ + var dynaFields = Ext.data.Record.create([ {name: 'DYN_UID'}, {name: 'DYN_TYPE'}, {name: 'DYN_TITLE'}, @@ -24,8 +24,9 @@ ProcessOptions.prototype.addDynaform= function(_5625) var editor = new Ext.ux.grid.RowEditor({ saveText: 'Update' }); + var btnAdd = new Ext.Button({ - id: 'btnAdd', + id: 'btnEdit', text: _('ID_NEW'), iconCls: 'button_menu_ext ss_sprite ss_add', //iconCls: 'application_add', @@ -35,82 +36,113 @@ ProcessOptions.prototype.addDynaform= function(_5625) } }); - var btnRemove = new Ext.Button({ - id: 'btnRemove', - text: _('ID_DELETE'), - iconCls: 'button_menu_ext ss_sprite ss_delete', - handler: function (s) { - editor.stopEditing(); - var s = dynaformGrid.getSelectionModel().getSelections(); - for(var i = 0, r; r = s[i]; i++){ - //First Deleting dynaform from Database using Ajax - var dynUID = r.data.DYN_UID; - - //if STEP_UID is properly defined (i.e. set to valid value) then only delete the row - //else its a BLANK ROW for which Ajax should not be called. - if( r.data.DYN_UID != "") - { - Ext.Ajax.request({ - url : '../dynaforms/dynaforms_Delete.php', - method: 'POST', - params: { - functions : 'getDynaformAssign', - PRO_UID : pro_uid, - DYN_UID : dynUID - }, - success: function(response) { - //First check whether selected Dynaform is assigned to a task steps or not. - //If response.responseText == 1 i.e it is assigned, => it cannot be deleted - if(response.responseText == "") - { - Ext.Ajax.request({ - url : '../dynaforms/dynaforms_Delete.php', - method: 'POST', - params: { - functions : 'getRelationInfDynaform', - DYN_UID : dynUID - }, - success: function(response) { - //Second check whether selected Dynaform is assigned to a processes supervisors or not. - //If response.responseText == 1 i.e it is assigned, => it cannot be deleted - if(response.responseText == "") - { + //edit dynaform Function + var editDynaform = function() { + var rowSelected = Ext.getCmp('dynaformGrid').getSelectionModel().getSelected(); + + if( rowSelected ) + location.href = '../dynaforms/dynaforms_Editor?PRO_UID='+pro_uid+'&DYN_UID='+rowSelected.data.DYN_UID + else + PMExt.error('', _('ID_NO_SELECTION_WARNING')); + } + + var removeDynaform = function() { + ids = Array(); + + editor.stopEditing(); + var rowsSelected = Ext.getCmp('dynaformGrid').getSelectionModel().getSelections(); + + if( rowsSelected.length == 0 ) { + PMExt.error('', _('ID_NO_SELECTION_WARNING')); + return false; + } + + for(i=0; i"+TRANSLATIONS.ID_DESCRIPTION+": {DYN_DESCRIPTION}


" - ) + tpl : new Ext.Template("

"+TRANSLATIONS.ID_DESCRIPTION+": {DYN_DESCRIPTION}

") }); - var dynaformColumns = new Ext.grid.ColumnModel({ defaults: { width: 90, @@ -200,14 +229,14 @@ ProcessOptions.prototype.addDynaform= function(_5625) header: _('ID_TAS_VIEW'), dataIndex: 'TAS_VIEW', width: 110 - },{ + }/*,{ sortable: false, width: 50, renderer: function(val, meta, record) { return String.format("Edit",pro_uid,record.data.DYN_UID); } - }/*,{ + },{ sortable: false, width: 60, renderer: function(val, meta, record) @@ -250,7 +279,7 @@ ProcessOptions.prototype.addDynaform= function(_5625) var dynaformGrid = new Ext.grid.GridPanel({ store: taskDynaform, - id : 'mygrid', + id : 'dynaformGrid', loadMask: true, loadingText: 'Loading...', //renderTo: 'cases-grid', @@ -275,7 +304,50 @@ ProcessOptions.prototype.addDynaform= function(_5625) items:[] }), viewConfig: {forceFit: true} - }); + }); + + //connecting context menu to grid + dynaformGrid.addListener('rowcontextmenu', onDynaformsContextMenu,this); + + //by default the right click is not selecting the grid row over the mouse + //we need to set this four lines + dynaformGrid.on('rowcontextmenu', function (grid, rowIndex, evt) { + var sm = grid.getSelectionModel(); + sm.selectRow(rowIndex, sm.isSelected(rowIndex)); + }, this); + + //prevent default + dynaformGrid.on('contextmenu', function (evt) { + evt.preventDefault(); + }, this); + + function onDynaformsContextMenu(grid, rowIndex, e) { + e.stopEvent(); + var coords = e.getXY(); + dynaformsContextMenu.showAt([coords[0], coords[1]]); + } + + var dynaformsContextMenu = new Ext.menu.Menu({ + id: 'messageContextMenu', + items: [{ + text: _('ID_EDIT'), + iconCls: 'button_menu_ext ss_sprite ss_pencil', + handler: editDynaform + },{ + text: _('ID_DELETE'), + icon: '/images/delete.png', + handler: removeDynaform + },{ + text: _('ID_UID'), + handler: function(){ + var rowSelected = Ext.getCmp('dynaformGrid').getSelectionModel().getSelected(); + workflow.createUIDButton(rowSelected.data.DYN_UID); + } + } + ] + }); + + var dynaformDetails = new Ext.FormPanel({ labelWidth : 100,