From 3e8bf0e91518dc941fe6710b15c603af2c91d4ee Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Fri, 31 May 2019 14:51:12 +0200 Subject: [PATCH] #2783 --- ...er.php => CubistMagicNestedController.php} | 2 +- .../Magic/Models/CubistMagicAbstractModel.php | 39 +++++++++++++------ .../Magic/Models/CubistMagicNestedModel.php | 24 +++++++++++- 3 files changed, 51 insertions(+), 14 deletions(-) rename src/app/Magic/Controllers/{CubistNestedMagicController.php => CubistMagicNestedController.php} (86%) diff --git a/src/app/Magic/Controllers/CubistNestedMagicController.php b/src/app/Magic/Controllers/CubistMagicNestedController.php similarity index 86% rename from src/app/Magic/Controllers/CubistNestedMagicController.php rename to src/app/Magic/Controllers/CubistMagicNestedController.php index b2e86ab..54ee64a 100644 --- a/src/app/Magic/Controllers/CubistNestedMagicController.php +++ b/src/app/Magic/Controllers/CubistMagicNestedController.php @@ -6,7 +6,7 @@ namespace Cubist\Backpack\app\Magic\Controllers; use Backpack\CRUD\CrudTrait; use Webfactor\Laravel\Backpack\NestedModels\Controllers\NestedModelsCrudController; -class CubistNestedMagicController extends NestedModelsCrudController +class CubistMagicNestedController extends NestedModelsCrudController { use CrudTrait, CubistMagicControllerTrait; diff --git a/src/app/Magic/Models/CubistMagicAbstractModel.php b/src/app/Magic/Models/CubistMagicAbstractModel.php index a828648..fd8a043 100644 --- a/src/app/Magic/Models/CubistMagicAbstractModel.php +++ b/src/app/Magic/Models/CubistMagicAbstractModel.php @@ -10,6 +10,7 @@ use Backpack\CRUD\ModelTraits\SpatieTranslatable\Sluggable; use Backpack\CRUD\ModelTraits\SpatieTranslatable\SluggableScopeHelpers; use Backpack\CRUD\ModelTraits\SpatieTranslatable\HasTranslations; use Doctrine\DBAL\Schema\Schema; +use Doctrine\DBAL\Schema\Table; use Illuminate\Database\Eloquent\Model; use Illuminate\Support\Str; @@ -25,7 +26,6 @@ class CubistMagicAbstractModel extends Model protected static $_doctrineTypesMapping = ['int' => 'integer']; - protected $nested = false; protected $primaryKey = 'id'; public $timestamps = true; @@ -52,6 +52,7 @@ class CubistMagicAbstractModel extends Model public function __construct(array $attributes = []) { $this->setFields(); + $this->afterSetFields(); $this->bootIfNotBooted(); $this->initializeTraits(); $this->syncOriginal(); @@ -63,6 +64,20 @@ class CubistMagicAbstractModel extends Model } + + public function afterSetFields() + { + if (!isset($this->_fields['slug'])) { + $this->addField(['name' => 'slug', + 'type' => 'Slug', + 'label' => 'Slug', + 'translatable' => true, + 'hidden' => true, + 'fillable' => false]); + } + } + + public function getFields() { return $this->_fields; @@ -141,6 +156,14 @@ class CubistMagicAbstractModel extends Model return $this->getStudlyName() . 'CrudController'; } + /** + * @return string + */ + protected function _getBaseController() + { + return 'CubistMagicController'; + } + protected function _replaceInCode($stub, $dest) { $vars = ['CONTROLLERCLASS' => $this->getControllerClass(), @@ -148,7 +171,7 @@ class CubistMagicAbstractModel extends Model 'SINGULAR' => $this->getOption('singular', $this->getOption('name')), 'PLURAL' => $this->getOption('plural', ''), 'MODELNAMESPACE' => get_class($this), - 'EXTENDS' => $this->nested ? 'CubistNestedMagicController' : 'CubistMagicController', + 'EXTENDS' => $this->_getBaseController(), ]; $res = file_get_contents($stub); @@ -170,6 +193,7 @@ class CubistMagicAbstractModel extends Model /** * @param $schema Schema + * @return Table */ public function setSchema($schema) { @@ -186,22 +210,13 @@ class CubistMagicAbstractModel extends Model $field->defineDbColumn($table); } - if ($this->nested) { - $table->addColumn('parent_id', 'integer', ['unsigned' => true, 'notnull' => false]); - $table->addIndex(['parent_id']); - $table->addColumn('lft', 'integer', ['unsigned' => true, 'default' => 0]); - $table->addIndex(['lft']); - $table->addColumn('rgt', 'integer', ['unsigned' => true, 'default' => 0]); - $table->addIndex(['rgt']); - $table->addColumn('depth', 'integer', ['unsigned' => true, 'default' => 0]); - } - if ($this->timestamps) { $options = ['notnull' => false]; $table->addColumn(static::CREATED_AT, 'date', $options); $table->addColumn(static::UPDATED_AT, 'date', $options); $table->addColumn('deleted_at', 'date', $options); } + return $table; } public function replicate(array $except = null) diff --git a/src/app/Magic/Models/CubistMagicNestedModel.php b/src/app/Magic/Models/CubistMagicNestedModel.php index 0f6902b..cb23bce 100644 --- a/src/app/Magic/Models/CubistMagicNestedModel.php +++ b/src/app/Magic/Models/CubistMagicNestedModel.php @@ -3,7 +3,6 @@ namespace Cubist\Backpack\app\Magic\Models; - use Webfactor\Laravel\Backpack\NestedModels\Traits\NestedModelTrait; class CubistMagicNestedModel extends CubistMagicModel @@ -17,4 +16,27 @@ class CubistMagicNestedModel extends CubistMagicModel $this->replicateNodeTrait($except); $this->replicateSluggable($except); } + + public function setSchema($schema) + { + $table = parent::setSchema($schema); + + $table->addColumn('parent_id', 'integer', ['unsigned' => true, 'notnull' => false]); + $table->addIndex(['parent_id']); + $table->addColumn('lft', 'integer', ['unsigned' => true, 'default' => 0]); + $table->addIndex(['lft']); + $table->addColumn('rgt', 'integer', ['unsigned' => true, 'default' => 0]); + $table->addIndex(['rgt']); + $table->addColumn('depth', 'integer', ['unsigned' => true, 'default' => 0]); + + return $table; + } + + /** + * @return string + */ + protected function _getBaseController(){ + return 'CubistMagicController'; + } + } -- 2.39.5