]> _ Git - fluidbook-toolbox.git/commitdiff
wip #4891 @2
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 18 Nov 2021 14:59:38 +0000 (15:59 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 18 Nov 2021 14:59:38 +0000 (15:59 +0100)
app/Fields/FluidbookID.php
app/Http/Controllers/Admin/Base/FluidbookTranslateController.php [deleted file]
app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php [new file with mode: 0644]
app/Models/FluidbookCollection.php
app/Models/FluidbookTranslate.php
resources/views/vendor/backpack/crud/buttons/fluidbook_collection/download.blade.php [new file with mode: 0644]

index 9b8597a52ee2ef420b59264bb2fd869561fdc18f..6326a634344a9e74bcab550bbd5133a5a13cd0a0 100644 (file)
@@ -3,19 +3,23 @@
 namespace App\Fields;
 
 use Cubist\Backpack\Magic\Fields\SelectFromArray;
+use Illuminate\Support\Facades\Cache;
 use Illuminate\Support\Facades\DB;
 
 class FluidbookID extends SelectFromArray
 {
     public function getOptions()
     {
-        $res = [];
-        if(backpack_user()) {
-            foreach (DB::table('extranet_clean.books')->whereIn('proprietaire', explode(',', backpack_user()->e1_ws_rights))->orderByDesc('book_id')->get() as $book) {
-                $res[$book->book_id] = $book->book_id . ' - ' . $book->nom;
-            }
+        if (backpack_user()) {
+            return Cache::remember('fluidbok_id_' . backpack_user()->id, 360, function () {
+                $res = [];
+                foreach (DB::table('extranet_clean.books')->whereIn('proprietaire', explode(',', backpack_user()->e1_ws_rights))->orderByDesc('book_id')->get() as $book) {
+                    $res[$book->book_id] = $book->book_id . ' - ' . $book->nom;
+                }
+                return $res;
+            });
         }
 
-        return $res;
+        return [];
     }
 }
diff --git a/app/Http/Controllers/Admin/Base/FluidbookTranslateController.php b/app/Http/Controllers/Admin/Base/FluidbookTranslateController.php
deleted file mode 100644 (file)
index 0d11080..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<?php
-
-namespace App\Http\Controllers\Admin\Base;
-
-use App\Http\Controllers\Admin\Operations\FluidbookTranslate\ExcelExportOperation;
-use App\Http\Controllers\Admin\Operations\FluidbookTranslate\ExcelImportOperation;
-use Cubist\Backpack\Magic\Controllers\CubistMagicController;
-
-class FluidbookTranslateController extends CubistMagicController
-{
-    use ExcelExportOperation;
-    use ExcelImportOperation;
-}
diff --git a/app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php
new file mode 100644 (file)
index 0000000..c41ccda
--- /dev/null
@@ -0,0 +1,38 @@
+<?php
+
+namespace App\Http\Controllers\Admin\Operations\FluidbookCollection;
+
+
+use Cubist\Util\Files\Files;
+use Cubist\Util\Zip;
+use Illuminate\Support\Facades\Route;
+use Cubist\Util\Str;
+
+trait DownloadOperation
+{
+    protected function setupDownloadRoutes($segment, $routeName, $controller)
+    {
+        Route::match(['get'], $segment . '/{id}/download', $controller . '@download');
+    }
+
+    protected function setupDownloadDefaults()
+    {
+        $this->crud->addButtonFromView('line', 'download', 'fluidbook_collection.download', 'end');
+    }
+
+    protected function download($id)
+    {
+        $compilepath = protected_path('collection/final/' . $id);
+        $entry = $this->crud->getEntry($id);
+        $entry->compile($compilepath);
+
+        $fname = Str::slugCase('collection-' . date('Ymdhis') . '-' . Str::slug($entry->title)) . '.zip';
+        $dest = protected_path('collection/download/' . $fname);
+
+        Zip::archive($compilepath, $dest);
+
+        return response(null)->header('Content-Type', 'application/zip')
+            ->header('Content-Disposition', 'attachment; filename="' . $fname . '"')
+            ->header('X-Sendfile', $dest);
+    }
+}
index 7ff07f0b6de59fa3901a2e6c4b904a3d55a83229..bc06839f5ad0b7af1beaefbc88b3997ba990cfec 100644 (file)
@@ -3,6 +3,7 @@
 namespace App\Models;
 
 use App\Fields\User;
+use App\Http\Controllers\Admin\Operations\FluidbookCollection\DownloadOperation;
 use App\SubForms\CollectionPublication;
 use Cubist\Backpack\Magic\Fields\BunchOfFieldsMultiple;
 use Cubist\Backpack\Magic\Fields\SelectFromArray;
@@ -18,6 +19,8 @@ class FluidbookCollection extends CubistMagicAbstractModel
         'singular' => 'collection',
         'plural' => 'collections'];
 
+    protected $_operations = [DownloadOperation::class];
+
     public static function addOwnerClause(Builder $builder)
     {
         if (null === backpack_user()) {
@@ -47,8 +50,18 @@ class FluidbookCollection extends CubistMagicAbstractModel
 
         $this->addField('type', SelectFromArray::class, __('Type'), ['column' => true, 'options' => ['scorm_multilang' => __('SCORM multilingue')]]);
 
-        $this->addField('publications',BunchOfFieldsMultiple::class,__('Publications'),['bunch'=>CollectionPublication::class]);
+        $this->addField('publications', BunchOfFieldsMultiple::class, __('Publications'), ['bunch' => CollectionPublication::class]);
+    }
 
+    public function compile($path)
+    {
+        $data = $this->getPageData();
+        if ($data->type === 'scorm_multilang') {
+            return $this->compileSCORMMultilang($data, $path);
+        }
+    }
 
+    protected function compileSCORMMultilang($data, $path)
+    {
     }
 }
index 1e2362e21b2b331b47c682ce896ad60b7d9ae529..3e68fb03d6b8371fd3a8e759b092fe06120a5ae1 100644 (file)
@@ -5,13 +5,13 @@ namespace App\Models;
 
 use App\Fields\NSISLocale;
 use App\Http\Controllers\Admin\Base\FluidbookTranslateController;
+use App\Http\Controllers\Admin\Operations\FluidbookTranslate\ExcelExportOperation;
+use App\Http\Controllers\Admin\Operations\FluidbookTranslate\ExcelImportOperation;
 use Cubist\Backpack\Facades\App;
 use Cubist\Backpack\Magic\Models\Translate;
 
 class FluidbookTranslate extends Translate
 {
-    protected $_baseController = FluidbookTranslateController::class;
-
     protected $table = 'fluidbook_translate';
 
     protected static $_allTranslations = null;
@@ -23,6 +23,8 @@ class FluidbookTranslate extends Translate
         'plural' => 'traductions',
         'oneinstance' => true];
 
+    protected $_operations = [ExcelExportOperation::class, ExcelImportOperation::class];
+
 
     public function __construct(array $attributes = [])
     {
diff --git a/resources/views/vendor/backpack/crud/buttons/fluidbook_collection/download.blade.php b/resources/views/vendor/backpack/crud/buttons/fluidbook_collection/download.blade.php
new file mode 100644 (file)
index 0000000..7507f65
--- /dev/null
@@ -0,0 +1,2 @@
+<a class="btn btn-sm btn-link" href="{{$crud->route}}/{{$entry->getKey()}}/download" data-toggle="tooltip"
+   title="{{__('Télécharger la collection')}}"><i class="la la-arrow-circle-down"></i> {{__('Télécharger')}}</a>