diff --git a/composer.json b/composer.json
index d2fcf4da59..3440eae570 100644
--- a/composer.json
+++ b/composer.json
@@ -139,7 +139,6 @@
"package-zj-sonymusic": "dev-fall",
"pm-platform": "dev-fall",
"package-zj-nas": "dev-fall",
- "package-plg": "0.16.11",
"package-zj-birmingham": "dev-main",
"package-tce": "dev-master",
"package-case-overview": "dev-main",
@@ -169,6 +168,7 @@
"package-files": "1.23.6",
"package-googleplaces": "1.12.1",
"package-photo-video": "1.6.3",
+ "package-plg": "1.7.0",
"package-pm-blocks": "1.12.11",
"package-process-documenter": "1.12.1",
"package-process-optimization": "1.10.2",
diff --git a/helpers.php b/helpers.php
index 1611f418f4..cfcc0bc6cf 100644
--- a/helpers.php
+++ b/helpers.php
@@ -90,6 +90,32 @@ function color($key)
}
}
+if (!function_exists('color_rgb')) {
+ /**
+ * Returns the comma-separated RGB values for a theme color.
+ *
+ * @param string $key
+ *
+ * @return string
+ */
+ function color_rgb($key)
+ {
+ $hex = ltrim(color($key), '#');
+
+ if (strlen($hex) === 3) {
+ $hex = $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2];
+ }
+
+ if (strlen($hex) !== 6 || !ctype_xdigit($hex)) {
+ return '39, 115, 243';
+ }
+
+ return hexdec(substr($hex, 0, 2))
+ . ', ' . hexdec(substr($hex, 2, 2))
+ . ', ' . hexdec(substr($hex, 4, 2));
+ }
+}
+
if (!function_exists('sidebar_class')) {
/**
* Returns the class for the sidebar based on admin settings.
@@ -374,6 +400,7 @@ function feelExpression(string $expression, array $data)
$formalExp = new FormalExpression();
$formalExp->setLanguage('FEEL');
$formalExp->setBody($expression);
+
return $formalExp($data);
}
}
diff --git a/resources/img/decisions-bg-pattern.svg b/resources/img/decisions-bg-pattern.svg
new file mode 100644
index 0000000000..9f43dcce6e
--- /dev/null
+++ b/resources/img/decisions-bg-pattern.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/resources/img/gradient-wave-left.svg b/resources/img/gradient-wave-left.svg
deleted file mode 100644
index 118094a8a4..0000000000
--- a/resources/img/gradient-wave-left.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/resources/img/gradient-wave-right.svg b/resources/img/gradient-wave-right.svg
deleted file mode 100644
index 13b9834b60..0000000000
--- a/resources/img/gradient-wave-right.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/resources/img/processmaker-about.svg b/resources/img/processmaker-about.svg
new file mode 100644
index 0000000000..f50338d878
--- /dev/null
+++ b/resources/img/processmaker-about.svg
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/img/processmaker-icon.svg b/resources/img/processmaker-icon.svg
index 5458260a80..944136ba27 100644
--- a/resources/img/processmaker-icon.svg
+++ b/resources/img/processmaker-icon.svg
@@ -1,19 +1,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/img/processmaker-login.svg b/resources/img/processmaker-login.svg
index 3d4a34cf8d..a2f5b692ef 100644
--- a/resources/img/processmaker-login.svg
+++ b/resources/img/processmaker-login.svg
@@ -1,30 +1,19 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/img/processmaker-logo.svg b/resources/img/processmaker-logo.svg
index 744ec505e4..91f712adf3 100644
--- a/resources/img/processmaker-logo.svg
+++ b/resources/img/processmaker-logo.svg
@@ -1,28 +1,11 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/resources/img/processmaker_icon.png b/resources/img/processmaker_icon.png
old mode 100755
new mode 100644
index 4342e6c362..9e421bb9be
Binary files a/resources/img/processmaker_icon.png and b/resources/img/processmaker_icon.png differ
diff --git a/resources/img/processmaker_login.png b/resources/img/processmaker_login.png
index 8c9314cf12..40897b6428 100644
Binary files a/resources/img/processmaker_login.png and b/resources/img/processmaker_login.png differ
diff --git a/resources/img/processmaker_logo.png b/resources/img/processmaker_logo.png
index e121e235f5..52077dd90a 100644
Binary files a/resources/img/processmaker_logo.png and b/resources/img/processmaker_logo.png differ
diff --git a/resources/lang/en.json b/resources/lang/en.json
index c9aec9738c..f5747fc4d6 100644
--- a/resources/lang/en.json
+++ b/resources/lang/en.json
@@ -269,6 +269,7 @@
"Available Processes": "Available Processes",
"Avatar": "Avatar",
"Back to Login": "Back to Login",
+ "Back To Login": "Back To Login",
"Back": "Back",
"Background Color": "Background Color",
"Base DN": "Base DN",
@@ -1533,6 +1534,7 @@
"PARTICIPANTS": "PARTICIPANTS",
"Participants": "Participants",
"participants": "participants",
+ "Password Assistance": "Password Assistance",
"Password expiration": "Password expiration",
"Password Grant Client ID": "Password Grant Client ID",
"Password Grant Secret": "Password Grant Secret",
@@ -1576,6 +1578,7 @@
"Please choose the tasks in your inbox that this new rule should apply to. Use the column filters to achieve this.": "Please choose the tasks in your inbox that this new rule should apply to. Use the column filters to achieve this.",
"Please contact your administrator to get started.": "Please contact your administrator to get started.",
"Please enter Tab Name": "Please enter Tab Name",
+ "Please enter your email address and we'll send you a reset link.": "Please enter your email address and we'll send you a reset link.",
"Please provide a valid URL (e.g., https://example.com ) to specify the allowed origin(s) permitted to embed ProcessMaker.": "Please provide a valid URL (e.g., https://example.com ) to specify the allowed origin(s) permitted to embed ProcessMaker.",
"Please log in to continue your work on this page.": "Please log in to continue your work on this page.",
"Please select a Saved Search": "Please select a Saved Search",
diff --git a/resources/sass/sidebar/sidebar.scss b/resources/sass/sidebar/sidebar.scss
index 079cbfdb00..31d4cfa646 100644
--- a/resources/sass/sidebar/sidebar.scss
+++ b/resources/sass/sidebar/sidebar.scss
@@ -10,7 +10,7 @@
}
&.sidebar-default {
- background-color: #20242A;
+ background-color: #002D59;
}
#custom_icon{
diff --git a/resources/views/about/index.blade.php b/resources/views/about/index.blade.php
index e37ab1c1ec..2552043944 100644
--- a/resources/views/about/index.blade.php
+++ b/resources/views/about/index.blade.php
@@ -18,7 +18,7 @@
-
+
{{ __('ProcessMaker Platform') }} {{ $versionTitle }}
diff --git a/resources/views/auth/layouts/auth.blade.php b/resources/views/auth/layouts/auth.blade.php
new file mode 100644
index 0000000000..c7d88f958b
--- /dev/null
+++ b/resources/views/auth/layouts/auth.blade.php
@@ -0,0 +1,77 @@
+
+
+
+
+
+
+
+
+
+
+
@yield('title') - {{ __('ProcessMaker') }}
+
+ @include('auth.partials.login-critical-styles')
+ @include('auth.partials.auth-styles')
+
+ @if (hasPackage('package-accessibility'))
+ @include('package-accessibility::userway')
+ @endif
+ @yield('css')
+
+
+
+ @hasSection('skip-language-selector')
+ @else
+ @include('auth.partials.language-selector')
+ @endif
+
+
+
+
+
+
+
+ @component('components.logo')
+ @endcomponent
+
+ @yield('content')
+
+
+ @php
+ $isMobile = (
+ isset($_SERVER['HTTP_USER_AGENT'])
+ && \ProcessMaker\Helpers\MobileHelper::isMobile($_SERVER['HTTP_USER_AGENT'])
+ ) ? true : false;
+ @endphp
+ @if (!$isMobile)
+
+
+
{{ __("INTELLIGENT BUSINESS ORCHESTRATION") }}
+
+ {{ __("Built to Master") }}
+ {{ __("Complexity") }}
+
+
+ {{ __("Orchestrate workflows, systems, and AI at a moment’s notice. Turn constant change into your greatest competitive advantage by giving your team the freedom to build, test, and iterate in real time.") }}
+
+
+
+ @endif
+
+
+ @php
+ $loginFooterSetting = \ProcessMaker\Models\Setting::byKey('login-footer');
+ @endphp
+ @if ($loginFooterSetting)
+
+ @endif
+
+
+ @yield('js')
+ @stack('scripts')
+ @hasSection('skip-auth-language-scripts')
+ @else
+ @include('auth.partials.auth-language-scripts')
+ @endif
+
+
diff --git a/resources/views/auth/newLogin.blade.php b/resources/views/auth/newLogin.blade.php
index ba45536b0c..c42ff4f81a 100644
--- a/resources/views/auth/newLogin.blade.php
+++ b/resources/views/auth/newLogin.blade.php
@@ -10,6 +10,9 @@
{{ __('Login') }} - {{ __('ProcessMaker') }}
+ @include('auth.partials.login-critical-styles')
+ @include('auth.partials.auth-styles')
+ @include('auth.partials.login-extra-styles')
@if (hasPackage('package-accessibility'))
@include('package-accessibility::userway')
@@ -18,41 +21,15 @@
-
-
+ @include('auth.partials.language-selector')
-
-
-
-
-
-
- @php
- $isMobile = (
- isset($_SERVER['HTTP_USER_AGENT'])
- && \ProcessMaker\Helpers\MobileHelper::isMobile($_SERVER['HTTP_USER_AGENT'])
- ) ? true : false;
- @endphp
- @if (!$isMobile)
-
-
{{ __("Business process automation") }}
-
{{ __("made") }} {{ __("efficient") }}
-
- {{ __("All the tools to empower anyone to quickly automate processes, from custom forms to unique enterprise workflows and complex business rules.") }}
-
-
- @endif
-
-
-
-
+
+
+
+
@component('components.logo')
@endcomponent
@@ -79,7 +56,13 @@ class="d-flex justify-content-end position-absolute language-button-container">
-
-
-
-
- {{ __('Remember me') }}
-
-
+
- {{ __('Sign In') }}
+ {{ __('Login') }}
@endif
- @foreach ($addons as $addon)
- @include($addon->view, $addon->data)
- @endforeach
+ @if (count($addons))
+
+ @foreach ($addons as $addon)
+ @include($addon->view, $addon->data)
+ @endforeach
+
+ @endif
@if(isset($footer))
{!! $footer !!}
@endif
+ @php
+ $isMobile = (
+ isset($_SERVER['HTTP_USER_AGENT'])
+ && \ProcessMaker\Helpers\MobileHelper::isMobile($_SERVER['HTTP_USER_AGENT'])
+ ) ? true : false;
+ @endphp
+ @if (!$isMobile)
+
+
+
{{ __("INTELLIGENT BUSINESS ORCHESTRATION") }}
+
+ {{ __("Built to Master") }}
+ {{ __("Complexity") }}
+
+
+ {{ __("Orchestrate workflows, systems, and AI at a moment’s notice. Turn constant change into your greatest competitive advantage by giving your team the freedom to build, test, and iterate in real time.") }}
+
+
+
+ @endif
@php
@@ -136,182 +150,29 @@ class="d-flex justify-content-end position-absolute language-button-container">
const togglePassword = document.querySelector('#togglePassword');
const password = document.querySelector('#password');
+ const capsLockWarning = document.querySelector('#capsLockWarning');
togglePassword.addEventListener('click', function (e) {
const type = password.getAttribute('type') === 'password' ? 'text' : 'password';
password.setAttribute('type', type);
this.classList.toggle('fa-eye-slash');
-});
-
-
-
-
-@foreach(GlobalScripts::getScripts() as $script)
- @if (strpos($script, '/vendor/processmaker/packages/package-dynamic-ui/js/global.js') !== 0)
-
- @endif
-@endforeach
-
-
-
+
+@include('auth.partials.auth-language-scripts')
diff --git a/resources/views/auth/partials/auth-language-scripts-minimal.blade.php b/resources/views/auth/partials/auth-language-scripts-minimal.blade.php
new file mode 100644
index 0000000000..ffd2e23558
--- /dev/null
+++ b/resources/views/auth/partials/auth-language-scripts-minimal.blade.php
@@ -0,0 +1,10 @@
+@foreach(GlobalScripts::getScripts() as $script)
+ @if (strpos($script, '/vendor/processmaker/packages/package-dynamic-ui/js/global.js') !== 0)
+
+ @endif
+@endforeach
+
+
diff --git a/resources/views/auth/partials/auth-language-scripts.blade.php b/resources/views/auth/partials/auth-language-scripts.blade.php
new file mode 100644
index 0000000000..691bb566d0
--- /dev/null
+++ b/resources/views/auth/partials/auth-language-scripts.blade.php
@@ -0,0 +1,4 @@
+
+
+
+@include('auth.partials.auth-language-scripts-minimal')
diff --git a/resources/views/auth/partials/auth-styles.blade.php b/resources/views/auth/partials/auth-styles.blade.php
new file mode 100644
index 0000000000..c3da7e4abf
--- /dev/null
+++ b/resources/views/auth/partials/auth-styles.blade.php
@@ -0,0 +1,375 @@
+
diff --git a/resources/views/auth/partials/language-selector.blade.php b/resources/views/auth/partials/language-selector.blade.php
new file mode 100644
index 0000000000..f41d2bc710
--- /dev/null
+++ b/resources/views/auth/partials/language-selector.blade.php
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/resources/views/auth/partials/login-critical-styles.blade.php b/resources/views/auth/partials/login-critical-styles.blade.php
new file mode 100644
index 0000000000..414cf61815
--- /dev/null
+++ b/resources/views/auth/partials/login-critical-styles.blade.php
@@ -0,0 +1,11 @@
+
diff --git a/resources/views/auth/partials/login-extra-styles.blade.php b/resources/views/auth/partials/login-extra-styles.blade.php
new file mode 100644
index 0000000000..a4ced842e2
--- /dev/null
+++ b/resources/views/auth/partials/login-extra-styles.blade.php
@@ -0,0 +1,107 @@
+
diff --git a/resources/views/auth/passwords/change.blade.php b/resources/views/auth/passwords/change.blade.php
index 7216d85de6..1f36c391d6 100644
--- a/resources/views/auth/passwords/change.blade.php
+++ b/resources/views/auth/passwords/change.blade.php
@@ -1,67 +1,64 @@
-@extends('layouts.minimal')
+@extends('auth.layouts.auth')
+
+@section('skip-auth-language-scripts', 'skip')
+
@section('title')
{{ __('Change Password') }}
@endsection
-@section('content')
-
-
-
- @php
- $loginLogo = \ProcessMaker\Models\Setting::getLogin();
- $isDefault = \ProcessMaker\Models\Setting::loginIsDefault();
- $class = $isDefault ? 'login-logo-default' : 'login-logo-custom';
- @endphp
-
-
-
-
+@section('content')
+
@endsection
+@section('css')
+
+@endsection
+
@section('js')
@@ -71,82 +68,66 @@
-@endsection
-@section('css')
-
+ ProcessMaker.apiClient.put('password/change', this.formData)
+ .then(response => {
+ if (response.status === 200) {
+ window.location.href = '/';
+ }
+ })
+ .catch(error => {
+ this.errors = error.response.data.errors;
+ });
+ },
+ }
+ });
+
+@include('auth.partials.auth-language-scripts-minimal')
@endsection
diff --git a/resources/views/auth/passwords/email.blade.php b/resources/views/auth/passwords/email.blade.php
index 5467fdc25b..255675788c 100644
--- a/resources/views/auth/passwords/email.blade.php
+++ b/resources/views/auth/passwords/email.blade.php
@@ -1,72 +1,44 @@
-@extends('layouts.minimal')
+@extends('auth.layouts.auth')
@section('title')
-{{__('Forgot Your Password?')}}
+{{ __('Password Assistance') }}
@endsection
@section('content')
+
-
-
- @component('components.logo')
- @endcomponent
-
{{__('Forgot Your Password?')}}
-
{{__("Enter your email address and we'll send you a reset link.")}}
+