]> _ Git - fluidbook-toolbox.git/commitdiff
wait #6717 @3:00 ajout bouton exporter
authorsoufiane <soufiane@cubedesigners.com>
Mon, 19 Feb 2024 14:47:05 +0000 (15:47 +0100)
committersoufiane <soufiane@cubedesigners.com>
Mon, 19 Feb 2024 14:47:05 +0000 (15:47 +0100)
app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php
app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php
app/Jobs/FluidbookSettingsExport.php
resources/views/vendor/backpack/crud/inc/form_save_buttons.blade.php

index 968440458c00428bfa07da947b87bfd199325a66..78b9b92b8edaa8dd1b93cbee5aa66c5d10802a70 100644 (file)
@@ -5,6 +5,7 @@ namespace App\Http\Controllers\Admin\Operations\FluidbookCollection;
 use App\Http\Controllers\Admin\Operations\Base\BaseDownloadOperation;
 use App\Http\Middleware\CheckIfAdmin;
 use App\Jobs\FluidbookCollectionDownload;
+use App\Jobs\FluidbookSettingsExport;
 use App\Jobs\QuizDownload;
 use App\Models\FluidbookCollection;
 use Cubist\Backpack\Http\Controllers\Base\XSendFileController;
@@ -17,7 +18,17 @@ trait DownloadOperation
 {
     use BaseDownloadOperation;
 
+    protected function setupDownloadRoutes($segment, $routeName, $controller)
+    {
+        Route::match(['get','post'], $segment . '/{id}/download_settings_by_ids/{ids}', $controller . '@downloadSettingsByIds')->name("download_settings_by_ids");
+    }
+
     protected $button = 'fluidbook_collection';
     protected $downloadJob = FluidbookCollectionDownload::class;
 
+    protected function downloadSettingsByIds($id, $ids) {
+        $userId = backpack_user()->id;
+        $file = (new FluidbookSettingsExport($ids,$userId,true))->handle();
+        return response()->download($file, 'settings_export.xlsx')->deleteFileAfterSend();
+    }
 }
index 68d112d085dde1e93b42aa54c0b0161734d255cc..bb4fc8605aa900791545a8ceec3a28ae094e69a6 100644 (file)
@@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin\Operations\FluidbookPublication;
 
 use App\Fluidbook\Packager\Download;
 use App\Http\Middleware\CheckIfAdmin;
+use App\Jobs\FluidbookSettingsExport;
 use App\Jobs\GenerateDeliveryThumbnailsPreview;
 use App\Models\FluidbookPublication;
 use Cubist\Backpack\Http\Controllers\Base\XSendFileController;
@@ -20,7 +21,7 @@ trait DownloadOperation
         Route::match(['get'], $segment . '/{id}/delivery/{type}', $controller . '@deliveryThumb')->name('deliveryThumb');
         Route::match(['get'], $segment . '/{id}/package/{action}/{version}', $controller . '@package');
         Route::match(['get'], $segment . '/{id}/package/{action}/scorm/{scormversion}', $controller . '@packageScorm');
-        Route::match(['get'], $segment . '/{id}_{hash}/download/{file}', $controller . '@download')->withoutMiddleware([CheckIfAdmin::class]);;
+        Route::match(['get'], $segment . '/{id}_{hash}/download/{file}', $controller . '@download')->withoutMiddleware([CheckIfAdmin::class]);
         Route::match(['get','post'], $segment . '/download_settings/{file}', $controller . '@downloadSettings')->withoutMiddleware([CheckIfAdmin::class])->name("download_settings");
     }
 
index ec1165fcfab0a2860c268f5948820138f35abb61..1aa089340dd32d62ecc42e4e3bddb31297e702dd 100644 (file)
@@ -22,10 +22,13 @@ class FluidbookSettingsExport extends Base
 
     protected $userID;
 
-    public function __construct($ids, $userID)
+    protected $directDownload;
+
+    public function __construct($ids, $userID, $directDownload = false)
     {
         $this->listID = ArrayUtil::parseRange($ids);
         $this->userID = $userID;
+        $this->directDownload = $directDownload;
     }
     public function handle()
     {
@@ -135,14 +138,22 @@ class FluidbookSettingsExport extends Base
         $writer->save($tmpfile);
 
         $hash = explode('cubist', $tmpfile)[1];
+        $file = base64_encode($hash);
+
+        if($this->directDownload) {
+            return $tmpfile;
+        }
 
-        $url = route('download_settings', ['file' => base64_encode($hash)]);
+        return $this->notification($user, $file);
+    }
+
+    protected function notification($user, $file) {
+        $url = route('download_settings', ['file' => $file]);
         $subject = __("Export groupé des paramètres des fluidbooks prêt au téléchargement");
         $notification = '';
         $action = [
             __('Télécharger') => $url,
         ];
-
-        $user->notify(new ToolboxNotification($subject, $notification, $action, true));
+        return $user->notify(new ToolboxNotification($subject, $notification, $action, true));
     }
 }
index 6541252ce80807f6f28b4f21cfa0b79daddad04f..db238f4fde2a007382b47912b08595b9feb978aa 100644 (file)
@@ -8,9 +8,15 @@
         $saveAction['active']=['value'=>'save_and_back','label'=>__('Enregistrer')];
         $saveAction['options']=[];
     }
+    $userID = backpack_user()->id;
+    $fluidbookIds = implode(',',array_column($crud->entry->getAttribute('publications'), "fluidbook"));
 @endphp
 @if(isset($saveAction['active']) && !is_null($saveAction['active']['value']))
     <div id="saveActions" class="form-group">
+        @if($crud->entry && $crud->entry instanceof \App\Models\FluidbookCollection)
+            <a class='btn btn-primary mr-3'
+               href='download_settings_by_ids/{{ $fluidbookIds }}' target="_blank" rel="noopener">{{ __('Exporter les paramètres') }}</a>
+        @endif
         @if($crud->entry && $crud->entry instanceof \App\Models\FluidbookExternalInstallServer)
             <a id='verifyconnection' class='btn btn-primary mr-3'
                href='verifyconnection'>{{ __('Tester la connexion') }}</a>