From b95c3d072b084e935b166cfc6782acc091967da5 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Mon, 20 Nov 2023 17:37:01 +0100 Subject: [PATCH] wip #6487 @2 --- .../Admin/Operations/ChangestatusOperation.php | 10 +++++----- .../FluidbookCollection/DownloadOperation.php | 10 +++++++++- .../FluidbookPublication/DownloadOperation.php | 2 +- app/Models/Base/ToolboxStatusModel.php | 5 +++++ app/Models/FluidbookCollection.php | 12 ++++++++++++ .../buttons/fluidbook_collection/download.blade.php | 10 ++++++++++ .../buttons/fluidbook_publication/download.blade.php | 2 +- 7 files changed, 43 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/Admin/Operations/ChangestatusOperation.php b/app/Http/Controllers/Admin/Operations/ChangestatusOperation.php index 074b9f62a..5b1ddcd8d 100644 --- a/app/Http/Controllers/Admin/Operations/ChangestatusOperation.php +++ b/app/Http/Controllers/Admin/Operations/ChangestatusOperation.php @@ -24,13 +24,13 @@ trait ChangestatusOperation if (!$class::hasPermission($id)) { abort(401); } - $instant = $class::find($id); - if (!$instant || !$instant->allowsEdit()) { + $instance = $class::find($id); + if (!$instance || !$instance->allowsEdit()) { abort(404); } - if ($instant->status != $newStatus) { - $instant->status = $newStatus; - $instant->save(); + if ($instance->status != $newStatus) { + $instance->setStatus($newStatus); + $instance->save(); } Alert::add('success', __('Status modifié'))->flash(); return back(); diff --git a/app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php index 18f9fc820..21f4cfa5e 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php @@ -26,7 +26,15 @@ trait DownloadOperation protected function download($id, $action) { - FluidbookCollectionDownload::dispatch(FluidbookCollection::find($id), $action, backpack_user())->onQueue('download'); + $collection = FluidbookCollection::withoutGlobalScopes()->find($id); + FluidbookCollectionDownload::dispatch($collection, $action, backpack_user())->onQueue('download'); + + // Mark the fluidbook as downloaded when status is ready and user is not an admin + if ($collection->status == 1 && !can('fluidbook-publication:admin')) { + $collection->setStatus(2); + $collection->save(); + } + Alert::add('success', __('La compilation a été placée en file d\'attente. Vous recevrez un email lorsqu\'elle sera terminée.'))->flash(); return redirect(backpack_url('fluidbook-collection')); } diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php index ef13c4f5e..43ddc7da3 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php @@ -103,7 +103,7 @@ trait DownloadOperation // Mark the fluidbook as downloaded when status is ready and user is not an admin if ($fluidbook->status == 1 && !can('fluidbook-publication:admin')) { - $fluidbook->status = 2; + $fluidbook->setStatus( 2); $fluidbook->save(); } diff --git a/app/Models/Base/ToolboxStatusModel.php b/app/Models/Base/ToolboxStatusModel.php index bec1af379..69f1786a0 100644 --- a/app/Models/Base/ToolboxStatusModel.php +++ b/app/Models/Base/ToolboxStatusModel.php @@ -24,6 +24,11 @@ class ToolboxStatusModel extends ToolboxModel } } + public function setStatus($newStatus) + { + $this->status = $newStatus; + } + public function allowsDelete() { if (!parent::allowsDelete()) { diff --git a/app/Models/FluidbookCollection.php b/app/Models/FluidbookCollection.php index 918b3d9b6..2194cc2b7 100644 --- a/app/Models/FluidbookCollection.php +++ b/app/Models/FluidbookCollection.php @@ -113,4 +113,16 @@ class FluidbookCollection extends ToolboxStatusModel } } } + + public function setStatus($newStatus) + { + parent::setStatus($newStatus); + + + foreach ($this->getPageData()->publications as $publication) { + $fb = FluidbookPublication::withoutGlobalScopes()->find($publication['fluidbook']); + $fb->setStatus($newStatus); + $fb->save(); + } + } } diff --git a/resources/views/vendor/backpack/crud/buttons/fluidbook_collection/download.blade.php b/resources/views/vendor/backpack/crud/buttons/fluidbook_collection/download.blade.php index cca55965e..c52336915 100644 --- a/resources/views/vendor/backpack/crud/buttons/fluidbook_collection/download.blade.php +++ b/resources/views/vendor/backpack/crud/buttons/fluidbook_collection/download.blade.php @@ -22,10 +22,20 @@ } } } + + $confirm=[ + 'title'=>'', + 'text'=>__('En téléchargeant la collection, vous confirmez que vous l\'avez testée et validée. Elle vous sera donc facturée selon les conditions stipulées dans votre contrat.'), + 'confirm'=>__('Confirmer'), + 'cancel'=>__('Annuler') + ]; @endphp status==1 && !can('fluidbook-collection:admin')) + data-context-confirm="{{json_encode($confirm)}}" + @endif data-context-actions="{{json_encode($actions)}}" data-context-route="{{$crud->route}}/$id/download/$action" data-context-id="{{$entry->getKey()}}" diff --git a/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/download.blade.php b/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/download.blade.php index e56bab66a..acb9e693d 100644 --- a/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/download.blade.php +++ b/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/download.blade.php @@ -67,7 +67,7 @@ $confirm=[ 'title'=>'', - 'text'=>__('En téléchargeant la publication, vous confirmez que vous l\'avez testé et validé. Elle vous sera donc facturée selon les conditions stipulées dans votre contrat.'), + 'text'=>__('En téléchargeant la publication, vous confirmez que vous l\'avez testée et validée. Elle vous sera donc facturée selon les conditions stipulées dans votre contrat.'), 'confirm'=>__('Confirmer'), 'cancel'=>__('Annuler') ]; -- 2.39.5