]> _ Git - pmi.git/commitdiff
WIP #2738 @7
authorStephen Cameron <stephen@cubedesigners.com>
Mon, 15 Jul 2019 15:58:37 +0000 (17:58 +0200)
committerStephen Cameron <stephen@cubedesigners.com>
Mon, 15 Jul 2019 15:58:37 +0000 (17:58 +0200)
app/Templates/Home.php
resources/views/pages/home.blade.php
resources/views/pages/product-detail.blade.php
resources/views/pages/products.blade.php
resources/views/partials/form.blade.php

index 3ce335b8eeeed85c1f36ecf3e2cf9a18f040b37a..706afe3260c164e52a8c55209a1f98fc2cb06972 100644 (file)
@@ -3,6 +3,7 @@
 namespace App\Templates;
 
 use App\Models\ProductType;
+use App\Models\News;
 
 class Home extends Base
 {
@@ -69,6 +70,18 @@ class Home extends Base
     {
         $page = $data['page'];
 
+        // Product Types data used for "Our Products" section
+        $data['productTypes'] = $this->_getProductTypes($page);
+
+        // News data
+        $data['news'] = $this->_getNews();
+
+    }
+
+    protected function _getProductTypes($page) {
+
+        $productTypes = [];
+
         // Fetch product type details from both lists with
         // one query, making sure we don't repeat any IDs
         $productTypeIDs = array_unique(
@@ -78,12 +91,33 @@ class Home extends Base
             )
         );
 
-        $productTypes = ProductType::whereIn('id', $productTypeIDs)->get();
+        $productTypeRecords = ProductType::whereIn('id', $productTypeIDs)->get();
+
+        foreach ($productTypeRecords as $productType) {
+            $productTypes[$productType->id] = $productType->getPageData();
+        }
+
+        return $productTypes;
+    }
+
+    protected function _getNews() {
 
-        foreach ($productTypes as $productType) {
-            $data['productTypes'][$productType->id] = $productType->getPageData();
+        $newsItems = [];
+
+        $news = News::where([
+                    ['type', '=', 'news'],
+                    ['status', '=', 1],
+               ])
+                        ->orderBy('date', 'desc')
+                        ->take(4)
+                        ->get();
+
+        foreach ($news as $newsItem) {
+            $newsItems[$newsItem->id] = $newsItem;
         }
 
+        return $newsItems;
+
     }
 
 
index ee08f38aa39dee00436f36c363f8e4782f71f0cf..ace4d7e2ac174823c29159ea970bb781268c7805 100644 (file)
@@ -55,7 +55,7 @@
                         @foreach ($page->get('products_capteurs') as $typeID)
                             <div class="bg-white px-1v py-6 flex">
                                 <a class="animated-underline partial-underline flex flex-col justify-between w-full"
-                                   href="{{ $nav->findOneById('product_type_'.$typeID)->getHref() }}">
+                                   href="{{ $nav->getHrefById('product_type_'.$typeID) }}">
                                     <div class="flex items-center justify-center flex-grow">
                                         <img class="mb-4" src="{{ asset("storage/products/1.png") }}">
                                     </div>
@@ -75,7 +75,7 @@
                         @foreach ($page->get('products_systems') as $typeID)
                             <div class="bg-white px-1v py-6 flex">
                                 <a class="animated-underline partial-underline flex flex-col justify-between w-full"
-                                   href="{{ $nav->findOneById('product_type_'.$typeID)->getHref() }}">
+                                   href="{{ $nav->getHrefById('product_type_'.$typeID) }}">
                                     <div class="flex items-center justify-center flex-grow">
                                         <img class="mb-4" src="{{ asset("storage/products/1.png") }}">
                                     </div>
         <content>
             <text-block title-class="h1 text-inherit" title="Solutions / Applications" />
 
-            @php
-                // TEMPORARY DATA
-                $solutions = [
-                    'Énergie',
-                    'Aéronautique',
-                    'Ferroviaire',
-                    'Automobile',
-                    'Génie civil',
-                    'Industrie',
-                ];
-            @endphp
-
             <grid cols="3" class="sm:grid-cols-2 xs:grid-cols-1">
-                @foreach ($solutions as $i => $solution)
-                    @php($i++)
-                    <a class="solutions-link">
-                        <span class="solutions-link-bg" style="background-image:url({{ asset("storage/uploads/images/solutions-{$i}.jpg") }})"></span>
-                        <span class="solutions-link-text">{{ $solution }}</span>
+                @foreach ($page->get('solutions', []) as $solution)
+                    <a class="solutions-link" href="{{ $nav->getHrefByID($solution['page']) }}">
+                        <span class="solutions-link-bg" style="background-image:url({{ $page->getImageURLbyCollection($solution['image']) }})"></span>
+                        <span class="solutions-link-text">{{ $solution['title'] }}</span>
                     </a>
                 @endforeach
             </grid>
     {{-- Services & Support --}}
     @intro(['name' => 'services_support', 'class' => 'bg-grey-100'])
 
-    @if(config('features.news'))
+    @if(config('features.news') && count($news) > 0)
         {{-- News --}}
         <full-width>
             <content>
                 <text-block title="Actualités" />
 
                 <grid cols="4" class="md:grid-cols-2 xs:grid-cols-1 xs:grid-gap-20v">
-                    @for ($i = 1; $i <= 4; $i++)
+                    @foreach ($news as $newsItem)
+
                         <div>
-                            <img class="mb-4" src="{{ asset('storage/uploads/images/news-1.jpg') }}" alt="">
-                            <h4 class="font-display">News 0{{ $i }}</h4>
-                            <p>PM instrumentation distribue depuis 1986 des Capteurs et Systèmes de haute technicité.
-                                Issue
-                                de la société Schaevitz,...</p>
+                            {{--Todo: handle missing images + get correct image size--}}
+                            <img class="mb-4" src="{{ $newsItem->getFirstMediaUrl($newsItem->image) }}" alt="{{ $newsItem->title }}">
+                            <h4 class="font-display">{{ $newsItem->title }}</h4>
+                            <p>{{ $newsItem['chapo'] }}</p>
+
+                            {{--Todo: set up news URLs in nav--}}
                             <p><a href="#">Lire la suite</a></p>
                         </div>
-                    @endfor
+                    @endforeach
                 </grid>
             </content>
         </full-width>
index 48832b5ceef1722c440c8c0b457a88a9518b0baa..359f7addca55444a67685a0567b47af55ce6be28 100644 (file)
 
                             {{-- Product details --}}
                             <div class="p-4">
-                                <h3>{{$rel->name}}</h3>
+                                <h3>{{ $rel->name }}</h3>
                                 <div class="text-sm">
                                     @markdown($rel->highlights)
                                 </div>
                                 <p class="mt-4">
-                                    <a href="{{$nav->findOneById('product/'.$rel->id)->getHref()}}">{{__('Voir la fiche produit')}}</a>
+                                    <a href="{{ $nav->getHrefById('product/'.$rel->id) }}">{{ __('Voir la fiche produit') }}</a>
                                 </p>
                             </div>
                         </div>
index 5d63af7e015dd6e0064e9d81c5df4e95395ba71c..982172aaa6f50ddff99fceda5b74fb3b70435a88 100644 (file)
 
                             {{-- Product details --}}
                             <div class="p-4">
-                                <h3>{{$product->get('name')}}</h3>
+                                <h3>{{ $product->get('name') }}</h3>
                                 <div class="text-sm">
                                     @markdown($product->highlights)
                                 </div>
                                 <p class="mt-4">
-                                    <a href="{{$nav->findOneById('product/'.$product->id)->getHref()}}">Voir la fiche
-                                        produit</a>
+                                    <a href="{{ $nav->getHrefById('product/'.$product->id) }}">
+                                        {{ __('Voir la fiche produit') }}
+                                    </a>
                                 </p>
                             </div>
                         </div>
index a6e6a9a7d2c7add06c079f4e4a54f2f67ba292b3..b50ecbb533a2651b87b546b83eafc642d24b332c 100644 (file)
@@ -1,66 +1,70 @@
-@push('scripts')
-    <script src="{{ mix('/js/mailform.js') }}"></script>
-@endpush
+@if ($page->get('form'))
 
-<div id="contact-form">
-    <div class="form flex flex-col">
-        <p class="form-info text-navy">{{$page->get('form_intro')}}</p>
-        <form class="flex flex-col text-navy mailform" action="/ajax/mailform" method="post"
-              data-confirmation="{{$page->get('form_confirmation')??__('Votre message a bien été envoyé')}}">
-            {{ csrf_field() }}
-            <input type="hidden" value="{{$page->get('id')}}" name="page">
-            @foreach($page->get('form') as $field)
-                @php
-                    $required=$field['mandatory']?' required':'';
-                    $asx=$field['mandatory']?' *':'';
-                @endphp
-                <label class="form-input flex flex-col mr-form">
+    @push('scripts')
+        <script src="{{ mix('/js/mailform.js') }}"></script>
+    @endpush
 
-                    @switch($field['type'])
-                        @case('name')
-                        {{__('Nom')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!}  name="name">
-                        @break
+    <div id="contact-form">
+        <div class="form flex flex-col">
+            <p class="form-info text-navy">{{$page->get('form_intro')}}</p>
+            <form class="flex flex-col text-navy mailform" action="/ajax/mailform" method="post"
+                  data-confirmation="{{$page->get('form_confirmation')??__('Votre message a bien été envoyé')}}">
+                {{ csrf_field() }}
+                <input type="hidden" value="{{$page->get('id')}}" name="page">
+                @foreach($page->get('form') as $field)
+                    @php
+                        $required=$field['mandatory']?' required':'';
+                        $asx=$field['mandatory']?' *':'';
+                    @endphp
+                    <label class="form-input flex flex-col mr-form">
 
-                        @case('firstname')
-                        {{__('Prénom')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!}  name="firstname">
-                        @break
+                        @switch($field['type'])
+                            @case('name')
+                            {{__('Nom')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!}  name="name">
+                            @break
 
-                        @case('company')
-                        {{__('Société')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!}  name="company">
-                        @break
+                            @case('firstname')
+                            {{__('Prénom')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!}  name="firstname">
+                            @break
 
-                        @case('email')
-                        {{__('E-mail')}}{{$asx}} <input class="py-3 mt-3" type="email" {!! $required !!}  name="email">
-                        @break
+                            @case('company')
+                            {{__('Société')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!}  name="company">
+                            @break
 
-                        @case('ref')
-                        {{__('Référence')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!}  name="ref">
-                        @break
+                            @case('email')
+                            {{__('E-mail')}}{{$asx}} <input class="py-3 mt-3" type="email" {!! $required !!}  name="email">
+                            @break
 
-                        @case('sku')
-                        {{__('Numéro de série')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!}  name="sku">
-                        @break
+                            @case('ref')
+                            {{__('Référence')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!}  name="ref">
+                            @break
 
-                        @case('subject')
-                        {{__('Sujet')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!}  name="subject">
-                        @break
+                            @case('sku')
+                            {{__('Numéro de série')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!}  name="sku">
+                            @break
 
-                        @case('message')
-                        {{__('Message')}}{{$asx}} <textarea class="py-3 textarea mt-3" type="text"
-                                                    {!! $required !!}  name="message"></textarea>
-                        @break
-                    @endswitch
-                </label>
-            @endforeach
+                            @case('subject')
+                            {{__('Sujet')}}{{$asx}} <input class="py-3 mt-3" type="text" {!! $required !!}  name="subject">
+                            @break
 
-            <div class="form-endmessage mt-5 text-grey-dark">
-                @markdown($global->get('form_privacy'))
-            </div>
-            <div class="flex justify-between items-center xs:flex-col-reverse">
-                <span class="text-grey-dark xs:self-start xs:mt-5">*{{__('Champs obligatoires')}}</span>
-                <button type="submit" class="btn btn-custom xs:w-full"
-                        data-sending="{{__('Envoi en cours')}}">{{__('Envoyer')}}</button>
-            </div>
-        </form>
+                            @case('message')
+                            {{__('Message')}}{{$asx}} <textarea class="py-3 textarea mt-3" type="text"
+                                                        {!! $required !!}  name="message"></textarea>
+                            @break
+                        @endswitch
+                    </label>
+                @endforeach
+
+                <div class="form-endmessage mt-5 text-grey-dark">
+                    @markdown($global->get('form_privacy'))
+                </div>
+                <div class="flex justify-between items-center xs:flex-col-reverse">
+                    <span class="text-grey-dark xs:self-start xs:mt-5">*{{__('Champs obligatoires')}}</span>
+                    <button type="submit" class="btn btn-custom xs:w-full"
+                            data-sending="{{__('Envoi en cours')}}">{{__('Envoyer')}}</button>
+                </div>
+            </form>
+        </div>
     </div>
-</div>
+
+@endif