]> _ Git - fluidbook-toolbox.git/commitdiff
wip #6091 @1.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 28 Jun 2023 12:50:04 +0000 (14:50 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 28 Jun 2023 12:50:04 +0000 (14:50 +0200)
app/Console/Commands/WorkshopMigration.php
app/Models/FluidbookPublication.php
public/packages/fluidbook/toolbox/css/context-menu.less
public/packages/fluidbook/toolbox/css/style.less
public/packages/fluidbook/toolbox/js/contextdownload.js
resources/views/vendor/backpack/crud/buttons/fluidbook_publication/preview.blade.php

index dab5fd26491590a90f084ebdb7a55c07e584db75..85a7f2424dfa24c040aaca9381604a7e3243b232 100644 (file)
@@ -92,8 +92,6 @@ class WorkshopMigration extends CubistCommand
 
         } else if ($this->option('documents') === 'v2') {
             DB::update('DELETE FROM fluidbook_document WHERE id<' . self::WS3_DOC_ID);
-        } else if ($this->option('documents') === 'all') {
-            FluidbookDocument::truncate();
         } else {
             $range = ArrayUtil::parseRange($this->option('documents'));
             FluidbookDocument::withoutGlobalScopes()->whereIn('id', $range)->delete();
@@ -118,9 +116,7 @@ class WorkshopMigration extends CubistCommand
             $c->bookmarks = $this->_migrateBookmarks($e->bookmarks);
             $c->saveWithoutFlushingCache();
         }
-        if ($this->option('documents') === 'all') {
-            DB::update('ALTER TABLE ' . $c->getTable() . ' AUTO_INCREMENT = ' . self::WS3_DOC_ID . ';');
-        }
+
     }
 
     protected function _migrateBookmarks($bookmarks, $default = [])
@@ -181,7 +177,7 @@ class WorkshopMigration extends CubistCommand
         return $res;
     }
 
-    protected function importPublications($reset = false)
+    protected function importPublications()
     {
         if ($this->option('publications') === 'none') {
             return;
@@ -189,10 +185,11 @@ class WorkshopMigration extends CubistCommand
 
         PHP::neverStop();
 
-
         $map = self::mapNames();
         $mapValues = self::mapValues();
 
+        $v3 = FluidbookPublication::withoutGlobalScopes()->where('version', 3)->pluck('id');
+
         $ignore = [];
 
         $this->line('Begin publications migration');
@@ -202,25 +199,27 @@ class WorkshopMigration extends CubistCommand
         $q = DB::table($this->_oldDB . '.books')->orderBy('book_id', 'asc');
 
         if ($this->option('publications') === 'v2') {
-            DB::update('DELETE FROM fluidbook_publication WHERE id<' . self::WS3_BOOK_ID);
-        } else if ($this->option('publications') === 'all') {
-            FluidbookPublication::truncate();
+            DB::update('DELETE FROM fluidbook_publication WHERE version=2 AND id<' . self::WS3_BOOK_ID);
         } else if ($this->option('publications') === 'missing') {
             // Get highest fluidbook on toolbox with a number less thant WS3_BOOK_ID
             $f = FluidbookPublication::withoutGlobalScopes()->where('id', '<', self::WS3_BOOK_ID)->orderBy('id', 'DESC')->first();
             $q->where('book_id', '>', $f->id);
         } else {
             $range = ArrayUtil::parseRange($this->option('publications'));
-            FluidbookPublication::withoutGlobalScopes()->whereIn('id', $range)->delete();
+            FluidbookPublication::withoutGlobalScopes()->where('version', 2)->whereIn('id', $range)->delete();
             $q->whereIn('book_id', $range);
         }
 
         foreach ($q->get() as $e) {
             $this->line('Import ' . $e->book_id);
+            if (in_array($e->book_id, $v3)) {
+                continue;
+            }
             $c = new FluidbookPublication();
             $c->setIncrementing(false);
             $c->id = $e->book_id;
             $e->compiledate = max($e->compiledate, $e->compile1date, $e->compilehtml5date);
+            $e->version = 2;
             foreach ($e as $k => $v) {
                 $new = $map[$k] ?? $k;
                 if (!$c->hasField($new)) {
@@ -287,9 +286,6 @@ class WorkshopMigration extends CubistCommand
                 dd($e);
             }
         }
-        if ($reset) {
-            DB::update('ALTER TABLE ' . $c->getTable() . ' AUTO_INCREMENT = ' . self::WS3_BOOK_ID . ';');
-        }
     }
 
     public function _normalizeChapters($value)
index ad6700cfdc6f913193513fa5171aaa5d2e88b60a..911a4b8404a5ef8d76e43cfb0d1c3e457574088c 100644 (file)
@@ -113,6 +113,7 @@ class FluidbookPublication extends ToolboxSettingsModel
         $this->addField('hash', Hidden::class);
         $this->addField('cid', Hidden::class);
 
+
         $this->addField('extranet_task', Hidden::class, __('Tâche de l\'extranet'));
         $this->addField('export_data', Hidden::class, __('Paramètres d\'export'));
         // Composed fields
@@ -207,6 +208,7 @@ class FluidbookPublication extends ToolboxSettingsModel
         $this->addField('compilation_date', Datetime::class, __('Dernière compilation'), ['read_only' => true]);
         $this->addField('composition_updated_at', Datetime::class, __('Dernière modification de la composition'), ['read_only' => true]);
         $this->addField('status_date', Datetime::class, __('Date de changement de status'), ['read_only' => true]);
+        $this->addField('version', Hidden::class, 'Version', ['column' => true, 'default' => 3, 'databaseDefault' => 3, 'column_label' => '<i class="las la-code-branch" title="' . __('Version du Fluidbook') . '"></i>']);
 
 
     }
@@ -607,7 +609,7 @@ class FluidbookPublication extends ToolboxSettingsModel
         if (!can('fluidbook-publication:admin')) {
             return false;
         }
-        if ($this->id < WorkshopMigration::WS3_BOOK_ID) {
+        if ($this->version < 3) {
             return false;
         }
         if ($this->status >= 1) {
@@ -621,7 +623,7 @@ class FluidbookPublication extends ToolboxSettingsModel
         if (!can('fluidbook-publication:write')) {
             return false;
         }
-        if ($this->id < WorkshopMigration::WS3_BOOK_ID) {
+        if ($this->version < 3) {
             return false;
         }
         return true;
@@ -663,7 +665,7 @@ class FluidbookPublication extends ToolboxSettingsModel
 
     public function allowsDownload()
     {
-        if ($this->id < WorkshopMigration::WS3_BOOK_ID) {
+        if ($this->version < 3) {
             return false;
         }
         if (can('fluidbook-publication:write')) {
@@ -704,7 +706,7 @@ class FluidbookPublication extends ToolboxSettingsModel
     public function replicateFull(array $except = null)
     {
         $new = $this->_baseReplicate($except);
-        if (!$this->composition_fluidbook && $this->id >= 30000) {
+        if (!$this->composition_fluidbook && $this->version >= 3) {
             $new->composition_fluidbook = true;
             $new->composition_fluidbook_id = $this->id;
             $new->composition_fluidbook_links = true;
@@ -732,7 +734,7 @@ class FluidbookPublication extends ToolboxSettingsModel
 
     public function syncFromWorkshop()
     {
-        if ($this->id >= WorkshopMigration::WS3_BOOK_ID) {
+        if ($this->version >= 3) {
             return false;
         }
         Artisan::call('ws:migrate --publications=' . $this->id . ' --documents=missing --quick');
index 5ac842d20e2d74044869438ab995b1d8857c8ef2..461d879430732875c93f823ca25e73b2d34599fb 100644 (file)
@@ -17,3 +17,9 @@
     border-color: #9ec400 !important;
     color: #9ec400 !important;
 }
+
+.context-menu-subtitle {
+    color: #2f2f2f;
+    font-weight: 600;
+    text-align: center;
+}
index c6d4d58c4a813b4b59b59ae33bfe8b97587f8f80..abdba961cb60db16cceaed11c1d44ac17e852d55 100644 (file)
@@ -481,3 +481,4 @@ table.dataTable thead .sorting::before, table.dataTable thead .sorting::after, t
     font-size: 120%;
 }
 
+@import 'context-menu';
index 91688a571118ebcba9e70de7807bd4916cb1b369..5114371bd09b0b77e642e02f42efa21dd0252757 100644 (file)
@@ -10,7 +10,9 @@ $(function () {
             var disabledOption = $($trigger).data('context-disabled-action');
 
             var actions = {};
+
             $.each(rawActions, function (key, action) {
+                console.log(action);
                 if (action != sep) {
                     if (typeof action === 'string') {
                         action = {'label': action};
@@ -22,7 +24,7 @@ $(function () {
                     if (action.target === undefined) {
                         action.target = '_self';
                     }
-                    action.disabled = (key == disabledOption);
+                    action.disabled = action.disabled || (key == disabledOption);
                     action.isHtmlName = true;
                 }
                 actions[key] = action;
index 81204882cd70b720f0f8cffb9be5b5fe74466b39..2c25fb7f35f5ee7dc1139fca007e57ccc8c09108 100644 (file)
@@ -1,9 +1,21 @@
 {{-- __('!! Paramètres des fluidbooks') --}}
 @php
-    $actions=['preview'=>['label'=>__('Version online'),'url'=>$crud->route.'/preview/'.$entry->getKey().'_'.$entry->hash,'target'=>'_blank']];
+    $actions=[];
+    $suffixv3='';
+    if($entry->version==2){
+        $actions['compilev2']=['label'=>'<span class="context-menu-subtitle">'.__('Compilateur V2').'</span>','disabled'=>true,'url'=>'#'];
+        $actions['preview_v2'] = ['label'=>__('Version online'),'url'=>'https://workshop.fluidbook.com/viewerh/'.$entry->getKey().'_'.$entry->hash,'target'=>'_blank'];
+        if($entry->isSCORMEnabled()){
+           $actions['scorm_v2'] = ['label'=>__('Version SCORM'),'url'=>'https://workshop.fluidbook.com/viewers/'.$entry->getKey().'_'.$entry->hash,'target'=>'_blank'];
+        }
+        $actions['sep']='---------';
+        $actions['testv3']=['label'=>'<span class="context-menu-subtitle">'.__('Tester le compilateur V3').'</span>','disabled'=>true,'url'=>'#'];
+    }
+    $actions['preview']=['label'=>__('Version online'),'url'=>$crud->route.'/preview/'.$entry->getKey().'_'.$entry->hash,'target'=>'_blank'];
     if($entry->isSCORMEnabled()){
         $actions['scorm']=['label'=>__('Version SCORM'),'url'=>$crud->route.'/preview/scorm/'.$entry->getKey().'_'.$entry->hash,'target'=>'_blank'];
     }
+
 @endphp
 
 @if($entry->allowsPreview())