]> _ Git - fluidbook-toolbox.git/commitdiff
wait #6712 @0.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 5 Feb 2024 15:11:26 +0000 (16:11 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Mon, 5 Feb 2024 15:11:26 +0000 (16:11 +0100)
app/Http/Controllers/Admin/Operations/Tools/FluidbookReplicate.php [new file with mode: 0644]
app/Http/Controllers/Admin/ToolsController.php
resources/views/tools/sidebar.blade.php
resources/views/vendor/backpack/crud/buttons/fluidbook_publication/clone.blade.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 (file)
index 0000000..a9dc499
--- /dev/null
@@ -0,0 +1,62 @@
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\Tools;
+
+use App\Fields\FluidbookID;
+use App\Fluidbook\Link\LinksData;
+use App\Models\FluidbookPublication;
+use Cubist\Backpack\Magic\Fields\Checkbox;
+use Cubist\Backpack\Magic\Fields\Integer;
+use Cubist\Backpack\Magic\Fields\SelectFromArray;
+use Cubist\Backpack\Magic\Form;
+use Prologue\Alerts\Facades\Alert;
+
+// __('!! Outils')
+trait FluidbookReplicate
+{
+
+
+    public function fluidbookreplicate()
+    {
+        $form = new Form(backpack_url('tools/dofluidbookreplicate'));
+        $form->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'));
+    }
+
+
+}
index a5ff5b4b22eab9cbe8365b0cea2ed3bfba2c66e2..1cc0f9175362c2d2e963cb079de6305061eb1e9f 100644 (file)
@@ -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 = '')
     {
index c1c08adf7d8972d8185f4561904aa6491d15903a..d802da3e51dcae5078425bbabe9418f171522c60 100644 (file)
@@ -27,6 +27,9 @@
     <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/fluidbookcopylinks') }}'><i
                 class='nav-icon las la-link'></i>
             <span>{{__('Copier les liens ou assets d\'un fluidbook')}}</span></a></li>
+    <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/fluidbookreplicate') }}'><i
+                class='nav-icon las la-clone'></i>
+            <span>{{__('Dupliquer un fluidbook')}}</span></a></li>
     <li class='nav-item'><a class='nav-link' href='{{ backpack_url('tools/fluidbookbranchcreate') }}'><i
                 class='nav-icon la la-git'></i>
             <span>{{__('Créer une branche du player fluidbook')}}</span></a></li>
index 3c1336ebab04a20904e8f382793e45000fe5ef45..3b153d72d76c948bc1d30b556def6899ed823fac 100644 (file)
@@ -11,6 +11,7 @@
             [
                 'label'=>__('Uniquement les paramètres et assets'),
                 ],
+                'multiple'=>['label'=>__('Dupliquer plusieurs fois'),'url'=>url('tools/fluidbookreplicate?id='.$entry->id)],
         ];
 
 @endphp