From c5d988900ba561c8999d14a62a7f067295079042 Mon Sep 17 00:00:00 2001 From: Stephen Cameron Date: Thu, 11 Jul 2019 20:10:34 +0200 Subject: [PATCH] WIP #2738 @8 --- app/Providers/AppServiceProvider.php | 5 +- app/Templates/Home.php | 25 ++++++++- resources/views/pages/contact.blade.php | 25 +++------ resources/views/pages/home.blade.php | 55 +++++++------------ resources/views/pages/products.blade.php | 3 +- resources/views/pages/solution.blade.php | 6 +- resources/views/pages/support.blade.php | 7 +++ .../intro.blade.php} | 14 +++-- 8 files changed, 76 insertions(+), 64 deletions(-) create mode 100644 resources/views/pages/support.blade.php rename resources/views/{components/intro-block.blade.php => partials/intro.blade.php} (57%) diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index d16f283..54a1774 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -4,6 +4,7 @@ namespace App\Providers; use Illuminate\Support\ServiceProvider; use Illuminate\Support\Facades\View; +use Illuminate\Support\Facades\Blade; use Spatie\BladeX\Facades\BladeX; class AppServiceProvider extends ServiceProvider @@ -33,6 +34,9 @@ class AppServiceProvider extends ServiceProvider }); try { + // Blade Include Aliases + Blade::include('partials.intro', 'intro'); // @intro() + // BladeX Component Aliases // Ref: https://docs.spatie.be/laravel-blade-x/v2/introduction BladeX::component('components.column'); // ... @@ -41,7 +45,6 @@ class AppServiceProvider extends ServiceProvider BladeX::component('components.flexible-image'); // BladeX::component('components.full-width'); // ... BladeX::component('components.grid'); // ... - BladeX::component('components.intro-block'); // ... BladeX::component('components.link-button'); // ... BladeX::component('components.map-link'); // ... BladeX::component('components.phone-link'); // ... diff --git a/app/Templates/Home.php b/app/Templates/Home.php index 9eb1983..3ce335b 100644 --- a/app/Templates/Home.php +++ b/app/Templates/Home.php @@ -2,6 +2,8 @@ namespace App\Templates; +use App\Models\ProductType; + class Home extends Base { @@ -62,8 +64,27 @@ class Home extends Base 'tab' => 'Clients']); } - public function injectDataInView(&$data) + // Set extra data for Home blade view + public function setData(&$data) { - $data['test'] = 'super !'; + $page = $data['page']; + + // Fetch product type details from both lists with + // one query, making sure we don't repeat any IDs + $productTypeIDs = array_unique( + array_merge( + $page->get('products_capteurs'), + $page->get('products_systems') + ) + ); + + $productTypes = ProductType::whereIn('id', $productTypeIDs)->get(); + + foreach ($productTypes as $productType) { + $data['productTypes'][$productType->id] = $productType->getPageData(); + } + } + + } diff --git a/resources/views/pages/contact.blade.php b/resources/views/pages/contact.blade.php index 11be5fb..afefdb9 100644 --- a/resources/views/pages/contact.blade.php +++ b/resources/views/pages/contact.blade.php @@ -2,12 +2,7 @@ @section('content') - -

{!! nl2br($page->get('intro.text')) !!}

-
+ @intro(['padding' => 'pb-2v']) @@ -21,16 +16,14 @@

{{ __('Suivez-nous') }}

{{-- Social Networks --}} - {{-- Todo: consider refactoring social data structure so image, label and URL can be set from admin --}} - - @svg('icon-twitter', 'mr-3') - {{ __('Twitter') }} - - - - @svg('icon-linkedin', 'mr-3') - {{ __('LinkedIn') }} - + @php($networks = ['twitter' => 'Twitter', 'linkedin' => 'LinkedIn']) + @foreach ($networks as $networkID => $network) + + @svg("icon-{$networkID}", 'mr-3') + {{ __($network) }} + + @endforeach diff --git a/resources/views/pages/home.blade.php b/resources/views/pages/home.blade.php index 43331ef..ee08f38 100644 --- a/resources/views/pages/home.blade.php +++ b/resources/views/pages/home.blade.php @@ -16,9 +16,7 @@

- {{$test}}Wheel Force Transducers (WFT) are used for measuring all wheel forces and moments. - Field and laboratory test of passenger cars, light duty trucks, heavy duty trucks, vans, - SUVs, class 8 trucks, heavy duty construction and farm equipment. + Wheel Force Transducers (WFT) are used for measuring all wheel forces and moments. Field and laboratory test of passenger cars, light duty trucks, heavy duty trucks, vans, SUVs, class 8 trucks, heavy duty construction and farm equipment.

@@ -30,7 +28,7 @@ - + @@ -38,38 +36,33 @@ {{-- Intro text --}} - - {{-- Todo: make a better function for converting plain text into paragraphs and breaks --}} -

{!! nl2br($page->get('intro.text')) !!}

- - {{-- Todo: make a component for handling CMS links when passing an object like $page->intro->button --}} -

{{ $page->get('intro.button.label') }}

- - + @intro(['padding' => 'pt-5v pb-4v']) {{-- Our products --}} - +

Capteurs

+ {{-- ToDo: refactor these blocks + handle different image sizes and title lengths --}} + - @for ($i = 1; $i <= 6; $i++) + @foreach ($page->get('products_capteurs') as $typeID) - @endfor + @endforeach
@@ -79,17 +72,17 @@

Systèmes de mesure

- @for ($i = 1; $i <= 6; $i++) + @foreach ($page->get('products_systems') as $typeID) - @endfor + @endforeach @@ -103,7 +96,7 @@ {{-- Solutions / Applications --}} - + @php // TEMPORARY DATA @@ -121,8 +114,7 @@ @foreach ($solutions as $i => $solution) @php($i++) - + {{ $solution }} @endforeach @@ -132,18 +124,13 @@ {{-- Services & Support --}} - -

{!! nl2br($page->get('services_support.text')) !!}

-
+ @intro(['name' => 'services_support', 'class' => 'bg-grey-100']) @if(config('features.news')) {{-- News --}} - + @for ($i = 1; $i <= 4; $i++) @@ -164,7 +151,7 @@ {{-- Our Clients --}} - + @for ($i = 1; $i <= 8; $i++) diff --git a/resources/views/pages/products.blade.php b/resources/views/pages/products.blade.php index 180ca9a..25e0dd1 100644 --- a/resources/views/pages/products.blade.php +++ b/resources/views/pages/products.blade.php @@ -9,8 +9,7 @@ - +

La mesure de force se réalise avec les capteurs de force ou des cellules de charge. Ils sont diff --git a/resources/views/pages/solution.blade.php b/resources/views/pages/solution.blade.php index 092dbdd..b26799e 100644 --- a/resources/views/pages/solution.blade.php +++ b/resources/views/pages/solution.blade.php @@ -2,8 +2,6 @@ @section('content') - -

{!! nl2br($page->get('intro.text')) !!}

-

{{ $page->get('intro.button.label') }}

- + @intro(['padding' => 'pb-4v']) + @endsection diff --git a/resources/views/pages/support.blade.php b/resources/views/pages/support.blade.php new file mode 100644 index 0000000..b26799e --- /dev/null +++ b/resources/views/pages/support.blade.php @@ -0,0 +1,7 @@ +@extends('layouts/app') + +@section('content') + + @intro(['padding' => 'pb-4v']) + +@endsection diff --git a/resources/views/components/intro-block.blade.php b/resources/views/partials/intro.blade.php similarity index 57% rename from resources/views/components/intro-block.blade.php rename to resources/views/partials/intro.blade.php index 01c4d00..5f49345 100644 --- a/resources/views/components/intro-block.blade.php +++ b/resources/views/partials/intro.blade.php @@ -1,7 +1,11 @@ {{-- Introduction block with image and overlapping title text --}} +{{-- This is aliased as e.g @intro(['data' => $intro, 'class' => 'bg-grey-100']) --}} @php - $title = $title ?? ''; - $image = $image ?? false; + // $name is the name of the page data to fetch. If it's not set, assume it is 'intro' + $name = $name ?? 'intro'; + + $title = $page->get("$name.title", ''); + $image = $page->getImageURL("$name.image"); $class = $class ?? ''; $padding = $padding ?? null; // Pass null so it doesn't override default padding @endphp @@ -18,10 +22,10 @@ - {{ $slot }} - - {{-- Todo: handle button / link here? Also consider if data should be passed as individual params or just the whole $intro object? --}} + {{-- Todo: make a better function for converting plain text into paragraphs and breaks --}} +

{!! nl2br($page->get("$name.text")) !!}

+ {{-- Todo: handle button here... $page->get("$name.button") --}}
-- 2.39.5