From ff3e21cf40eefe08fc998aaec81ac18d09b4c92f Mon Sep 17 00:00:00 2001 From: Brayan Osmar Pereyra Suxo Date: Fri, 5 Oct 2012 12:29:55 -0400 Subject: [PATCH] BUG 8344 I add permissions to cases notes I add permissions to cases notes --- workflow/engine/classes/class.case.php | 17 +++-- workflow/engine/classes/class.processMap.php | 4 ++ workflow/engine/controllers/appProxy.php | 17 ++++- workflow/engine/templates/app/main.js | 63 +++++++++++++------ workflow/engine/templates/cases/casesList.js | 6 +- .../processes_EditObjectPermission.xml | 23 +++++++ .../processes_NewObjectPermission.xml | 33 ++++++++++ 7 files changed, 137 insertions(+), 26 deletions(-) diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index 2860e080d..61a52b440 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -4752,10 +4752,15 @@ class Cases $RESULT_OBJECTS['OUTPUT_DOCUMENTS'] = array_merge_recursive( G::arrayDiff($MAIN_OBJECTS['VIEW']['OUTPUT_DOCUMENTS'],$MAIN_OBJECTS['BLOCK']['OUTPUT_DOCUMENTS']), G::arrayDiff($MAIN_OBJECTS['DELETE']['OUTPUT_DOCUMENTS'],$MAIN_OBJECTS['BLOCK']['OUTPUT_DOCUMENTS']) - ); + ); + $RESULT_OBJECTS['CASES_NOTES'] = G::arrayDiff( + $MAIN_OBJECTS['VIEW']['CASES_NOTES'], $MAIN_OBJECTS['BLOCK']['CASES_NOTES'] + ); array_push($RESULT_OBJECTS['DYNAFORMS'], -1); array_push($RESULT_OBJECTS['INPUT_DOCUMENTS'], -1); array_push($RESULT_OBJECTS['OUTPUT_DOCUMENTS'], -1); + array_push($RESULT_OBJECTS['CASES_NOTES'], -1); + return $RESULT_OBJECTS; } @@ -4773,7 +4778,7 @@ class Cases $aCase = $this->loadCase($APP_UID); $USER_PERMISSIONS = Array(); $GROUP_PERMISSIONS = Array(); - $RESULT = Array("DYNAFORM" => Array(), "INPUT" => Array(), "OUTPUT" => Array()); + $RESULT = Array("DYNAFORM" => Array(), "INPUT" => Array(), "OUTPUT" => Array(), "CASES_NOTES" => 0); //permissions per user $oCriteria = new Criteria('workflow'); @@ -4841,7 +4846,6 @@ class Cases } } $PERMISSIONS = array_merge($USER_PERMISSIONS, $GROUP_PERMISSIONS); - foreach ($PERMISSIONS as $row) { $USER = $row['USR_UID']; $USER_RELATION = $row['OP_USER_RELATION']; @@ -4927,6 +4931,7 @@ class Cases } $oDataset->next(); } + $RESULT['CASES_NOTES'] = 1; break; case 'DYNAFORM': $oCriteria = new Criteria('workflow'); @@ -5000,13 +5005,17 @@ class Cases $oDataset->next(); } break; + case 'CASES_NOTES': + $RESULT['CASES_NOTES'] = 1; + break; } } } return Array( "DYNAFORMS" => $RESULT['DYNAFORM'], "INPUT_DOCUMENTS" => $RESULT['INPUT'], - "OUTPUT_DOCUMENTS" => $RESULT['OUTPUT'] + "OUTPUT_DOCUMENTS" => $RESULT['OUTPUT'], + "CASES_NOTES" => $RESULT['CASES_NOTES'] ); } diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php index c737bf338..979810e02 100755 --- a/workflow/engine/classes/class.processMap.php +++ b/workflow/engine/classes/class.processMap.php @@ -3364,6 +3364,10 @@ class processMap { $sObject = G::LoadTranslation('ID_ALL'); } break; + case 'CASES_NOTES' : + $sObjectType = G::LoadTranslation('ID_CASES_NOTES'); + $sObject = G::LoadTranslation('ID_ALL'); + break; default : $sObjectType = G::LoadTranslation('ID_ALL'); $sObject = G::LoadTranslation('ID_ALL'); diff --git a/workflow/engine/controllers/appProxy.php b/workflow/engine/controllers/appProxy.php index 72be39056..20a9e02de 100644 --- a/workflow/engine/controllers/appProxy.php +++ b/workflow/engine/controllers/appProxy.php @@ -17,7 +17,6 @@ class AppProxy extends HttpProxyController */ function getNotesList($httpData) { - require_once ( "classes/model/AppNotes.php" ); $appUid = null; if (isset($httpData->appUid) && trim($httpData->appUid) != "") { @@ -29,6 +28,22 @@ class AppProxy extends HttpProxyController } } + G::LoadClass('case'); + $case = new Cases(); + + $proUid = ($httpData->pro == '') ? $_SESSION['PROCESS'] : $httpData->pro; + $tasUid = ($httpData->tas == '') ? $_SESSION['TASK'] : $httpData->tas; + $usrUid = $_SESSION['USER_LOGGED']; + + $respView = $case->getAllObjectsFrom($proUid, $appUid, $tasUid, $usrUid, 'VIEW'); + $respBlock = $case->getAllObjectsFrom($proUid, $appUid, $tasUid, $usrUid, 'BLOCK'); + + if ($respView['CASES_NOTES'] == 0 && $respBlock['CASES_NOTES'] == 0) { + return array('totalCount' => 0, 'notes' => array(), 'noPerms' => 1); + } + + require_once ( "classes/model/AppNotes.php" ); + if (!isset($appUid)) { throw new Exception('Can\'t resolve the Apllication ID for this request.'); } diff --git a/workflow/engine/templates/app/main.js b/workflow/engine/templates/app/main.js index 4eae22080..a1e06257f 100644 --- a/workflow/engine/templates/app/main.js +++ b/workflow/engine/templates/app/main.js @@ -13,16 +13,28 @@ function closeCaseNotesWindow(){ } } -function openCaseNotesWindow(appUid1, modalSw, appTitle) +function openCaseNotesWindow(appUid1, modalSw, appTitle, proUid, taskUid) { + Ext.MessageBox.show({ + msg: _('ID_CASE_NOTES_LOADING'), + progressText: 'Saving...', + width:300, + wait:true, + waitConfig: {interval:200}, + animEl: 'mb7' + }); + Ext.QuickTips.init(); - appUid = !appUid1 ? "": appUid1; - title = appTitle; + appUid = !appUid1 ? "": appUid1; + proUid = !proUid ? "": proUid; + taskUid = !taskUid ? "": taskUid; + + title = appTitle; var startRecord=0; var loadSize=10; storeNotes = new Ext.data.JsonStore({ - url : '../appProxy/getNotesList?appUid='+appUid, + url : '../appProxy/getNotesList?appUid='+appUid+'&pro='+proUid+'&tas='+taskUid, root: 'notes', totalProperty: 'totalCount', fields: ['USR_USERNAME','USR_FIRSTNAME','USR_LASTNAME','USR_FULL_NAME','NOTE_DATE','NOTE_CONTENT', 'USR_UID', 'user'], @@ -32,7 +44,22 @@ function openCaseNotesWindow(appUid1, modalSw, appTitle) }, listeners:{ load:function(){ + Ext.MessageBox.hide(); + if ( typeof(storeNotes.reader.jsonData.noPerms != 'undefined') && + (storeNotes.reader.jsonData.noPerms == '1') ) { + Ext.MessageBox.show({ + title: _('ID_WARNING'), + msg: _('ID_CASES_NOTES_NO_PERMISSIONS'), + buttons: Ext.MessageBox.OK, + animEl: 'mb9', + icon: Ext.MessageBox.WARNING + }); + return false; + } + caseNotesWindow.show(); + newNoteAreaActive = false; + newNoteHandler(); caseNotesWindow.setTitle(_('ID_CASES_NOTES') + ' (' + storeNotes.data.items.length + ')'); if(storeNotes.getCount()'; + return ''; } //Render Full Name diff --git a/workflow/engine/xmlform/processes/processes_EditObjectPermission.xml b/workflow/engine/xmlform/processes/processes_EditObjectPermission.xml index ce37257b1..78d110070 100755 --- a/workflow/engine/xmlform/processes/processes_EditObjectPermission.xml +++ b/workflow/engine/xmlform/processes/processes_EditObjectPermission.xml @@ -43,6 +43,7 @@ + @@ -163,22 +164,33 @@ if(getField('OP_OBJ_TYPE').value=='ANY') hideRowById( 'DYNAFORMS' ); hideRowById( 'INPUTS' ); hideRowById( 'OUTPUTS' ); + showRowById( 'OP_ACTION' ); } if(getField('OP_OBJ_TYPE').value=='DYNAFORM') { hideRowById( 'ALL' ); hideRowById( 'INPUTS' ); hideRowById( 'OUTPUTS' ); + showRowById( 'OP_ACTION' ); } if(getField('OP_OBJ_TYPE').value=='INPUT') { hideRowById( 'ALL' ); hideRowById( 'DYNAFORMS' ); hideRowById( 'OUTPUTS' ); + showRowById( 'OP_ACTION' ); } if(getField('OP_OBJ_TYPE').value=='OUTPUT') { hideRowById( 'ALL' ); hideRowById( 'DYNAFORMS' ); hideRowById( 'INPUTS' ); + showRowById( 'OP_ACTION' ); } +if(getField('OP_OBJ_TYPE').value=='CASES_NOTES') + { hideRowById( 'ALL' ); + hideRowById( 'DYNAFORMS' ); + hideRowById( 'INPUTS' ); + hideRowById( 'OUTPUTS' ); + hideRowById( 'OP_ACTION' ); + } getOptions(); rebuildOptionsWhenLoad(getField('OP_OBJ_TYPE').value); @@ -188,24 +200,35 @@ leimnud.event.add(document.getElementById('form[OP_OBJ_TYPE]'), 'change', functi hideRowById( 'INPUTS' ); hideRowById( 'OUTPUTS' ); showRowById( 'DYNAFORMS' ); + showRowById( 'OP_ACTION' ); } if(getField('OP_OBJ_TYPE').value=='INPUT') { hideRowById( 'ALL' ); hideRowById( 'DYNAFORMS' ); hideRowById( 'OUTPUTS' ); showRowById( 'INPUTS' ); + showRowById( 'OP_ACTION' ); } if(getField('OP_OBJ_TYPE').value=='OUTPUT') { hideRowById( 'ALL' ); hideRowById( 'DYNAFORMS' ); hideRowById( 'INPUTS' ); showRowById( 'OUTPUTS' ); + showRowById( 'OP_ACTION' ); } + if(getField('OP_OBJ_TYPE').value=='CASES_NOTES') + { hideRowById( 'ALL' ); + hideRowById( 'DYNAFORMS' ); + hideRowById( 'INPUTS' ); + hideRowById( 'OUTPUTS' ); + hideRowById( 'OP_ACTION' ); + } if(getField('OP_OBJ_TYPE').value=='ANY') { hideRowById('ALL' ); hideRowById( 'DYNAFORMS' ); hideRowById( 'INPUTS' ); hideRowById( 'OUTPUTS' ); + showRowById( 'OP_ACTION' ); } rebuildOptions(getField('OP_OBJ_TYPE').value); }); diff --git a/workflow/engine/xmlform/processes/processes_NewObjectPermission.xml b/workflow/engine/xmlform/processes/processes_NewObjectPermission.xml index 785ef8ae9..bd1f976a5 100755 --- a/workflow/engine/xmlform/processes/processes_NewObjectPermission.xml +++ b/workflow/engine/xmlform/processes/processes_NewObjectPermission.xml @@ -43,6 +43,7 @@ + @@ -131,6 +132,7 @@ leimnud.event.add(getField('OP_OBJ_TYPE'), 'change', function() { hideRowById('DYNAFORMS'); hideRowById('INPUTS'); hideRowById('OUTPUTS'); + showRowById('OP_ACTION'); break; case 'DYNAFORM': getField('ALL').value = ''; @@ -141,6 +143,7 @@ leimnud.event.add(getField('OP_OBJ_TYPE'), 'change', function() { showRowById('DYNAFORMS'); hideRowById('INPUTS'); hideRowById('OUTPUTS'); + showRowById('OP_ACTION'); break; case 'INPUT': getField('ALL').value = ''; @@ -151,6 +154,7 @@ leimnud.event.add(getField('OP_OBJ_TYPE'), 'change', function() { hideRowById('DYNAFORMS'); showRowById('INPUTS'); hideRowById('OUTPUTS'); + showRowById('OP_ACTION'); break; case 'OUTPUT': getField('ALL').value = ''; @@ -161,6 +165,19 @@ leimnud.event.add(getField('OP_OBJ_TYPE'), 'change', function() { hideRowById('DYNAFORMS'); hideRowById('INPUTS'); showRowById('OUTPUTS'); + showRowById('OP_ACTION'); + break; + case 'CASES_NOTES': + getField('ALL').value = ''; + getField('DYNAFORMS').value = ''; + getField('INPUTS').value = ''; + getField('OUTPUTS').value = ''; + getField('OP_ACTION').value = 'VIEW'; + hideRowById('ALL'); + hideRowById('DYNAFORMS'); + hideRowById('INPUTS'); + hideRowById('OUTPUTS'); + hideRowById('OP_ACTION'); break; } rebuildOptions(vValue); @@ -179,6 +196,7 @@ switch (vValue) { hideRowById('DYNAFORMS'); hideRowById('INPUTS'); hideRowById('OUTPUTS'); + showRowById('OP_ACTION'); break; case 'DYNAFORM': getField('ALL').value = ''; @@ -189,6 +207,7 @@ switch (vValue) { showRowById('DYNAFORMS'); hideRowById('INPUTS'); hideRowById('OUTPUTS'); + showRowById('OP_ACTION'); break; case 'INPUT': getField('ALL').value = ''; @@ -199,6 +218,7 @@ switch (vValue) { hideRowById('DYNAFORMS'); hideRowById('INPUTS'); showRowById('OUTPUTS'); + showRowById('OP_ACTION'); break; case 'OUTPUT': getField('ALL').value = ''; @@ -209,7 +229,20 @@ switch (vValue) { hideRowById('DYNAFORMS'); hideRowById('INPUTS'); showRowById('OUTPUTS'); + showRowById('OP_ACTION'); break; + case 'CASES_NOTES': + getField('ALL').value = ''; + getField('DYNAFORMS').value = ''; + getField('INPUTS').value = ''; + getField('OUTPUTS').value = ''; + getField('OP_ACTION').value = 'VIEW'; + hideRowById('ALL'); + hideRowById('DYNAFORMS'); + hideRowById('INPUTS'); + hideRowById('OUTPUTS'); + hideRowById('OP_ACTION'); + break; } getOptions(); rebuildOptions(vValue);