]> _ Git - cubist_cms-back.git/commitdiff
#2843
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 20 Jun 2019 14:59:43 +0000 (16:59 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 20 Jun 2019 14:59:43 +0000 (16:59 +0200)
src/app/Magic/Fields/CMSTemplate.php [new file with mode: 0644]
src/app/Magic/Models/CMSPage.php
src/app/Template/TemplateAbstract.php

diff --git a/src/app/Magic/Fields/CMSTemplate.php b/src/app/Magic/Fields/CMSTemplate.php
new file mode 100644 (file)
index 0000000..65d5bb2
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+
+
+namespace Cubist\Backpack\app\Magic\Fields;
+
+
+use Cubist\Backpack\app\Template\TemplateAbstract;
+use Illuminate\Support\Str;
+
+class CMSTemplate extends SelectFromArray
+{
+
+    protected function _postSetAttributes()
+    {
+        parent::_postSetAttributes();
+        $templates = TemplateAbstract::getTemplates();
+
+        $options = [];
+        foreach ($templates as $name => $template) {
+            if ($template->showInDropDown()) {
+                $options[Str::snake($name)] = $template->getName();
+            }
+        }
+        $this->setAttribute('options', $options);
+    }
+}
index dedf6ae69919d661cc98c17a1c4b00e7159a09e9..586e52d4acf2bde5168bb7c4143c08a52b9bcb3d 100644 (file)
@@ -20,9 +20,8 @@ class CMSPage extends CubistMagicModel
         parent::setFields();
 
         $this->addField(['name' => 'template',
-            'type' => 'SelectFromArray',
+            'type' => 'CMSTemplate',
             'label' => 'Template',
-            'options' => $this->getTemplates(),
             'column' => true,
             'tab' => 'Informations principales',
         ]);
@@ -82,6 +81,7 @@ class CMSPage extends CubistMagicModel
             'tab' => 'SEO // Meta',
             'store_in' => 'seo',
         ]);
+        
         $this->addFakeField([
             'name' => 'robots',
             'label' => __('Allow page index by search engines'),
@@ -92,24 +92,5 @@ class CMSPage extends CubistMagicModel
         ]);
     }
 
-    public function getTemplates($template_name = false)
-    {
-        if (null === self::$_templates) {
-            $templates_root = app_path() . '/Templates';
-            $dr = opendir($templates_root);
-            while ($file = readdir($dr)) {
-                if ($file == '.' || $file == '..' || is_dir($templates_root . '/' . $file)) {
-                    continue;
-                }
-                $e = explode('.', $file);
-                $classname = '\\App\\Templates\\' . $e[0];
-                self::$_templates[] = new $classname();
-            }
-
-            if (!count(self::$_templates)) {
-                abort(503, trans('backpack::pagemanager.template_not_found'));
-            }
-        }
-        return self::$_templates;
-    }
+
 }
index dc3f15d8862bbe960e52081f1d9a887361e59bb4..ddb83eabed08917f2d4ddb172d0e87950e9de85a 100644 (file)
@@ -9,6 +9,11 @@ class TemplateAbstract
 {
     use BunchOfFields;
 
+    /**
+     * @var TemplateAbstract[]
+     */
+    protected static $_templates = null;
+
     protected function _seo()
     {
         $this->addField([
@@ -70,4 +75,34 @@ class TemplateAbstract
 
         return Str::slug($class);
     }
+
+    public function getDescription()
+    {
+        return '';
+    }
+
+    /**
+     * @param bool $template_name
+     * @return TemplateAbstract[]
+     */
+    public static function getTemplates()
+    {
+        if (null === self::$_templates) {
+            $templates_root = app_path() . '/Templates';
+            $dr = opendir($templates_root);
+            while ($file = readdir($dr)) {
+                if ($file == '.' || $file == '..' || is_dir($templates_root . '/' . $file)) {
+                    continue;
+                }
+                $e = explode('.', $file);
+                $classname = '\\App\\Templates\\' . $e[0];
+                self::$_templates[$e[0]] = new $classname();
+            }
+
+            if (!count(self::$_templates)) {
+                abort(503, trans('backpack::pagemanager.template_not_found'));
+            }
+        }
+        return self::$_templates;
+    }
 }