From: Vincent Vanwaelscappel Date: Fri, 24 May 2019 15:53:18 +0000 (+0200) Subject: #2783 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=15d94af8b0ace191de72429d3f5ca384ce8ccc31;p=cubist_cms-back.git #2783 --- diff --git a/src/app/Magic/Controllers/CubistMagicController.php b/src/app/Magic/Controllers/CubistMagicController.php index eec4f44..4d2d2df 100644 --- a/src/app/Magic/Controllers/CubistMagicController.php +++ b/src/app/Magic/Controllers/CubistMagicController.php @@ -4,20 +4,20 @@ namespace Cubist\Backpack\app\Magic\Controllers; use Backpack\CRUD\app\Http\Controllers\CrudController; -use Cubist\Backpack\app\Magic\CubistCrud; +use Backpack\CRUD\CrudTrait; +use Cubist\Backpack\app\Magic\Fields\Field; use Cubist\Backpack\app\Magic\Models\CubistMagicModelAbstract; use Cubist\Backpack\app\Magic\Requests\CubistMagicStoreRequest; use Cubist\Backpack\app\Magic\Requests\CubistMagicUpdateRequest; class CubistMagicController extends CrudController { - use CubistCrud; + use CrudTrait; protected $_modelNamespace; protected $_routeURL; protected $_singular; protected $_plural; - protected $_fields = []; protected $_storeRequest; protected $_updateRequest; @@ -46,13 +46,24 @@ class CubistMagicController extends CrudController | CrudPanel Configuration |-------------------------------------------------------------------------- */ - - foreach ($this->_fields as $field) { + foreach ($this->getModelInstance()->getFields() as $field) { $this->addField($field); } } + public function addField($field) + { + if (is_array($field)) { + $field = Field::getInstance($field); + } + /** @var $field Field */ + if ($field->isDisplayColumn()) { + $this->crud->addColumn($field->getColumnData()); + } + $this->crud->addField($field->getDefinition(), $field->getCRUDForm()); + } + /** * @return CubistMagicModelAbstract */ diff --git a/src/app/Magic/CubistCrud.php b/src/app/Magic/CubistCrud.php deleted file mode 100644 index 86fa8ce..0000000 --- a/src/app/Magic/CubistCrud.php +++ /dev/null @@ -1,28 +0,0 @@ -isDisplayColumn()) { - $this->crud->addColumn($field->getColumnData()); - } - $this->crud->addField($field->getDefinition(), $field->getCRUDForm()); - } -} diff --git a/src/app/Magic/Models/CubistMagicModelAbstract.php b/src/app/Magic/Models/CubistMagicModelAbstract.php index a012516..391159a 100644 --- a/src/app/Magic/Models/CubistMagicModelAbstract.php +++ b/src/app/Magic/Models/CubistMagicModelAbstract.php @@ -33,6 +33,8 @@ class CubistMagicModelAbstract extends Model public $timestamps = true; + protected $_slugFields = ['slug', 'title', 'name']; + public function __construct(array $attributes = []) { $this->setFields(); @@ -51,11 +53,22 @@ class CubistMagicModelAbstract extends Model { return [ 'slug' => [ - 'source' => 'slug_or_name_or_title', + 'source' => 'slug_or_title', ], ]; } + // The slug is created automatically from the "title" field if no slug exists. + public function getSlugOrTitleAttribute() + { + + foreach ($this->_slugFields as $item) { + if (isset($this->$item) && $this->item != '') { + return $this->$item; + } + } + } + public function getOption($key, $default = null) { if (isset($this->_options[$key])) { @@ -107,8 +120,7 @@ class CubistMagicModelAbstract extends Model 'ROUTEURL' => $this->getOption('name'), 'SINGULAR' => $this->getOption('singular', $this->getOption('name')), 'PLURAL' => $this->getOption('plural', ''), - 'MODELNAMESPACE' => get_class($this), - 'FIELDS' => var_export($this->getFieldsDefinitions(), true) + 'MODELNAMESPACE' => get_class($this) ]; $res = file_get_contents($stub); @@ -123,16 +135,6 @@ class CubistMagicModelAbstract extends Model file_put_contents($dest, $res); } - public function getFieldsDefinitions() - { - $res = []; - foreach ($this->_fields as $name => $field) { - $res[] = $field->getDefinition(); - } - return $res; - } - - public function getStudlyName() { return Str::studly($this->getOption('name')); diff --git a/src/resources/cubistmagic/Controller.stub b/src/resources/cubistmagic/Controller.stub index 06a1ff4..8d40583 100644 --- a/src/resources/cubistmagic/Controller.stub +++ b/src/resources/cubistmagic/Controller.stub @@ -10,5 +10,4 @@ class _CONTROLLERCLASS_ extends CubistMagicController protected $_routeURL = '_ROUTEURL_'; protected $_singular = '_SINGULAR_'; protected $_plural = '_PLURAL_'; - protected $_fields = _FIELDS_; }