From 4ab641c55cbfc494c612d84e3fc0532f0bb4640a Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Tue, 2 Jul 2019 21:00:11 +0200 Subject: [PATCH] wip #2843 @2 --- app/Http/Controllers/PageController.php | 2 +- app/Http/Middleware/GenerateMenus.php | 212 +++++++++++++++-------- app/Templates/Catalog.php | 13 ++ app/Templates/News.php | 13 ++ resources/views/pages/solution.blade.php | 31 ++++ routes/backpack/custom.php | 5 + routes/web.php | 10 +- 7 files changed, 204 insertions(+), 82 deletions(-) create mode 100644 app/Templates/Catalog.php create mode 100644 app/Templates/News.php create mode 100644 resources/views/pages/solution.blade.php diff --git a/app/Http/Controllers/PageController.php b/app/Http/Controllers/PageController.php index b29e965..b098177 100644 --- a/app/Http/Controllers/PageController.php +++ b/app/Http/Controllers/PageController.php @@ -2,7 +2,7 @@ namespace App\Http\Controllers; -use Backpack\PageManager\app\Models\Page; +use App\Models\Page; class PageController extends Controller { diff --git a/app/Http/Middleware/GenerateMenus.php b/app/Http/Middleware/GenerateMenus.php index f72be3b..2446c3e 100644 --- a/app/Http/Middleware/GenerateMenus.php +++ b/app/Http/Middleware/GenerateMenus.php @@ -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 index 0000000..61aa406 --- /dev/null +++ b/app/Templates/Catalog.php @@ -0,0 +1,13 @@ +title); + @endphp + + + + + + + + + + + +

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?

+ +

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.

+ +

En savoir plus

+
+ +
+
+
+ +
+@endsection diff --git a/routes/backpack/custom.php b/routes/backpack/custom.php index 7ec9638..05ca495 100644 --- a/routes/backpack/custom.php +++ b/routes/backpack/custom.php @@ -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'); diff --git a/routes/web.php b/routes/web.php index 2fb07dd..9816886 100644 --- a/routes/web.php +++ b/routes/web.php @@ -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' => '.*']); -- 2.39.5