]> _ Git - pmi.git/commitdiff
wip #7118 @14
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 23 Oct 2024 16:57:49 +0000 (18:57 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Wed, 23 Oct 2024 16:57:49 +0000 (18:57 +0200)
.docker/dev/docker-compose.yml
.docker/dev/terminal.bat
.docker/dev/update
app/Http/Controllers/ProductController.php
app/Http/Kernel.php
app/Models/Product.php
app/Templates/Category.php
app/Templates/Products.php
resources/views/partials/header.blade.php

index b93fdb88b648cf280943b1b36be2a7c94bf10694..931089ba89d9c469ab0506596e40b2c2cac62cba 100644 (file)
@@ -107,18 +107,18 @@ services:
           - pmi-dev
         restart: unless-stopped
 
-#    elasticsearch:
-#        container_name: pmi-dev-elasticsearch
-#        build: './images/elasticsearch'
-#        volumes:
-#          - ./esdata:/usr/share/elasticsearch/data
-#        environment:
-#          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
-#          - discovery.type=single-node
-#          - xpack.security.enabled=false
-#        networks:
-#          - pmi-dev
-#        restart: unless-stopped
+    elasticsearch:
+        container_name: pmi-dev-elasticsearch
+        build: './images/elasticsearch'
+        volumes:
+          - ./esdata:/usr/share/elasticsearch/data
+        environment:
+          - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
+          - discovery.type=single-node
+          - xpack.security.enabled=false
+        networks:
+          - pmi-dev
+        restart: unless-stopped
 
 networks:
   pmi-dev:
index 972d0be01dd0a4cd51fb7b291cc0dcce63322c41..57b33ddb273cceb90e89ff05d20e0a9a47045c77 100644 (file)
@@ -1,3 +1,3 @@
 @echo off
 cls
-ssh -t root@godzilla.cubedesigners.com 'docker exec -it -u pmi-dev pmi-dev /bin/bash'
+ssh -t root@godzilla.cubedesigners.com 'chown root:root /docker/pmi-dev/config/sudoers;docker exec -it -u pmi-dev pmi-dev /bin/bash'
index 44a5e5331f29a6ee5871757afd0a94332f0e3c93..a2f22829cca52cc075488ca7cc19ab664626fe2d 100644 (file)
@@ -13,5 +13,6 @@ chmod -R 777 ./redis
 docker network create pmi
 COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker compose pull
 COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker compose build
-docker compose down
+docker compose down -v
+rm ./database/data/tc.log
 docker compose up -d
index 3527e3a55f2912e575adc6ad1654191e0baa39a1..f292388038da3cb43ee3bb134d60b0539e039729 100644 (file)
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
 
 use App\Models\Product;
 use App\Models\ProductType;
+use App\Templates\Products;
 use Cubist\Backpack\app\Http\Controllers\CubistFrontController;
 use Illuminate\Http\Request;
 
@@ -21,11 +22,8 @@ class ProductController extends CubistFrontController
         $this->data['title'] = $productType->name;
         $this->data['page'] = $this->data['product_type'] = $productType->getPageData();
 
-        $products = Product::with('media') // Eager load media to avoid N+1 query problem
-            ->whereVariant()
+        $products = Products::getProductsEloquent()->with('media') // Eager load media to avoid N+1 query problem
             ->where('product_type', $id)
-            ->where('online', 1)
-            ->where('public', 1)
             ->orderBy('reference')
             ->get();
 
index c08ad9d9326c14129e87f1e72d82c3badcf64183..5c0fcb3f2b3c1d599d05f9cea959aa1331209e79 100644 (file)
@@ -14,6 +14,7 @@ class Kernel extends HttpKernel
      * @var array
      */
     protected $middleware = [
+
         \App\Http\Middleware\CheckForMaintenanceMode::class,
         \Cubist\Backpack\app\Middleware\VariantSelector::class,
         \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
@@ -42,6 +43,7 @@ class Kernel extends HttpKernel
             \App\Http\Middleware\VerifyCsrfToken::class,
             \Illuminate\Routing\Middleware\SubstituteBindings::class,
             \Cubist\Backpack\app\Middleware\EmailObfuscate::class,
+            \Cubist\Backpack\app\Middleware\FrontControllerInit::class,
         ],
 
         'api' => [
index 090d3e71ddcea9a91e531790417644318ee4abf7..bc29048257fd6a649cb5bfab9774f6854672d813 100644 (file)
@@ -3,6 +3,8 @@
 namespace App\Models;
 
 use App\Http\Controllers\Admin\ProductBaseController;
+use App\Templates\Products;
+use Cubist\Backpack\app\Magic\Fields\SelectFromArray;
 use Cubist\Backpack\app\Magic\Menu\Menu;
 use Cubist\Backpack\app\Magic\Models\CubistMagicPageModel;
 use Cubist\Backpack\app\Magic\Util;
@@ -82,15 +84,17 @@ class Product extends CubistMagicPageModel
             'column' => true,
             'tab' => 'Spécifications']);
 
-        $this->addField(['name' => 'online',
-            'type' => 'Checkbox',
-            'label' => 'En ligne',
+        $this->addField(['name' => 'status',
+            'type' => SelectFromArray::class,
+            'label' => 'Status',
+            'options' => ['0' => 'Hors ligne', '1' => 'Publié'],
             'column' => true,
+            'allows_null' => false,
             'tab' => 'Informations génerales']);
 
         $this->addField(['name' => 'public',
             'type' => 'Checkbox',
-            'label' => 'Publique',
+            'label' => 'Affiché dans les listing produits',
             'column' => true,
             'tab' => 'Informations génerales']);
 
@@ -604,7 +608,8 @@ class Product extends CubistMagicPageModel
             return $res;
         }
 
-        $raw_products = Product::whereVariant()->where('product_type', $product_type)->where('online', 1)->where('public', 1)->get();
+
+        $raw_products = Products::getProductsEloquent()->where('product_type', $product_type)->get();
         $products = [];
         $allids = [];
         foreach ($raw_products as $idx => $raw_product) {
index 21ddbcd232b9ada1552f2165b84ad1d93fd4d10d..947feabfb68b10d1b431368aae482953abf96dfe 100644 (file)
@@ -62,10 +62,8 @@ class Category extends Base
         }
         $d['product_type'] = $productType->getPageData();
 
-        $d['products'] = Product::whereVariant()
+        $d['products'] = Products::getProductsEloquent()
             ->where('product_type', $cat)
-            ->where('online', 1)
-            ->where('public', 1)
             ->orderBy('reference')
             ->get();
 
index f9130fad80b2be4aea21565e29de1a9fc17b835b..e1cf42b1e417decafd843f280052d5794d913556 100644 (file)
@@ -12,6 +12,7 @@ use Cubist\Backpack\app\Magic\Menu\PageItem;
  * the Category template did this, but it was very inefficient and hard to
  * debug with some products being missed...)
 */
+
 class Products extends Base
 {
     protected $_virtual = true;
@@ -33,7 +34,7 @@ class Products extends Base
         $root = $menu->getRoot();
 
         \Barryvdh\Debugbar\Facade::startMeasure('set products nav');
-        $products = self::_getProducts($menu->getVariant(), $menu->getLocale());
+        $products = self::_getProducts($menu->getVariant(), $menu->getLocale(), backpack_user() !== null,true);
 
         $root = $menu->getRoot();
 
@@ -63,23 +64,37 @@ class Products extends Base
         \Barryvdh\Debugbar\Facade::stopMeasure('set products nav');
     }
 
+
+    public static function getProductsEloquent($includePrivate = false, $includeOffline = null, $variant = null)
+    {
+        $res = Product::whereVariant($variant);
+        if (null === $includeOffline) {
+            $includeOffline = backpack_user() !== null;
+        }
+
+        if (!$includeOffline) {
+            $res->where('status', 1);
+        }
+        if (!$includePrivate) {
+            $res->where('public', 1);
+        }
+        return $res;
+    }
+
     /**
      * @param $variant
      * @param $locale
      * @return Product[]
      */
-    public static function _getProducts($variant, $locale)
+    public static function _getProducts($variant, $locale, $includeOffline = false, $includePrivate = false)
     {
 
-        if (!isset(self::$_products[$variant])) {
-            self::$_products[$variant] = [];
-        }
-        if (!isset(self::$_products[$variant][$locale])) {
-            self::$_products[$variant][$locale] = Product::whereVariant($variant)
-                ->where('online', 1)
-                ->where('public', 1)
+        $key = $variant . '_' . $locale . '_' . $includeOffline . '_' . $includePrivate;
+
+        if (!isset(self::$_products[$key])) {
+            self::$_products[$key] = self::getProductsEloquent($includePrivate, $includeOffline, $variant)
                 ->get();
         }
-        return self::$_products[$variant][$locale];
+        return self::$_products[$key];
     }
 }
index d1bba2b87d18b65308ba25b731db2f5edbbbf3c4..dbbc8f45d14077f31b53fcdbf665c2f7c00bbb3b 100644 (file)
 
         </nav>
 
-        <pre style="display:none;">
-            @php( var_dump(CubistMenu::getNavigation()->getHrefByName('signin')) )
-        </pre>
-
         <ul class="account-header relative">
             <li class="{{ Route::currentRouteName() === "client" ? "active" : '' }}">
                 <a href="{{ Auth::guard('web-clients')->check() ? '#' : CubistMenu::getNavigation()->getHrefByName('signin') }}"