Merge remote-tracking branch 'origin/develop' into feature/PMCORE-3140

This commit is contained in:
Rodrigo Quelca
2021-12-01 12:48:17 +00:00
7 changed files with 77 additions and 35 deletions

View File

@@ -41,8 +41,10 @@ if (!defined('TIME_ZONE')) {
$cliName = array_shift($args);
$taskName = array_shift($args);
$workspace = array_shift($args);
while ($workspace[0] == '-') {
$workspace = array_shift($args);
if (isset($workspace[0])) {
while ($workspace[0] == '-') {
$workspace = array_shift($args);
}
}
// Get time zone (global or by workspace)

View File

@@ -7,6 +7,7 @@ use ProcessMaker\Services\Api\Project\Variable;
class ActionsByEmailCoreClass extends PMPlugin
{
//The %0d and %0a are URL-encoded forms of CR and LF
const BODY_REPLY_LF = '%0D%0A';
private $abeRequest = [];
private $appNumber = null;
@@ -716,38 +717,60 @@ class ActionsByEmailCoreClass extends PMPlugin
$customGrid = unserialize($this->getItemAbeProperties('ABE_CUSTOM_GRID'));
$field = new stdClass();
$field->label = '';
$html = '<div style="width: 100%"></div><strong>' . $field->label . '</strong><table align="left" border="0"><tr>';
$html .= '<td><table align="left" cellpadding="2"><tr>';
$html = ''
. "<div style='width: 100%; display: inline-block;'>\n"
. "<strong>{$field->label}</strong>\n"
. "<table align='left' border='0'>\n"
. "<tr>\n"
. "<td>\n"
. "<table align='left' cellpadding='2'>\n"
. "<tr>\n";
$index = 1;
foreach ($customGrid as $key => $value) {
// Get the subject
$emailSubject = $this->getSubjectByResponse($value['abe_custom_label']);
$emailBody = $this->getBodyByResponse($value['abe_custom_value']);
// Define the html for the actions
$html .= '<td align="center"><a style="' . $value['abe_custom_format'] . '" ';
$html .= 'href="mailto:' . $noReply . '?subject=' . $emailSubject . '&body=' . $emailBody . '" target="_blank" >';
$html .= $value['abe_custom_label'];
$html .= '</a></td>' . (($index % 5 == 0) ? '</tr><tr>' : ' ');
$emailSubject = rawurlencode($emailSubject);
$emailBody = rawurlencode($emailBody);
$href = "mailto:{$noReply}?subject={$emailSubject}&body={$emailBody}";
$html = $html
. "<td align='center'>\n"
. "<a style=\"{$value['abe_custom_format']}\" href=\"{$href}\" target='_blank' >{$value['abe_custom_label']}</a>\n"
. "</td>\n";
//this is left for compatibility with template customizations
if ($index % 5 === 0) {
$html = $html
. "</tr>\n"
. "<tr>\n";
}
$index++;
}
$html .= '</tr></table></div>';
$html = $html
. "</tr>\n"
. "</table>\n"
. "</td>\n"
. "</tr>\n"
. "</table>\n"
. "</div>\n";
return $html;
}
/**
* Get the subject for response the action by email
*
* Get the subject for response the action by email.
*
* @param string $fieldLabel
*
* @return string
*/
private function getSubjectByResponse($fieldLabel)
private function getSubjectByResponse(string $fieldLabel): string
{
$subject = G::LoadTranslation('ID_CASE') . ' ' . $this->getCasePropertiesKey('APP_TITLE');
$subject .= $this->delimiter . ' ' . $fieldLabel;
return urlencode($subject);
return $subject;
}
/**
@@ -769,10 +792,11 @@ class ActionsByEmailCoreClass extends PMPlugin
];
$bodyToCrypt = G::json_encode($bodyToCrypt);
$body = str_repeat(self::BODY_REPLY_LF, 4);
$body .= '/' . str_repeat("=", 24) . self::BODY_REPLY_LF;
$body .= G::LoadTranslation('ID_ABE_EMAIL_RESPONSE_BODY_NOTE') . self::BODY_REPLY_LF;
$body .= '{' . Crypt::encryptString($bodyToCrypt) . '}' . self::BODY_REPLY_LF;
$CR_LF = "\r\n";
$body = str_repeat($CR_LF, 4);
$body .= '/' . str_repeat("=", 24) . $CR_LF;
$body .= G::LoadTranslation('ID_ABE_EMAIL_RESPONSE_BODY_NOTE') . $CR_LF;
$body .= '{' . Crypt::encryptString($bodyToCrypt) . '}' . $CR_LF;
$body .= str_repeat("=", 24) . '/';
return $body;
}

View File

@@ -206,8 +206,10 @@ EOT;
$args = $argv;
$cliname = array_shift( $args );
$taskName = array_shift( $args );
while ($taskName[0] == '-') {
$taskName = array_shift( $args );
if (isset($taskName[0])) {
while ($taskName[0] == '-') {
$taskName = array_shift( $args );
}
}
if (! $taskName) {
echo self::error( "Specify a task from the list below." ) . "\n\n";

View File

@@ -162,7 +162,7 @@ class AppDocument extends BaseAppDocument
try {
$oAppDocument = new AppDocument();
if (! isset( $aData['APP_DOC_UID'] )) {
if (empty($aData['APP_DOC_UID'])) {
$sUID = G::generateUniqueID();
$docVersion = 1;
} else {

View File

@@ -16,6 +16,7 @@
use ProcessMaker\BusinessModel\Cases as BmCases;
use ProcessMaker\BusinessModel\ProcessSupervisor;
use ProcessMaker\Core\System;
$tBarGmail = false;
if (isset($_GET['gmail']) && $_GET['gmail'] == 1) {
@@ -157,6 +158,7 @@ if ($isBpmn && $viewSummaryForm && $isNoEmpty) {
}
/*----------------------------------********---------------------------------*/
$pmDynaform = new PmDynaform();
$step = new Step();
$step = $step->loadByProcessTaskPosition($case['PRO_UID'], $case['TAS_UID'], 1);
$headPublisher->assign('uri', $script . $uri);
@@ -171,6 +173,11 @@ $headPublisher->assign('appStatus', $case['APP_STATUS']);
$headPublisher->assign('tbarGmail', $tBarGmail);
$headPublisher->assign('showCustomForm', $showCustomForm);
$headPublisher->assign('canClaimCase', $canClaimCase);
$headPublisher->assign('_CREDENTIALS', G::json_encode($pmDynaform->getCredentials()));
$headPublisher->assign('_SERVER', System::getHttpServerHostnameRequestsFrontEnd());
$headPublisher->assign('_WORKSPACE', config("system.workspace"));
$headPublisher->assign('_DEL_INDEX_DELEGATE', $delIndex);
$headPublisher->assign('_USR_DELEGATE', $case['CURRENT_USER_UID']);
if (!isset($_SESSION['APPLICATION']) || !isset($_SESSION['TASK']) || !isset($_SESSION['INDEX'])) {
$_SESSION['PROCESS'] = $case['PRO_UID'];

View File

@@ -467,11 +467,11 @@
mounted() {
this.$nextTick(function () {
let promise = null;
this.getTimeZoneList();
if ("USR_UID" in window && window.USR_UID !== "") {
this.editing = true;
promise = this.load();
promise.then(response => {
response;
promise.then(() => {
this.loadServices();
});
} else {
@@ -851,7 +851,6 @@
loadServices() {
this.getCountryList();
this.getAvailableCalendars();
this.getTimeZoneList();
this.getLanguagesList();
this.getDefaultMainMenuOptionList();
this.getDefaultCasesMenuOptionList();

View File

@@ -1368,7 +1368,8 @@ Ext.onReady(function(){
Actions.reassignCase = function()
{
var rowSelected = Ext.getCmp("grdpnlUsersToReassign").getSelectionModel().getSelected();
var msg = "";
var credentials = JSON.parse(_CREDENTIALS);
if( rowSelected ) {
if (Ext.getCmp('idTextareaReason').getValue() === '') {
Ext.Msg.alert(_('ID_ALERT'), _('ID_THE_REASON_REASSIGN_USER_EMPTY'));
@@ -1376,11 +1377,17 @@ Ext.onReady(function(){
}
PMExt.confirm(_('ID_CONFIRM'), _('ID_REASSIGN_CONFIRM'), function(){
Ext.Ajax.request({
url : 'ajaxListener' ,
params : {action : 'reassignCase', USR_UID: rowSelected.data.USR_UID, NOTE_REASON: Ext.getCmp('idTextareaReason').getValue(), NOTIFY_REASSIGN: Ext.getCmp('idCheckboxReason').getValue()},
success: function ( result, request ) {
var data = Ext.util.JSON.decode(result.responseText);
if( data.status == 0 ) {
method:"PUT",
url: _SERVER + "/api/1.0/" + _WORKSPACE + `/cases/${_APP_UID}/reassign-case`,
headers: {
"Accept": "application/json",
"Content-Type": "application/json",
"Authorization": `Bearer ` + credentials.accessToken,
},
jsonData : {del_index : _DEL_INDEX_DELEGATE, usr_uid_target: rowSelected.data.USR_UID,usr_uid_source: _USR_DELEGATE, reason: Ext.getCmp('idTextareaReason').getValue()},
success: function (result, request) {
var data = result;
if( data.status == 0 || data.status == 200) {
try {
if (typeof parent.notify !== "undefined") {
parent.notify('', data.msg);
@@ -1402,8 +1409,9 @@ Ext.onReady(function(){
alert(data.msg);
}
},
failure: function ( result, request) {
Ext.MessageBox.alert( _('ID_FAILED') , result.responseText);
failure: function (result, request) {
msg = JSON.parse(result.responseText);
Ext.MessageBox.alert( _('ID_FAILED') , msg.error? msg.error.message: "");
}
});
});