]> _ Git - pmi.git/commitdiff
wip #2843 @2
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 2 Jul 2019 19:00:11 +0000 (21:00 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 2 Jul 2019 19:00:11 +0000 (21:00 +0200)
app/Http/Controllers/PageController.php
app/Http/Middleware/GenerateMenus.php
app/Templates/Catalog.php [new file with mode: 0644]
app/Templates/News.php [new file with mode: 0644]
resources/views/pages/solution.blade.php [new file with mode: 0644]
routes/backpack/custom.php
routes/web.php

index b29e9658e7a7ea07c03fb8af486cdeb10b7dd2fd..b0981776b252b4fa028f5c1f54c353f7ac68b3da 100644 (file)
@@ -2,7 +2,7 @@
 
 namespace App\Http\Controllers;
 
-use Backpack\PageManager\app\Models\Page;
+use App\Models\Page;
 
 class PageController extends Controller
 {
index f72be3b7c3d38911a3b291c7338d7abc275d226f..2446c3e3c9752ab97aa3f69177304a777418aff0 100644 (file)
@@ -2,6 +2,7 @@
 
 namespace App\Http\Middleware;
 
+use App\Models\Page;
 use Closure;
 
 class GenerateMenus
@@ -9,93 +10,150 @@ class GenerateMenus
     /**
      * Handle an incoming request.
      *
-     * @param  \Illuminate\Http\Request  $request
-     * @param  \Closure  $next
+     * @param \Illuminate\Http\Request $request
+     * @param \Closure $next
      * @return mixed
      */
     public function handle($request, Closure $next)
     {
-        // Hard coded menu structure until we have dynamic data from the CMS
-        $nav_items = [
-
-            'Products' => [
-                'url' => 'products',
-                'submenus' => [
-
-                    // Left panel
-                    [
-                        'title' => 'Capteurs',
-                        'links' => [
-                            'Force' => 'products/force',
-                            'Couple' => 'products/couple',
-                            'Déplacement' => 'products/deplacement',
-                            'Accélération' => 'products/acceleration',
-                            'Inclinaison' => 'products/inclinaison',
-                            'Pression' => 'products/pression',
-                        ],
-                    ],
-
-                    // Right panel
-                    [
-                        'title' => 'Systèmes de mesure',
-                        'links' => [
-                            'Roue dynamométrique' => 'products/roue',
-                            'Contrôle de fermeture d’ouvrants' => 'products/cdfdo',
-                            'Contrôle de taraudage' => 'products/cdt',
-                            'Collecteurs tournant' => 'products/ct',
-                            'Télémétrie' => 'products/telemetrie',
-                            'Acquisition de données' => 'products/add',
-                        ],
-                    ],
+        $productsSubMenus = [
+
+            // Left panel
+            [
+                'title' => 'Capteurs',
+                'links' => [
+                    'Force' => 'products/force',
+                    'Couple' => 'products/couple',
+                    'Déplacement' => 'products/deplacement',
+                    'Accélération' => 'products/acceleration',
+                    'Inclinaison' => 'products/inclinaison',
+                    'Pression' => 'products/pression',
                 ],
             ],
 
-            'Solutions' => [
-                'url' => 'solutions',
-                'submenus' => [
-                    [
-                        'links' => [
-                            'Énergie' => 'solutions/energie',
-                            'Aéronautique' => 'solutions/aero',
-                            'Ferroviaire' => 'solutions/ferroviaire',
-                            'Automobile' => 'solutions/auto',
-                            'Génie civil' => 'solutions/civil',
-                            'Industrie' => 'solutions/industrie',
-                        ]
-                    ],
-                ],
-            ],
-
-            'Services' => [
-                'url' => 'services',
-                'submenus' => [
-                    [
-                        'title' => null,
-                        'links' => [
-                            'Location' => 'services/location',
-                            'Calibration' => 'services/calibration',
-                            'Développement OEM' => 'services/developpement-oem',
-                            'Custom Design' => 'services/custom-design',
-                            'Formation' => 'services/formation',
-                        ],
-                    ],
-                ],
-            ],
-            'Support' => ['url' => 'support'],
-            'Société' => [
-                'url' => 'societe',
-                'submenus' => [
-                    [
-                        'links' => [
-                            'Qui sommes nous ?' => 'societe/a-propos',
-                            'Actualités' => 'societe/actualites',
-                        ]
-                    ]
+            // Right panel
+            [
+                'title' => 'Systèmes de mesure',
+                'links' => [
+                    'Roue dynamométrique' => 'products/roue',
+                    'Contrôle de fermeture d’ouvrants' => 'products/cdfdo',
+                    'Contrôle de taraudage' => 'products/cdt',
+                    'Collecteurs tournant' => 'products/ct',
+                    'Télémétrie' => 'products/telemetrie',
+                    'Acquisition de données' => 'products/add',
                 ],
             ],
-            'Contact' => ['url' => 'contact'],
         ];
 
+        $tree = Page::getTree();
+        file_put_contents(app_path('tree.txt'), print_r($tree, true));
+        $main = $tree['#main'];
+
+        $nav_items = [];
+        foreach ($main['children'] as $name => $item) {
+            $submenus = null;
+            if ($name == 'products') {
+                $submenus = $productsSubMenus;
+            } else {
+                $links = [];
+
+                foreach ($item['children'] as $key => $child) {
+                    $links[$child['element']->title] = $child['element']->slug;
+                }
+
+                if (count($links) > 0) {
+                    $submenus = [['links' => $links]];
+                }
+            }
+            $s = ['url' => $item['element']->slug];
+            if (null !== $submenus) {
+                $s['submenus'] = $submenus;
+            }
+
+            $nav_items[$item['element']->title] = $s;
+        }
+
+        // Hard coded menu structure until we have dynamic data from the CMS
+//        $nav_items = [
+//
+//            'Products' => [
+//                'url' => 'products',
+//                'submenus' => [
+//
+//                    // Left panel
+//                    [
+//                        'title' => 'Capteurs',
+//                        'links' => [
+//                            'Force' => 'products/force',
+//                            'Couple' => 'products/couple',
+//                            'Déplacement' => 'products/deplacement',
+//                            'Accélération' => 'products/acceleration',
+//                            'Inclinaison' => 'products/inclinaison',
+//                            'Pression' => 'products/pression',
+//                        ],
+//                    ],
+//
+//                    // Right panel
+//                    [
+//                        'title' => 'Systèmes de mesure',
+//                        'links' => [
+//                            'Roue dynamométrique' => 'products/roue',
+//                            'Contrôle de fermeture d’ouvrants' => 'products/cdfdo',
+//                            'Contrôle de taraudage' => 'products/cdt',
+//                            'Collecteurs tournant' => 'products/ct',
+//                            'Télémétrie' => 'products/telemetrie',
+//                            'Acquisition de données' => 'products/add',
+//                        ],
+//                    ],
+//                ],
+//            ],
+//
+//            'Solutions' => [
+//                'url' => 'solutions',
+//                'submenus' => [
+//                    [
+//                        'links' => [
+//                            'Énergie' => 'solutions/energie',
+//                            'Aéronautique' => 'solutions/aero',
+//                            'Ferroviaire' => 'solutions/ferroviaire',
+//                            'Automobile' => 'solutions/auto',
+//                            'Génie civil' => 'solutions/civil',
+//                            'Industrie' => 'solutions/industrie',
+//                        ]
+//                    ],
+//                ],
+//            ],
+//
+//            'Services' => [
+//                'url' => 'services',
+//                'submenus' => [
+//                    [
+//                        'title' => null,
+//                        'links' => [
+//                            'Location' => 'services/location',
+//                            'Calibration' => 'services/calibration',
+//                            'Développement OEM' => 'services/developpement-oem',
+//                            'Custom Design' => 'services/custom-design',
+//                            'Formation' => 'services/formation',
+//                        ],
+//                    ],
+//                ],
+//            ],
+//            'Support' => ['url' => 'support'],
+//            'Société' => [
+//                'url' => 'societe',
+//                'submenus' => [
+//                    [
+//                        'links' => [
+//                            'Qui sommes nous ?' => 'societe/a-propos',
+//                            'Actualités' => 'societe/actualites',
+//                        ]
+//                    ]
+//                ],
+//            ],
+//            'Contact' => ['url' => 'contact'],
+//        ];
+
 
         \Menu::make('primary', function ($menu) use ($nav_items) {
 
@@ -150,4 +208,6 @@ class GenerateMenus
 
         return $next($request);
     }
+
+
 }
diff --git a/app/Templates/Catalog.php b/app/Templates/Catalog.php
new file mode 100644 (file)
index 0000000..61aa406
--- /dev/null
@@ -0,0 +1,13 @@
+<?php
+
+
+namespace App\Templates;
+
+
+class Catalog extends Base
+{
+    public function getName()
+    {
+        return 'Catalogue de produits';
+    }
+}
diff --git a/app/Templates/News.php b/app/Templates/News.php
new file mode 100644 (file)
index 0000000..79e321a
--- /dev/null
@@ -0,0 +1,13 @@
+<?php
+
+
+namespace App\Templates;
+
+
+class News extends Base
+{
+public function getName()
+{
+    return 'Actualités';
+}
+}
diff --git a/resources/views/pages/solution.blade.php b/resources/views/pages/solution.blade.php
new file mode 100644 (file)
index 0000000..7cceaac
--- /dev/null
@@ -0,0 +1,31 @@
+@extends('layouts/app')
+
+@section('content')
+
+    @php
+        $name = ucfirst($page->title);
+    @endphp
+
+    <full-width padding="pb-4v">
+        <content>
+            <columns>
+                <column>
+                    <img src="{{ asset('storage/uploads/images/home-wing.jpg') }}" alt="">
+                </column>
+
+                <column>
+                    <text-block class="pt-2v" title_class="h1 overlap-left" :title="isset($name) ? ucfirst($name) : 'Lorem ipsum'">
+
+                        <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Accusamus aperiam aspernatur corporis dicta dolore, earum est et eum eveniet, harum minima non, pariatur perspiciatis possimus ratione repudiandae veniam voluptas. Aspernatur eius esse laudantium nostrum nulla?</p>
+
+                        <p>Sit amet, consectetur adipisicing elit. Aut cum dolores ratione vel. Alias exercitationem obcaecati quae! Accusantium alias, aspernatur atque autem beatae commodi delectus dolores esse, exercitationem facere illo itaque iusto libero magni natus nemo obcaecati odit officia quia quibusdam reiciendis soluta suscipit unde ut veritatis, voluptate voluptatibus.</p>
+
+                        <p><a href="#">En savoir plus</a></p>
+                    </text-block>
+
+                </column>
+            </columns>
+        </content>
+
+    </full-width>
+@endsection
index 7ec9638a0d711e25c79a804301a8c49a782af1a9..05ca4952b4d511e8a021e2b98b0f6785186b0a19 100644 (file)
@@ -4,6 +4,11 @@ Route::group([
     'middleware' => ['web', config('backpack.base.middleware_key', 'admin')],
     'namespace'  => 'App\Http\Controllers\Admin',
 ], function () { // custom admin routes
+    CRUD::resource('news', 'NewsCrudController')->with(function () {
+        Route::match(['post'], 'news/{id}/media', 'NewsCrudController@uploadMedia');
+        Route::match(['delete'], 'news/{id}/media/{mediaId}', 'NewsCrudController@deleteMedia');
+        Route::match(['post'], 'news/{id}/media/reorder', 'NewsCrudController@reorderMedia');
+    });
     CRUD::resource('page', 'PageCrudController')->with(function () {
         Route::match(['post'], 'page/{id}/media', 'PageCrudController@uploadMedia');
         Route::match(['delete'], 'page/{id}/media/{mediaId}', 'PageCrudController@deleteMedia');
index 2fb07dd2e88a4fee3445cfc5d55342c22d3769b5..9816886c2b72b9ab0bb8d35a9baed45bdb76f92c 100644 (file)
@@ -24,10 +24,10 @@ Route::get('/products/{category}', function ($category) {
 })->where(['name' => '.*']);
 
 // Temporary catch all for testing nav and breadcrumbs
-Route::get('/{name}', function ($name) {
-    return view('pages.test', compact('name'));
-})->where(['name' => '.*']);
+//Route::get('/{name}', function ($name) {
+//    return view('pages.test', compact('name'));
+//})->where(['name' => '.*']);
 
-/** CATCH-ALL ROUTE for Backpack/PageManager - needs to be at the end of your routes.php file  **/
+/** CATCH-ALL ROUTE for CMS Pages - needs to be at the end of your web.php file  **/
 Route::get('{page}/{subs?}', ['uses' => 'PageController@index'])
-    ->where(['page' => '^((?!admin).)*$', 'subs' => '.*']);
+    ->where(['page' => '^(((?=(?!admin))(?=(?!\/)).))*$', 'subs' => '.*']);