+++ /dev/null
-<?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');
- }
-
-}
--- /dev/null
+<?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']);
+ }
+
+}
--- /dev/null
+<?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);
+ }
+ }
+ }
+
+}