diff options
Diffstat (limited to 'src/view/BreadcrumbBuilder.php')
| -rw-r--r-- | src/view/BreadcrumbBuilder.php | 53 |
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..f1fdddf --- /dev/null +++ b/src/view/BreadcrumbBuilder.php | |||
| @@ -0,0 +1,53 @@ | |||
| 1 | <?php | ||
| 2 | // src/view/BreadcrumbBuilder.php | ||
| 3 | |||
| 4 | use App\Entity\Node; | ||
| 5 | |||
| 6 | class BreadcrumbBuilder extends AbstractBuilder | ||
| 7 | { | ||
| 8 | public function __construct(Node $node) | ||
| 9 | { | ||
| 10 | $this->html = $this->breadcrumbHTML(false); | ||
| 11 | } | ||
| 12 | |||
| 13 | private function breadcrumbHTML(bool $links = false): string | ||
| 14 | { | ||
| 15 | $asset = 'assets/home.svg'; // => BDD? | ||
| 16 | $breadcrumb_array = Director::$page_path->getArray(); // tableau de Page | ||
| 17 | $html = ''; | ||
| 18 | $nb_of_entries = count($breadcrumb_array); | ||
| 19 | |||
| 20 | if($nb_of_entries > 1) | ||
| 21 | { | ||
| 22 | // petite maison et flèche | ||
| 23 | $html .= '<nav class="breadcrumb" aria-label="Breadcrumb">' . "\n"; | ||
| 24 | $html .= '<a href="' . new URL . '"><img src="' . $asset . '"></a><span class="arrow"> →</span>' . "\n"; | ||
| 25 | |||
| 26 | // partie intermédiaire | ||
| 27 | for($i = 0; $i < ($nb_of_entries - 1); $i++) | ||
| 28 | { | ||
| 29 | // liens optionnels | ||
| 30 | if($links) | ||
| 31 | { | ||
| 32 | $html .= '<a href="'; | ||
| 33 | for($j = 1; $j < $i; $j++) // chemin sans la fin | ||
| 34 | { | ||
| 35 | $html .= new URL(['page' => $breadcrumb_array[$i]->getPagePath()]); | ||
| 36 | } | ||
| 37 | $html .= '">'; | ||
| 38 | } | ||
| 39 | $html .= '<span>' . $breadcrumb_array[$i]->getPageName() . '</span>'; | ||
| 40 | if($links) | ||
| 41 | { | ||
| 42 | $html .= '</a>'; | ||
| 43 | } | ||
| 44 | $html .= '<span class="arrow"> →</span>' . "\n"; | ||
| 45 | } | ||
| 46 | |||
| 47 | // fin du chemin | ||
| 48 | $html .= '<span 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 | ||
