Ajout du fil d'Ariane alias breadcrumbs

This commit is contained in:
nox 2019-10-24 01:15:07 +02:00
parent 59450c34ef
commit 93a2d0bdc4
5 changed files with 186 additions and 100 deletions

View File

@ -4,34 +4,75 @@
Ğ1-Marché - {{ region.name }} {% if page > 1 %} - Page {{ page }}{% endif %}
{% endblock %}
{% block body %}
<div class="container" style="display:float;">
<img src="\images\logo_region.png" style="width:30%;"/>
</div>
{% if region.name == 'Ile-de-France' %}
<script type="text/javascript">
$('.fond').css('background-image', "url('/images/ile-de-france.jpg')");
</script>
{% endif %}
<style>
.breadcrumb {
font-size: 1rem;
}
.breadcrumbs {
grid-area: breadcrumbs;
grid-column: 0 / 1;
justify-items: left;
}
.main {
grid-area: main;
/*justify-self: start;
align-self: start;*/
grid-column: 1 / 2;
}
.sidebar {
grid-area: sidebar;
}
.footer {
grid-area: footer;
}
</style>
<div class="row card" style="width: 17rem;margin-left: 1rem;">
<div class="container" style="display:float;">
<div class="label" style="background-color: white;display:inline-block;padding-top:0.3rem;">
<h5>Antennes {{ region.name }} :</h5>
<!-- Fil d'Ariane -->
<div class="breadcrumbs" >
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="/gmarche">Accueil</a></li>
<li class="breadcrumb-item active">{{ region.name }}</li>
</ol>
</nav>
</div>
</div>
<ul class="list-group list-group-flush">
{% for antenne in antennes %}
<a style="color:black;" href="{{ path('product.index', {region: region.slug, slug: antenne.slug, antenne: antenne.id} ) }}" title="{{ antenne.name }}">
<li class="liste_antennes list-group-item" style="padding: .2rem 1.25rem;">
{{ antenne.name }}
</li>
</a>
<sidebar class="sidebar">
</sidebar>
<article class="main">
<div class="container">
<img src="\images\logo_region.png" style="background-color: burlywood;" />
</div>
{% if region.name == 'Ile-de-France' %}
<script type="text/javascript">
$('.fond').css('background-image', "url('/images/ile-de-france.jpg')");
</script>
{% endif %}
<div class="row card" style="width: 17rem;margin-left: 1rem;">
<div class="container">
<div class="label" style="background-color: white;display:inline-block;padding-top:0.3rem;">
<h5>Antennes {{ region.name }} :</h5>
</div>
</div>
<ul class="list-group list-group-flush">
{% for antenne in antennes %}
<a style="color:black;" href="{{ path('product.ville', {region: region.slug, slug:antenne.slug, antenne:antenne.id} ) }}" title="{{ antenne.name }}">
<li class="liste_antennes list-group-item" style="padding: .2rem 1.25rem;">
{{ antenne.name }}
</li>
</a>
{% endfor %}
</ul>
</div>
<footer class="footer">
<!-- if antennes
paginate(antennes, 'gmarche.antenne', {slug: slug})
endif -->
</footer>
</article>
{% endfor %}
</ul>
</div>
{% if antennes %}
{{ paginate(antennes, 'gmarche.antenne', {slug: slug}) }}
{% endif %}
{% endblock %}

View File

@ -2,6 +2,7 @@
namespace App\Product\Actions;
use App\Gmarche\Table\AntenneTable;
use App\Gmarche\Table\RegionTable;
use App\Product\Table\ProductTable;
use Framework\Actions\RouterAwareAction;
use Framework\Renderer\RendererInterface;
@ -25,35 +26,35 @@ class ProductIndexAction
public function __construct(
RendererInterface $renderer,
ProductTable $productTable,
AntenneTable $antenneTable
AntenneTable $antenneTable,
RegionTable $regionTable
) {
$this->renderer = $renderer;
$this->productTable = $productTable;
$this->antenneTable = $antenneTable;
$this->regionTable = $regionTable;
}
/*public function findAllUsers(): Query
{
return $this->userTable->makeQuery()
->select('*')
->where('id=1')
->order('username ASC');
}*/
public function __invoke(Request $request)
{
$params = $request->getQueryParams();
$antenne_slug =$request->getAttribute('slug');
// $region =$request->getAttribute('region');
$region_slug =$request->getAttribute('region');
$requete = $this->antenneTable->findBy('slug', $antenne_slug);
$antenne_name = $requete->name;
$antenne_id = $requete->id;
$requete_region = $this->regionTable->findBy('slug', $region_slug);
$region_name = $requete_region->name;
$page = $params['p'] ?? 1;
//$routePrefix = 'product.admin';
$routePrefix = 'product.admin';
//$routePrefix = 'product.index';
$viewPath = '@product/admin/products';
$items = $this->productTable->findByAntenneId('antenne_id', $antenne_id)->paginate(20, $page);
return $this->renderer->render($viewPath.'/index', compact('antenne_id','antenne_slug','antenne_name','routePrefix','viewPath', 'items' ));
//echo "antenne_ici";
//var_dump($items);
//die();
return $this->renderer->render($viewPath.'/index', compact('antenne_slug','region_name','region_slug','antenne_id','antenne_name','viewPath', 'items' ));
}
}

View File

@ -9,6 +9,8 @@ use Framework\Module;
use Framework\Renderer\RendererInterface;
use Framework\Renderer\TwigRenderer;
use Framework\Router;
use Grpc\Server;
use GuzzleHttp\Psr7\ServerRequest;
use Psr\Container\ContainerInterface;
class ProductModule extends Module
@ -22,15 +24,30 @@ class ProductModule extends Module
public function __construct(ContainerInterface $container)
{
$productPrefix = $container->get('product.prefix');
$gmarchePrefix = $container->get('gmarche.prefix');
$gmarchePrefix = $container->get('gmarche.prefix');
$container->get(RendererInterface::class)->addPath('product', __DIR__ . '/views');
$router = $container->get(Router::class);
//$router->get("$gmarchePrefix/{region:[a-z\-0-9]+}/{antenne:[a-z\-0-9]+}", ProductIndexAction::class, 'product.index');
//$router->get("$gmarchePrefix/{region:[a-z\-]+}/{slug:[a-z\-]+}", ProductIndexAction::class, 'product.ville');
$router->get("$gmarchePrefix/{region:[a-z\-0-9]+}/{slug:[a-z\-0-9]+}/{antenne:[0-9]{1,}}", ProductIndexAction::class, 'product.ville');
$router->get("/gmarche/{region:[a-z\-0-9]+}/{slug:[a-z\-0-9]+}/{antenne:[0-9]{1,}}", ProductIndexAction::class, 'product.index');
// $router->get("$gmarchePrefix/{region:[a-z\-0-9]+}/{antenne:[a-z\-0-9]+}/{slug:[a-z\-0-9]+}", ProductIndexAction::class, 'product.admin');
//$router->get("$gmarchePrefix/{region:[a-z\-0-9]+}/fuck/{antenne:[a-z\-0-9]+}", ProductIndexAction::class, 'product.index');
$router->crud("/gmarche/{region:[a-z\-]+}/{slug:[a-z\-0-9]+}/{antenne:[0-9]{1,}}",[LoggedInMiddleware::class, ProductCrudAction::class],'product.admin');
// $route = $router->match(new ServerRequest('GET','/gmarche/ile-de-france/paris/1'));
//$this->assertEquals(null, $route);
//echo 'var dump route';
//var_dump($route);
//die();
// $router->get("$gmarchePrefix/{region:[a-z\-0-9]+}/{slug:[a-z\-0-9]+}", ProductIndexAction::class, 'product.index');
//$router->get("$gmarchePrefix/ile-de-france/paris", ProductIndexAction::class, 'product.index');
//echo "<br />var_dump";
//var_dump($router);
//die();
// $router->crud("$gmarchePrefix/{region:[a-z\-]+}/{slug:[a-z\-0-9]+}/{antenne:[0-9]{1,}}",[LoggedInMiddleware::class, ProductCrudAction::class],'product.admin');
}
}
// $router->get("$gmarchePrefix/{region:[a-z\-0-9]+}/{slug:[a-z\-0-9]+}/{antenne:[0-9]{1,}}", ProductIndexAction::class, 'product.index');

View File

@ -34,8 +34,21 @@
text-align: right;
padding-right: 2rem;
}
.breadcrumb {
font-size: 1rem;
}
</style>
<script type="text/javascript" src="/js/script.js"></script>
<!-- Fil d'Ariane -->
<div class="breadcrumbs" >
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="/gmarche">Accueil</a></li>
<li class="breadcrumb-item"><a href="/gmarche/{{ region_slug }}">{{ region_name }}</a></li>
<li class="breadcrumb-item active">{{ antenne_name }}</li>
</ol>
</nav>
</div>
<div id="la_page">
<div class="label" style="background-color: white;">
<h4>G-Marché de : {{ antenne_name }}</h4>
@ -176,9 +189,9 @@
</tr>
</thead>
<tbody>
<!--crochet% set token_input = csrf_input %crochet-->
crochet% set token_input = csrf_input %crochet
<!-- paginate(items, routePrefix ~ '.index', {id: item.id, region: explodeUrl()[2], slug: explodeUrl()[3], antenne: explodeUrl()[4]}) -->
paginate(items, routePrefix ~ '.index', {id: item.id, region: explodeUrl()[2],
slug: explodeUrl()[3], antenne: explodeUrl()[4]}) -->
</div>
{% endblock %}

View File

@ -12,63 +12,77 @@
body {
padding-top: 5rem;
}
.page {
display: grid;
grid-template-rows:60px 50px 1fr 80px;
grid-template-columns: 1fr 1fr 1fr;
grid-template-areas:
"site site site"
"header header header"
"breadcrumbs breadcrumbs breadcrumbs"
"sidebar main main"
"footer footer footer";
}
.site {
grid-column: 2 / 3;
}
</style>
</head>
<body class="fond">
<nav class="navbar fixed-top navbar-expand-sm navbar-dark bg-dark">
<a class="navbar-brand" href="#">Ğ1-Marché</a>
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link {% if regions %} active{% endif %}" style="font-size:14px;"
href="{{ path('gmarche.index') }}">Accueil</a>
</li>
<li class="nav-item">
<a class="nav-link {% if explodeUrl()[1]=='contact' %} active{% endif %}" style="font-size:14px;"
href="{{ path('contact') }}">Qui sommes-nous ?</a>
</li>
{% if antenne_name %}
<button class="btn-custom">Produits</button>
{% endif %}
</ul>
<div class="navbar-nav">
<div class="navbar-text" style="color:lightgray;margin-right:15px; margin-top:-3px;">
{{ "now"|date('d/m/y') }}
</div>
{% if current_user() %}
<div class="navbar-text"><span><img src="\avatar_user.png" width="22" height="22" /></span>
<span id="nom_connecte">{{ current_user().username }}</span></div>
&nbsp; &nbsp;
<form method="post" action="{{ path('auth.logout') }}">
<!-- csrf_input() }}-->
<button class="btn btn-danger" style="font-size:14px;">Se déconnecter</button>
</form>
{% else %}
<div class="nav-item">
<a class="nav-link" href="{{ path('auth.login') }}" style="font-size:14px;">Se connecter</a>
<body class="fond page">
<div class="site">
<nav class="navbar fixed-top navbar-expand-sm navbar-dark bg-dark">
<a class="navbar-brand" href="#">Ğ1-Marché</a>
<ul class="navbar-nav mr-auto">
<li class="nav-item">
<a class="nav-link {% if regions %} active{% endif %}" style="font-size:14px;"
href="{{ path('gmarche.index') }}">Accueil</a>
</li>
<li class="nav-item">
<a class="nav-link {% if explodeUrl()[1]=='contact' %} active{% endif %}" style="font-size:14px;"
href="{{ path('contact') }}">Qui sommes-nous ?</a>
</li>
{% if antenne_name %}
<button class="btn-custom">Produits</button>
{% endif %}
</ul>
<div class="navbar-nav">
<div class="navbar-text" style="color:lightgray;margin-right:15px; margin-top:-3px;">
{{ "now"|date('d/m/y') }}
</div>
{% if current_user() %}
<div class="navbar-text"><span><img src="\avatar_user.png" width="22" height="22" /></span>
<span id="nom_connecte">{{ current_user().username }}</span></div>
&nbsp; &nbsp;
<form method="post" action="{{ path('auth.logout') }}">
<!-- csrf_input() }}-->
<button class="btn btn-danger" style="font-size:14px;">Se déconnecter</button>
</form>
{% else %}
<div class="nav-item">
<a class="nav-link" href="{{ path('auth.login') }}" style="font-size:14px;">Se connecter</a>
</div>
<div class="nav-item">
<a class="nav-link" href="{{ path('account.signup') }}" style="font-size:14px;">S'inscrire</a>
</div>
{% endif %}
</div>
<div class="nav-item">
<a class="nav-link" href="{{ path('account.signup') }}" style="font-size:14px;">S'inscrire</a>
</div>
{% endif %}
</nav>
<!-- <div class="container">-->
{% if flash('success') %}
<div class="alert alert-success">
{{ flash('success') }}
</div>
{% endif %}
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
{% block body %}{% endblock %}
<!--</div>-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js"></script>
</div>
</nav>
<div class="container">
{% if flash('success') %}
<div class="alert alert-success">
{{ flash('success') }}
</div>
{% endif %}
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
{% block body %}{% endblock %}
</div><!-- /.container -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
</body>
</html>