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 [];
}
}
+++ /dev/null
-<?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;
-}
--- /dev/null
+<?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);
+ }
+}
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;
'singular' => 'collection',
'plural' => 'collections'];
+ protected $_operations = [DownloadOperation::class];
+
public static function addOwnerClause(Builder $builder)
{
if (null === backpack_user()) {
$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)
+ {
}
}
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;
'plural' => 'traductions',
'oneinstance' => true];
+ protected $_operations = [ExcelExportOperation::class, ExcelImportOperation::class];
+
public function __construct(array $attributes = [])
{
--- /dev/null
+<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>