From c90a1d4da213e7da1346e335a04319ec15d80ee2 Mon Sep 17 00:00:00 2001 From: Hector Cortez Date: Mon, 15 Apr 2013 15:49:27 -0400 Subject: [PATCH 01/12] =?UTF-8?q?BUG=2010852=20Control=20de=20los=20reenv?= =?UTF-8?q?=C3=ADos=20de=20la=20notificaciones=20'Messages=20History'=20SO?= =?UTF-8?q?LVED?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Se requiere que los reenvíos que se hacen a través del historial de mensajes, no se pueda realizar desde el menú casos, ya que existe el problema que cualquier usuario que haya participado de un caso puede reenviar notificaciones, a cualquier usuario, y existe el peligro de divulgación de información crítica que debe ser restringida por roles. - Added Roles to control Messages History. --- workflow/engine/classes/class.case.php | 18 +- workflow/engine/classes/class.processMap.php | 16 +- .../methods/cases/caseMessageHistory_Ajax.php | 38 ++- .../processes_SaveObjectPermission.php | 11 +- .../templates/cases/caseMessageHistory.js | 262 +++++++++++---- .../processes_EditObjectPermission.xml | 318 +++++++++--------- .../processes_NewObjectPermission.xml | 58 ++-- 7 files changed, 465 insertions(+), 256 deletions(-) diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index b5de135b8..3e49ebc5b 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -980,7 +980,7 @@ class Cases require_once 'classes/model/AdditionalTables.php'; $oReportTables = new ReportTables(); $addtionalTables = new additionalTables(); - + if (!isset($Fields['APP_NUMBER'])) { $Fields['APP_NUMBER'] = $appFields['APP_NUMBER']; } @@ -5085,7 +5085,13 @@ class Cases $aCase = $this->loadCase($APP_UID); $USER_PERMISSIONS = Array(); $GROUP_PERMISSIONS = Array(); - $RESULT = Array("DYNAFORM" => Array(), "INPUT" => Array(), "OUTPUT" => Array(), "CASES_NOTES" => 0); + $RESULT = Array( + "DYNAFORM" => Array(), + "INPUT" => Array(), + "OUTPUT" => Array(), + "CASES_NOTES" => 0, + "MSGS_HISTORY" => "" + ); //permissions per user $oCriteria = new Criteria('workflow'); @@ -5342,6 +5348,10 @@ class Cases case 'CASES_NOTES': $RESULT['CASES_NOTES'] = 1; break; + case 'MSGS_HISTORY': + $RESULT['MSGS_HISTORY'] = $ACTION; + break; + } } } @@ -5349,7 +5359,8 @@ class Cases "DYNAFORMS" => $RESULT['DYNAFORM'], "INPUT_DOCUMENTS" => $RESULT['INPUT'], "OUTPUT_DOCUMENTS" => $RESULT['OUTPUT'], - "CASES_NOTES" => $RESULT['CASES_NOTES'] + "CASES_NOTES" => $RESULT['CASES_NOTES'], + "MSGS_HISTORY" => $RESULT['MSGS_HISTORY'] ); } @@ -6503,4 +6514,3 @@ class Cases return false; } } - \ No newline at end of file diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php index 51fa055a3..b35c6854f 100755 --- a/workflow/engine/classes/class.processMap.php +++ b/workflow/engine/classes/class.processMap.php @@ -3621,6 +3621,10 @@ class processMap $sObjectType = G::LoadTranslation('ID_CASES_NOTES'); $sObject = 'N/A'; break; + case 'MSGS_HISTORY': + $sObjectType = G::LoadTranslation('ID_ALL'); + $sObject = G::LoadTranslation('ID_ALL'); + break; default: $sObjectType = G::LoadTranslation('ID_ALL'); $sObject = G::LoadTranslation('ID_ALL'); @@ -3635,8 +3639,7 @@ class processMap //Obtain action (permission) $sAction = G::LoadTranslation('ID_' . $aRow['OP_ACTION']); //Add to array - $aObjectsPermissions[] = array('OP_UID' => $aRow['OP_UID'], 'TASK_TARGET' => $sTaskTarget, 'GROUP_USER' => $sUserGroup, 'TASK_SOURCE' => $sTaskSource, 'OBJECT_TYPE' => $sObjectType, 'OBJECT' => $sObject, 'PARTICIPATED' => $sParticipated, 'ACTION' => $sAction, 'OP_CASE_STATUS' => $aRow['OP_CASE_STATUS'] - ); + $aObjectsPermissions[] = array('OP_UID' => $aRow['OP_UID'], 'TASK_TARGET' => $sTaskTarget, 'GROUP_USER' => $sUserGroup, 'TASK_SOURCE' => $sTaskSource, 'OBJECT_TYPE' => $sObjectType, 'OBJECT' => $sObject, 'PARTICIPATED' => $sParticipated, 'ACTION' => $sAction, 'OP_CASE_STATUS' => $aRow['OP_CASE_STATUS']); $oDataset->next(); } global $_DBArray; @@ -3894,8 +3897,12 @@ class processMap global $G_PUBLISH; $G_PUBLISH = new Publisher(); $G_PUBLISH->AddContent('xmlform', 'xmlform', 'processes/processes_NewObjectPermission', '', - array('GROUP_USER' => $usersGroups, 'LANG' => SYS_LANG, 'PRO_UID' => $sProcessUID, 'ID_DELETE' => G::LoadTranslation('ID_DELETE') - ), 'processes_SaveObjectPermission'); + array('GROUP_USER' => $usersGroups, + 'LANG' => SYS_LANG, + 'PRO_UID' => $sProcessUID, + 'ID_DELETE' => G::LoadTranslation('ID_DELETE'), + 'ID_RESEND' => G::LoadTranslation('ID_RESEND') + ), 'processes_SaveObjectPermission'); G::RenderPage('publish', 'raw'); return true; } @@ -4048,6 +4055,7 @@ class processMap $aFields['GROUP_USER'] = $usersGroups; $aFields['ID_DELETE'] = G::LoadTranslation('ID_DELETE'); + $aFields['ID_RESEND'] = G::LoadTranslation('ID_RESEND'); global $G_PUBLISH; $G_PUBLISH = new Publisher(); diff --git a/workflow/engine/methods/cases/caseMessageHistory_Ajax.php b/workflow/engine/methods/cases/caseMessageHistory_Ajax.php index ba37d45e9..dd4ff7a51 100644 --- a/workflow/engine/methods/cases/caseMessageHistory_Ajax.php +++ b/workflow/engine/methods/cases/caseMessageHistory_Ajax.php @@ -25,11 +25,11 @@ $actionAjax = isset( $_REQUEST['actionAjax'] ) ? $_REQUEST['actionAjax'] : null; if ($actionAjax == 'messageHistoryGridList_JXP') { - + if (!isset($_REQUEST['start'])) { $_REQUEST['start'] = 0; } - + if (!isset($_REQUEST['limit'])) { $_REQUEST['limit'] = 20; } @@ -46,13 +46,37 @@ if ($actionAjax == 'messageHistoryGridList_JXP') { $result = new stdClass(); $aProcesses = Array (); - foreach ($appMessageArray as $index => $value) { - if ($appMessageArray[$index]['APP_MSG_SHOW_MESSAGE'] == 1) { - $appMessageArray[$index]['ID_MESSAGE'] = $appMessageArray[$index]['APP_UID'] . '_' . $appMessageArray[$index]['APP_MSG_UID']; - $aProcesses[] = $appMessageArray[$index]; + + $proUid = $_SESSION['PROCESS']; + $appUid = $_SESSION['APPLICATION']; + $tasUid = $_SESSION['TASK']; + $usrUid = $_SESSION['USER_LOGGED']; + + $respView = $oCase->getAllObjectsFrom( $proUid, $appUid, $tasUid, $usrUid, 'VIEW' ); + $respBlock = $oCase->getAllObjectsFrom( $proUid, $appUid, $tasUid, $usrUid, 'BLOCK' ); + $respResend = $oCase->getAllObjectsFrom( $proUid, $appUid, $tasUid, $usrUid, 'RESEND' ); + + if ($respView['MSGS_HISTORY'] != "" ) { + $respMess = $respView['MSGS_HISTORY']; + } else { + if ( $respBlock['MSGS_HISTORY'] != "" ) { + $respMess = $respBlock['MSGS_HISTORY']; + } else { + if ($respResend['MSGS_HISTORY'] != "") { + $respMess = $respResend['MSGS_HISTORY']; + } else { + $respMess = ""; + } } } - + + foreach ($appMessageArray as $index => $value) { + if ($appMessageArray[$index]['APP_MSG_SHOW_MESSAGE'] == 1 && $respMess != 'BLOCK' ) { + $appMessageArray[$index]['ID_MESSAGE'] = $appMessageArray[$index]['APP_UID'] . '_' . $appMessageArray[$index]['APP_MSG_UID']; + $aProcesses[] = array_merge($appMessageArray[$index], array('MSGS_HISTORY' => $respMess)); + } + } + $totalCount = 0; foreach ($appMessageCountArray as $index => $value) { if ($appMessageCountArray[$index]['APP_MSG_SHOW_MESSAGE'] == 1) { diff --git a/workflow/engine/methods/processes/processes_SaveObjectPermission.php b/workflow/engine/methods/processes/processes_SaveObjectPermission.php index a9caf9e2f..7bee08ed3 100755 --- a/workflow/engine/methods/processes/processes_SaveObjectPermission.php +++ b/workflow/engine/methods/processes/processes_SaveObjectPermission.php @@ -42,10 +42,11 @@ if ($access != 1) { break; } } -if (isset( $_POST['form'] )) +if (isset( $_POST['form'] )) { $sValue = $_POST['form']; //For old processmap -else +} else { $sValue = $_POST; //For new processmap EXtjs +} list ($iRelation, $sUserGroup) = explode( '|', $sValue['GROUP_USER'] ); @@ -66,11 +67,13 @@ switch ($sValue['OP_OBJ_TYPE']) { case 'OUTPUT': $sObjectUID = $sValue['OUTPUTS']; break; + case 'MSGS_HISTORY': + $sObjectUID = $sValue['MSGS_HISTORY']; + break; } require_once 'classes/model/ObjectPermission.php'; $oOP = new ObjectPermission(); -$aData = array ('OP_UID' => G::generateUniqueID(),'PRO_UID' => $sValue['PRO_UID'],'TAS_UID' => $sValue['TAS_UID'],'USR_UID' => (string) $sUserGroup,'OP_USER_RELATION' => $iRelation,'OP_TASK_SOURCE' => $sValue['OP_TASK_SOURCE'],'OP_PARTICIPATE' => $sValue['OP_PARTICIPATE'],'OP_OBJ_TYPE' => $sValue['OP_OBJ_TYPE'],'OP_OBJ_UID' => $sObjectUID,'OP_ACTION' => $sValue['OP_ACTION'],'OP_CASE_STATUS' => $sValue['OP_CASE_STATUS'] -); +$aData = array ('OP_UID' => G::generateUniqueID(),'PRO_UID' => $sValue['PRO_UID'],'TAS_UID' => $sValue['TAS_UID'],'USR_UID' => (string) $sUserGroup,'OP_USER_RELATION' => $iRelation,'OP_TASK_SOURCE' => $sValue['OP_TASK_SOURCE'],'OP_PARTICIPATE' => $sValue['OP_PARTICIPATE'],'OP_OBJ_TYPE' => $sValue['OP_OBJ_TYPE'],'OP_OBJ_UID' => $sObjectUID,'OP_ACTION' => $sValue['OP_ACTION'],'OP_CASE_STATUS' => $sValue['OP_CASE_STATUS']); $oOP->fromArray( $aData, BasePeer::TYPE_FIELDNAME ); $oOP->save(); G::LoadClass( 'processMap' ); diff --git a/workflow/engine/templates/cases/caseMessageHistory.js b/workflow/engine/templates/cases/caseMessageHistory.js index ea316f326..2654fe3c0 100644 --- a/workflow/engine/templates/cases/caseMessageHistory.js +++ b/workflow/engine/templates/cases/caseMessageHistory.js @@ -7,9 +7,139 @@ window.parent.tabIframeWidthFix2(idIframe); } + function windowPreviewMessage(rowSelected) { + windowMessage = new Ext.Window({ + title: '', + width: 600, + height: 420, + border: false, + layout : 'fit', + items: + [ + { + xtype: 'form', + frame: true, + border: false, + defaults: { + width: 150 + }, + items: [ + { + xtype: 'textfield', + fieldLabel: _("ID_FROM"), + id:'From', + anchor: '100%', + arrowAlign:'center', + readOnly: true, + name: 'From' + }, + { + xtype: 'textfield', + fieldLabel: _("ID_TO"), + id: 'To', + anchor: '100%', + arrowAlign:'center', + readOnly: true, + name: 'To' + }, + { + xtype: 'textfield', + fieldLabel: _('ID_SUBJECT'), + id: 'Subjet', + anchor: '100%', + arrowAlign:'center', + readOnly: true, + name: 'Subjet' + }, + { + xtype: 'textfield', + fieldLabel: _("DATE_LABEL"), + id: 'date', + arrowAlign:'center', + readOnly: true, + name: 'Status' + }, + { + name : 'body', + id:'body', + hideLabel:true, + xtype: 'htmleditor', + autoScroll: true, + readOnly: true, + x: 1, + y: 1, + enableAlignments:false, + enableColors:false, + enableFont:false, + enableFontSize:false, + enableFormat:false, + enableLinks:false, + enableLists:false, + enableSourceEdit:false, + anchor: '100%', + height: 260 + } + ] + } + ] + }); + + //load fields from rowSelect + Ext.getCmp('From').setValue(rowSelected.data.APP_MSG_FROM); + Ext.getCmp('To').setValue(rowSelected.data.APP_MSG_TO); + Ext.getCmp('Subjet').setValue(rowSelected.data.APP_MSG_SUBJECT); + Ext.getCmp('date').setValue(rowSelected.data.APP_MSG_DATE); + Ext.getCmp('body').setValue(rowSelected.data.APP_MSG_BODY); + + //show windows message + windowMessage.show(windowMessage); + + } + + function resendDialog(rowSelected) { + + Ext.Msg.show({ + title:'', + msg: _('ID_ARE_YOU_SURE_RESEND')+"?", + buttons: Ext.Msg.OKCANCEL, + icon: Ext.MessageBox.QUESTION, + fn: function(btn, text){ + if(btn=='ok'){ + //!dataGrid + var idMessage = rowSelected.data.ID_MESSAGE; + var subjectMessage = rowSelected.data.APP_MSG_SUBJECT; + var dateMessage = rowSelected.data.APP_MSG_DATE; + + var tabName = 'sendMailMessage_'+idMessage; + var tabTitle = 'Resend('+subjectMessage+' '+dateMessage+')'; + + ActionTabFrameGlobal.tabName = tabName; + ActionTabFrameGlobal.tabTitle = tabTitle; + + //window.parent.Actions.tabFrame(tabName); + var tabNameArray = tabName.split('_'); + var APP_UID = tabNameArray[1]; + var APP_MSG_UID = tabNameArray[2]; + + messageHistoryGridListMask = new Ext.LoadMask(Ext.getBody(), {msg:_('ID_LOADING')}); + messageHistoryGridListMask.show(); + + var url = "caseMessageHistory_Ajax.php?actionAjax=sendMailMessage_JXP&APP_UID="+APP_UID+"&APP_MSG_UID="+APP_MSG_UID; + ajaxPostRequest(url,'caseMessageHistory_RSP'); + + } + + }, + animEl: 'elId' + }); + } + + previewMessage = function() { var rowSelected = Ext.getCmp('processesGrid').getSelectionModel().getSelected(); if (rowSelected) { + windowPreviewMessage(rowSelected); + /* windowMessage = new Ext.Window({ title: '', width: 600, @@ -95,6 +225,8 @@ //show windows message windowMessage.show(windowMessage); + */ + } else { Ext.Msg.show({ @@ -326,7 +458,8 @@ var ActionTabFrameGlobal = ''; {name : 'APP_MSG_FROM'}, {name : 'APP_MSG_TO'}, {name : 'APP_MSG_STATUS'}, - {name : 'APP_MSG_BODY'} + {name : 'APP_MSG_BODY'}, + {name : 'MSGS_HISTORY'} ] } @@ -389,7 +522,7 @@ var ActionTabFrameGlobal = ''; enableHdMenu: true, frame:false, //plugins: expander, - cls : 'grid_with_checkbox', + // cls : 'grid_with_checkbox', columnLines: true, viewConfig: { forceFit:true @@ -408,9 +541,53 @@ var ActionTabFrameGlobal = ''; {header: _("ID_FROM"), dataIndex: 'APP_MSG_FROM', width: 60, renderer: escapeHtml}, {header: _("ID_TO"), dataIndex: 'APP_MSG_TO', width: 60, renderer: escapeHtml}, {header: _("ID_STATUS"), dataIndex: 'APP_MSG_STATUS', width: 50}, - {header: _("ID_APP_MSG_BODY"), dataIndex: 'APP_MSG_BODY', width: 50,hidden:true} ] + {header: _("ID_APP_MSG_BODY"), dataIndex: 'APP_MSG_BODY', width: 50,hidden:true}, + {id:'MSGS_HISTORY', dataIndex: 'MSGS_HISTORY', hidden:true, hideable:false}, + { + // header: _("ID_RESEND"), + xtype: 'actioncolumn', + width: 60, + items: [ + { + getClass: function(v, meta, rec) { + this.items[0].tooltip = _("ID_RESEND"); + if (rec.get('MSGS_HISTORY') === 'RESEND') { + return 'button_menu_ext ss_sprite ss_email_attach'; + } else { + return 'button_menu_ext ss_sprite ss_lock'; + } + }, + handler: function(grid, rowIndex, colIndex) { + var rec = store.getAt(rowIndex); + if (rec.get('MSGS_HISTORY') === 'RESEND') { + resendDialog(rec); + } + } + }, + { + getClass: function(v, meta, rec) { + this.items[1].tooltip = _("ID_PREVIEW"); + if (rec.get('MSGS_HISTORY') === 'VIEW' || rec.get('MSGS_HISTORY') === 'RESEND') { + return 'button_menu_ext ss_sprite ss_magnifier'; + } else { + return 'button_menu_ext ss_sprite ss_cancel'; + } + }, + handler: function(grid, rowIndex, colIndex) { + var rec = store.getAt(rowIndex); + if (rec.get('MSGS_HISTORY') === 'VIEW' || rec.get('MSGS_HISTORY') === 'RESEND') { + windowPreviewMessage(rec); + } + } + } + + ] + } + + ] }), store: store, +/* tbar:[ { text:_("ID_RESEND"), @@ -419,52 +596,10 @@ var ActionTabFrameGlobal = ''; icon: '/images/mail-send16x16.png', handler: function(){ - var rowSelected = processesGrid.getSelectionModel().getSelected(); + var rowSelected = processesGrid.getSelectionModel().getSelected(); if( rowSelected ){ - //!dataGrid - - - // Show a dialog using config options: - Ext.Msg.show({ - title:'', - msg: _('ID_ARE_YOU_SURE_RESEND')+"?", - buttons: Ext.Msg.OKCANCEL, - icon: Ext.MessageBox.QUESTION, - fn: function(btn, text){ - if(btn=='ok'){ - //!dataGrid - var idMessage = rowSelected.data.ID_MESSAGE; - var subjectMessage = rowSelected.data.APP_MSG_SUBJECT; - var dateMessage = rowSelected.data.APP_MSG_DATE; - - var tabName = 'sendMailMessage_'+idMessage; - var tabTitle = 'Resend('+subjectMessage+' '+dateMessage+')'; - - ActionTabFrameGlobal.tabName = tabName; - ActionTabFrameGlobal.tabTitle = tabTitle; - - //window.parent.Actions.tabFrame(tabName); - var tabNameArray = tabName.split('_'); - var APP_UID = tabNameArray[1]; - var APP_MSG_UID = tabNameArray[2]; - - - messageHistoryGridListMask = new Ext.LoadMask(Ext.getBody(), {msg:_('ID_LOADING')}); - messageHistoryGridListMask.show(); - - - - var url = "caseMessageHistory_Ajax.php?actionAjax=sendMailMessage_JXP&APP_UID="+APP_UID+"&APP_MSG_UID="+APP_MSG_UID; - ajaxPostRequest(url,'caseMessageHistory_RSP'); - - - } - - }, - animEl: 'elId' - }); - + resendDialog(rowSelected); } else{ Ext.Msg.show({ @@ -479,8 +614,6 @@ var ActionTabFrameGlobal = ''; }); } - - }, disabled:false }, @@ -493,22 +626,21 @@ var ActionTabFrameGlobal = ''; iconCls: 'button_menu_ext', icon: '/images/documents/_filefind.png', handler: function(){ - var rowSelected = processesGrid.getSelectionModel().getSelected(); + var rowSelected = processesGrid.getSelectionModel().getSelected(); - if (rowSelected) { + if (rowSelected) { previewMessage(); - } - else { - Ext.Msg.show({ - title:'', - msg: _("ID_NO_SELECTION_WARNING"), - buttons: Ext.Msg.INFO, - fn: function(){}, - animEl: 'elId', - icon: Ext.MessageBox.INFO, - buttons: Ext.MessageBox.OK - }); - } + } else { + Ext.Msg.show({ + title:'', + msg: _("ID_NO_SELECTION_WARNING"), + buttons: Ext.Msg.INFO, + fn: function(){}, + animEl: 'elId', + icon: Ext.MessageBox.INFO, + buttons: Ext.MessageBox.OK + }); + } }, disabled:false }, @@ -516,6 +648,8 @@ var ActionTabFrameGlobal = ''; xtype: 'tbfill' } ], +*/ + bbar: new Ext.PagingToolbar({ pageSize: 20, store: store, @@ -525,7 +659,7 @@ var ActionTabFrameGlobal = ''; items:[] }), listeners: { - rowdblclick: previewMessage, + // rowdblclick: previewMessage, render: function(){ this.loadMask = new Ext.LoadMask(this.body, {msg:'Loading...'}); processesGrid.getSelectionModel().on('rowselect', function(){ diff --git a/workflow/engine/xmlform/processes/processes_EditObjectPermission.xml b/workflow/engine/xmlform/processes/processes_EditObjectPermission.xml index 78d110070..8d378cc5f 100755 --- a/workflow/engine/xmlform/processes/processes_EditObjectPermission.xml +++ b/workflow/engine/xmlform/processes/processes_EditObjectPermission.xml @@ -44,6 +44,7 @@ + @@ -65,33 +66,36 @@ Output Document - Permission + Permission + + + + + Save + diff --git a/workflow/engine/xmlform/processes/processes_NewObjectPermission.xml b/workflow/engine/xmlform/processes/processes_NewObjectPermission.xml index bd1f976a5..5e75caf33 100755 --- a/workflow/engine/xmlform/processes/processes_NewObjectPermission.xml +++ b/workflow/engine/xmlform/processes/processes_NewObjectPermission.xml @@ -44,6 +44,7 @@ + @@ -65,7 +66,10 @@ Output Document - Permission + Permission + + + @@ -76,6 +80,7 @@ Create + Date: Wed, 17 Apr 2013 12:08:47 -0400 Subject: [PATCH 02/12] =?UTF-8?q?BUG=2010852=20Control=20de=20los=20reenv?= =?UTF-8?q?=C3=ADos=20de=20la=20notificaciones=20a=20trav=C3=A9s=20del=20h?= =?UTF-8?q?istorial=20de=20mensajes=20'Messages=20History'=20SOLVED?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Adjustment in Process Permissions for Messages History. --- workflow/engine/classes/class.processMap.php | 2 +- .../methods/processes/processes_SaveObjectPermission.php | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/workflow/engine/classes/class.processMap.php b/workflow/engine/classes/class.processMap.php index b35c6854f..b7e9c7052 100755 --- a/workflow/engine/classes/class.processMap.php +++ b/workflow/engine/classes/class.processMap.php @@ -3622,7 +3622,7 @@ class processMap $sObject = 'N/A'; break; case 'MSGS_HISTORY': - $sObjectType = G::LoadTranslation('ID_ALL'); + $sObjectType = G::LoadTranslation('MSGS_HISTORY'); $sObject = G::LoadTranslation('ID_ALL'); break; default: diff --git a/workflow/engine/methods/processes/processes_SaveObjectPermission.php b/workflow/engine/methods/processes/processes_SaveObjectPermission.php index 7bee08ed3..4557e01d5 100755 --- a/workflow/engine/methods/processes/processes_SaveObjectPermission.php +++ b/workflow/engine/methods/processes/processes_SaveObjectPermission.php @@ -67,9 +67,6 @@ switch ($sValue['OP_OBJ_TYPE']) { case 'OUTPUT': $sObjectUID = $sValue['OUTPUTS']; break; - case 'MSGS_HISTORY': - $sObjectUID = $sValue['MSGS_HISTORY']; - break; } require_once 'classes/model/ObjectPermission.php'; $oOP = new ObjectPermission(); From 17edbf321cb9bb35fe7f28d7bdced665a3fc914a Mon Sep 17 00:00:00 2001 From: Brayan Osmar Pereyra Suxo Date: Tue, 23 Apr 2013 09:19:47 -0400 Subject: [PATCH 03/12] DOCSYSTEM agrege error_log para revisar instalacion agrege error_log para revisar instalacion --- workflow/engine/controllers/installer.php | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/workflow/engine/controllers/installer.php b/workflow/engine/controllers/installer.php index 2e0ca8349..eda59f6e6 100644 --- a/workflow/engine/controllers/installer.php +++ b/workflow/engine/controllers/installer.php @@ -1372,6 +1372,8 @@ EOL; curl_setopt($ch, CURLOPT_TIMEOUT, 90); $output = curl_exec($ch); + error_log('1 logeo-----------------'); + error_log($output); curl_close($ch); /** @@ -1394,8 +1396,9 @@ EOL; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setopt($ch, CURLOPT_TIMEOUT, 90); - $output = curl_exec($ch); + error_log('2 lenguaje-----------------'); + error_log($output); curl_close($ch); /** @@ -1428,6 +1431,8 @@ EOL; curl_setopt($ch, CURLOPT_TIMEOUT, 90); $output = curl_exec($ch); + error_log('3 skin-----------------'); + error_log($output); curl_close($ch); } @@ -1457,6 +1462,8 @@ EOL; $output = curl_exec($ch); + error_log('4 plugin-----------------'); + error_log($output); curl_close($ch); } From d5f099dd24ef17578c8616dc253d90aaaf22e274 Mon Sep 17 00:00:00 2001 From: Brayan Osmar Pereyra Suxo Date: Tue, 23 Apr 2013 09:55:29 -0400 Subject: [PATCH 04/12] DOCSYSTEM Cambios en los mensajes de error_log en instalador Cambios en los mensajes de error_log en instalador --- workflow/engine/controllers/installer.php | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/workflow/engine/controllers/installer.php b/workflow/engine/controllers/installer.php index eda59f6e6..2dd89f8ac 100644 --- a/workflow/engine/controllers/installer.php +++ b/workflow/engine/controllers/installer.php @@ -1372,8 +1372,6 @@ EOL; curl_setopt($ch, CURLOPT_TIMEOUT, 90); $output = curl_exec($ch); - error_log('1 logeo-----------------'); - error_log($output); curl_close($ch); /** @@ -1385,8 +1383,17 @@ EOL; // File to upload/post $postData['form[LANGUAGE_FILENAME]'] = "@".PATH_CORE."content/translations/processmaker.$lang.po"; - - curl_setopt($ch, CURLOPT_URL, "$serv/sys{$workspace}/{$lang}/classic/setup/languages_Import"); + $url = "$serv/sys{$workspace}/{$lang}/classic/setup/languages_Import"; + + error_log('2 lenguaje-----------------'); + + error_log('--- LENGUAJE'); + error_log($postData['form[LANGUAGE_FILENAME]']); + + error_log('--- URL'); + error_log($url); + + curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_VERBOSE, 0); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile); @@ -1397,7 +1404,8 @@ EOL; curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setopt($ch, CURLOPT_TIMEOUT, 90); $output = curl_exec($ch); - error_log('2 lenguaje-----------------'); + + error_log('-- RESP'); error_log($output); curl_close($ch); @@ -1431,8 +1439,6 @@ EOL; curl_setopt($ch, CURLOPT_TIMEOUT, 90); $output = curl_exec($ch); - error_log('3 skin-----------------'); - error_log($output); curl_close($ch); } @@ -1460,10 +1466,7 @@ EOL; curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setopt($ch, CURLOPT_TIMEOUT, 90); - $output = curl_exec($ch); - error_log('4 plugin-----------------'); - error_log($output); curl_close($ch); } From d6d2b2d20948429391b3c5c3c26e29f2c4669b6f Mon Sep 17 00:00:00 2001 From: Brayan Osmar Pereyra Suxo Date: Tue, 23 Apr 2013 10:17:51 -0400 Subject: [PATCH 05/12] DOCSYSTEM Arreglo de variable para lenguaje Arreglo de variable para lenguaje --- workflow/engine/controllers/installer.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/engine/controllers/installer.php b/workflow/engine/controllers/installer.php index 2dd89f8ac..595babad5 100644 --- a/workflow/engine/controllers/installer.php +++ b/workflow/engine/controllers/installer.php @@ -843,7 +843,7 @@ class Installer extends Controller $indexFileUpdated = true; if (defined('PARTNER_FLAG') || isset($_REQUEST['PARTNER_FLAG'])) { - $this->buildParternExtras($adminUsername, $adminPassword, $_REQUEST['workspace'], SYS_LANG); + $this->buildParternExtras($adminUsername, $adminPassword, $_REQUEST['workspace'], $langUri); } else { try { G::update_php_ini( $envFile, $updatedConf ); From 0429367c3a703263a0133d72489751065078b1ef Mon Sep 17 00:00:00 2001 From: Brayan Osmar Pereyra Suxo Date: Tue, 23 Apr 2013 11:24:03 -0400 Subject: [PATCH 06/12] DOCSYSTEM Borrando error_log de codigo Borrando error_log de codigo --- workflow/engine/controllers/installer.php | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/workflow/engine/controllers/installer.php b/workflow/engine/controllers/installer.php index 595babad5..bbaa158b6 100644 --- a/workflow/engine/controllers/installer.php +++ b/workflow/engine/controllers/installer.php @@ -1383,17 +1383,7 @@ EOL; // File to upload/post $postData['form[LANGUAGE_FILENAME]'] = "@".PATH_CORE."content/translations/processmaker.$lang.po"; - $url = "$serv/sys{$workspace}/{$lang}/classic/setup/languages_Import"; - - error_log('2 lenguaje-----------------'); - - error_log('--- LENGUAJE'); - error_log($postData['form[LANGUAGE_FILENAME]']); - - error_log('--- URL'); - error_log($url); - - curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_URL, "$serv/sys{$workspace}/{$lang}/classic/setup/languages_Import"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_VERBOSE, 0); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile); @@ -1403,10 +1393,8 @@ EOL; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $postData); curl_setopt($ch, CURLOPT_TIMEOUT, 90); + $output = curl_exec($ch); - - error_log('-- RESP'); - error_log($output); curl_close($ch); /** From 90dd1bb7fe8851bc817f73147b13f06ba91aafa5 Mon Sep 17 00:00:00 2001 From: Luis Fernando Saisa Lopez Date: Tue, 23 Apr 2013 17:18:39 +0000 Subject: [PATCH 07/12] BUG 11283 "Simplified Interface not reflecting minutes" SOLVED - Simplified Interface not reflecting minutese - Solved problem, the list of cases in the simplified interface, the minutes show correctly * Available from version ProcessMaker-2.0.47 (2.5.1) --- gulliver/system/class.g.php | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/gulliver/system/class.g.php b/gulliver/system/class.g.php index f98a1a59f..5fdde5e5c 100644 --- a/gulliver/system/class.g.php +++ b/gulliver/system/class.g.php @@ -1395,24 +1395,22 @@ class G if ($lang === '') { $lang = defined( SYS_LANG ) ? SYS_LANG : 'en'; } + $aux = explode( ' ', $date ); //para dividir la fecha del dia $date = explode( '-', isset( $aux[0] ) ? $aux[0] : '00-00-00' ); //para obtener los dias, el mes, y el año. $time = explode( ':', isset( $aux[1] ) ? $aux[1] : '00:00:00' ); //para obtener las horas, minutos, segundos. - $year = (int) ((isset( $date[0] )) ? $date[0] : '0'); //year $month = (int) ((isset( $date[1] )) ? $date[1] : '0'); //month $day = (int) ((isset( $date[2] )) ? $date[2] : '0'); //day - $h = isset( $time[0] ) ? $time[0] : '00'; //hour $i = isset( $time[1] ) ? $time[1] : '00'; //minute $s = isset( $time[2] ) ? $time[2] : '00'; //second - $MONTHS = Array (); - for ($i = 1; $i <= 12; $i ++) { - $MONTHS[$i] = G::LoadTranslation( "ID_MONTH_$i", $lang ); + for ($j = 1; $j <= 12; $j ++) { + $MONTHS[$j] = G::LoadTranslation( "ID_MONTH_$j", $lang ); } $d = (int) $day; @@ -1420,7 +1418,6 @@ class G //missing D - $M = $MONTHS[$month]; $m = (int) $month; $mm = G::complete_field( $month, 2, 1 ); From 4d7d129600904fc6d70a340e854ecfcdbe5f2773 Mon Sep 17 00:00:00 2001 From: jennylee Date: Tue, 23 Apr 2013 16:01:48 -0400 Subject: [PATCH 08/12] BUG-11275 Error creating Case Scheduler. SOLVED 1. The Label on the New Form Case Scheduler was changed into "Name", like in the List. 2. The Name field was validated to don't allow spaces " " like a valid name. --- workflow/engine/xmlform/cases/cases_Scheduler_New.xml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/workflow/engine/xmlform/cases/cases_Scheduler_New.xml b/workflow/engine/xmlform/cases/cases_Scheduler_New.xml index 52570dd30..a8d6a5950 100755 --- a/workflow/engine/xmlform/cases/cases_Scheduler_New.xml +++ b/workflow/engine/xmlform/cases/cases_Scheduler_New.xml @@ -46,7 +46,7 @@ -Description +Name @@ -623,6 +623,9 @@ function case_userSchedulerValidate(username, password) { */ function validateSchedulerFields(){ + +getField("SCH_NAME").value = getField("SCH_NAME").value.trim(); + var validFields = true; var requiredFields = ''; var badFormatFields = ''; From a475beaf084880ee150dd46e5f3c9e5f272b73fb Mon Sep 17 00:00:00 2001 From: Hector Cortez Date: Tue, 23 Apr 2013 18:27:34 -0400 Subject: [PATCH 09/12] =?UTF-8?q?BUG=2010852=20Control=20de=20los=20reenv?= =?UTF-8?q?=C3=ADos=20de=20la=20notificaciones=20a=20trav=C3=A9s=20del=20h?= =?UTF-8?q?istorial=20de=20mensajes=20'Messages=20History'=20SOLVED?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Revised target/origin task and PMFSendMessage function for object permissions. --- workflow/engine/classes/class.case.php | 31 +++++++++++++++++-- .../methods/cases/caseMessageHistory_Ajax.php | 25 +++++++++------ 2 files changed, 45 insertions(+), 11 deletions(-) diff --git a/workflow/engine/classes/class.case.php b/workflow/engine/classes/class.case.php index 3e49ebc5b..1ee774349 100755 --- a/workflow/engine/classes/class.case.php +++ b/workflow/engine/classes/class.case.php @@ -5090,7 +5090,7 @@ class Cases "INPUT" => Array(), "OUTPUT" => Array(), "CASES_NOTES" => 0, - "MSGS_HISTORY" => "" + "MSGS_HISTORY" => Array() ); //permissions per user @@ -5349,7 +5349,34 @@ class Cases $RESULT['CASES_NOTES'] = 1; break; case 'MSGS_HISTORY': - $RESULT['MSGS_HISTORY'] = $ACTION; + // Permission + $RESULT['MSGS_HISTORY'] = array('PERMISSION' => $ACTION); + $delIndex = array(); + if ($TASK_SOURCE != "" && (int)$TASK_SOURCE != 0) { + $oCriteria = new Criteria('workflow'); + + $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID); + $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID); + if ($aCase['APP_STATUS'] != 'COMPLETED') { + if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) { + $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE); + } + } + $oCriteria->add(AppDelegationPeer::USR_UID, $USER); + + $oDataset = AppDelegationPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + + while ($aRow = $oDataset->getRow()) { + if ($TASK_SOURCE == $aRow['TAS_UID']) { + $delIndex[] = $aRow['DEL_INDEX']; + } + $oDataset->next(); + } + + $RESULT['MSGS_HISTORY'] = array_merge(array('DEL_INDEX' => $delIndex), $RESULT['MSGS_HISTORY']); + } break; } diff --git a/workflow/engine/methods/cases/caseMessageHistory_Ajax.php b/workflow/engine/methods/cases/caseMessageHistory_Ajax.php index dd4ff7a51..55a357931 100644 --- a/workflow/engine/methods/cases/caseMessageHistory_Ajax.php +++ b/workflow/engine/methods/cases/caseMessageHistory_Ajax.php @@ -56,23 +56,30 @@ if ($actionAjax == 'messageHistoryGridList_JXP') { $respBlock = $oCase->getAllObjectsFrom( $proUid, $appUid, $tasUid, $usrUid, 'BLOCK' ); $respResend = $oCase->getAllObjectsFrom( $proUid, $appUid, $tasUid, $usrUid, 'RESEND' ); - if ($respView['MSGS_HISTORY'] != "" ) { - $respMess = $respView['MSGS_HISTORY']; + $delIndex = array(); + $respMess = ""; + if (count($respView['MSGS_HISTORY'])>0) { + $respMess = $respView['MSGS_HISTORY']['PERMISSION']; + $delIndex = $respView['MSGS_HISTORY']['DEL_INDEX']; } else { - if ( $respBlock['MSGS_HISTORY'] != "" ) { - $respMess = $respBlock['MSGS_HISTORY']; + if (count($respBlock['MSGS_HISTORY'])>0) { + $respMess = $respBlock['MSGS_HISTORY']['PERMISSION']; + $delIndex = $respView['MSGS_HISTORY']['DEL_INDEX']; } else { - if ($respResend['MSGS_HISTORY'] != "") { - $respMess = $respResend['MSGS_HISTORY']; - } else { - $respMess = ""; + if (count($respResend['MSGS_HISTORY'])>0) { + $respMess = $respResend['MSGS_HISTORY']['PERMISSION']; + $delIndex = $respView['MSGS_HISTORY']['DEL_INDEX']; } } } foreach ($appMessageArray as $index => $value) { - if ($appMessageArray[$index]['APP_MSG_SHOW_MESSAGE'] == 1 && $respMess != 'BLOCK' ) { + if (($appMessageArray[$index]['APP_MSG_SHOW_MESSAGE'] == 1 && $respMess != 'BLOCK' ) && + ($appMessageArray[$index]['DEL_INDEX'] == 0 || in_array($appMessageArray[$index]['DEL_INDEX'], $delIndex ))) { $appMessageArray[$index]['ID_MESSAGE'] = $appMessageArray[$index]['APP_UID'] . '_' . $appMessageArray[$index]['APP_MSG_UID']; + if ($respMess == 'BLOCK' || $respMess == '') { + $appMessageArray[$index]['APP_MSG_BODY'] = ""; + } $aProcesses[] = array_merge($appMessageArray[$index], array('MSGS_HISTORY' => $respMess)); } } From 2e82a21e273c69986638525530659600c464b036 Mon Sep 17 00:00:00 2001 From: Victor Saisa Lopez Date: Wed, 24 Apr 2013 10:16:10 -0400 Subject: [PATCH 10/12] BUG 10920 "Add subtitles inside a drop-down" SOLVED - New feature, add subtitles inside a drop-down - Has created an xml options file specific to the field optgroup * Available from version ProcessMaker-2.0.47 (2.5.1) --- .../engine/xmlform/dynaforms/fields/_options.xml | 3 --- .../xmlform/dynaforms/fields/_optionsOptGroup.xml | 13 +++++++++++++ .../engine/xmlform/dynaforms/fields/dropdown.xml | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 workflow/engine/xmlform/dynaforms/fields/_optionsOptGroup.xml diff --git a/workflow/engine/xmlform/dynaforms/fields/_options.xml b/workflow/engine/xmlform/dynaforms/fields/_options.xml index d722eccc1..7a3848434 100755 --- a/workflow/engine/xmlform/dynaforms/fields/_options.xml +++ b/workflow/engine/xmlform/dynaforms/fields/_options.xml @@ -6,8 +6,5 @@ - - Option Group - diff --git a/workflow/engine/xmlform/dynaforms/fields/_optionsOptGroup.xml b/workflow/engine/xmlform/dynaforms/fields/_optionsOptGroup.xml new file mode 100644 index 000000000..0e10ec5e0 --- /dev/null +++ b/workflow/engine/xmlform/dynaforms/fields/_optionsOptGroup.xml @@ -0,0 +1,13 @@ + + + + Value + + + + Option Group + + + diff --git a/workflow/engine/xmlform/dynaforms/fields/dropdown.xml b/workflow/engine/xmlform/dynaforms/fields/dropdown.xml index b1f32a445..c89b20177 100755 --- a/workflow/engine/xmlform/dynaforms/fields/dropdown.xml +++ b/workflow/engine/xmlform/dynaforms/fields/dropdown.xml @@ -73,7 +73,7 @@ select XMLNODE_NAME, XMLNODE_NAME AS NAME FROM dynaForm WHERE XMLNODE_NAME <> @@ Options - + Cancel From 40dd5fe4d8dc484b38de9c6450f06d5c986023a9 Mon Sep 17 00:00:00 2001 From: Marco Antonio Nina Date: Wed, 24 Apr 2013 10:37:12 -0400 Subject: [PATCH 11/12] =?UTF-8?q?BUG-10211=20No=20existe=20validacion=20en?= =?UTF-8?q?=20la=20opci=C3=B3n=20"Base=20Skin"...=20IMPROVEMENT?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Notice __VALUE__. - Add validation. --- workflow/engine/classes/class.system.php | 2 +- workflow/engine/methods/setup/skin_Ajax.php | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/workflow/engine/classes/class.system.php b/workflow/engine/classes/class.system.php index f1578e71b..fe27b8b0a 100755 --- a/workflow/engine/classes/class.system.php +++ b/workflow/engine/classes/class.system.php @@ -965,7 +965,7 @@ class System $res['SKIN_FOLDER_ID'] = strtolower( $folderId ); foreach ($skinInformationArray as $keyInfo => $infoValue) { - $res['SKIN_' . strtoupper( $keyInfo )] = $infoValue['__VALUE__']; + $res['SKIN_' . strtoupper( $keyInfo )] = (isset($infoValue['__VALUE__'])) ? $infoValue['__VALUE__'] : ''; } $res['SKIN_CREATEDATE'] = (isset($res['SKIN_CREATEDATE'])) ? $res['SKIN_CREATEDATE']: ''; $res['SKIN_MODIFIEDDATE'] = (isset($res['SKIN_MODIFIEDDATE'])) ? $res['SKIN_MODIFIEDDATE']: ''; diff --git a/workflow/engine/methods/setup/skin_Ajax.php b/workflow/engine/methods/setup/skin_Ajax.php index d19c6c5a9..c92683d53 100755 --- a/workflow/engine/methods/setup/skin_Ajax.php +++ b/workflow/engine/methods/setup/skin_Ajax.php @@ -45,6 +45,7 @@ function skinList () G::loadClass( 'system' ); $skinList = System::getSkingList(); + //print_r($skinList); $wildcard = ''; if (isset( $_REQUEST['activeskin'] )) { $wildcard = '@'; @@ -56,7 +57,7 @@ function skinList () } foreach ($skinList['skins'] as $key => $value) { - if ($value['SKIN_ID'] != $classicSkin) { + if (!isset($value['SKIN_ID']) || $value['SKIN_ID'] != $classicSkin) { if ($value['SKIN_FOLDER_ID'] != 'simplified' && $value['SKIN_FOLDER_ID'] != 'uxs' && $value['SKIN_FOLDER_ID'] != 'uxmodern') { if ($skinList['currentSkin'] == $value['SKIN_FOLDER_ID']) { $value['SKIN_STATUS'] = $wildcard . G::LoadTranslation( 'ID_ACTIVE' ); From 837981be5aa2925271dcc7484731e395cc1b199d Mon Sep 17 00:00:00 2001 From: Marco Antonio Nina Date: Wed, 24 Apr 2013 10:40:51 -0400 Subject: [PATCH 12/12] =?UTF-8?q?BUG-10211=20No=20existe=20validacion=20en?= =?UTF-8?q?=20la=20opci=C3=B3n=20"Base=20Skin"...=20IMPROVEMENT=20-=20Noti?= =?UTF-8?q?ce=20=5F=5FVALUE=5F=5F.=20-=20Add=20validation.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- workflow/engine/methods/setup/skin_Ajax.php | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/workflow/engine/methods/setup/skin_Ajax.php b/workflow/engine/methods/setup/skin_Ajax.php index c92683d53..9e56e412a 100755 --- a/workflow/engine/methods/setup/skin_Ajax.php +++ b/workflow/engine/methods/setup/skin_Ajax.php @@ -45,17 +45,16 @@ function skinList () G::loadClass( 'system' ); $skinList = System::getSkingList(); - //print_r($skinList); $wildcard = ''; if (isset( $_REQUEST['activeskin'] )) { $wildcard = '@'; } - + $classicSkin = ''; if (defined('PARTNER_FLAG')) { $classicSkin = '00000000000000000000000000000001'; } - + foreach ($skinList['skins'] as $key => $value) { if (!isset($value['SKIN_ID']) || $value['SKIN_ID'] != $classicSkin) { if ($value['SKIN_FOLDER_ID'] != 'simplified' && $value['SKIN_FOLDER_ID'] != 'uxs' && $value['SKIN_FOLDER_ID'] != 'uxmodern') {