]> _ Git - pmi.git/commitdiff
wip #2881 @2
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 11 Jul 2019 13:00:01 +0000 (15:00 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 11 Jul 2019 13:00:01 +0000 (15:00 +0200)
app/Http/Controllers/ProductController.php
app/Templates/Catalog.php
resources/views/pages/product-detail.blade.php
resources/views/pages/products.blade.php

index 1efe0b0b73b1a8553669986d0b5b7801b6cf4ed0..60825cdba146d5730deff2ec5acff70b3a832567 100644 (file)
@@ -35,7 +35,7 @@ class ProductController extends CubistFrontController
             $this->_404();
         }
 
-        $this->data['title'] = $product->title;
+        $this->data['title'] = $product->name;
         $this->data['product'] = $product->getPageData();
 
         return view('pages.product-detail', $this->data);
index 02bc6bf60913ead62bf4325269f73c51a19a5f05..9ea5bfd017cd1483434ed3f4bd42658e0650efc2 100644 (file)
@@ -3,6 +3,7 @@
 
 namespace App\Templates;
 
+use App\Models\Product;
 use App\Models\ProductType;
 use Cubist\Backpack\app\Magic\Menu\Item;
 use Cubist\Backpack\app\Magic\Menu\VirtualItem;
@@ -24,6 +25,7 @@ class Catalog extends TemplateAbstract
         $families = ['captor' => __('Capteurs'), 'system' => __('Systèmes de mesure')];
 
         $productTypes = ProductType::all();
+        $products = Product::all();
         $menu->setType('mega');
 
         foreach ($families as $key => $family) {
@@ -35,12 +37,25 @@ class Catalog extends TemplateAbstract
                 if ($productType->type !== $key) {
                     continue;
                 }
+
                 $category = new Item();
                 $category->setTitle($productType->name);
                 $category->setHref($productType->slug);
                 $category->setId('product_type_' . $productType->id);
                 $category->setController(['controller' => 'ProductController', 'action' => 'productList', 'params' => ['id' => $productType->id]]);
                 $item->addChild($category);
+
+                foreach ($products as $product) {
+                    if ($product->product_type != $productType->id) {
+                        continue;
+                    }
+                    $detail = new Item();
+                    $detail->setTitle($product->name);
+                    $detail->setHref($product->slug);
+                    $detail->setId('product/' . $product->id);
+                    $detail->setController(['controller' => 'ProductController', 'action' => 'productDetails', 'params' => ['id' => $product->id]]);
+                    $category->addChild($detail);
+                }
             }
         }
     }
index a78eb0b550522f10cf3feef96671995bf84ad4aa..1866c10b1237df5a9ed0925904ff1e5c7b9bd4f4 100644 (file)
@@ -1,6 +1,7 @@
 @extends('layouts/app')
 
 @section('content')
+
     <content class="pt-1v">
         <text-block title-class="h1 text-6xl" title-tag="h1">
             <slot name="title">
 
         {{-- Product details --}}
         <div class="flex mb-2v sm:block">
-            @if($product->hasProductImage())
-                {{-- Product images --}}
-                <div class="product-detail-images-wrapper flex-grow" style="max-width: 348px">
-                    <div
-                        class="product-detail-images-main border-gray-100 border-4 pb-100p w-full bg-center bg-cover mb-3"
-                        style="background-image: url({{ $product->getMediaInField($product->images)->first()->getUrl() }});">
-                    </div>
 
-                    <grid cols="3" gap="sm">
-                        @foreach ($product->getMediaInField($product->images) as $image)
-                            <div
-                                class="product-detail-images-main border-gray-100 border-4 pb-100p w-full bg-center bg-cover"
-                                style="background-image: url({{ $image->getUrl() }});">
-                            </div>
-                        @endforeach
-                    </grid>
+            {{-- Product images --}}
+            <div class="product-detail-images-wrapper flex-grow" style="max-width: 348px">
+                <div
+                    class="product-detail-images-main border-gray-100 border-4 pb-100p w-full bg-center bg-cover mb-3"
+                    style="background-image: url({{ $product->getImageUrl('images') }});">
                 </div>
-            @endif
+
+                <grid cols="3" gap="sm">
+                    @foreach ($product->getImageURLList('images') as $key=>$url)
+                        @if ($key==0)
+                            continue;
+                        @endif
+                        <div
+                            class="product-detail-images-main border-gray-100 border-4 pb-100p w-full bg-center bg-cover"
+                            style="background-image: url({{ $url }});">
+                        </div>
+                    @endforeach
+                </grid>
+            </div>
+
 
             {{-- Product text --}}
             <text-block class="product-detail-text sm:mt-6">
                 {!! Markdown::parse($product->highlights) !!}
 
-                @if(count($product->getMediaInField($product->technical_sheet)))
-                    <p class="mt-4">
-                        <a href="{{$product->getMediaInField($product->technical_sheet)->first()->getUrl()}}">
-                            {{ __('Télécharger la fiche produit') }}
-                        </a>
-                    </p>
-                @endif
+                <p class="mt-4">
+                    <a href="{{$product->getMediaUrl('technical_sheet','#emtpy')}}">
+                        {{ __('Télécharger la fiche produit') }}
+                    </a>
+                </p>
 
                 <link-button href="#" class="align-middle">Ajouter à ma sélection</link-button>
 
                 </tab>
             @endif
 
-            @if ($product->hasDocuments())
+            @if ($product->getEntity()->hasDocuments())
                 <tab name="{{ __('Documents') }}">
                     <ul>
-                        @foreach($product->getDocuments() as $document)
+                        @foreach($product->getEntity()->getDocuments() as $document)
                             <li>
-                                <a href="{{$document['media']->getUrl()}}" target="_blank" class="flex items-center text-grey-dark hover:text-blue">
+                                <a href="{{$document['media']->getUrl()}}" target="_blank"
+                                   class="flex items-center text-grey-dark hover:text-blue">
                                     <img class="mr-4 mb-2"
                                          src="{{asset('images/product-details/icon-'.$document['type'].'.svg')}}"
                                          alt="">
index 679509012515bb6047adf2de4ce9c76c76bc5cfc..180ca9ab61ba72f153903b03317f0c921b15699b 100644 (file)
@@ -1,11 +1,6 @@
 @extends('layouts/app')
 
 @section('content')
-
-    @php
-        $category = last(explode('/', $category))
-    @endphp
-
     <full-width padding="pb-1v">
         <content>
             <columns>
                 </column>
 
                 <column>
-                    <text-block class="pt-2v" title-tag="h1" title-class="h1 overlap-left" :title="isset($category) ? ucfirst($category) : 'Lorem ipsum'">
+                    <text-block class="pt-2v" title-tag="h1" title-class="h1 overlap-left"
+                                :title="isset($category) ? ucfirst($category) : 'Lorem ipsum'">
 
                         <p>
-                            La mesure de force se réalise avec les capteurs de force ou des cellules de charge. Ils sont constitués d'un corps d'épreuve sur lequel sont collées des jauges de contrainte. La mesure de force s'exprime en Newton.
+                            La mesure de force se réalise avec les capteurs de force ou des cellules de charge. Ils sont
+                            constitués d'un corps d'épreuve sur lequel sont collées des jauges de contrainte. La mesure
+                            de force s'exprime en Newton.
                         </p>
                     </text-block>
 
     <full-width class="bg-grey-100" padding="pt-1v pb-2v">
         <content class="flex relative items-start">
 
-            <div class="products-filters-wrapper sticky top-0 mr-1v pt-4 whitespace-no-wrap">
-
-                <div class="products-filters bg-white p-4">
-                    <h3 class="text-base mb-2">Catégorie</h3>
-                    @php
-                        $categories = [
-                            'Capteur de force - Galette',
-                            'Capteur en "S" et miniatures',
-                            'Capteur bouton inox',
-                            'Conditionneurs et acquistion',
-                            'Capteur 3 axes',
-                            'Capteur 6 axes',
-                            'Plateforme 6 axes',
-                        ];
-                    @endphp
-
-                    @foreach ($categories as $i => $category)
-                        <div class="flex justify-between py-1 text-sm">
-                            <label for="cat_{{ $i }}">
-                                <input type="checkbox" id="cat_{{ $i }}" class="mr-2">
-                                {{ $category }}
-                            </label>
-                            <div class="products-filters-count pl-8">({{ rand(10, 95) }})</div>
-                        </div>
-                    @endforeach
-
-                    <hr class="h-px bg-grey-200 my-4">
-
-                    <h3 class="text-base mb-2">Filtre 01</h3>
-                    @for ($i = 1; $i <= 5; $i++)
-                        <div class="flex justify-between py-1 text-sm">
-                            <label for="filter_1_{{ $i }}">
-                                <input type="checkbox" id="filter_1_{{ $i }}" class="mr-2">
-                                Option 0{{ $i }}
-                            </label>
-                            <div class="products-filters-count pl-8">({{ rand(10, 95) }})</div>
-                        </div>
-                    @endfor
-
-                    <hr class="h-px bg-grey-200 my-4">
-
-                    <h3 class="text-base mb-2">Filtre 02</h3>
-                    @for ($i = 1; $i <= 5; $i++)
-                        <div class="flex justify-between py-1 text-sm">
-                            <label for="filter_2_{{ $i }}">
-                                <input type="checkbox" id="filter_2_{{ $i }}" class="mr-2">
-                                Option {{ chr($i + 64) }}
-                            </label>
-                            <div class="products-filters-count pl-8">({{ rand(10, 95) }})</div>
-                        </div>
-                    @endfor
-
-                </div>
-            </div>
+            {{--            <div class="products-filters-wrapper sticky top-0 mr-1v pt-4 whitespace-no-wrap">--}}
+
+            {{--                <div class="products-filters bg-white p-4">--}}
+            {{--                    <h3 class="text-base mb-2">Catégorie</h3>--}}
+            {{--                    @php--}}
+            {{--                        $categories = [--}}
+            {{--                            'Capteur de force - Galette',--}}
+            {{--                            'Capteur en "S" et miniatures',--}}
+            {{--                            'Capteur bouton inox',--}}
+            {{--                            'Conditionneurs et acquistion',--}}
+            {{--                            'Capteur 3 axes',--}}
+            {{--                            'Capteur 6 axes',--}}
+            {{--                            'Plateforme 6 axes',--}}
+            {{--                        ];--}}
+            {{--                    @endphp--}}
+
+            {{--                    @foreach ($categories as $i => $category)--}}
+            {{--                        <div class="flex justify-between py-1 text-sm">--}}
+            {{--                            <label for="cat_{{ $i }}">--}}
+            {{--                                <input type="checkbox" id="cat_{{ $i }}" class="mr-2">--}}
+            {{--                                {{ $category }}--}}
+            {{--                            </label>--}}
+            {{--                            <div class="products-filters-count pl-8">({{ rand(10, 95) }})</div>--}}
+            {{--                        </div>--}}
+            {{--                    @endforeach--}}
+
+            {{--                    <hr class="h-px bg-grey-200 my-4">--}}
+
+            {{--                    <h3 class="text-base mb-2">Filtre 01</h3>--}}
+            {{--                    @for ($i = 1; $i <= 5; $i++)--}}
+            {{--                        <div class="flex justify-between py-1 text-sm">--}}
+            {{--                            <label for="filter_1_{{ $i }}">--}}
+            {{--                                <input type="checkbox" id="filter_1_{{ $i }}" class="mr-2">--}}
+            {{--                                Option 0{{ $i }}--}}
+            {{--                            </label>--}}
+            {{--                            <div class="products-filters-count pl-8">({{ rand(10, 95) }})</div>--}}
+            {{--                        </div>--}}
+            {{--                    @endfor--}}
+
+            {{--                    <hr class="h-px bg-grey-200 my-4">--}}
+
+            {{--                    <h3 class="text-base mb-2">Filtre 02</h3>--}}
+            {{--                    @for ($i = 1; $i <= 5; $i++)--}}
+            {{--                        <div class="flex justify-between py-1 text-sm">--}}
+            {{--                            <label for="filter_2_{{ $i }}">--}}
+            {{--                                <input type="checkbox" id="filter_2_{{ $i }}" class="mr-2">--}}
+            {{--                                Option {{ chr($i + 64) }}--}}
+            {{--                            </label>--}}
+            {{--                            <div class="products-filters-count pl-8">({{ rand(10, 95) }})</div>--}}
+            {{--                        </div>--}}
+            {{--                    @endfor--}}
+
+            {{--                </div>--}}
+            {{--            </div>--}}
 
             {{-- Main Products Grid Area --}}
             <div class="products-grid flex-grow">
 
                 {{-- Grid summary header --}}
-                <div class="products-grid-summary
-                            sticky top-0 z-10 bg-grey-100 pt-4 pb-4 flex justify-between items-center
-                            md:block">
-                    <div class="products-grid-active-filters flex-grow text-sm">
-                        <ul class="flex flex-wrap -mb-3 md:mb-0">
-                            <li class="bg-white whitespace-no-wrap py-2 px-4 rounded-full mr-3 mb-3 hover:bg-grey-200 cursor-pointer">
-                                Capteur de force - Galette
-                                <img src="{{ asset('images/icon-close.svg') }}" alt="Remove" class="inline-block ml-3">
-                            </li>
-                            <li class="bg-white whitespace-no-wrap py-2 px-4 rounded-full mr-3 mb-3 hover:bg-grey-200 cursor-pointer">
-                                Option 01
-                                <img src="{{ asset('images/icon-close.svg') }}" alt="Remove" class="inline-block ml-3">
-                            </li>
-                            <li class="bg-white whitespace-no-wrap py-2 px-4 rounded-full mr-3 mb-3 hover:bg-grey-200 cursor-pointer">
-                                Option C
-                                <img src="{{ asset('images/icon-close.svg') }}" alt="Remove" class="inline-block ml-3">
-                            </li>
-                            <li class="bg-white whitespace-no-wrap py-2 px-4 rounded-full mr-3 mb-3 hover:bg-grey-200 cursor-pointer">
-                                Option D
-                                <img src="{{ asset('images/icon-close.svg') }}" alt="Remove" class="inline-block ml-3">
-                            </li>
-                        </ul>
-                    </div>
-                    <div class="products-grid-result-count pl-4 md:pl-0 font-display whitespace-no-wrap">12 Résultats</div>
-                </div>
+                {{--                <div class="products-grid-summary--}}
+                {{--                            sticky top-0 z-10 bg-grey-100 pt-4 pb-4 flex justify-between items-center--}}
+                {{--                            md:block">--}}
+                {{--                    <div class="products-grid-active-filters flex-grow text-sm">--}}
+                {{--                        <ul class="flex flex-wrap -mb-3 md:mb-0">--}}
+                {{--                            <li class="bg-white whitespace-no-wrap py-2 px-4 rounded-full mr-3 mb-3 hover:bg-grey-200 cursor-pointer">--}}
+                {{--                                Capteur de force - Galette--}}
+                {{--                                <img src="{{ asset('images/icon-close.svg') }}" alt="Remove" class="inline-block ml-3">--}}
+                {{--                            </li>--}}
+                {{--                            <li class="bg-white whitespace-no-wrap py-2 px-4 rounded-full mr-3 mb-3 hover:bg-grey-200 cursor-pointer">--}}
+                {{--                                Option 01--}}
+                {{--                                <img src="{{ asset('images/icon-close.svg') }}" alt="Remove" class="inline-block ml-3">--}}
+                {{--                            </li>--}}
+                {{--                            <li class="bg-white whitespace-no-wrap py-2 px-4 rounded-full mr-3 mb-3 hover:bg-grey-200 cursor-pointer">--}}
+                {{--                                Option C--}}
+                {{--                                <img src="{{ asset('images/icon-close.svg') }}" alt="Remove" class="inline-block ml-3">--}}
+                {{--                            </li>--}}
+                {{--                            <li class="bg-white whitespace-no-wrap py-2 px-4 rounded-full mr-3 mb-3 hover:bg-grey-200 cursor-pointer">--}}
+                {{--                                Option D--}}
+                {{--                                <img src="{{ asset('images/icon-close.svg') }}" alt="Remove" class="inline-block ml-3">--}}
+                {{--                            </li>--}}
+                {{--                        </ul>--}}
+                {{--                    </div>--}}
+                {{--                    <div class="products-grid-result-count pl-4 md:pl-0 font-display whitespace-no-wrap">12 Résultats</div>--}}
+                {{--                </div>--}}
 
                 {{-- Product Grid --}}
                 <grid cols="auto" class="products-grid mt-6">
-                    @for($i = 1; $i <= 12; $i++)
+                    @foreach($products as $id=>$product)
                         <div class="product-grid-item bg-grey-200">
                             {{-- Image holder --}}
                             <div class="bg-white pb-100p bg-contain bg-center bg-no-repeat"
 
                             {{-- Product details --}}
                             <div class="p-4">
-                                <h3>Modèle 1200 de 1.5 kN à 900kN</h3>
-                                <ul class="text-sm">
-                                    <li>Étendue de mesure : 1.5 kN à 900 kN </li>
-                                    <li>Sortie élevée : 2 ou 4 mV/V </li>
-                                    <li>Précision : 0.04% à 0.07% pleine échelle</li>
-                                    <li>Compensé pour les efforts transverses</li>
-                                </ul>
+                                <h3>{{$product->get('name')}}</h3>
+                                <div class="text-sm">
+                                    {!! Markdown::parse($product->highlights) !!}
+                                </div>
                                 <p class="mt-4">
-                                    <a href="/products/force/123">Voir la fiche produit</a>
+                                    <a href="{{$nav->findOneById('product/'.$product->id)->getHref()}}">Voir la fiche
+                                        produit</a>
                                 </p>
                             </div>
                         </div>
-                    @endfor
+                    @endforeach
                 </grid>
-
             </div>
-
-
         </content>
     </full-width>
 @endsection