From d830939a7733493fc3a568698c17e522f7597783 Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 8 Mar 2024 14:32:50 +0100 Subject: [PATCH 1/3] move form to another workspace --- app/Http/Controllers/Forms/FormController.php | 20 ++++ .../forms/components/FormWorkspaceModal.vue | 103 ++++++++++++++++++ .../components/pages/forms/show/ExtraMenu.vue | 15 +++ routes/api.php | 1 + 4 files changed, 139 insertions(+) create mode 100644 client/components/open/forms/components/FormWorkspaceModal.vue diff --git a/app/Http/Controllers/Forms/FormController.php b/app/Http/Controllers/Forms/FormController.php index 8b29d6e0b..727fd2bae 100644 --- a/app/Http/Controllers/Forms/FormController.php +++ b/app/Http/Controllers/Forms/FormController.php @@ -218,4 +218,24 @@ public function viewFile($id, $fileName) return redirect()->to(Storage::temporaryUrl($path, now()->addMinutes(5))); } + + /** + * Updates a form's workspace + */ + public function updateWorkspace($id, $workspace_id) + { + $form = Form::findOrFail($id); + $workspace = Workspace::findOrFail($workspace_id); + + $this->authorize('update', $form); + $this->authorize('view', $workspace); + + $form->workspace_id = $workspace_id; + $form->creator_id = auth()->user()->id; + $form->save(); + + return $this->success([ + 'message' => 'Form workspace updated successfully.', + ]); + } } diff --git a/client/components/open/forms/components/FormWorkspaceModal.vue b/client/components/open/forms/components/FormWorkspaceModal.vue new file mode 100644 index 000000000..36e514db2 --- /dev/null +++ b/client/components/open/forms/components/FormWorkspaceModal.vue @@ -0,0 +1,103 @@ + + + \ No newline at end of file diff --git a/client/components/pages/forms/show/ExtraMenu.vue b/client/components/pages/forms/show/ExtraMenu.vue index f6aca7fc5..9e6b10c38 100644 --- a/client/components/pages/forms/show/ExtraMenu.vue +++ b/client/components/pages/forms/show/ExtraMenu.vue @@ -107,6 +107,17 @@ Create Template + + + + + + + Change workspace + + + @@ -159,6 +172,7 @@ import { ref, defineProps, computed } from 'vue' import Dropdown from '~/components/global/Dropdown.vue' import FormTemplateModal from '../../../open/forms/components/templates/FormTemplateModal.vue' +import FormWorkspaceModal from '../../../open/forms/components/FormWorkspaceModal.vue' const { copy } = useClipboard() const router = useRouter() @@ -177,6 +191,7 @@ let loadingDuplicate = ref(false) let loadingDelete = ref(false) let showDeleteFormModal = ref(false) let showFormTemplateModal = ref(false) +let showFormWorkspaceModal = ref(false) const copyLink = () => { copy(props.form.share_url) diff --git a/routes/api.php b/routes/api.php index d084d040e..ed1300ab4 100644 --- a/routes/api.php +++ b/routes/api.php @@ -90,6 +90,7 @@ Route::prefix('forms')->name('forms.')->group(function () { Route::post('/', [FormController::class, 'store'])->name('store'); + Route::post('/{id}/workspace/{workspace_id}', [FormController::class, 'updateWorkspace'])->name('workspace.update'); Route::put('/{id}', [FormController::class, 'update'])->name('update'); Route::delete('/{id}', [FormController::class, 'destroy'])->name('destroy'); From a6b185b7cf65573637d0eb201708699ba845a4ad Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 8 Mar 2024 14:39:47 +0100 Subject: [PATCH 2/3] style: apply lint --- app/Http/Controllers/Forms/FormController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Forms/FormController.php b/app/Http/Controllers/Forms/FormController.php index 727fd2bae..9c268c5fc 100644 --- a/app/Http/Controllers/Forms/FormController.php +++ b/app/Http/Controllers/Forms/FormController.php @@ -233,7 +233,7 @@ public function updateWorkspace($id, $workspace_id) $form->workspace_id = $workspace_id; $form->creator_id = auth()->user()->id; $form->save(); - + return $this->success([ 'message' => 'Form workspace updated successfully.', ]); From 356ad4738799084479e835a55f6a2246b58ddf5b Mon Sep 17 00:00:00 2001 From: Frank Date: Fri, 8 Mar 2024 16:27:49 +0100 Subject: [PATCH 3/3] fix typo error --- client/components/open/forms/components/FormWorkspaceModal.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/components/open/forms/components/FormWorkspaceModal.vue b/client/components/open/forms/components/FormWorkspaceModal.vue index 36e514db2..d4528530c 100644 --- a/client/components/open/forms/components/FormWorkspaceModal.vue +++ b/client/components/open/forms/components/FormWorkspaceModal.vue @@ -87,7 +87,7 @@ const onSubmit = () => { } formsStore.loadAll(selectedWorkspace.value) }).catch((error) => { - useAlert().error(err?.data?.message ?? 'Something went wrong, please try again!') + useAlert().error(error?.data?.message ?? 'Something went wrong, please try again!') loading.value = false; }) }