From bf2b6cabb487c6f36cd34c3a3c2f88d0cb6e62b6 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Mon, 5 Feb 2024 16:11:26 +0100 Subject: [PATCH] wait #6712 @0.5 --- .../Operations/Tools/FluidbookReplicate.php | 62 +++++++++++++++++++ .../Controllers/Admin/ToolsController.php | 4 +- resources/views/tools/sidebar.blade.php | 3 + .../fluidbook_publication/clone.blade.php | 1 + 4 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 app/Http/Controllers/Admin/Operations/Tools/FluidbookReplicate.php diff --git a/app/Http/Controllers/Admin/Operations/Tools/FluidbookReplicate.php b/app/Http/Controllers/Admin/Operations/Tools/FluidbookReplicate.php new file mode 100644 index 000000000..a9dc49950 --- /dev/null +++ b/app/Http/Controllers/Admin/Operations/Tools/FluidbookReplicate.php @@ -0,0 +1,62 @@ +setTitle(__('Dupliquer un Fluidbook')); + $form->setSubmitLabel(__('Dupliquer')); + $form->setSubmitIcon('la-clone'); + $form->addField('from', FluidbookID::class, __('Publication à dupliquer'), ['default' => request('id')]); + $form->addField('mode', SelectFromArray::class, __('Mode de duplication'), ['allows_null' => false, 'default' => 'settings', 'options' => [ + 'settings' => __('Uniquement les paramètres et assets'), + 'all' => __('Toute la publication') + ] + ]); + $form->addField('times', Integer::class, __('Nombre de duplications'), ['default' => 1]); + + return view('tools.form', ['form' => $form]); + } + + public function dofluidbookreplicate() + { + + $id = request('from'); + if (!$id) { + Alert::error(__('Vous devez définir le fluidbook à dupliquer'))->flash(); + return redirect(url('tools/fluidbookreplicate')); + } + + if (!FluidbookPublication::hasPermission($id, 'write')) { + abort(401); + } + + /** @var FluidbookPublication $instance */ + $instance = FluidbookPublication::withoutGlobalScopes()->find(request('from')); + $times = max(1, request('times')); + $f = request('mode', 'settings') === 'settings' ? 'replicateSettings' : 'replicateFull'; + for ($i = 0; $i < $times; $i++) { + $instance->$f(); + } + + Alert::success(__('Duplication effectuée :nb fois', ['nb' => $times]))->flash(); + return redirect(url('fluidbook-publication')); + } + + +} diff --git a/app/Http/Controllers/Admin/ToolsController.php b/app/Http/Controllers/Admin/ToolsController.php index a5ff5b4b2..1cc0f9175 100644 --- a/app/Http/Controllers/Admin/ToolsController.php +++ b/app/Http/Controllers/Admin/ToolsController.php @@ -12,6 +12,7 @@ use App\Http\Controllers\Admin\Operations\Tools\FluidbookBranchCreate; use App\Http\Controllers\Admin\Operations\Tools\FluidbookBranchRemove; use App\Http\Controllers\Admin\Operations\Tools\FluidbookCopyLinks; use App\Http\Controllers\Admin\Operations\Tools\FluidbookReferencesURL; +use App\Http\Controllers\Admin\Operations\Tools\FluidbookReplicate; use App\Http\Controllers\Admin\Operations\Tools\GitReposCreate; use App\Http\Controllers\Admin\Operations\Tools\ImagesResizer; use App\Http\Controllers\Admin\Operations\Tools\JSON2Excel; @@ -34,8 +35,7 @@ class ToolsController extends Controller use FluidbookCopyLinks; use SVGCleaner; use FluidbookReferencesURL; - - + use FluidbookReplicate; protected function index($tool, $args = '') { diff --git a/resources/views/tools/sidebar.blade.php b/resources/views/tools/sidebar.blade.php index c1c08adf7..d802da3e5 100644 --- a/resources/views/tools/sidebar.blade.php +++ b/resources/views/tools/sidebar.blade.php @@ -27,6 +27,9 @@ + diff --git a/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/clone.blade.php b/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/clone.blade.php index 3c1336eba..3b153d72d 100644 --- a/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/clone.blade.php +++ b/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/clone.blade.php @@ -11,6 +11,7 @@ [ 'label'=>__('Uniquement les paramètres et assets'), ], + 'multiple'=>['label'=>__('Dupliquer plusieurs fois'),'url'=>url('tools/fluidbookreplicate?id='.$entry->id)], ]; @endphp -- 2.39.5