diff --git a/ProcessMaker/Http/Controllers/ProcessesCatalogueController.php b/ProcessMaker/Http/Controllers/ProcessesCatalogueController.php index 0db404d256..ad6ceac56b 100644 --- a/ProcessMaker/Http/Controllers/ProcessesCatalogueController.php +++ b/ProcessMaker/Http/Controllers/ProcessesCatalogueController.php @@ -6,6 +6,7 @@ use Illuminate\Support\Facades\Auth; use ProcessMaker\Events\ScreenBuilderStarting; use ProcessMaker\Helpers\MobileHelper; +use ProcessMaker\Http\Controllers\Api\UserConfigurationController; use ProcessMaker\Http\Controllers\Controller; use ProcessMaker\Managers\ScreenBuilderManager; use ProcessMaker\Models\Bookmark; @@ -46,7 +47,7 @@ public function index(Request $request, Process $process = null) return view('processes-catalogue.mobile', compact('title', 'process', 'currentUser', 'manager')); } - - return view('processes-catalogue.index', compact('process', 'currentUser', 'manager')); + $userConfiguration = (new UserConfigurationController())->index()['ui_configuration']; + return view('processes-catalogue.index', compact('process', 'currentUser', 'manager', 'userConfiguration')); } } diff --git a/ProcessMaker/Http/Controllers/RequestController.php b/ProcessMaker/Http/Controllers/RequestController.php index b4924debc7..8fa18e02d0 100644 --- a/ProcessMaker/Http/Controllers/RequestController.php +++ b/ProcessMaker/Http/Controllers/RequestController.php @@ -12,6 +12,7 @@ use ProcessMaker\Filters\SaveSession; use ProcessMaker\Helpers\DefaultColumns; use ProcessMaker\Helpers\MobileHelper; +use ProcessMaker\Http\Controllers\Api\UserConfigurationController; use ProcessMaker\Http\Controllers\Controller; use ProcessMaker\Managers\DataManager; use ProcessMaker\Managers\ScreenBuilderManager; @@ -193,6 +194,7 @@ public function show(ProcessRequest $request, Media $mediaItems) } UserResourceView::setViewed(Auth::user(), $request); + $userConfiguration = (new UserConfigurationController())->index(); return view('requests.show', compact( 'request', @@ -208,6 +210,7 @@ public function show(ProcessRequest $request, Media $mediaItems) 'isProcessManager', 'eligibleRollbackTask', 'errorTask', + 'userConfiguration', )); } diff --git a/ProcessMaker/Http/Controllers/TaskController.php b/ProcessMaker/Http/Controllers/TaskController.php index 2782da3e9e..115411e89f 100755 --- a/ProcessMaker/Http/Controllers/TaskController.php +++ b/ProcessMaker/Http/Controllers/TaskController.php @@ -13,6 +13,7 @@ use ProcessMaker\Helpers\DefaultColumns; use ProcessMaker\Helpers\MobileHelper; use ProcessMaker\Http\Controllers\Api\ProcessRequestController; +use ProcessMaker\Http\Controllers\Api\UserConfigurationController; use ProcessMaker\Jobs\MarkNotificationAsRead; use ProcessMaker\Managers\DataManager; use ProcessMaker\Managers\ScreenBuilderManager; @@ -140,6 +141,7 @@ public function edit(ProcessRequestToken $task, string $preview = '') 'timezone', 'datetime_format', ]); + $userConfiguration = (new UserConfigurationController())->index(); return view('tasks.edit', [ 'task' => $task, @@ -153,6 +155,7 @@ public function edit(ProcessRequestToken $task, string $preview = '') 'currentUser' => $currentUser, 'screenFields' => $screenFields, 'taskDraftsEnabled' => $taskDraftsEnabled, + 'userConfiguration' => $userConfiguration, ]); } } diff --git a/resources/js/processes-catalogue/components/ProcessesCatalogue.vue b/resources/js/processes-catalogue/components/ProcessesCatalogue.vue index 78c3afc6f2..6cf57ef2c6 100644 --- a/resources/js/processes-catalogue/components/ProcessesCatalogue.vue +++ b/resources/js/processes-catalogue/components/ProcessesCatalogue.vue @@ -65,7 +65,7 @@ export default { components: { MenuCatologue, CatalogueEmpty, Breadcrumbs, }, - props: ["currentUserId", "process", "currentUser"], + props: ["currentUserId", "process", "currentUser", "userConfig"], data() { return { showMenu: false, @@ -103,7 +103,9 @@ export default { categoryCount: 0, hideLaunchpad: true, currentWidth: 0, - mobileApp: window.ProcessMaker.mobileApp + mobileApp: window.ProcessMaker.mobileApp, + userConfiguration: this.userConfig, + urlConfiguration: "users/configuration", }; }, mounted() { @@ -118,6 +120,7 @@ export default { this.$root.$on('filter-categories', (filter) => { this.filterCategories(filter); }); + this.defineUserConfiguration(); }, watch: { category: { @@ -136,9 +139,26 @@ export default { } }, methods: { + defineUserConfiguration() { + this.showMenu = this.userConfiguration.launchpad.isMenuCollapse; + }, hideMenu() { this.showMenu = !this.showMenu; this.$root.$emit("sizeChanged", !this.showMenu); + this.updateUserConfiguration(); + }, + updateUserConfiguration() { + this.userConfiguration.launchpad.isMenuCollapse = this.showMenu; + ProcessMaker.apiClient + .put( + this.urlConfiguration, + { + ui_configuration: this.userConfiguration, + }, + ) + .catch((error) => { + console.error("Error", error); + }); }, /** * Add new page of categories diff --git a/resources/views/processes-catalogue/index.blade.php b/resources/views/processes-catalogue/index.blade.php index ea0e66fb3e..3486a04e98 100644 --- a/resources/views/processes-catalogue/index.blade.php +++ b/resources/views/processes-catalogue/index.blade.php @@ -18,6 +18,7 @@ :process="{{$process ?? 0}}" :current-user-id="{{ \Auth::user()->id }}" :current-user="{{ \Auth::user() }}" + :user-config="{{$userConfiguration ?? []}}" > diff --git a/resources/views/requests/show.blade.php b/resources/views/requests/show.blade.php index f85cafd54e..6f2e55fa89 100644 --- a/resources/views/requests/show.blade.php +++ b/resources/views/requests/show.blade.php @@ -520,6 +520,8 @@ class="btn btn-outline-info btn-block" showTree: false, showInfo: true, showMenu: true, + userConfiguration: @json($userConfiguration), + urlConfiguration:'users/configuration', }; }, computed: { @@ -649,9 +651,27 @@ classStatusCard() { }, }, methods: { + defineUserConfiguration() { + this.userConfiguration = JSON.parse(this.userConfiguration.ui_configuration); + this.showMenu = this.userConfiguration.requests.isMenuCollapse; + }, hideMenu() { this.showMenu = !this.showMenu; this.$root.$emit("sizeChanged", !this.showMenu); + this.updateUserConfiguration(); + }, + updateUserConfiguration() { + this.userConfiguration.requests.isMenuCollapse = this.showMenu; + ProcessMaker.apiClient + .put( + this.urlConfiguration, + { + ui_configuration: this.userConfiguration, + } + ) + .catch((error) => { + console.error("Error", error); + }); }, switchTab(tab) { this.activeTab = tab; @@ -850,6 +870,7 @@ classStatusCard() { this.listenRequestUpdates(); this.cleanScreenButtons(); this.editJsonData(); + this.defineUserConfiguration(); }, }); diff --git a/resources/views/tasks/edit.blade.php b/resources/views/tasks/edit.blade.php index b22ed6d8de..4d54df0dbd 100644 --- a/resources/views/tasks/edit.blade.php +++ b/resources/views/tasks/edit.blade.php @@ -436,6 +436,8 @@ class="multiselect__tag-icon"> userHasInteracted: false, caseTitle: "", showMenu: true, + userConfiguration: @json($userConfiguration), + urlConfiguration:'users/configuration', }, watch: { task: { @@ -526,9 +528,27 @@ class="multiselect__tag-icon"> }, }, methods: { + defineUserConfiguration() { + this.userConfiguration = JSON.parse(this.userConfiguration.ui_configuration); + this.showMenu = this.userConfiguration.tasks.isMenuCollapse; + }, hideMenu() { this.showMenu = !this.showMenu; this.$root.$emit("sizeChanged", !this.showMenu); + this.updateUserConfiguration(); + }, + updateUserConfiguration() { + this.userConfiguration.tasks.isMenuCollapse = this.showMenu; + ProcessMaker.apiClient + .put( + this.urlConfiguration, + { + ui_configuration: this.userConfiguration, + } + ) + .catch((error) => { + console.error("Error", error); + }); }, createRule() { window.location.href = '/tasks/rules/new?' + @@ -777,6 +797,7 @@ class="multiselect__tag-icon"> interactionListener.addEventListener('keydown', (event) => { this.sendUserHasInteracted(); }); + this.defineUserConfiguration(); } }); window.ProcessMaker.breadcrumbs.taskTitle = @json($task->element_name);