From f1059b17c5cf8a2cff31ba8810ce35cc351e8053 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 2 Jul 2019 21:00:17 +0200 Subject: [PATCH] #2843 --- src/app/Magic/Models/CMSPage.php | 6 +++++ .../Magic/Models/CubistMagicAbstractModel.php | 18 ++++++------- .../Magic/Models/CubistMagicNestedModel.php | 27 +++++++++++++++++++ 3 files changed, 42 insertions(+), 9 deletions(-) diff --git a/src/app/Magic/Models/CMSPage.php b/src/app/Magic/Models/CMSPage.php index 84b89b5..15df6c8 100644 --- a/src/app/Magic/Models/CMSPage.php +++ b/src/app/Magic/Models/CMSPage.php @@ -43,6 +43,12 @@ class CMSPage extends CubistMagicNestedModel 'tab' => 'Informations principales', ]); + $this->addField(['name' => 'slug', + 'label' => 'Slug (URL)', + 'type' => 'Slug', + 'tab' => 'Informations principales', + ]); + $this->_common(); } diff --git a/src/app/Magic/Models/CubistMagicAbstractModel.php b/src/app/Magic/Models/CubistMagicAbstractModel.php index a80efbe..876f0ab 100644 --- a/src/app/Magic/Models/CubistMagicAbstractModel.php +++ b/src/app/Magic/Models/CubistMagicAbstractModel.php @@ -9,9 +9,9 @@ use Cubist\Backpack\app\Magic\Controllers\CubistMagicController; use Cubist\Backpack\app\Magic\Fields\Field; use Cubist\Backpack\app\Magic\Requests\CubistMagicUpdateRequest; use Cubist\Backpack\app\Magic\Util; -use Backpack\CRUD\ModelTraits\SpatieTranslatable\HasTranslations; use Backpack\CRUD\ModelTraits\SpatieTranslatable\Sluggable; use Backpack\CRUD\ModelTraits\SpatieTranslatable\SluggableScopeHelpers; +use Backpack\CRUD\ModelTraits\SpatieTranslatable\HasTranslations; use Cubist\Util\Json; use Doctrine\DBAL\Schema\Schema; use Doctrine\DBAL\Schema\Table; @@ -25,9 +25,7 @@ use Venturecraft\Revisionable\RevisionableTrait; class CubistMagicAbstractModel extends Model implements HasMedia { use CrudTrait; - use Sluggable { - replicate as protected replicateSluggable; - } + use Sluggable; use SluggableScopeHelpers; use HasTranslations { update as protected updateTranslations; @@ -343,11 +341,6 @@ class CubistMagicAbstractModel extends Model implements HasMedia $table->addColumn('deleted_at', 'datetime', $options); } - public function replicate(array $except = null) - { - return $this->replicateSluggable($except); - } - public function __call($method, $parameters) { @@ -464,6 +457,13 @@ class CubistMagicAbstractModel extends Model implements HasMedia return $this->createTranslations($attributes); } + public function getSlugAttribute($value){ + if(!$value){ + return Str::slug($this->title); + } + return $value; + } + /** * @param $controller CubistMagicController */ diff --git a/src/app/Magic/Models/CubistMagicNestedModel.php b/src/app/Magic/Models/CubistMagicNestedModel.php index 56eeb3c..1110ce0 100644 --- a/src/app/Magic/Models/CubistMagicNestedModel.php +++ b/src/app/Magic/Models/CubistMagicNestedModel.php @@ -27,4 +27,31 @@ class CubistMagicNestedModel extends CubistMagicModel { return 'CubistMagicNestedController'; } + + + public static function getTree() + { + $all = self::orderBy('lft')->get(); + $res = []; + self::_appendToTree($res, null, $all); + + return $res; + } + + /** + * @param array $tree + * @param $id + * @param self[] $all + */ + public static function _appendToTree(&$tree, $id, $all) + { + foreach ($all as $e) { + if ($e->parent_id != $id) { + continue; + } + $item = ['element' => $e, 'children' => []]; + self::_appendToTree($item['children'], $e->id, $all); + $tree[$e->name] = $item; + } + } } -- 2.39.5