From: Vincent Vanwaelscappel Date: Tue, 18 Jan 2022 12:48:27 +0000 (+0100) Subject: wait #4876 @2 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=d5bb6ba525100681d1316b6e68b592d8fc26d364;p=odl.git wait #4876 @2 --- diff --git a/app/Http/Controllers/Admin/AssetsCrudController.php b/app/Http/Controllers/Admin/AssetsCrudController.php index 8388c5e..8d2b9f6 100644 --- a/app/Http/Controllers/Admin/AssetsCrudController.php +++ b/app/Http/Controllers/Admin/AssetsCrudController.php @@ -2,6 +2,8 @@ namespace App\Http\Controllers\Admin; +use App\Http\Controllers\Admin\Operations\ImportAssetsOperation; + class AssetsCrudController extends \Cubist\Backpack\Magic\Controllers\CubistMagicController { use \Cubist\Backpack\Magic\Operations\CreateOperation; @@ -12,7 +14,7 @@ class AssetsCrudController extends \Cubist\Backpack\Magic\Controllers\CubistMagi use \Backpack\CRUD\app\Http\Controllers\Operations\DeleteOperation; use \Backpack\CRUD\app\Http\Controllers\Operations\BulkDeleteOperation; use \Cubist\Backpack\Http\Controllers\Operations\ReviseOperation; - + /* diff --git a/app/Http/Controllers/Admin/Operations/ImportAssetsOperation.php b/app/Http/Controllers/Admin/Operations/ImportAssetsOperation.php new file mode 100644 index 0000000..b60e460 --- /dev/null +++ b/app/Http/Controllers/Admin/Operations/ImportAssetsOperation.php @@ -0,0 +1,71 @@ +crud->addButtonFromView('top', 'import', 'assets.import', 'end'); + } + + protected function import() + { + /** @var UploadedFile[] $files */ + $files = request()->files->get('file'); + + + if (!count($files)) { + Alert::warning('Aucun fichier chargé')->flash(); + return; + } + + $exts = ['pdf', 'mp3', 'mp4']; + + $j = 0; + foreach ($files as $i => $file) { + $name = $file->getClientOriginalName(); + $e = explode('.', $name); + $ext = mb_strtolower(array_pop($e)); + if (!in_array($ext, $exts)) { + continue; + } + $e = explode('-', $name, 2); + $assetId = trim($e[0]); + if (!preg_match("/\d+/", $assetId, $matches)) { + continue; + } + /** @var Asset $asset */ + $asset = Asset::find($assetId); + if (null === $asset) { + continue; + } + $asset->replaceMediaInField('file_upload', $file); + + $j++; + } + + + if ($j === 0) { + Alert::warning('Aucun fichier mis à jour')->flash(); + } else { + Alert::success('' . $j . ' fichiers ont été mis à jour')->flash(); + } + return redirect($this->crud->route); + } +} diff --git a/app/Models/Asset.php b/app/Models/Asset.php index 4aa5dbc..729b933 100644 --- a/app/Models/Asset.php +++ b/app/Models/Asset.php @@ -2,6 +2,7 @@ namespace App\Models; +use App\Http\Controllers\Admin\Operations\ImportAssetsOperation; use Cubist\Backpack\Magic\Fields\Datetime; use Cubist\Backpack\Magic\Fields\Files; use Cubist\Backpack\Magic\Fields\Hidden; @@ -22,6 +23,8 @@ class Asset extends CubistMagicAbstractModel 'plural' => 'Médiathèque', 'oneinstance' => false]; + protected $_operations = [ImportAssetsOperation::class]; + /** * @throws \Exception */ @@ -48,7 +51,7 @@ class Asset extends CubistMagicAbstractModel ]); $this->addField('file_upload', Files::class, 'Fichier', ['maxFiles' => 100]); $this->addField('file_thumb', Files::class, 'Miniature', ['when' => ['type' => ['audio', 'video', 'pdf']], 'hint' => 'Image utilisée sur la page "Médiathèque" ou "Resources"']); - $this->addField('theme', SelectFromModel::class, 'Chapitres', ['when' => ['type' => ['audio', 'video']], 'optionsmodel' => AssetTheme::class, 'allows_null' => true, 'allows_multiple' => true,'hint' => 'Choisir un thème pour ajouter à la page "Médiathèque"']); + $this->addField('theme', SelectFromModel::class, 'Chapitres', ['when' => ['type' => ['audio', 'video']], 'optionsmodel' => AssetTheme::class, 'allows_null' => true, 'allows_multiple' => true, 'hint' => 'Choisir un thème pour ajouter à la page "Médiathèque"']); $this->addField('code', Integer::class, 'Code', ['when' => ['type' => ['audio', 'video']], 'column' => true]); $this->addField('keywords', Tags::class, 'Mots-clé', ['column' => true]); } diff --git a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php index f733708..8af633f 100644 --- a/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php +++ b/resources/views/vendor/backpack/base/inc/sidebar_content.blade.php @@ -29,7 +29,7 @@ class='la la-book'> Ressources @endcan - @can('settings') + @can('settings:read') diff --git a/resources/views/vendor/backpack/crud/buttons/assets/import.blade.php b/resources/views/vendor/backpack/crud/buttons/assets/import.blade.php new file mode 100644 index 0000000..af8f122 --- /dev/null +++ b/resources/views/vendor/backpack/crud/buttons/assets/import.blade.php @@ -0,0 +1,25 @@ + + {{__('Mise à jour groupée')}} + + +@push('after_scripts') + +@endpush