]> _ Git - cubist_cms-back.git/commitdiff
#2783
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 24 May 2019 15:53:18 +0000 (17:53 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 24 May 2019 15:53:18 +0000 (17:53 +0200)
src/app/Magic/Controllers/CubistMagicController.php
src/app/Magic/CubistCrud.php [deleted file]
src/app/Magic/Models/CubistMagicModelAbstract.php
src/resources/cubistmagic/Controller.stub

index eec4f44ac837520ee3de582d88c51422e377fbd8..4d2d2df15fa9937a80c1b41064663a953c6ec1fd 100644 (file)
@@ -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 (file)
index 86fa8ce..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<?php
-
-
-namespace Cubist\Backpack\app\Magic;
-
-use Backpack\CRUD\CrudTrait;
-use Cubist\Backpack\app\Magic\Fields\Field;
-
-trait CubistCrud
-{
-    use CrudTrait;
-
-    /**
-     * @param $field Field|array
-     * @throws \Exception
-     */
-    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());
-    }
-}
index a0125162035da2da78851f894c2a5700ee4271bc..391159a26496aed73879a3abbb461ab6679b9af2 100644 (file)
@@ -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'));
index 06a1ff4e697d9f01106d173ea1fa36d53f3dfe12..8d405832121870efa48345cb92951bedf4675489 100644 (file)
@@ -10,5 +10,4 @@ class _CONTROLLERCLASS_ extends CubistMagicController
     protected $_routeURL = '_ROUTEURL_';
     protected $_singular = '_SINGULAR_';
     protected $_plural = '_PLURAL_';
-    protected $_fields = _FIELDS_;
 }