From c72d56272fa546655ffa2ca019dcb99a123c5df9 Mon Sep 17 00:00:00 2001
From: Erik Amaru Ortiz
Date: Thu, 17 Feb 2011 00:11:37 +0000
Subject: [PATCH] dynaforms grid was improved, menu context added
---
.../methods/dynaforms/dynaforms_Delete.php | 95 +++++++-
.../engine/templates/bpmn/ProcessOptions.js | 218 ++++++++++++------
2 files changed, 238 insertions(+), 75 deletions(-)
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,