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 %} Ğ1-Marché - {{ region.name }} {% if page > 1 %} - Page {{ page }}{% endif %}
{% endblock %} {% endblock %}
{% block body %} {% block body %}
<div class="container" style="display:float;"> <style>
<img src="\images\logo_region.png" style="width:30%;"/> .breadcrumb {
</div> font-size: 1rem;
{% if region.name == 'Ile-de-France' %} }
<script type="text/javascript"> .breadcrumbs {
$('.fond').css('background-image', "url('/images/ile-de-france.jpg')"); grid-area: breadcrumbs;
</script> grid-column: 0 / 1;
{% endif %} 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;"> <!-- Fil d'Ariane -->
<div class="container" style="display:float;"> <div class="breadcrumbs" >
<div class="label" style="background-color: white;display:inline-block;padding-top:0.3rem;"> <nav aria-label="breadcrumb">
<h5>Antennes {{ region.name }} :</h5> <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>
</div> <sidebar class="sidebar">
<ul class="list-group list-group-flush">
{% for antenne in antennes %} </sidebar>
<a style="color:black;" href="{{ path('product.index', {region: region.slug, slug: antenne.slug, antenne: antenne.id} ) }}" title="{{ antenne.name }}"> <article class="main">
<li class="liste_antennes list-group-item" style="padding: .2rem 1.25rem;"> <div class="container">
{{ antenne.name }} <img src="\images\logo_region.png" style="background-color: burlywood;" />
</li> </div>
</a> {% 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 %} {% endblock %}

View File

@ -2,6 +2,7 @@
namespace App\Product\Actions; namespace App\Product\Actions;
use App\Gmarche\Table\AntenneTable; use App\Gmarche\Table\AntenneTable;
use App\Gmarche\Table\RegionTable;
use App\Product\Table\ProductTable; use App\Product\Table\ProductTable;
use Framework\Actions\RouterAwareAction; use Framework\Actions\RouterAwareAction;
use Framework\Renderer\RendererInterface; use Framework\Renderer\RendererInterface;
@ -25,35 +26,35 @@ class ProductIndexAction
public function __construct( public function __construct(
RendererInterface $renderer, RendererInterface $renderer,
ProductTable $productTable, ProductTable $productTable,
AntenneTable $antenneTable AntenneTable $antenneTable,
RegionTable $regionTable
) { ) {
$this->renderer = $renderer; $this->renderer = $renderer;
$this->productTable = $productTable; $this->productTable = $productTable;
$this->antenneTable = $antenneTable; $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) public function __invoke(Request $request)
{ {
$params = $request->getQueryParams(); $params = $request->getQueryParams();
$antenne_slug =$request->getAttribute('slug'); $antenne_slug =$request->getAttribute('slug');
// $region =$request->getAttribute('region'); $region_slug =$request->getAttribute('region');
$requete = $this->antenneTable->findBy('slug', $antenne_slug); $requete = $this->antenneTable->findBy('slug', $antenne_slug);
$antenne_name = $requete->name; $antenne_name = $requete->name;
$antenne_id = $requete->id; $antenne_id = $requete->id;
$requete_region = $this->regionTable->findBy('slug', $region_slug);
$region_name = $requete_region->name;
$page = $params['p'] ?? 1; $page = $params['p'] ?? 1;
//$routePrefix = 'product.admin'; //$routePrefix = 'product.admin';
$routePrefix = 'product.admin'; //$routePrefix = 'product.index';
$viewPath = '@product/admin/products'; $viewPath = '@product/admin/products';
$items = $this->productTable->findByAntenneId('antenne_id', $antenne_id)->paginate(20, $page); $items = $this->productTable->findByAntenneId('antenne_id', $antenne_id)->paginate(20, $page);
//echo "antenne_ici";
return $this->renderer->render($viewPath.'/index', compact('antenne_id','antenne_slug','antenne_name','routePrefix','viewPath', 'items' )); //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\RendererInterface;
use Framework\Renderer\TwigRenderer; use Framework\Renderer\TwigRenderer;
use Framework\Router; use Framework\Router;
use Grpc\Server;
use GuzzleHttp\Psr7\ServerRequest;
use Psr\Container\ContainerInterface; use Psr\Container\ContainerInterface;
class ProductModule extends Module class ProductModule extends Module
@ -22,15 +24,30 @@ class ProductModule extends Module
public function __construct(ContainerInterface $container) 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'); $container->get(RendererInterface::class)->addPath('product', __DIR__ . '/views');
$router = $container->get(Router::class); $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; text-align: right;
padding-right: 2rem; padding-right: 2rem;
} }
.breadcrumb {
font-size: 1rem;
}
</style> </style>
<script type="text/javascript" src="/js/script.js"></script> <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 id="la_page">
<div class="label" style="background-color: white;"> <div class="label" style="background-color: white;">
<h4>G-Marché de : {{ antenne_name }}</h4> <h4>G-Marché de : {{ antenne_name }}</h4>
@ -176,9 +189,9 @@
</tr> </tr>
</thead> </thead>
<tbody> <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],
<!-- paginate(items, routePrefix ~ '.index', {id: item.id, region: explodeUrl()[2], slug: explodeUrl()[3], antenne: explodeUrl()[4]}) --> slug: explodeUrl()[3], antenne: explodeUrl()[4]}) -->
</div> </div>
{% endblock %} {% endblock %}

View File

@ -12,63 +12,77 @@
body { body {
padding-top: 5rem; 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> </style>
</head> </head>
<body class="fond"> <body class="fond page">
<div class="site">
<nav class="navbar fixed-top navbar-expand-sm navbar-dark bg-dark"> <nav class="navbar fixed-top navbar-expand-sm navbar-dark bg-dark">
<a class="navbar-brand" href="#">Ğ1-Marché</a> <a class="navbar-brand" href="#">Ğ1-Marché</a>
<ul class="navbar-nav mr-auto"> <ul class="navbar-nav mr-auto">
<li class="nav-item"> <li class="nav-item">
<a class="nav-link {% if regions %} active{% endif %}" style="font-size:14px;" <a class="nav-link {% if regions %} active{% endif %}" style="font-size:14px;"
href="{{ path('gmarche.index') }}">Accueil</a> href="{{ path('gmarche.index') }}">Accueil</a>
</li> </li>
<li class="nav-item">
<li class="nav-item"> <a class="nav-link {% if explodeUrl()[1]=='contact' %} active{% endif %}" style="font-size:14px;"
<a class="nav-link {% if explodeUrl()[1]=='contact' %} active{% endif %}" style="font-size:14px;" href="{{ path('contact') }}">Qui sommes-nous ?</a>
href="{{ path('contact') }}">Qui sommes-nous ?</a> </li>
</li> {% if antenne_name %}
{% if antenne_name %} <button class="btn-custom">Produits</button>
<button class="btn-custom">Produits</button> {% endif %}
{% endif %} </ul>
</ul> <div class="navbar-nav">
<div class="navbar-nav"> <div class="navbar-text" style="color:lightgray;margin-right:15px; margin-top:-3px;">
<div class="navbar-text" style="color:lightgray;margin-right:15px; margin-top:-3px;"> {{ "now"|date('d/m/y') }}
{{ "now"|date('d/m/y') }} </div>
</div> {% if current_user() %}
{% if current_user() %} <div class="navbar-text"><span><img src="\avatar_user.png" width="22" height="22" /></span>
<div class="navbar-text"><span><img src="\avatar_user.png" width="22" height="22" /></span> <span id="nom_connecte">{{ current_user().username }}</span></div>
<span id="nom_connecte">{{ current_user().username }}</span></div> &nbsp; &nbsp;
&nbsp; &nbsp; <form method="post" action="{{ path('auth.logout') }}">
<form method="post" action="{{ path('auth.logout') }}"> <!-- csrf_input() }}-->
<!-- csrf_input() }}--> <button class="btn btn-danger" style="font-size:14px;">Se déconnecter</button>
<button class="btn btn-danger" style="font-size:14px;">Se déconnecter</button> </form>
</form> {% else %}
{% else %} <div class="nav-item">
<div class="nav-item"> <a class="nav-link" href="{{ path('auth.login') }}" style="font-size:14px;">Se connecter</a>
<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>
<div class="nav-item"> </nav>
<a class="nav-link" href="{{ path('account.signup') }}" style="font-size:14px;">S'inscrire</a>
</div> <!-- <div class="container">-->
{% endif %} {% 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> </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> </body>
</html> </html>