aboutsummaryrefslogtreecommitdiff
path: root/src/View/BreadcrumbBuilder.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/View/BreadcrumbBuilder.php')
-rw-r--r--src/View/BreadcrumbBuilder.php53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/View/BreadcrumbBuilder.php b/src/View/BreadcrumbBuilder.php
new file mode 100644
index 0000000..81df0eb
--- /dev/null
+++ b/src/View/BreadcrumbBuilder.php
@@ -0,0 +1,53 @@
1<?php
2// src/View/BreadcrumbBuilder.php
3
4declare(strict_types=1);
5
6namespace App\View;
7
8//use App\Entity\Node;
9use App\Model\Model;
10use App\Service\URL;
11
12class BreadcrumbBuilder extends AbstractBuilder
13{
14 public function __construct(/*Node $node*/){
15 $this->html = $this->breadcrumbHTML();
16 }
17
18 private function breadcrumbHTML(): string
19 {
20 $asset = 'assets/home.svg'; // => BDD?
21 $breadcrumb_array = Model::$page_path->getArray(); // tableau de Page
22 $html = '';
23 $nb_of_entries = count($breadcrumb_array);
24
25 if($nb_of_entries > 1)
26 {
27 // petite maison et flèche
28 $html .= '<nav class="breadcrumb" aria-label="Breadcrumb">' . "\n";
29 $html .= '<a href="' . new URL . '"><img src="' . $asset . '"></a><span class="arrow"> →</span>' . "\n";
30
31 // partie intermédiaire (pas de lien sur le dernier élément)
32 for($i = 0; $i < ($nb_of_entries - 1); $i++)
33 {
34 // liens optionnels
35 if($breadcrumb_array[$i]->isReachable())
36 {
37 $html .= '<a href="' . new URL(['page' => $breadcrumb_array[$i]->getPagePath()]) . '">';
38 }
39 $html .= '<span>' . $breadcrumb_array[$i]->getPageName() . '</span>';
40 if($breadcrumb_array[$i]->isReachable())
41 {
42 $html .= '</a>';
43 }
44 $html .= '<span class="arrow"> →</span>' . "\n";
45 }
46
47 // fin du chemin (=> Thésée)
48 $html .= '<span id="thesee" aria-current="page">' . $breadcrumb_array[$nb_of_entries - 1]->getPageName() . "</span>\n";
49 $html .= "</nav>\n";
50 }
51 return $html;
52 }
53} \ No newline at end of file