]> _ Git - cubist_cms-back.git/commitdiff
wip #3318 @3
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 9 Jan 2020 15:53:15 +0000 (16:53 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 9 Jan 2020 15:53:15 +0000 (16:53 +0100)
src/app/Http/Controllers/CubistPageController.php
src/app/Magic/Menu/Item.php
src/app/Magic/Models/CMSPage.php
src/app/Magic/Models/CubistMagicAbstractModel.php
src/app/Magic/QueryBuilder.php [new file with mode: 0644]

index ba1999fd2d1100bfbd80ac11c980cf93531d613e..6c79881faaf3697e3a3a7f2e10d62aa655d1f9cc 100644 (file)
@@ -16,7 +16,7 @@ class CubistPageController extends CubistFrontController
     {
         $class = CMSPage::getPageClass();
         /** @var CMSPage $page */
-        $page = $class::findBySlug($slug);
+        $page = Menu::getNavigation()->findOneBy('slug', $slug)->getEntity();
 
         if (!$page) {
             $this->_404();
index 44caab324713d30f98b349416b4973ac97e0a78c..6be2db139da407a89e17aedfc6de7b28921c1057 100644 (file)
@@ -126,11 +126,8 @@ class Item
     {
         $class = CMSPage::getPageClass();
         /** @var $all CMSPage[] */
-        $r = $class::orderBy('lft');
-        if (App::hasVariant()) {
-            $r->whereRaw('variant IS NULL OR JSON_CONTAINS(variant, \'["' . App::getVariant() . '"]\')');
-        }
-        $all = $r->get();
+        /** @var Eloquent $r */
+        $all = $class::whereVariant($this->getVariant())->orderBy('lft')->get();
 
         $this->setId('#root');
         $this->setRoot($this);
index 77d4578863587bcffe0cd8c947f6e9e62e1cb887..4017a4f962eed1911d83f9110d4100c0a31a3606 100644 (file)
@@ -5,6 +5,7 @@ namespace Cubist\Backpack\app\Magic\Models;
 
 use Cubist\Backpack\app\Magic\Controllers\CubistMagicController;
 use Cubist\Backpack\app\Template\TemplateAbstract;
+use Cubist\Backpack\Facades\App;
 use Cubist\Util\Json;
 use Doctrine\DBAL\Schema\Schema;
 use Doctrine\DBAL\Schema\Table;
@@ -16,7 +17,7 @@ class CMSPage extends CubistMagicNestedModel
     protected $_usedTemplate = null;
 
     protected static $_templatesById = null;
-    protected static $_pagesList = null;
+    protected static $_pagesList = [];
 
     protected static $_table = 'cubist_cms_pages';
     protected $table = 'cubist_cms_pages';
@@ -220,16 +221,23 @@ class CMSPage extends CubistMagicNestedModel
         return $res;
     }
 
-    public static function getPagesList()
+    public static function getPagesList($variant = null)
     {
-        if (null === static::$_pagesList) {
+        if (null === $variant) {
+            $variant = App::getVariant();
+        }
+        if (!isset(static::$_pagesList[$variant])) {
             try {
-                static::$_pagesList = DB::table(self::$_table)->orderBy('lft')->get()->pluck('name', 'id');
+                $r = DB::table(self::$_table)->orderBy('lft');
+                if (App::hasVariant()) {
+                    $r->whereRaw('variant IS NULL OR JSON_CONTAINS(variant, \'["' . $variant . '"]\')');
+                }
+                static::$_pagesList[$variant] = $r->get()->pluck('name', 'id');
             } catch (Exception $e) {
-                static::$_pagesList = [];
+                static::$_pagesList[$variant] = [];
             }
         }
-        return static::$_pagesList;
+        return static::$_pagesList[$variant];
     }
 
     protected function _prepareData($attributes)
index 70fca65373d15b7184f386cbe1efdb0832d127e9..c671c9bc62a01dce6046135071ebe2b07afc984c 100644 (file)
@@ -8,11 +8,14 @@ use Cubist\Backpack\app\Magic\Controllers\CubistMagicController;
 use Cubist\Backpack\app\Magic\EntityData;
 use Cubist\Backpack\app\Magic\Fields\Field;
 use Cubist\Backpack\app\Magic\PageData;
+use Cubist\Backpack\app\Magic\QueryBuilder;
 use Cubist\Backpack\app\Magic\Requests\CubistMagicUpdateRequest;
 use Cubist\Backpack\app\Magic\Util;
+use Cubist\Backpack\Facades\App;
 use Cubist\Util\Json;
 use Doctrine\DBAL\Schema\Schema;
 use Doctrine\DBAL\Schema\Table;
+use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Support\Str;
 use Spatie\MediaLibrary\HasMedia\HasMedia;
@@ -602,4 +605,13 @@ class CubistMagicAbstractModel extends Model implements HasMedia
 
         return $new;
     }
+
+    /**
+     * @param \Illuminate\Database\Query\Builder $query
+     * @return QueryBuilder|Builder|Model
+     */
+    public function newEloquentBuilder($query)
+    {
+        return new QueryBuilder($query);
+    }
 }
diff --git a/src/app/Magic/QueryBuilder.php b/src/app/Magic/QueryBuilder.php
new file mode 100644 (file)
index 0000000..ea6c0b5
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+
+namespace Cubist\Backpack\app\Magic;
+
+use Cubist\Backpack\Facades\App;
+use Illuminate\Database\Eloquent\Builder;
+
+class QueryBuilder extends Builder
+{
+    public function whereVariant($variant = null)
+    {
+        if (null === $variant) {
+            $variant = App::getVariant();
+        }
+        if (App::hasVariant()) {
+            return $this->whereRaw('variant IS NULL OR JSON_CONTAINS(variant, \'["' . $variant . '"]\')');
+        }
+        return $this;
+    }
+}