From 8946677c19bcefc1c89789dfdaf512515a360784 Mon Sep 17 00:00:00 2001 From: soufiane Date: Mon, 19 Feb 2024 15:47:05 +0100 Subject: [PATCH] wait #6717 @3:00 ajout bouton exporter --- .../FluidbookCollection/DownloadOperation.php | 11 +++++++++++ .../DownloadOperation.php | 3 ++- app/Jobs/FluidbookSettingsExport.php | 19 +++++++++++++++---- .../crud/inc/form_save_buttons.blade.php | 6 ++++++ 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php index 968440458..78b9b92b8 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookCollection/DownloadOperation.php @@ -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(); + } } diff --git a/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php b/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php index 68d112d08..bb4fc8605 100644 --- a/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php +++ b/app/Http/Controllers/Admin/Operations/FluidbookPublication/DownloadOperation.php @@ -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"); } diff --git a/app/Jobs/FluidbookSettingsExport.php b/app/Jobs/FluidbookSettingsExport.php index ec1165fcf..1aa089340 100644 --- a/app/Jobs/FluidbookSettingsExport.php +++ b/app/Jobs/FluidbookSettingsExport.php @@ -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)); } } diff --git a/resources/views/vendor/backpack/crud/inc/form_save_buttons.blade.php b/resources/views/vendor/backpack/crud/inc/form_save_buttons.blade.php index 6541252ce..db238f4fd 100644 --- a/resources/views/vendor/backpack/crud/inc/form_save_buttons.blade.php +++ b/resources/views/vendor/backpack/crud/inc/form_save_buttons.blade.php @@ -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']))
+ @if($crud->entry && $crud->entry instanceof \App\Models\FluidbookCollection) + {{ __('Exporter les paramètres') }} + @endif @if($crud->entry && $crud->entry instanceof \App\Models\FluidbookExternalInstallServer) {{ __('Tester la connexion') }} -- 2.39.5