amélios visuelles diverses

This commit is contained in:
Olivier Legat 2021-04-13 10:18:50 +02:00
parent fa3a97862d
commit 912a75b274
14 changed files with 4599 additions and 44 deletions

View file

@ -42,8 +42,8 @@ class ProductsController extends Controller
return view ('product', compact('product', 'associated'));
}
public function allProducts(Request $request) {
//do better
public function allProducts(Request $request)
{
$filter = $request->query('filter');
@ -55,6 +55,22 @@ class ProductsController extends Controller
$products = Product::where('status', 1)->paginate(12);
}
return view('search', compact('products', 'filter'));
$search_title = 'Recherche : ' .$filter;
return view('search', compact('products', 'search_title', 'filter'));
}
public function tagFiltered(Request $request, $tag_slug)
{
$products = Product::where('status', 1)
->whereHas('tags', function($q) use($tag_slug) {
$q->where('slug', '=', $tag_slug);
})
->paginate(12);
$tag = Tag::where('slug', $tag_slug)->first();
$search_title = $tag->label;
return view('search', compact('products', 'search_title', 'tag'));
}
}

5
package-lock.json generated
View file

@ -1074,6 +1074,11 @@
"to-fast-properties": "^2.0.0"
}
},
"@fortawesome/fontawesome-free": {
"version": "5.15.3",
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.3.tgz",
"integrity": "sha512-rFnSUN/QOtnOAgqFRooTA3H57JLDm0QEG/jPdk+tLQNL/eWd+Aok8g3qCI+Q1xuDPWpGW/i9JySpJVsq8Q0s9w=="
},
"@mrmlnc/readdir-enhanced": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz",

View file

@ -26,6 +26,7 @@
"vue-template-compiler": "^2.6.12"
},
"dependencies": {
"@fortawesome/fontawesome-free": "^5.15.3",
"sass": "^1.28.0",
"vue": "^2.6.12",
"vuex": "^3.6.2"

File diff suppressed because one or more lines are too long

4481
public/b-o/js/app.js vendored

File diff suppressed because one or more lines are too long

View file

@ -9,6 +9,7 @@ window._ = require('lodash');
window.axios = require('axios');
window.Popper = require('popper.js').default;
//window.$ = window.jQuery = require('jquery');
require('@fortawesome/fontawesome-free/js/all');
require('bootstrap');
window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

View file

@ -1,6 +1,9 @@
// Fonts
@import url('https://fonts.googleapis.com/css?family=Nunito');
//libs
@import "~@fortawesome/fontawesome-free/css/all.min.css";
// Variables
@import 'variables';

View file

@ -3,8 +3,8 @@
@section('content')
<div class="d-flex justify-content-between flex-wrap flex-md-nowrap align-items-center pt-3 pb-2 mb-3 border-bottom">
<h1 class="h2">Dashboard</h1>
<div class="btn-toolbar mb-2 mb-md-0">
<a href="#" class="btn btn-sm btn-primary">Export</a>
</div>
{{--<div class="btn-toolbar mb-2 mb-md-0">
<a href="#" class="btn btn-sm btn-primary">##</a>
</div>--}}
</div>
@endsection

View file

@ -83,18 +83,18 @@
<div class="menu-block">
<div class="menu-block__title">Nos volailles</div>
<ul class="menu-block__list">
<li><a href="#">canard</a></li>
<li><a href="#">poulet</a></li>
<li><a href="#">dinde</a></li>
<li><a href="{{route('products.tagfilter', Str::slug('canard'))}}">canard</a></li>
<li><a href="{{route('products.tagfilter', Str::slug('poulet'))}}">poulet</a></li>
<li><a href="{{route('products.tagfilter', Str::slug('dinde'))}}">dinde</a></li>
</ul>
</div>
<div class="menu-block">
<div class="menu-block__title">Nos préparations</div>
<ul class="menu-block__list">
<li><a href="#">charcuteries</a></li>
<li><a href="#">panés</a></li>
<li><a href="#">produits surgelés</a></li>
<li><a href="#">paniers garnis</a></li>
<li><a href="{{route('products.tagfilter', Str::slug('charcuteries'))}}">charcuteries</a></li>
<li><a href="{{route('products.tagfilter', Str::slug('panés'))}}">panés</a></li>
<li><a href="{{route('products.tagfilter', Str::slug('produits surgelés'))}}">produits surgelés</a></li>
<li><a href="{{route('products.tagfilter', Str::slug('paniers garnis'))}}">paniers garnis</a></li>
</ul>
</div>
</div>

View file

@ -16,7 +16,12 @@
<div class="related-products__row-block">
<div class="related-products__item related-products__product related-product">
<a class="related-product__title title title_xs" href="{{route('product', ['productSlug' => $product->slug])}}">{{ $product->name }}</a>
<a class="related-product__image" href="{{route('product', ['productSlug' => $product->slug])}}"><img src="{{ asset('/images/produits/' . $product->picture )}}" /></a>
<a class="related-product__image" href="{{route('product', ['productSlug' => $product->slug])}}">
@if($product->promotions->count())
<div class="related-products__specialoffer">Offre spéciale</div>
@endif
<img src="{{ asset('/images/produits/' . $product->picture )}}" />
</a>
<div class="related-product__bottom">
<div class="related-product__price">@fmt_currency($product->discountedPriceTtc) @fmt_sellunit($product->sell_unit)</div>
<button class="related-product__btn btn btn_blue" @click="addtocart({{ $product->id }},1)"></button>

View file

@ -1,10 +1,13 @@
@extends('layouts.layout')
@extends('layouts.layout',['brParam' => ($tag ?? null)])
@section('title', __('Tous les produits'))
@section('title', ($search_title ?? __('Tous les produits')))
@section('breadcrumb', request()->route()->getName())
@section('content')
<div class="auth-form auth-form_register">
{{-- la champ de recherche dans le header suffit pour le moment
<h1 class="mentios-page__title title">{{ $search_title ?? __('Tous les produits') }}</h1>
{{-- la champ de recherche dans le header suffit pour le moment
<div class="auth-form auth-form_register">
<form class="auth-form__form form" method="GET">
<div class="form__row">
<div class="form__field">
@ -18,8 +21,9 @@
<div class="form__field form__submit">
<button type="submit" class="form__btn btn btn_blue">{{ __('Filtrer') }}</button>
</div>
</form>--}}
</div>
</form>
</div>--}}
@include('partials.products-list')
@include('partials.ranges-slider')

View file

@ -27,7 +27,7 @@
<div class="row">
<nav id="sidebarMenu" class="col-md-3 col-lg-2 d-md-block bg-light sidebar collapse">
<div class="sidebar-sticky pt-3">
<ul class="nav flex-column">
{{--<ul class="nav flex-column">
<li class="nav-item">
<a class="nav-link" href="#">Tableau de bord</a>
</li>
@ -37,7 +37,7 @@
<li class="nav-item">
<a class="nav-link" href="#">Utilisateurs</a>
</li>
</ul>
</ul>--}}
{{--<h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted">
<span>PAGES</span>
@ -60,12 +60,17 @@
<a class="nav-link" href="{{route('bo.ranges.index')}}">Gammes de produits</a>
</li>
</ul>--}}
<ul class="nav flex-column mb-2">
<li class="nav-item">
<a class="nav-link" href="{{route('home')}}" target="_front">Voir le site</a>
</li>
</ul>
<div class="accordion" id="accordionMenu">
<div class="card">
<div class="card-header" id="headingPages">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#collapsePages" aria-expanded="true" aria-controls="collapseOne">
Pages
<i class="far fa-file-word"></i> Pages
</button>
</h2>
</div>
@ -87,7 +92,7 @@
<div class="card-header" id="headingProduits">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#collapseProduits" aria-expanded="true" aria-controls="collapseOne">
Produits
<i class="fas fa-store"></i> Produits
</button>
</h2>
</div>
@ -107,7 +112,7 @@
<div class="card-header" id="headingMerchandising">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#collapseMerchandising" aria-expanded="true" aria-controls="collapseOne">
Merchandising
<i class="fas fa-cart-arrow-down"></i> Merchandising
</button>
</h2>
</div>
@ -124,25 +129,46 @@
</div>
</div>
</div>
<!-- Commandes -->
<div class="card">
<div class="card-header" id="headingOrders">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#collapseOrders" aria-expanded="true" aria-controls="collapseOne">
<i class="fas fa-cash-register"></i> Commandes
</button>
</h2>
</div>
<div id="collapseOrders" class="collapse {{ ( request()->routeIs('bo.orders*') ) ? 'show' : '' }}" aria-labelledby="headingOrders" tata-parent="#accordionMenu">
<div class="card-body">
<ul class="nav flex-column mb-2">
<li class="nav-item">
<a class="nav-link" href="{{route('bo.orders')}}">Commandes</a>
</li>
</ul>
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="headingSettings">
<h2 class="mb-0">
<button class="btn btn-link btn-block text-left" type="button" data-toggle="collapse" data-target="#collapseSettings" aria-expanded="true" aria-controls="collapseOne">
<i class="fas fa-cog"></i> Règlages
</button>
</h2>
</div>
<div id="collapseSettings" class="collapse {{ ( request()->routeIs('bo.settings*') ) ? 'show' : '' }}" aria-labelledby="headingSettings" tata-parent="#accordionMenu">
<div class="card-body">
<ul class="nav flex-column mb-2">
<li class="nav-item">
<a class="nav-link" href="{{route('bo.settings')}}">Paramètres</a>
</li>
</ul>
</div>
</div>
</div>
</div>
<h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted">
<span>COMMANDES</span>
</h6>
<ul class="nav flex-column mb-2">
<li class="nav-item">
<a class="nav-link" href="{{route('bo.orders')}}">Commandes</a>
</li>
</ul>
<h6 class="sidebar-heading d-flex justify-content-between align-items-center px-3 mt-4 mb-1 text-muted">
<span>SERVICE WEB</span>
</h6>
<ul class="nav flex-column mb-2">
<li class="nav-item">
<a class="nav-link" href="{{route('bo.settings')}}">Paramètres</a>
</li>
</ul>
</div>
</nav>

View file

@ -92,6 +92,14 @@ Breadcrumbs::for('products', function ($trail) {
$trail->parent('home');
$trail->push(__('Tous les produits'), route('products'));
});
Breadcrumbs::for('products.tagfilter', function ($trail, $tag) {
$trail->parent('products');
$trail->push($tag->label, route('products.tagfilter', ['tagSlug', $tag->slug]));
});
Breadcrumbs::for('search', function ($trail) {
$trail->parent('products');
$trail->push(__('Recherche'), route('search'));
});
// Second level
Breadcrumbs::for('range', function ($trail, $gamme) {

View file

@ -38,6 +38,7 @@ Route::get('/mon-panier', [BasketController::class, 'index'])->name('basket');
Route::get('/gammes-de-produits', [ProductsController::class, 'ranges'])->name('ranges');
Route::get('/gamme-de-produits/{rangeSlug}', [ProductsController::class, 'range'])->name('range')->middleware('redirect-slugs');
Route::get('/produits', [ProductsController::class, 'allProducts'])->name('products');
Route::get('/produits/{tagSlug}', [ProductsController::class, 'tagFiltered'])->name('products.tagfilter');
Route::get('/recherche', [ProductsController::class, 'allProducts'])->name('search');
Route::get('/produit/{productSlug}', [ProductsController::class, 'product'])->name('product')->middleware('redirect-slugs');