diff --git a/ProcessMaker/Console/Commands/ProcessMakerLicenseRemove.php b/ProcessMaker/Console/Commands/ProcessMakerLicenseRemove.php index 10019d5d58..3ac6f15baf 100644 --- a/ProcessMaker/Console/Commands/ProcessMakerLicenseRemove.php +++ b/ProcessMaker/Console/Commands/ProcessMakerLicenseRemove.php @@ -3,6 +3,7 @@ namespace ProcessMaker\Console\Commands; use Illuminate\Console\Command; +use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\Storage; class ProcessMakerLicenseRemove extends Command @@ -37,6 +38,10 @@ public function handle() if ($this->confirm('Are you sure you want to remove the license.json file?')) { Storage::disk('local')->delete('license.json'); $this->info('license.json removed successfully!'); + + $this->info('Calling package:discover to update the package cache with enabled packages'); + Artisan::call('package:discover'); + $this->info(Artisan::output()); } else { $this->info('Operation cancelled. license.json was not removed.'); } diff --git a/ProcessMaker/Console/Commands/ProcessMakerLicenseUpdate.php b/ProcessMaker/Console/Commands/ProcessMakerLicenseUpdate.php index 0f57fd9ca5..83c1a72a5d 100644 --- a/ProcessMaker/Console/Commands/ProcessMakerLicenseUpdate.php +++ b/ProcessMaker/Console/Commands/ProcessMakerLicenseUpdate.php @@ -42,7 +42,10 @@ public function handle() Storage::disk('local')->put('license.json', $content); + $this->info('Calling package:discover to update the package cache with enabled packages'); Artisan::call('package:discover'); + $this->info(Artisan::output()); + $this->info('License updated successfully'); } catch (Exception $e) { $this->error('An error occurred: ' . $e->getMessage()); @@ -77,6 +80,7 @@ protected function isValidLicenseContent(string $content): bool Carbon::parse($data['expires_at']); } catch (Exception $e) { $this->error('The "expires_at" property is not a valid date.'); + return false; } diff --git a/ProcessMaker/Http/Controllers/Api/ScriptExecutorController.php b/ProcessMaker/Http/Controllers/Api/ScriptExecutorController.php index 781cc2aa62..0dd9c2529f 100644 --- a/ProcessMaker/Http/Controllers/Api/ScriptExecutorController.php +++ b/ProcessMaker/Http/Controllers/Api/ScriptExecutorController.php @@ -347,11 +347,13 @@ public function availableLanguages() { $languages = []; foreach (Script::scriptFormats() as $key => $config) { - $languages[] = [ - 'value' => $key, - 'text' => $config['name'], - 'initDockerfile' => ScriptExecutor::initDockerfile($key), - ]; + if (!array_key_exists( 'system', $config) || (array_key_exists( 'system', $config) && !$config['system'])) { + $languages[] = [ + 'value' => $key, + 'text' => $config['name'], + 'initDockerfile' => ScriptExecutor::initDockerfile($key), + ]; + } } return ['languages' => $languages]; diff --git a/ProcessMaker/Http/Controllers/HomeController.php b/ProcessMaker/Http/Controllers/HomeController.php index da07bf0ab7..02b48877f8 100644 --- a/ProcessMaker/Http/Controllers/HomeController.php +++ b/ProcessMaker/Http/Controllers/HomeController.php @@ -20,7 +20,7 @@ public function index(Request $request) return redirect('/requests'); } // Redirect to home dynamic only if the package was enable - if (!$isMobile && class_exists(\ProcessMaker\Package\PackageDynamicUI\Models\DynamicUI::class)) { + if (!$isMobile && hasPackage('package-dynamic-ui')) { $user = \Auth::user(); $homePage = \ProcessMaker\Package\PackageDynamicUI\Models\DynamicUI::getHomePage($user); diff --git a/ProcessMaker/Http/Middleware/GenerateMenus.php b/ProcessMaker/Http/Middleware/GenerateMenus.php index fae364d68b..a915842d42 100644 --- a/ProcessMaker/Http/Middleware/GenerateMenus.php +++ b/ProcessMaker/Http/Middleware/GenerateMenus.php @@ -21,12 +21,14 @@ public function handle(Request $request, Closure $next) Menu::make('topnav', function ($menu) { // The home will display the dynamic ui view // @todo home will replace the request and task - $menu->group(['prefix' => 'home'], function ($request_items) { - $request_items->add( - __('Home'), - ['route' => 'home', 'id' => 'home'] - )->active('home/*'); - }); + if (hasPackage('package-dynamic-ui')) { + $menu->group(['prefix' => 'home'], function ($request_items) { + $request_items->add( + __('Home'), + ['route' => 'home', 'id' => 'home'] + )->active('home/*'); + }); + } $menu->group(['prefix' => 'requests'], function ($request_items) { $request_items->add( __('Requests'), diff --git a/ProcessMaker/Jobs/RefreshArtisanCaches.php b/ProcessMaker/Jobs/RefreshArtisanCaches.php index 260c1734f1..719f3d8583 100644 --- a/ProcessMaker/Jobs/RefreshArtisanCaches.php +++ b/ProcessMaker/Jobs/RefreshArtisanCaches.php @@ -31,10 +31,10 @@ public function __construct() */ public function handle() { - Artisan::call('clear-compiled', $options = [ + $options = [ '--no-interaction' => true, '--quiet' => true, - ]); + ]; if (app()->configurationIsCached()) { Artisan::call('config:cache', $options); diff --git a/ProcessMaker/Managers/OauthMailManager.php b/ProcessMaker/Managers/OauthMailManager.php index 6d2919075a..10835b63d5 100644 --- a/ProcessMaker/Managers/OauthMailManager.php +++ b/ProcessMaker/Managers/OauthMailManager.php @@ -63,15 +63,13 @@ protected function createSmtpTransport($config) case 'google': $accessToken = $this->checkForExpiredAccessToken(); // Update Authentication Mode - $transport->setAuthMode('XOAUTH2') - ->setUsername($this->fromAddress) + $transport->setUsername($this->fromAddress) ->setPassword($accessToken); break; case 'office365': $accessToken = $this->checkForExpiredAccessToken(); // Update Authentication Mode - $transport->setAuthMode('XOAUTH2') - ->setUsername($this->fromAddress) + $transport->setUsername($this->fromAddress) ->setPassword($accessToken); break; } diff --git a/ProcessMaker/Nayra/Repositories/Deserializer.php b/ProcessMaker/Nayra/Repositories/Deserializer.php index 65984b5861..2560ccc80a 100644 --- a/ProcessMaker/Nayra/Repositories/Deserializer.php +++ b/ProcessMaker/Nayra/Repositories/Deserializer.php @@ -197,6 +197,10 @@ public function unserializeInstance(array $serialized): ExecutionInstanceInterfa // Set request data if (!empty($serialized['data']) && is_array($serialized['data'])) { + // Preserve the parent request id + if (isset($serialized['data']['_parent'])) { + $serialized['data']['_parent']['request_id'] = $instance->parent_request_id; + } $dataStore = $instance->getDataStore(); foreach ($serialized['data'] as $key => $value) { $dataStore->putData($key, $value); diff --git a/ProcessMaker/Notifications/ProcessTranslationReady.php b/ProcessMaker/Notifications/ProcessTranslationReady.php index dd62e1c950..9611d1149f 100644 --- a/ProcessMaker/Notifications/ProcessTranslationReady.php +++ b/ProcessMaker/Notifications/ProcessTranslationReady.php @@ -47,7 +47,13 @@ public function via($notifiable) */ public function toArray($notifiable) { + $data = [ + 'humanLanguage' => $this->targetLanguage['humanLanguage'], + 'processName' => $this->process->name + ]; + $message = __('Process translation to :humanLanguage completed for process: :processName', $data); return [ + 'message' => $message, 'code' => $this->code, 'name' => __('Process translated'), 'processId' => $this->process->id ?? '', diff --git a/composer.json b/composer.json index 21a93a4533..5af8de9678 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "processmaker/processmaker", - "version": "4.8.0", + "version": "4.8.1", "description": "BPM PHP Software", "keywords": [ "php bpm processmaker" @@ -96,7 +96,7 @@ "Gmail" ], "processmaker": { - "build": "cdd93b9a", + "build": "e24a3c60", "custom": { "package-ellucian-ethos": "1.14.1", "package-plaid": "1.3.1", @@ -120,28 +120,31 @@ "package-lesschwab": "dev-fall", "package-proservice-tools": "dev-fall", "package-foxley-management": "dev-fall", - "package-email-listener": "dev-fall" + "package-email-listener": "dev-fall", + "package-zj-sonymusic": "dev-fall", + "pm-platform": "dev-fall", + "package-zj-nas": "dev-fall" }, "enterprise": { "connector-docusign": "1.6.0", "connector-idp": "1.6.0", "connector-pdf-print": "1.15.3", - "connector-send-email": "1.23.4", + "connector-send-email": "1.23.6", "connector-slack": "1.7.0", - "docker-executor-cdata": "1.0.1", + "docker-executor-cdata": "1.1.0", "docker-executor-node-ssr": "1.5.0", "package-actions-by-email": "1.15.0", "package-advanced-user-manager": "1.8.0", "package-ai": "1.3.0", "package-analytics-reporting": "1.3.1", - "package-auth": "1.15.0", + "package-auth": "1.15.2", "package-cdata": "1.0.2", "package-collections": "2.13.0", "package-comments": "1.9.2", "package-conversational-forms": "1.6.0", "package-data-sources": "1.23.1", "package-decision-engine": "1.6.2", - "package-dynamic-ui": "1.15.1", + "package-dynamic-ui": "1.15.4", "package-files": "1.11.2", "package-googleplaces": "1.9.0", "package-photo-video": "1.2.0", diff --git a/composer.lock b/composer.lock index b4288453c3..a5a0c0eeed 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "41dd20696789672f84d20f94ad4b91c8", + "content-hash": "08d1c39d3fb9b2c3bd58193f03966e91", "packages": [ { "name": "aws/aws-crt-php", diff --git a/package-lock.json b/package-lock.json index a7f0d417db..dd2879d115 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@processmaker/processmaker", - "version": "4.8.0", + "version": "4.8.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@processmaker/processmaker", - "version": "4.8.0", + "version": "4.8.1", "hasInstallScript": true, "license": "ISC", "dependencies": { @@ -17,7 +17,7 @@ "@fortawesome/free-solid-svg-icons": "^5.15.1", "@fortawesome/vue-fontawesome": "^0.1.9", "@panter/vue-i18next": "^0.15.2", - "@processmaker/modeler": "1.41.0", + "@processmaker/modeler": "1.42.1", "@processmaker/processmaker-bpmn-moddle": "0.14.1", "@processmaker/screen-builder": "2.79.0", "@processmaker/vue-form-elements": "0.49.4", @@ -2760,9 +2760,9 @@ "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info." }, "node_modules/@processmaker/modeler": { - "version": "1.41.0", - "resolved": "https://registry.npmjs.org/@processmaker/modeler/-/modeler-1.41.0.tgz", - "integrity": "sha512-auOPOxvyQC2XeUiGBs5/nOLHSt38RLHPkJYPim321s2dlmme0q3e3s3Z4MXa2wIexa9ez1jo8TNcrFbFZpYrGw==", + "version": "1.42.1", + "resolved": "https://registry.npmjs.org/@processmaker/modeler/-/modeler-1.42.1.tgz", + "integrity": "sha512-rt+D18aFXVcWOh/zMethf5hY1/7VwCrhotfyVRZj/TLj0xf16X4neuZUdyW+E/8sU5ckf471TU7gZkR1ArSp7w==", "dependencies": { "@babel/plugin-proposal-private-methods": "^7.12.1", "@fortawesome/fontawesome-free": "^5.11.2", @@ -23832,9 +23832,9 @@ "integrity": "sha512-eKnrt2mCtcYFhweNr20mOWSG0431BPPFnhYJEQd+D2/5ssWPaHVEEgD3YnUOmbg1gdRQdVe2rrxcdEvvPugB/A==" }, "@processmaker/modeler": { - "version": "1.41.0", - "resolved": "https://registry.npmjs.org/@processmaker/modeler/-/modeler-1.41.0.tgz", - "integrity": "sha512-auOPOxvyQC2XeUiGBs5/nOLHSt38RLHPkJYPim321s2dlmme0q3e3s3Z4MXa2wIexa9ez1jo8TNcrFbFZpYrGw==", + "version": "1.42.1", + "resolved": "https://registry.npmjs.org/@processmaker/modeler/-/modeler-1.42.1.tgz", + "integrity": "sha512-rt+D18aFXVcWOh/zMethf5hY1/7VwCrhotfyVRZj/TLj0xf16X4neuZUdyW+E/8sU5ckf471TU7gZkR1ArSp7w==", "requires": { "@babel/plugin-proposal-private-methods": "^7.12.1", "@fortawesome/fontawesome-free": "^5.11.2", diff --git a/package.json b/package.json index 0efe6b83ed..68afe3942d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@processmaker/processmaker", - "version": "4.8.0", + "version": "4.8.1", "description": "ProcessMaker 4", "author": "DevOps ", "license": "ISC", @@ -51,7 +51,7 @@ "@fortawesome/free-solid-svg-icons": "^5.15.1", "@fortawesome/vue-fontawesome": "^0.1.9", "@panter/vue-i18next": "^0.15.2", - "@processmaker/modeler": "1.41.0", + "@processmaker/modeler": "1.42.1", "@processmaker/processmaker-bpmn-moddle": "0.14.1", "@processmaker/screen-builder": "2.79.0", "@processmaker/vue-form-elements": "0.49.4", diff --git a/resources/views/requests/show.blade.php b/resources/views/requests/show.blade.php index f1bd34c3dc..7b492217b6 100644 --- a/resources/views/requests/show.blade.php +++ b/resources/views/requests/show.blade.php @@ -236,14 +236,26 @@ class="tab-pane card card-body border-top-0 p-3">

{{ __(':name In-Flight Map', ['name' => $request->process->name]) }}

-
+
-
- +
+ + +

+ {{ __('Content not available. Check settings or try a different device.') }} +

+
@@ -419,7 +431,7 @@ class="d-inline-flex pull-left align-items-center" :input-data="requestBy" displ packages: [], processId: @json($request->process->id), canViewComments: @json($canViewComments), - iframeLoading: false, + isObjectLoading: false, showTree: false, }; }, @@ -543,12 +555,12 @@ classStatusCard() { switchTab(tab) { this.activeTab = tab; if (tab === 'overview') { - this.iframeLoading = true; + this.isObjectLoading = true; } ProcessMaker.EventBus.$emit('tab-switched', tab); }, - onLoadIframe() { - this.iframeLoading = false; + onLoadedObject() { + this.isObjectLoading = false; }, requestStatusClass(status) { status = status.toLowerCase(); @@ -735,3 +747,13 @@ classStatusCard() { }); @endsection + +@section('css') + +@endsection