--- /dev/null
+<?php
+
+namespace App\Http\Controllers;
+
+use App\Models\Application;
+use App\Models\Product;
+use Cubist\Backpack\app\Http\Controllers\CubistFrontController;
+use Cubist\Backpack\app\Magic\PageData;
+
+class ApplicationController extends CubistFrontController
+{
+ public function view($id)
+ {
+ $application = Application::find($id);
+
+ if (!$application) {
+ $this->_404();
+ }
+ $this->data['page'] = $application->getPageData();
+ $this->data['related'] = PageData::fromEntities(Product::with('media')->whereIn('id', $application->related)->get());
+ return view('pages.application', $this->data);
+ }
+}
use Cubist\Backpack\app\Magic\Models\CubistMagicPageModel;
+use Spatie\MediaLibrary\Models\Media;
class Application extends CubistMagicPageModel
{
+
+
protected $table = 'applications';
protected $_options = ['name' => 'application',
'singular' => 'application',
'plural' => 'applications'];
+ public function registerMediaConversions(Media $media = null) {
+
+ parent::registerMediaConversions($media);
+
+ $this->addMediaConversion('thumb')
+ ->crop('crop-center', 348, 232);
+ }
+
public function setFields()
{
$this->addField(['name' => 'title',
namespace App\Templates;
+use App\Models\Application;
+use Barryvdh\Debugbar\Facade as Debugbar;
+use Cubist\Backpack\app\Magic\Menu\Item;
+use Cubist\Backpack\app\Magic\PageData;
class Solution extends Base
{
+ protected static $_menuChildrenDone = false;
+
public function getName()
{
return 'Solution';
}
+
+ public function init()
+ {
+ parent::init();
+
+ $this->addField(['name' => 'applications',
+ 'label' => 'Applications',
+ 'type' => 'SelectFromModel',
+ 'optionsmodel' => 'App\Models\Application',
+ 'attribute' => 'title_solutions',
+ 'order' => true,
+ 'multiple' => true,
+ 'tab' => 'Applications']);
+ }
+
+ public function setMenuChildren($menu)
+ {
+ if (self::$_menuChildrenDone) {
+ return;
+ }
+
+ self::$_menuChildrenDone = true;
+
+ Debugbar::startMeasure('nav_applications', 'Make applications nav items');
+ parent::setMenuChildren($menu);
+
+ $applications = Application::all();
+
+ foreach ($applications as $application) {
+ $item = new Item();
+ $item->setTitle($application->title);
+ $item->setHref($application->getSlugOrTitleAttribute());
+ $item->setId('application/' . $application->id);
+ $item->setController(['controller' => 'ApplicationController', 'action' => 'view', 'params' => ['id' => $application->id]]);
+ $menu->addChild($item);
+ }
+
+ Debugbar::stopMeasure('nav_applications');
+ }
+
+ public function setData(&$data)
+ {
+ if (null === $data['page']->applications) {
+ $data['applications'] = [];
+ return;
+ }
+ $data['applications'] = PageData::fromEntities(Application::whereIn('id', $data['page']->applications)->get());
+ }
}
--- /dev/null
+@extends('layouts/app')
+
+@section('content')
+
+ <full-width padding="pb-2v">
+ <content>
+ <text-block :title="$page->title" title-tag="h1"/>
+
+ <div class="news-post-layout">
+ {{-- Todo: use larger image + srcset here --}}
+ <img src="{{ $page->getImageURL('image','thumb') }}" alt="{{ $page->title }}" class="news-post-image">
+
+ <div class="news-post-body">
+ @markdown($page->content)
+ </div>
+ </div>
+ </content>
+ </full-width>
+
+ <full-width class="bg-grey-100">
+ <content>
+
+ <text-block :title="__('Sélection de produits')" title-class="h2"/>
+
+ {{-- Product Grid --}}
+ <grid cols="auto" class="products-grid">
+ @foreach($related as $id=>$rel)
+ @include('partials.product-link',['id'=>$id,'product'=>$rel])
+ @endforeach
+ </grid>
+
+ </content>
+ </full-width>
+@endsection
{{-- Solutions / Applications --}}
<full-width class="bg-navy text-white antialiased">
<content>
- <text-block title-class="h1 text-inherit" title="Solutions / Applications"/>
+ <text-block title-class="h1 text-inherit" :title="__('Solutions / Applications')"/>
<grid cols="3" class="sm:grid-cols-2 xs:grid-cols-1">
@foreach ($page->get('solutions', []) as $solution)
@intro(['padding' => 'pb-4v'])
+ <full-width class="bg-grey-100 antialiased">
+ <content>
+ <text-block title-class="h1" :title="__('Applications')"/>
+
+ <grid cols="4" class="sm:grid-cols-2 xs:grid-cols-1">
+ @foreach ($applications as $application)
+ <a class="solutions-link" href="{{ $nav->getHrefByID('application/'.$application->id) }}">
+ <span class="solutions-link-bg"
+ style="background-image:url({{ $application->getImageURLbyCollection($application['image_solutions']) }})"></span>
+ <span class="solutions-link-text">{{ $application->title_solutions }}</span>
+ </a>
+ @endforeach
+ </grid>
+
+ </content>
+ </full-width>
@endsection