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;
{
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();
+ }
}
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;
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");
}
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()
{
$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));
}
}
$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>