]> _ Git - fluidbook-toolbox.git/commitdiff
wait #5428 @2
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 2 Sep 2022 13:07:37 +0000 (15:07 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 2 Sep 2022 13:07:37 +0000 (15:07 +0200)
app/Http/Controllers/Admin/FluidbookPublicationCrudController.php
app/Http/Controllers/Admin/Operations/FluidbookPublication/EditOperation.php [new file with mode: 0644]
app/Models/FluidbookPublication.php
app/Models/Traits/SCORMVersionTrait.php
public/packages/fluidbook/toolbox/js/contextdownload.js
resources/views/vendor/backpack/crud/buttons/fluidbook_publication/edit.blade.php [new file with mode: 0644]
resources/views/vendor/backpack/crud/buttons/fluidbook_publication/preview.blade.php

index 09edc18957665745c8747514c76f8564f14c301b..5133768fc8897138cba7f4c9c5417e153e3fc61c 100644 (file)
@@ -14,7 +14,7 @@ class FluidbookPublicationCrudController extends \Cubist\Backpack\Magic\Controll
        use \Backpack\CRUD\app\Http\Controllers\Operations\CloneOperation;
        use \Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation;
        use \Cubist\Backpack\Http\Controllers\Operations\ReviseOperation;
-       
+
 
 
     /*
diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/EditOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/EditOperation.php
new file mode 100644 (file)
index 0000000..01a8f1c
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\FluidbookPublication;
+
+use Illuminate\Support\Facades\Route;
+
+trait EditOperation
+{
+
+    protected function setupEditRoutes($segment, $routeName, $controller)
+    {
+        Route::match(['get'], $segment . '/{id}/edit/links', $controller . '@links');
+    }
+
+    protected function setupEditDefaults()
+    {
+        $this->crud->addButton('line', 'edit', 'view', 'crud::buttons.fluidbook_publication.edit', 'end');
+        $this->crud->operation(['list', 'show'], function () {
+            $this->crud->removeButton('update');
+        });
+    }
+
+    public function links($id)
+    {
+        return 'Link editor of ' . $id;
+    }
+}
index bef94b1510b95362594a117304816db157e7c4f4..6ee9e0e2fabc62d85dba7f34464ec4f7c2b62f5e 100644 (file)
@@ -12,6 +12,7 @@ use App\Http\Controllers\Admin\Operations\FluidbookPublication\CompositionOperat
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\DownloadOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\PreviewOperation;
 use App\Http\Controllers\Admin\Operations\FluidbookPublication\StatsOperation;
+use App\Http\Controllers\Admin\Operations\FluidbookPublication\EditOperation;
 use App\Models\Base\ToolboxSettingsModel;
 use App\Models\Traits\PublicationSettings;
 use App\Models\Traits\SCORMVersionTrait;
@@ -38,7 +39,7 @@ class FluidbookPublication extends ToolboxSettingsModel
 
     protected static $_docs = [];
 
-    protected $_operations = [PreviewOperation::class, CompositionOperation::class, DownloadOperation::class, StatsOperation::class];
+    protected $_operations = [PreviewOperation::class, EditOperation::class, CompositionOperation::class, StatsOperation::class, DownloadOperation::class];
 
     protected $casts = ['composition' => 'array'];
 
index 5867f4b30991ffe5b3570f2aefeaa8208f79e743..73040d8a2ec36ac012001875f74ca0d8614541b6 100644 (file)
@@ -6,10 +6,15 @@ trait SCORMVersionTrait
 {
     public function getSCORMVersion()
     {
-        if ((isset($this->scorm_enable) && !$this->scorm_enable) || !$this->scorm_version) {
+        if (!$this->isSCORMEnabled()) {
             return '-';
         }
         $map = ['1.2' => '1.2', '2004' => '2004', '2004.3' => '2004 <sup>3rd ed.</sup>'];
         return $map[$this->scorm_version];
     }
+
+    public function isSCORMEnabled()
+    {
+        return (isset($this->scorm_enable) && $this->scorm_enable) && $this->scorm_version;
+    }
 }
index 2b7b90b2b0b4c83bd3c51283cc869bf844b9ef05..0c3f32b3f440833e6cdae1a64b0716ced5c468b2 100644 (file)
@@ -3,11 +3,27 @@ $(function () {
         selector: '[data-context-actions]', trigger: 'left', build: function ($trigger, e) {
             var route = $($trigger).data('context-route');
             var id = $($trigger).data('context-id');
-            var actions = $($trigger).data('context-actions');
+            var rawActions = $($trigger).data('context-actions');
             var items = {};
             var confirm = $($trigger).data('context-confirm');
-            $.each(actions, function (key, name) {
-                items[key] = {name: name};
+
+            var actions = {};
+            $.each(rawActions, function (key, action) {
+                if (typeof action === 'string') {
+                    action = {'label': action};
+                }
+                if (action.url === undefined) {
+                    action.url = route;
+                }
+                action.url = replaceVariables(action.url, key);
+                if (action.target === undefined) {
+                    action.target = '_self';
+                }
+                actions[key] = action;
+            });
+
+            $.each(actions, function (key, action) {
+                items[key] = {name: action.label};
             });
 
             function replaceVariables(template, action) {
@@ -16,18 +32,23 @@ $(function () {
 
             return {
                 callback: function (key, options) {
-                    var url = replaceVariables(route, key);
+
                     var ok = function () {
-                        window.location = url;
+                        var target = actions[key].target;
+                        var url = actions[key].url;
+                        if (target === '_self') {
+                            window.location = url;
+                        } else {
+                            window.open(url, target);
+                        }
                         return true;
                     }
-                    console.log(confirm);
-                    if (confirm === null || confirm===undefined) {
+                    if (confirm === null || confirm === undefined) {
                         return ok();
                     }
                     swal({
                         title: confirm.title,
-                        text: replaceVariables(confirm.text, actions[key]),
+                        text: replaceVariables(confirm.text, actions[key].label),
                         icon: "info",
                         buttons: {
                             cancel: {
diff --git a/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/edit.blade.php b/resources/views/vendor/backpack/crud/buttons/fluidbook_publication/edit.blade.php
new file mode 100644 (file)
index 0000000..86e327a
--- /dev/null
@@ -0,0 +1,24 @@
+@php
+    $actions=[
+        'settings'=>
+            [
+                'label'=>__('Modifier les paramètres'),
+                'url'=>$crud->route.'/$id/edit'
+                ],
+        'links'=>
+            [
+                'label'=>__('Modifier les liens'),
+                'url'=>$crud->route.'/$id/edit/$action',
+                'target'=>'_blank'
+                ]
+        ];
+@endphp
+<a class="btn btn-sm btn-link" href="#"
+   data-toggle="tooltip"
+   title="{{__('Éditer la publication')}}"
+   data-context-actions="{{json_encode($actions)}}"
+   data-context-route="{{$crud->route}}/$id/edit/$action"
+   data-context-id="{{$entry->getKey()}}"
+>
+    <i class="la la-edit"></i> {{__('Éditer')}}
+</a>
index 043a0cb538d2d4073ebcfe9200d4531a05b1695e..2891f216af89044b9da73e061a7729c0d3b48c5c 100644 (file)
@@ -1,4 +1,16 @@
-<a class="btn btn-sm btn-link" target="_blank" href="{{$crud->route}}/preview/{{$entry->id}}_{{$entry->hash}}"
+@php
+    $actions=['preview'=>['label'=>__('Version online'),'url'=>$crud->route.'/preview/$id_'.$entry->hash,'target'=>'_blank']];
+    if($entry->isSCORMEnabled()){
+        $actions['scorm']=['label'=>__('Version SCORM'),'url'=>$crud->route.'/preview/scorm/$id_'.$entry->hash,'target'=>'_blank'];
+    }
+@endphp
+
+<a class="btn btn-sm btn-link" target="{!! $actions['preview']['target'] !!}" href="{!! $actions['preview']['url'] !!}"
+   @if(count($actions)>1)
+       data-context-actions="{{json_encode($actions)}}"
+       data-context-route="{{$crud->route}}/$id/edit/$action"
+       data-context-id="{{$entry->getKey()}}"
+   @endif
    data-toggle="tooltip"
    title="{{__('Voir le fluidbook')}}"><i class="las la-eye"></i> {{__('Voir')}}
 </a>