diff --git a/.github/workflows/deploy-pm4.yml b/.github/workflows/deploy-pm4.yml index 53b853954f..594c07927a 100644 --- a/.github/workflows/deploy-pm4.yml +++ b/.github/workflows/deploy-pm4.yml @@ -27,7 +27,7 @@ env: GITHUB_TOKEN: ${{ secrets.GIT_TOKEN }} BUILD_BASE: ${{ (contains(github.event.pull_request.body, 'ci:build-base') || github.event_name == 'schedule') && '1' || '0' }} BASE_IMAGE: ${{ secrets.REGISTRY_HOST }}/processmaker/processmaker:base - K8S_BRANCH: develop + K8S_BRANCH: ${{ contains(github.event.pull_request.body, 'ci:next') && 'next' || 'develop' }} concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true @@ -118,7 +118,7 @@ jobs: sed -i "s/{{instance}}/ci-$deploy/" template-instance.yaml sed -i "s/{{image}}/${{env.IMAGE_TAG}}/" template-instance.yaml cat template-instance.yaml - helm install --timeout 40m -f template-instance.yaml ci-$deploy processmaker/enterprise + helm install --timeout 60m -f template-instance.yaml ci-$deploy processmaker/enterprise #Add cert sed -i "s/{{instance}}/ci-$deploy/" template-cert.yaml sed -i "s/{{tls-crt}}/${{ secrets.TLS_CRT }}/" template-cert.yaml @@ -128,7 +128,7 @@ jobs: echo "Bouncing Instance "; sed -i "s/{{instance}}/ci-$deploy/g" template-bounce.yaml sed -i "s/{{current_datetime}}/$current_datetime/g" template-bounce.yaml - helm upgrade --timeout 20m ci-$deploy processmaker/enterprise --version 2.1.0 + helm upgrade --timeout 60m ci-$deploy processmaker/enterprise --version 2.1.0 kubectl apply -f template-bounce.yaml fi export INSTANCE_URL=https://ci-$deploy$DOM_EKS @@ -145,11 +145,19 @@ jobs: steps: - name: Delete instance EKS run: | - deploy=$(echo -n $IMAGE_TAG | md5sum | head -c 10) + deploy=$(echo -n ${{env.IMAGE_TAG}} | md5sum | head -c 10) if kubectl get namespace/ci-$deploy-ns-pm4 ; then echo "Deleting Instace :: ci-$deploy" helm delete ci-$deploy kubectl delete namespace ci-$deploy-ns-pm4 + #Drop database + deploy_db="\`pm4_ci-$deploy\`" + deploy_ai="\`pm4_ci-${deploy}_ai\`" + mysql -u${{ secrets.USER_MYSQL_ENG }} -p${{ secrets.PASS_MYSQL_ENG }} -e "DROP DATABASE $deploy_db" -h ${{ secrets.RDS_ENG }} + mysql -u${{ secrets.USER_MYSQL_ENG }} -p${{ secrets.PASS_MYSQL_ENG }} -e "DROP DATABASE $deploy_ai" -h ${{ secrets.RDS_ENG }} + #Drop image Harbor + curl -X DELETE -u ${{ secrets.REGISTRY_USERNAME }}:${{ secrets.REGISTRY_PASSWORD }} "https://${{ secrets.REGISTRY_HOST }}/api/v2.0/projects/processmaker/repositories/enterprise/artifacts/${{env.IMAGE_TAG}}" + echo "The instance [https://ci-$deploy.engk8s.processmaker.net] was deleted!!" else echo "The pull request does not have an instance on K8s [https://ci-$deploy.engk8s.processmaker.net] not found!!" fi @@ -178,4 +186,4 @@ jobs: docker pull $IMAGE docker-compose down -v docker-compose build phpunit - docker-compose run phpunit + docker-compose run phpunit \ No newline at end of file diff --git a/ProcessMaker/ImportExport/Exporters/UserExporter.php b/ProcessMaker/ImportExport/Exporters/UserExporter.php index 6ae2df0c5c..11f7adc1f4 100644 --- a/ProcessMaker/ImportExport/Exporters/UserExporter.php +++ b/ProcessMaker/ImportExport/Exporters/UserExporter.php @@ -5,7 +5,6 @@ use Illuminate\Support\Arr; use ProcessMaker\ImportExport\DependentType; use ProcessMaker\Models\Permission; -use ProcessMaker\Models\User; class UserExporter extends ExporterBase { @@ -51,6 +50,6 @@ public static function doNotImport($uuid, $assetInfo) public function getName($model) : string { - return $model->username; + return $model->username ?? ''; } } diff --git a/ProcessMaker/Jobs/SyncGuidedTemplates.php b/ProcessMaker/Jobs/SyncGuidedTemplates.php index 2f033ad541..8d5ce80f8d 100644 --- a/ProcessMaker/Jobs/SyncGuidedTemplates.php +++ b/ProcessMaker/Jobs/SyncGuidedTemplates.php @@ -190,7 +190,7 @@ private function importProcess($payload, $assetType) return $rootLog['newId']; } catch (Exception $e) { - throw new Exception('Error:', $e->getMessage()); + throw new Exception('Error: ' . $e->getMessage()); } } diff --git a/ProcessMaker/Managers/DataManager.php b/ProcessMaker/Managers/DataManager.php index 73c8de7d6f..0e1e3575f8 100644 --- a/ProcessMaker/Managers/DataManager.php +++ b/ProcessMaker/Managers/DataManager.php @@ -91,6 +91,10 @@ private function loadUserData(array $data = [], ProcessRequestToken $token = nul unset($userData['remember_token']); $data['_user'] = $userData; } + // Magic variable: _user is removed when the task is SelfService. + if ($token && $token->is_self_service === 1) { + unset($data['_user']); + } return $data; } @@ -123,12 +127,7 @@ private function loadTokenData(array $data = [], ProcessRequestToken $token = nu } // Magic Variable: _user - $user = $token->user ?: Auth::user(); - if ($user) { - $userData = $user->attributesToArray(); - unset($userData['remember_token']); - $data['_user'] = $userData; - } + $data = $this->loadUserData($data, $token); // Magic Variable: _request $request = $token->getInstance() ?: $token->processRequest; diff --git a/ProcessMaker/Models/ProcessRequest.php b/ProcessMaker/Models/ProcessRequest.php index 7c10244fcf..bc720e2651 100644 --- a/ProcessMaker/Models/ProcessRequest.php +++ b/ProcessMaker/Models/ProcessRequest.php @@ -872,11 +872,10 @@ public function getVersionDefinitions($forceParse = false, $engine = null) public function notifyProcessUpdated($eventName) { $event = new ProcessUpdated($this, $eventName); - event($event); if ($this->parentRequest) { $this->parentRequest->notifyProcessUpdated($eventName); - event($event); } + event($event); } /** diff --git a/ProcessMaker/Providers/AuthServiceProvider.php b/ProcessMaker/Providers/AuthServiceProvider.php index 0d87b7b240..b69f07cbd7 100644 --- a/ProcessMaker/Providers/AuthServiceProvider.php +++ b/ProcessMaker/Providers/AuthServiceProvider.php @@ -63,6 +63,9 @@ public function boot() if ($user->is_administrator) { return true; } + + // Let other policies handle the request. + return null; }); try { @@ -70,22 +73,27 @@ public function boot() // Define the Gate permissions $permissions->each(function ($permission) { Gate::define($permission->name, function (User $user, ...$params) use ($permission) { + $authorized = false; + // Check if the user has the permission if ($user->hasPermission($permission->name)) { return true; } + // If the user has no projects, return false. $projects = $this->getProjectsForUser($user->id); + if (empty($projects)) { + return false; + } // Check if the user has 'create-projects' permission and the request is from specific endpoints // Users that ONLY have 'create-projects' permission are allowed to access specific endpoints $isAllowedEndpoint = $this->checkAllowedEndpoints($projects, request()->path()); - if ($user->hasPermission('create-projects') && $isAllowedEndpoint) { - return $this->isProjectAsset($permission, $params); + $authorized = $this->isProjectAsset($permission, $params); } - return false; + return $authorized; }); }); } catch (\Exception $e) { diff --git a/ProcessMaker/Templates/ProcessTemplate.php b/ProcessMaker/Templates/ProcessTemplate.php index 2ce246c08b..6f9c61e957 100644 --- a/ProcessMaker/Templates/ProcessTemplate.php +++ b/ProcessMaker/Templates/ProcessTemplate.php @@ -229,6 +229,15 @@ public function create($request) : JsonResponse continue; } + // Exclude the import of process categories if the category already exists in the database + if ($asset['model'] === 'ProcessMaker\Models\ProcessCategory') { + $processCategory = ProcessCategory::where('uuid', $key)->first(); + if ($processCategory !== null) { + unset($payload['export'][$key]); + continue; + } + } + $postOptions[$key] = [ 'mode' => 'copy', 'isTemplate' => false, diff --git a/ProcessMaker/Traits/HasAuthorization.php b/ProcessMaker/Traits/HasAuthorization.php index a3301e6499..61902b4b0f 100644 --- a/ProcessMaker/Traits/HasAuthorization.php +++ b/ProcessMaker/Traits/HasAuthorization.php @@ -32,6 +32,7 @@ public function loadGroupPermissions() foreach ($this->groupMembersFromMemberable as $gm) { $group = $gm->group; + $permissions = $this->loadPermissionOfGroups($group, $permissions); $names = $group->permissions->pluck('name')->toArray(); $permissions = array_merge($permissions, $names); } @@ -39,6 +40,17 @@ public function loadGroupPermissions() return $this->addCategoryViewPermissions($permissions); } + public function loadPermissionOfGroups(Group $group, array $permissions = []) + { + foreach ($group->groupMembersFromMemberable as $member) { + $group = $member->group; + $permissions = $this->loadPermissionOfGroups($group, $permissions); + $permissions = array_merge($permissions, $group->permissions->pluck('name')->toArray()); + } + + return $permissions; + } + public function hasPermission($permissionString) { if (\Auth::user() == $this) { diff --git a/ProcessMaker/Traits/HasUuids.php b/ProcessMaker/Traits/HasUuids.php index f1e18f6d01..3e727aec02 100644 --- a/ProcessMaker/Traits/HasUuids.php +++ b/ProcessMaker/Traits/HasUuids.php @@ -15,7 +15,7 @@ public static function bootHasUuids(): void { // TODO: Remove call in collections package src/Observers/RecordObserver.php static::creating(function ($model) { - if (!$model->uuid) { + if (get_class($model) !== 'ProcessMaker\\Plugins\\Collections\\Models\\Record' && !isset($model->uuid)) { $model->uuid = self::generateUuid(); } }); diff --git a/composer.json b/composer.json index 0bc482d276..96b6f89020 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,6 @@ { "name": "processmaker/processmaker", - "version": "4.9.2", + "version": "4.9.3", "description": "BPM PHP Software", "keywords": [ "php bpm processmaker" @@ -102,9 +102,9 @@ "Gmail" ], "processmaker": { - "build": "ebfefbd2", + "build": "8fc70c27", "custom": { - "package-ellucian-ethos": "1.15.3", + "package-ellucian-ethos": "1.15.6", "package-plaid": "1.5.0", "paypal-package": "dev-fall", "pps-adsync": "dev-fall", @@ -132,31 +132,31 @@ "package-zj-nas": "dev-fall" }, "enterprise": { - "connector-docusign": "1.8.2", + "connector-docusign": "1.8.3", "connector-idp": "1.8.0", "connector-pdf-print": "1.16.1", - "connector-send-email": "1.25.3", + "connector-send-email": "1.25.4", "connector-slack": "1.8.0", - "docker-executor-cdata": "1.2.0", + "docker-executor-cdata": "1.4.0", "docker-executor-node-ssr": "1.5.0", "package-actions-by-email": "1.16.0", "package-advanced-user-manager": "1.10.0", - "package-ai": "1.5.2", + "package-ai": "1.5.4", "package-analytics-reporting": "1.5.1", - "package-auth": "1.17.1", - "package-cdata": "1.2.0", + "package-auth": "1.17.2", + "package-cdata": "1.3.0", "package-collections": "2.16.1", "package-comments": "1.11.1", "package-conversational-forms": "1.7.0", "package-data-sources": "1.25.3", - "package-decision-engine": "1.8.2", + "package-decision-engine": "1.8.3", "package-dynamic-ui": "1.17.2", - "package-files": "1.13.2", + "package-files": "1.14.0", "package-googleplaces": "1.11.0", "package-photo-video": "1.4.2", - "package-pm-blocks": "1.5.5", + "package-pm-blocks": "1.5.7", "package-process-documenter": "1.9.0", - "package-process-optimization": "1.10.0", + "package-process-optimization": "1.10.1", "package-product-analytics": "1.5.8", "package-projects": "1.2.5", "package-savedsearch": "1.31.8", @@ -164,7 +164,7 @@ "package-signature": "1.12.0", "package-testing": "1.1.1", "package-translations": "2.8.1", - "package-versions": "1.9.1", + "package-versions": "1.9.2", "package-vocabularies": "2.14.1", "package-webentry": "2.20.3", "packages": "^0" diff --git a/composer.lock b/composer.lock index d590f6be64..f03f0e6961 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": "b4016492ed19758c73a39a2392822437", + "content-hash": "07a45e66fe4e3244f17ea3fc5bcb976a", "packages": [ { "name": "aws/aws-crt-php", @@ -1739,7 +1739,7 @@ "version": "v8.8.0", "source": { "type": "git", - "url": "git@github.com:elastic/elastic-transport-php.git", + "url": "https://github.com/elastic/elastic-transport-php.git", "reference": "cdf9f63a16ec6bfb4c881ab89aa0e2a61fb7c20b" }, "dist": { @@ -1783,6 +1783,10 @@ "psr-7", "transport" ], + "support": { + "issues": "https://github.com/elastic/elastic-transport-php/issues", + "source": "https://github.com/elastic/elastic-transport-php/tree/v8.8.0" + }, "time": "2023-11-08T10:51:51+00:00" }, { @@ -1790,7 +1794,7 @@ "version": "v8.11.0", "source": { "type": "git", - "url": "git@github.com:elastic/elasticsearch-php.git", + "url": "https://github.com/elastic/elasticsearch-php.git", "reference": "4c16dc67788afdec63294f072999594d0fd14ebb" }, "dist": { @@ -12005,7 +12009,7 @@ "version": "7.13.0", "source": { "type": "git", - "url": "git@github.com:twilio/twilio-php.git", + "url": "https://github.com/twilio/twilio-php.git", "reference": "cda27b65615ecfddce24668803078bc72b46fe17" }, "dist": { @@ -12047,6 +12051,10 @@ "sms", "twilio" ], + "support": { + "issues": "https://github.com/twilio/twilio-php/issues", + "source": "https://github.com/twilio/twilio-php/tree/7.13.0" + }, "time": "2023-12-14T10:47:43+00:00" }, { diff --git a/config/app.php b/config/app.php index 56992ec551..26f3feb348 100644 --- a/config/app.php +++ b/config/app.php @@ -47,10 +47,10 @@ // Option Fractal, Serializer // TODO Does the ProcessMakerSerializer class exist, if so, we need to fix its namespace :) - 'serialize_fractal' => env('SERIALIZE_FRACTAL', \ProcessMaker\Transformers\ProcessMakerSerializer::class), + 'serialize_fractal' => env('SERIALIZE_FRACTAL', ProcessMaker\Transformers\ProcessMakerSerializer::class), //Option Fractal, paginator - 'paginate_fractal' => env('PAGINATE_FRACTAL', \League\Fractal\Pagination\IlluminatePaginatorAdapter::class), + 'paginate_fractal' => env('PAGINATE_FRACTAL', League\Fractal\Pagination\IlluminatePaginatorAdapter::class), // The processmaker identifier of the web client application 'web_client_application_id' => env('PM_CLIENT_ID', 'x-pm-local-client'), @@ -109,6 +109,10 @@ // Allows to detect if OpenAI is enabled or not 'open_ai_nlq_to_pmql' => env('OPEN_AI_NLQ_TO_PMQL_ENABLED', false) && env('OPEN_AI_SECRET', false), + // Allows to detect if OpenAI is enabled or not + 'open_ai_process_translations' => env('OPEN_AI_PROCESS_TRANSLATIONS_ENABLED', false) && + env('OPEN_AI_SECRET', false), + // Microservice AI Host 'ai_microservice_host' => env('AI_MICROSERVICE_HOST'), diff --git a/config/mail.php b/config/mail.php index 71b395fca0..a914bac41c 100644 --- a/config/mail.php +++ b/config/mail.php @@ -49,7 +49,9 @@ 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 'timeout' => null, - 'local_domain' => env('MAIL_EHLO_DOMAIN'), + 'local_domain' => env('MAIL_EHLO_DOMAIN', parse_url(env('APP_URL'))['host']), + 'auth_mode' => null, + 'verify_peer' => env('VERIFY_PEER', false), ], 'ses' => [ diff --git a/package-lock.json b/package-lock.json index f8bcb03383..a61ec7a80f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@processmaker/processmaker", - "version": "4.9.2", + "version": "4.9.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@processmaker/processmaker", - "version": "4.9.2", + "version": "4.9.3", "hasInstallScript": true, "license": "ISC", "dependencies": { @@ -22,7 +22,7 @@ "@panter/vue-i18next": "^0.15.2", "@processmaker/modeler": "1.46.11", "@processmaker/processmaker-bpmn-moddle": "0.14.1", - "@processmaker/screen-builder": "2.83.10", + "@processmaker/screen-builder": "2.83.12", "@processmaker/vue-form-elements": "0.51.0", "@processmaker/vue-multiselect": "2.3.0", "@tinymce/tinymce-vue": "2.0.0", @@ -2479,9 +2479,9 @@ } }, "node_modules/@processmaker/screen-builder": { - "version": "2.83.10", - "resolved": "https://registry.npmjs.org/@processmaker/screen-builder/-/screen-builder-2.83.10.tgz", - "integrity": "sha512-mBM+eITollcu1hxc41NBmXXMUDrCo+rnSOw0+g4EqMR3nZbZxl4Cb4WzSYU5xsk65XibJO9HCsiqTk1XutqE3g==", + "version": "2.83.12", + "resolved": "https://registry.npmjs.org/@processmaker/screen-builder/-/screen-builder-2.83.12.tgz", + "integrity": "sha512-frHMKK48fJcjuvgW3y4UCBT6AXkwH/lOvrMTH6gg0N3RlIRCdgIRAFkjkmrC7Y/YqweRz1ygy+WJ/ts91ylG7g==", "dependencies": { "@chantouchsek/validatorjs": "1.2.3", "axios-extensions": "^3.1.6", @@ -17590,9 +17590,9 @@ } }, "@processmaker/screen-builder": { - "version": "2.83.10", - "resolved": "https://registry.npmjs.org/@processmaker/screen-builder/-/screen-builder-2.83.10.tgz", - "integrity": "sha512-mBM+eITollcu1hxc41NBmXXMUDrCo+rnSOw0+g4EqMR3nZbZxl4Cb4WzSYU5xsk65XibJO9HCsiqTk1XutqE3g==", + "version": "2.83.12", + "resolved": "https://registry.npmjs.org/@processmaker/screen-builder/-/screen-builder-2.83.12.tgz", + "integrity": "sha512-frHMKK48fJcjuvgW3y4UCBT6AXkwH/lOvrMTH6gg0N3RlIRCdgIRAFkjkmrC7Y/YqweRz1ygy+WJ/ts91ylG7g==", "requires": { "@chantouchsek/validatorjs": "1.2.3", "axios-extensions": "^3.1.6", diff --git a/package.json b/package.json index e2d2ae9046..0d225f228f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@processmaker/processmaker", - "version": "4.9.2", + "version": "4.9.3", "description": "ProcessMaker 4", "author": "DevOps ", "license": "ISC", @@ -53,7 +53,7 @@ "@panter/vue-i18next": "^0.15.2", "@processmaker/modeler": "1.46.11", "@processmaker/processmaker-bpmn-moddle": "0.14.1", - "@processmaker/screen-builder": "2.83.10", + "@processmaker/screen-builder": "2.83.12", "@processmaker/vue-form-elements": "0.51.0", "@processmaker/vue-multiselect": "2.3.0", "@tinymce/tinymce-vue": "2.0.0", diff --git a/resources/js/admin/settings/components/AdditionalDriverConnectionProperties.vue b/resources/js/admin/settings/components/AdditionalDriverConnectionProperties.vue index 683b6e38b9..7f194144af 100644 --- a/resources/js/admin/settings/components/AdditionalDriverConnectionProperties.vue +++ b/resources/js/admin/settings/components/AdditionalDriverConnectionProperties.vue @@ -13,6 +13,8 @@ import ExcelConnectionProperties from "./cdata/ExcelConnectionProperties.vue"; import GithubConnectionProperties from "./cdata/GithubConnectionProperties.vue"; import DocusignConnectionProperties from "./cdata/DocusignConnectionProperties.vue"; import GmailConnectionProperties from "./cdata/GmailConnectionProperties.vue"; +import BamboohrConnectionProperties from "./cdata/BamboohrConnectionProperties.vue"; +import SapHanaConnectionProperties from "./cdata/SapHanaConnectionProperties.vue"; export default { components: { @@ -20,6 +22,8 @@ export default { GithubConnectionProperties, DocusignConnectionProperties, GmailConnectionProperties, + BamboohrConnectionProperties, + SapHanaConnectionProperties, }, props: { formData: { @@ -38,6 +42,8 @@ export default { "cdata.github": "github-connection-properties", "cdata.docusign": "docusign-connection-properties", "cdata.gmail": "gmail-connection-properties", + "cdata.BambooHR": "bamboohr-connection-properties", + "cdata.saphana": "sap-hana-connection-properties", }, }; }, diff --git a/resources/js/admin/settings/components/SettingDriverAuthorization.vue b/resources/js/admin/settings/components/SettingDriverAuthorization.vue index a5772dddcf..2f6c322c69 100644 --- a/resources/js/admin/settings/components/SettingDriverAuthorization.vue +++ b/resources/js/admin/settings/components/SettingDriverAuthorization.vue @@ -1,17 +1,20 @@
- - - - - - - - - - - - - - - - - - - - - - - - - + - {{ $t('Cancel') }} + {{ $t("Cancel") }}
+
-

{{ $t('Connecting Driver') }}

+

{{ $t("Connecting Driver") }}

- diff --git a/resources/js/admin/settings/components/cdata/DocusignConnectionProperties.vue b/resources/js/admin/settings/components/cdata/DocusignConnectionProperties.vue index 81cdbbfc7b..7599845514 100644 --- a/resources/js/admin/settings/components/cdata/DocusignConnectionProperties.vue +++ b/resources/js/admin/settings/components/cdata/DocusignConnectionProperties.vue @@ -51,7 +51,10 @@ export default { }, }, mounted() { - this.config.use_sandbox = this.formData?.use_sandbox ?? true; + this.config = { + ...this.config, + ...this.formData, + }; // Emit the updateFormData event after assigning values. this.$emit("updateFormData", this.config); diff --git a/resources/js/admin/settings/components/cdata/ExcelConnectionProperties.vue b/resources/js/admin/settings/components/cdata/ExcelConnectionProperties.vue index 045e6f8a48..d80858b488 100644 --- a/resources/js/admin/settings/components/cdata/ExcelConnectionProperties.vue +++ b/resources/js/admin/settings/components/cdata/ExcelConnectionProperties.vue @@ -61,7 +61,6 @@ export default { config: { connection_type: "", uri: "", - AuthScheme: "OAuth", }, connectionOptions: { oauth: [ diff --git a/resources/js/admin/settings/components/cdata/GmailConnectionProperties.vue b/resources/js/admin/settings/components/cdata/GmailConnectionProperties.vue index 862eab8e6c..2e04b5914e 100644 --- a/resources/js/admin/settings/components/cdata/GmailConnectionProperties.vue +++ b/resources/js/admin/settings/components/cdata/GmailConnectionProperties.vue @@ -18,7 +18,6 @@ export default { return { errors: {}, config: { - AuthScheme: "OAuth", Schema: "REST", Scope: "https://mail.google.com/", }, diff --git a/resources/js/admin/settings/components/cdata/NoneConnectionProperties.vue b/resources/js/admin/settings/components/cdata/NoneConnectionProperties.vue new file mode 100644 index 0000000000..f95f8d50ca --- /dev/null +++ b/resources/js/admin/settings/components/cdata/NoneConnectionProperties.vue @@ -0,0 +1,26 @@ + + diff --git a/resources/js/admin/settings/components/cdata/OauthConnectionProperties.vue b/resources/js/admin/settings/components/cdata/OauthConnectionProperties.vue new file mode 100644 index 0000000000..43d205c1b4 --- /dev/null +++ b/resources/js/admin/settings/components/cdata/OauthConnectionProperties.vue @@ -0,0 +1,164 @@ + + diff --git a/resources/js/admin/settings/components/cdata/PasswordConnectionProperties.vue b/resources/js/admin/settings/components/cdata/PasswordConnectionProperties.vue new file mode 100644 index 0000000000..523630db86 --- /dev/null +++ b/resources/js/admin/settings/components/cdata/PasswordConnectionProperties.vue @@ -0,0 +1,113 @@ + + diff --git a/resources/js/admin/settings/components/cdata/SapHanaConnectionProperties.vue b/resources/js/admin/settings/components/cdata/SapHanaConnectionProperties.vue new file mode 100644 index 0000000000..d366edbc09 --- /dev/null +++ b/resources/js/admin/settings/components/cdata/SapHanaConnectionProperties.vue @@ -0,0 +1,125 @@ + + diff --git a/resources/js/components/requests/card.vue b/resources/js/components/requests/card.vue index 4fc5a044b0..20e8a4f3e7 100644 --- a/resources/js/components/requests/card.vue +++ b/resources/js/components/requests/card.vue @@ -79,11 +79,11 @@ export default { .then(response => { this.spin = 0; let instance = response.data; + let url = '/requests'; if (this.$cookies.get("isMobile") === "true") { - window.location = "/requests/mobile/" + instance.id; - } else { - window.location = `/requests/${instance.id}?fromTriggerStartEvent=`; + url = '/requests/mobile'; } + window.location = `${url}/${instance.id}?fromTriggerStartEvent=`; }).catch((err) => { this.disabled = false; const data = err.response.data; diff --git a/resources/js/components/templates/mixins/wizardHelperProcessModal.js b/resources/js/components/templates/mixins/wizardHelperProcessModal.js index 9f668e6bbe..45e8b43be4 100644 --- a/resources/js/components/templates/mixins/wizardHelperProcessModal.js +++ b/resources/js/components/templates/mixins/wizardHelperProcessModal.js @@ -4,6 +4,7 @@ export default { task: null, currentUserId: null, formData: {}, + importingProcessTemplate: false, }; }, methods: { @@ -86,9 +87,9 @@ export default { this.task = task; }, completed() { - if (this.shouldImportProcessTemplate) { + if (!this.importingProcessTemplate && this.shouldImportProcessTemplate) { this.importProcessTemplate(); - } else { + } else if (!this.importingProcessTemplate && !this.shouldImportProcessTemplate) { this.showHelperProcess = false; this.$bvModal.hide("processWizard"); } @@ -103,6 +104,7 @@ export default { }); }, importProcessTemplate() { + this.importingProcessTemplate = true; ProcessMaker.apiClient.post(`template/create/process/${this.template.process_template_id}`, { name: this.template.name, description: this.template.description, @@ -112,6 +114,7 @@ export default { wizardTemplateUuid: this.template.uuid, helperProcessRequestId: this.task.process_request_id, }).then((response) => { + this.importingProcessTemplate = false; if (response.data?.existingAssets) { this.handleExistingAssets(response.data); } else { diff --git a/resources/js/processes-catalogue/components/ProcessesCarousel.vue b/resources/js/processes-catalogue/components/ProcessesCarousel.vue index 5c65f4b17b..19c711e127 100644 --- a/resources/js/processes-catalogue/components/ProcessesCarousel.vue +++ b/resources/js/processes-catalogue/components/ProcessesCarousel.vue @@ -1,8 +1,9 @@ @@ -112,7 +113,12 @@ export default { height: 400px; } .img-carousel { - max-width: 100%; - height: inherit; + max-width: 800px; + height: 400px; +} +.carousel-container { + display: flex; + justify-content: center; + background-color: #edf1f6; } diff --git a/resources/views/layouts/layout.blade.php b/resources/views/layouts/layout.blade.php index 71531a95f4..e7f7839679 100644 --- a/resources/views/layouts/layout.blade.php +++ b/resources/views/layouts/layout.blade.php @@ -4,7 +4,10 @@ - + diff --git a/resources/views/processes/edit.blade.php b/resources/views/processes/edit.blade.php index 29bd43a339..e799bf8a24 100644 --- a/resources/views/processes/edit.blade.php +++ b/resources/views/processes/edit.blade.php @@ -25,12 +25,14 @@ {{__('Configuration')}} - @can('view-process-translations') - {{__('Translations')}} - @endcan + @if (config('app.open_ai_process_translations')) + @can('view-process-translations') + {{__('Translations')}} + @endcan + @endif {{__('Notifications')}} @@ -198,79 +200,81 @@ {{-- Translations --}} - @can('view-process-translations') -