]> _ Git - fluidbook-toolbox.git/commitdiff
wip #6091 @2
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 29 Jun 2023 16:08:53 +0000 (18:08 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 29 Jun 2023 16:08:53 +0000 (18:08 +0200)
app/Console/Commands/WorkshopMigration.php
app/Http/Controllers/Admin/Operations/FluidbookPublication/UpgradeOperation.php [new file with mode: 0644]
app/Models/FluidbookPublication.php
public/packages/fluidbook/toolbox/js/bundle.js
resources/views/vendor/backpack/crud/buttons/fluidbook_publication/edit.blade.php
resources/views/vendor/backpack/crud/buttons/fluidbook_publication/upgrade.blade.php [new file with mode: 0644]

index f8f636a8a241b7361835be94965c934699a2f3c4..02204b35ee1a002e545086297aabbaa5f8f99d06 100644 (file)
@@ -24,7 +24,7 @@ class WorkshopMigration extends CubistCommand
     protected $signature = 'ws:migrate {--publications=v2} {--documents=missing} {--quick}';
     protected $description = 'Migrate data from Workshop V2';
     protected $_wsRanks = [];
-    protected $_oldDB = 'extranet_clean';
+    const OLD_DB = 'extranet_clean';
     protected $_oldRoot = '/home/extranet/www/fluidbook/';
     protected static $_admin = 5;
 
@@ -84,11 +84,11 @@ class WorkshopMigration extends CubistCommand
 
         PHP::neverStop();
 
-        $q = DB::table($this->_oldDB . '.documents')->orderBy('document_id', 'desc');
+        $q = DB::table(self::OLD_DB . '.documents')->orderBy('document_id', 'desc');
 
         if ($this->option('documents') === 'missing') {
             $maxID = FluidbookDocument::withoutGlobalScopes()->where('id', '<', self::WS3_DOC_ID)->orderBy('id', 'DESC')->first()->id;
-            $q = DB::table($this->_oldDB . '.documents')->where('document_id', '>', $maxID)->orderBy('document_id', 'desc');
+            $q = DB::table(self::OLD_DB . '.documents')->where('document_id', '>', $maxID)->orderBy('document_id', 'desc');
 
         } else if ($this->option('documents') === 'v2') {
             DB::update('DELETE FROM fluidbook_document WHERE id<' . self::WS3_DOC_ID);
@@ -196,7 +196,7 @@ class WorkshopMigration extends CubistCommand
 
         FluidbookTheme::$updateWS2ViewOnChange = false;
 
-        $q = DB::table($this->_oldDB . '.books')->orderBy('book_id', 'asc');
+        $q = DB::table(self::OLD_DB . '.books')->orderBy('book_id', 'asc');
 
         if ($this->option('publications') === 'v2') {
             DB::update('DELETE FROM fluidbook_publication WHERE version=2 AND id<' . self::WS3_BOOK_ID);
@@ -275,7 +275,7 @@ class WorkshopMigration extends CubistCommand
 
             // Composition
             $composition = [];
-            foreach (DB::table($this->_oldDB . '.book_pages')->where('book_id', $e->book_id)->get() as $p) {
+            foreach (DB::table(self::OLD_DB . '.book_pages')->where('book_id', $e->book_id)->get() as $p) {
                 $composition[$p->book_page] = [$p->document_id, $p->document_page];
             }
             $c->setAttribute('composition', $composition);
diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/UpgradeOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/UpgradeOperation.php
new file mode 100644 (file)
index 0000000..dfb6be4
--- /dev/null
@@ -0,0 +1,34 @@
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\FluidbookPublication;
+
+use App\Http\Middleware\CheckIfAdmin;
+use App\Models\FluidbookPublication;
+use Illuminate\Support\Facades\Route;
+use Prologue\Alerts\Facades\Alert;
+
+trait UpgradeOperation
+{
+    protected function setupUpgradeRoutes($segment, $routeName, $controller)
+    {
+        Route::match(['get'], $segment . '/{id}/upgrade', $controller . '@upgrade');
+    }
+
+    protected function setupUpgradeDefaults()
+    {
+        $this->crud->operation(['list', 'show'], function () {
+            $this->crud->addButton('line', 'upgrade', 'view', 'crud::buttons.fluidbook_publication.upgrade', 'end');
+        });
+    }
+
+    public function upgrade($id)
+    {
+        if (!FluidbookPublication::hasPermission($id, 'write')) {
+            abort(401);
+        }
+        FluidbookPublication::find($id)->upgrade();
+        Alert::add('success', __('La publication a été mise à niveau à la dernière version.'))->flash();
+        return redirect(backpack_url('fluidbook-publication'));
+    }
+
+}
index 13dceba7f9fd03270a72cef9f479d5550b05f8d0..995d35c194370f4fa3709c1aacc47e34780383af 100644 (file)
@@ -28,6 +28,7 @@ use App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\BastideO
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\ExportPdfOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\Services\SocialImageOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\StatsOperation;
+use App\Http\Controllers\Admin\Operations\FluidbookPublication\UpgradeOperation;
 use App\Jobs\FluidbookImagesPreprocess;
 use App\Jobs\FluidbookSocialImage;
 use App\Models\Base\ToolboxSettingsModel;
@@ -54,6 +55,7 @@ use Cubist\Util\Json;
 use Cubist\Util\Str;
 use Datetime;
 use Illuminate\Support\Facades\Artisan;
+use Illuminate\Support\Facades\DB;
 use Illuminate\Support\Facades\Log;
 
 // __('!!Paramètres des fluidbooks')
@@ -82,6 +84,7 @@ class FluidbookPublication extends ToolboxSettingsModel
         PreviewOperation::class,
         LinksOperation::class,
         CompositionOperation::class,
+        UpgradeOperation::class,
         StatsOperation::class,
         DownloadOperation::class,
         CloneOperation::class,
@@ -904,4 +907,15 @@ class FluidbookPublication extends ToolboxSettingsModel
         }
         return $this->_fluidbookToUseForComposition->$name;
     }
+
+    public function upgrade($version = "latest")
+    {
+        if ($version === 'latest') {
+            $version = 3;
+        }
+        $this->version = $version;
+        $this->save();
+
+        DB::update('UPDATE ' . WorkshopMigration::OLD_DB . '.books SET version=' . $version . ' WHERE book_id=' . $this->id);
+    }
 }
index 95a5789d7ab63d43ef0ab36a0656496c0bc2e51b..ef7c3733e03ba853120f97d23edc5396bd2773ba 100644 (file)
@@ -34,6 +34,24 @@ $(function () {
         );
         return false;
     });
+
+    $(document).on('click', '[data-confirm-title]', function (e) {
+        e.preventDefault();
+        new swal({
+            title: $(this).data('confirm-title'),
+            text: $(this).data('confirm-text'),
+            icon: "warning",
+            showCancelButton: true,
+            confirmButtonText: $(this).data('confirm-confirm'),
+            cancelButtonText:$(this).data('confirm-cancel'),
+            reverseButtons: true,
+            dangerMode: true,
+        }).then((result) => {
+            if (result.isConfirmed) {
+                window.location = $(this).attr('href');
+            }
+        });
+    });
 });
 
 function showLoader(message, progress) {
index 4cbdf0b4ae7bee3c33742fdaf11fa1ada09d9cb5..48db074538f276e8693c789f3509593e3f84680f 100644 (file)
@@ -19,7 +19,7 @@
                 ];
     }
 @endphp
-@if($entry->allowsEdit() && $entry->getKey()>=\App\Console\Commands\WorkshopMigration::WS3_BOOK_ID)
+@if($entry->allowsEdit())
     <a class="btn btn-sm btn-link" href="#"
        data-toggle="tooltip"
        title="{{__('Éditer la publication')}}"
diff --git a/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/upgrade.blade.php b/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/upgrade.blade.php
new file mode 100644 (file)
index 0000000..c7a166f
--- /dev/null
@@ -0,0 +1,17 @@
+{{-- __('!! Paramètres des fluidbooks') --}}
+@php
+    $upgradeConfirmTitle=__('Mise à niveau d\'une publication');
+    $upgradeConfirmText=__('Après la mise à niveau, la publication sera éditable dans Fluidbook Toolbox mais plus éditable dans le Fluidbook Workshop.').' '.
+__('Assurez-vous d\'avoir testé votre publication avec le compilateur en version 3 avant de poursuivre.'.' '.
+__('Cette opération est irréversible.'));
+@endphp
+@if($entry->version<3)
+    <a class="btn btn-sm btn-link" href="{{$crud->route}}/{{$entry->id}}/upgrade"
+       data-toggle="tooltip"
+       data-confirm-title="{{$upgradeConfirmTitle}}"
+       data-confirm-text="{{$upgradeConfirmText}}"
+       data-confirm-confirm="{{__('Mise à niveau')}}"
+       data-confirm-cancel="{{__('Rester en version 2')}}"
+       title="{{__('Mettre à niveau à la version 3')}}"
+    ><i class="las la-arrow-circle-up"></i> {{__('Upgrade')}}</a>
+@endif