From: Vincent Vanwaelscappel Date: Mon, 21 Oct 2019 16:13:36 +0000 (+0200) Subject: wip #3157 @3 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=40f0d818e2b4257544a6f66a53302b6b452babac;p=cubist_cms-back.git wip #3157 @3 --- diff --git a/src/app/Console/Commands/GenerateCommand.php b/src/app/Console/Commands/GenerateCommand.php index 72eef3a..f6f4f85 100644 --- a/src/app/Console/Commands/GenerateCommand.php +++ b/src/app/Console/Commands/GenerateCommand.php @@ -61,13 +61,8 @@ class GenerateCommand extends CubistCommand $route = $model->getOption('route', $model->getOption('name')); $controller = $model->getControllerClass(); - $this->_routes[] = 'CRUD::resource(\'' . $route . '\', \'' . $controller . '\')->with(function () { - Route::match([\'post\'], \'' . $route . '/{id}/media\', \'' . $controller . '@uploadMedia\'); - Route::match([\'delete\'], \'' . $route . '/{id}/media/{mediaId}\', \'' . $controller . '@deleteMedia\'); - Route::match([\'post\'], \'' . $route . '/{id}/media/reorder\', \'' . $controller . '@reorderMedia\'); - });'; + $this->_routes[] = 'new \Cubist\Backpack\CubistCrudRouter(\'' . $route . '\', \'' . $controller . '\', []);'; } - } diff --git a/src/app/CubistCrudPanel.php b/src/app/CubistCrudPanel.php index f31cdc4..746ce59 100644 --- a/src/app/CubistCrudPanel.php +++ b/src/app/CubistCrudPanel.php @@ -3,14 +3,14 @@ namespace Cubist\Backpack; use Backpack\CRUD\CrudPanel; -use Cubist\Backpack\app\Magic\Models\CubistMagicModel; +use Cubist\Backpack\app\Magic\Models\CubistMagicAbstractModel; /** - * @property CubistMagicModel $model + * @property CubistMagicAbstractModel $model */ /** - * @property CubistMagicModel $entry + * @property CubistMagicAbstractModel $entry */ class CubistCrudPanel extends CrudPanel { diff --git a/src/app/CubistCrudRouter.php b/src/app/CubistCrudRouter.php new file mode 100644 index 0000000..a587a07 --- /dev/null +++ b/src/app/CubistCrudRouter.php @@ -0,0 +1,30 @@ +name . '/bulk-publish', [ + 'as' => 'crud.' . $this->name . '.bulkPublish', + 'uses' => $this->controller . '@bulkPublish', + ]); + + Route::post($this->name . '/bulk-offline', [ + 'as' => 'crud.' . $this->name . '.bulkOffline', + 'uses' => $this->controller . '@bulkOffline', + ]); + + Route::match(['post'], $this->name . '/{id}/media', $this->controller . 'CrudController@uploadMedia'); + Route::match(['delete'], $this->name . '/{id}/media/{mediaId}', $this->controller . 'CrudController@deleteMedia'); + Route::match(['post'], $this->name . '/{id}/media/reorder', $this->controller . 'CrudController@reorderMedia'); + } +} diff --git a/src/app/Magic/Controllers/CubistMagicController.php b/src/app/Magic/Controllers/CubistMagicController.php index 110a75e..e880e1e 100644 --- a/src/app/Magic/Controllers/CubistMagicController.php +++ b/src/app/Magic/Controllers/CubistMagicController.php @@ -11,6 +11,7 @@ use Cubist\Backpack\app\Magic\Models\CubistMagicAbstractModel; use Cubist\Backpack\app\Magic\Requests\CubistMagicRequest; use Cubist\Backpack\app\Magic\Requests\CubistMagicStoreRequest; use Cubist\Backpack\app\Magic\Requests\CubistMagicUpdateRequest; +use Cubist\Backpack\CubistBackpackServiceProvider; use Gaspertrix\Backpack\DropzoneField\Traits\HandleAjaxMedia; use Illuminate\Support\Arr; use Illuminate\Support\Facades\Cache; @@ -81,10 +82,13 @@ class CubistMagicController extends CubistCrudController $this->_postSetModel(); if ($this->_bulk) { $this->crud->enableBulkActions(); + $this->crud->addButton('bottom', 'bulk_publish', 'view', CubistBackpackServiceProvider::NAMESPACE . '::buttons.bulk_publish', 'begining'); + $this->crud->addButton('bottom', 'bulk_offline', 'view', CubistBackpackServiceProvider::NAMESPACE . '::buttons.bulk_offline', 'begining'); if ($this->_clonable) { $this->crud->addButton('bottom', 'bulk_clone', 'view', 'crud::buttons.bulk_clone', 'beginning'); } $this->crud->addBulkDeleteButton(); + } $this->crud->setRoute(config('backpack.base.route_prefix') . '/' . $this->_routeURL); $this->crud->setEntityNameStrings($this->_singular, $this->_plural); @@ -248,6 +252,31 @@ class CubistMagicController extends CubistCrudController return parent::create(); } + protected function _bulkChangeOnlineStatus($status) + { + $this->crud->hasAccessOrFail('update'); + + $entries = $this->request->input('entries'); + foreach ($entries as $key => $id) { + if ($entry = $this->crud->model->find($id)) { + /** @var $entry CubistMagicAbstractModel */ + $entry->setAttribute('status', $status); + } + } + + return $entries; + } + + public function bulkPublish() + { + return $this->_bulkChangeOnlineStatus(true); + } + + public function bulkOffline() + { + return $this->_bulkChangeOnlineStatus(false); + } + public function saveReorder() { $this->_forgetCache(); diff --git a/src/app/Magic/Models/CubistMagicAbstractModel.php b/src/app/Magic/Models/CubistMagicAbstractModel.php index 74f4ed7..d59e88a 100644 --- a/src/app/Magic/Models/CubistMagicAbstractModel.php +++ b/src/app/Magic/Models/CubistMagicAbstractModel.php @@ -171,6 +171,7 @@ class CubistMagicAbstractModel extends Model implements HasMedia return Str::slug(implode('-', $slug)); } } + return Str::slug($this->getAttribute('id')); } public function getOption($key, $default = null) diff --git a/src/resources/cubistmagic/routes.stub b/src/resources/cubistmagic/routes.stub index f9bac56..b6008f6 100644 --- a/src/resources/cubistmagic/routes.stub +++ b/src/resources/cubistmagic/routes.stub @@ -5,4 +5,4 @@ Route::group([ 'namespace' => 'App\Http\Controllers\Admin', ], function () { // custom admin routes _CUSTOM_ -}); // this should be the absolute last line of this file +}); diff --git a/src/resources/views/buttons/bulk_offline.blade.php b/src/resources/views/buttons/bulk_offline.blade.php new file mode 100644 index 0000000..5393c41 --- /dev/null +++ b/src/resources/views/buttons/bulk_offline.blade.php @@ -0,0 +1,58 @@ +@if ($crud->hasAccess('update') && $crud->bulk_actions) + Put offline +@endif + +@push('after_scripts') + +@endpush diff --git a/src/resources/views/buttons/bulk_publish.blade.php b/src/resources/views/buttons/bulk_publish.blade.php new file mode 100644 index 0000000..911d8ea --- /dev/null +++ b/src/resources/views/buttons/bulk_publish.blade.php @@ -0,0 +1,58 @@ +@if ($crud->hasAccess('update') && $crud->bulk_actions) + Publish +@endif + +@push('after_scripts') + +@endpush