]> _ Git - pmi.git/commitdiff
wip #3520 @3
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 26 Mar 2020 09:08:47 +0000 (10:08 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 26 Mar 2020 09:08:47 +0000 (10:08 +0100)
app/Templates/Catalog.php [deleted file]
app/Templates/Category.php [new file with mode: 0644]
app/Templates/CategoryGroup.php [new file with mode: 0644]
resources/views/pages/category_group.blade.php [new file with mode: 0644]

diff --git a/app/Templates/Catalog.php b/app/Templates/Catalog.php
deleted file mode 100644 (file)
index d5bfa45..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-<?php
-
-
-namespace App\Templates;
-
-use App\Models\Product;
-use App\Models\ProductType;
-use Cubist\Backpack\app\Magic\Menu\PageItem;
-use Cubist\Backpack\app\Magic\Menu\VirtualItem;
-use Cubist\Backpack\app\Template\TemplateAbstract;
-use Barryvdh\Debugbar\Facade as Debugbar;
-
-class Catalog extends TemplateAbstract
-{
-    protected $_virtual = true;
-
-    public function getName()
-    {
-        return 'Catalogue de produits';
-    }
-
-    public function setMenuChildren($menu)
-    {
-        Debugbar::startMeasure('nav_catalog', 'Make Products sub navigation');
-        parent::setMenuChildren($menu);
-
-        $families = ['captor' => __('Capteurs'), 'system' => __('Systèmes de mesure')];
-
-        Debugbar::startMeasure('nav_catalog_models', 'Request catalog models');
-        Debugbar::startMeasure('nav_catalog_models_types', 'Request catalog models (types)');
-        $productTypes = ProductType::whereVariant($menu->getVariant())->get();
-        Debugbar::stopMeasure('nav_catalog_models_types');
-        Debugbar::startMeasure('nav_catalog_models_products', 'Request catalog models (products)');
-        $products = Product::whereVariant($menu->getVariant())->get();
-        Debugbar::stopMeasure('nav_catalog_models_products');
-        Debugbar::stopMeasure('nav_catalog_models');
-
-        $menu->setType('mega');
-
-        foreach ($families as $key => $family) {
-            $item = new VirtualItem();
-            $item->setId('products_' . $key);
-            $item->setTitle($family);
-            $menu->addChild($item);
-            foreach ($productTypes as $productType) {
-                if ($productType->type !== $key) {
-                    continue;
-                }
-
-                $category = new PageItem();
-                $category->setVariant($menu->getVariant());
-                $category->setLocale($menu->getLocale());
-                $category->initFromEntity($productType);
-                $category->setTitle($productType->name);
-                $category->setHref($productType->getSlugOrTitleAttribute());
-                $category->setId('product_type/' . $productType->id);
-                $category->setController(['controller' => 'ProductController', 'action' => 'productList', 'params' => ['id' => $productType->id]]);
-                $category->showInAllMenus();
-
-                $count = 0;
-                foreach ($products as $product) {
-                    if ($product->product_type != $productType->id) {
-                        continue;
-                    }
-                    if (!$product->online) {
-                        continue;
-                    }
-                    $detail = new PageItem();
-                    $detail->setLocale($menu->getLocale());
-                    $detail->setVariant($menu->getVariant());
-                    $detail->initFromEntity($product);
-                    $detail->setTitle($product->name);
-                    $detail->setHref($product->getSlugOrTitleAttribute());
-                    $detail->setId('product/' . $product->id);
-                    $detail->setController(['controller' => 'ProductController', 'action' => 'productDetails', 'params' => ['id' => $product->id]]);
-                    $detail->hideInAllMenus();
-                    $category->addChild($detail);
-                    $count++;
-                }
-
-                if ($count) {
-                    $item->addChild($category);
-                }
-            }
-        }
-        Debugbar::stopMeasure('nav_catalog');
-    }
-
-}
diff --git a/app/Templates/Category.php b/app/Templates/Category.php
new file mode 100644 (file)
index 0000000..ee72dee
--- /dev/null
@@ -0,0 +1,27 @@
+<?php
+
+
+namespace App\Templates;
+
+use App\Models\ProductType;
+use Cubist\Backpack\app\Template\FirstRedirection;
+
+class Category extends FirstRedirection
+{
+    public function getName()
+    {
+        return 'Catégories';
+    }
+
+    public function init()
+    {
+        parent::init();
+
+        $this->addField(['name' => 'category',
+            'type' => 'SelectFromModel',
+            'optionsmodel' => ProductType::class,
+            'label' => 'Categorie',
+            'tab' => 'Catégorie']);
+    }
+
+}
diff --git a/app/Templates/CategoryGroup.php b/app/Templates/CategoryGroup.php
new file mode 100644 (file)
index 0000000..ff56872
--- /dev/null
@@ -0,0 +1,84 @@
+<?php
+
+
+namespace App\Templates;
+
+
+use App\Models\Product;
+use App\Models\ProductType;
+use Cubist\Backpack\app\Magic\Menu\PageItem;
+use Cubist\Backpack\app\Template\FirstRedirection;
+
+class CategoryGroup extends FirstRedirection
+{
+    public function getName()
+    {
+        return 'Groupe de catégories';
+    }
+
+    public function init()
+    {
+        parent::init();
+
+        $this->addField(['name' => 'categories',
+            'type' => 'SelectFromModel',
+            'optionsmodel' => ProductType::class,
+            'label' => 'Categories',
+            'tab' => 'Catégories',
+            'allows_multiple' => true,
+            'order' => true]);
+    }
+
+    public function setMenuChildren($menu)
+    {
+        $menu->setType('mega');
+
+        $productTypes = ProductType::whereVariant($menu->getVariant())->get();
+        $products = Product::whereVariant($menu->getVariant())->get();
+
+        $categories = $menu->getPageData()->get('categories');
+        if (null === $categories || !$categories) {
+            return;
+        }
+        foreach ($productTypes as $productType) {
+            if (!in_array($productType->id, $categories)) {
+                continue;
+            }
+            $category = new PageItem();
+            $category->setVariant($menu->getVariant());
+            $category->setLocale($menu->getLocale());
+            $category->initFromEntity($productType);
+            $category->setTitle($productType->name);
+            $category->setHref($productType->getSlugOrTitleAttribute());
+            $category->setId('product_type/' . $productType->id);
+            $category->setController(['controller' => 'ProductController', 'action' => 'productList', 'params' => ['id' => $productType->id]]);
+            $category->showInAllMenus();
+
+            $count = 0;
+            foreach ($products as $product) {
+                if ($product->product_type != $productType->id) {
+                    continue;
+                }
+                if (!$product->online) {
+                    continue;
+                }
+                $detail = new PageItem();
+                $detail->setLocale($menu->getLocale());
+                $detail->setVariant($menu->getVariant());
+                $detail->initFromEntity($product);
+                $detail->setTitle($product->name);
+                $detail->setHref($product->getSlugOrTitleAttribute());
+                $detail->setId('product/' . $product->id);
+                $detail->setController(['controller' => 'ProductController', 'action' => 'productDetails', 'params' => ['id' => $product->id]]);
+                $detail->hideInAllMenus();
+                $category->addChild($detail);
+                $count++;
+            }
+
+            if ($count) {
+                $menu->addChild($category);
+            }
+        }
+    }
+
+}
diff --git a/resources/views/pages/category_group.blade.php b/resources/views/pages/category_group.blade.php
new file mode 100644 (file)
index 0000000..b3d9bbc
--- /dev/null
@@ -0,0 +1 @@
+<?php