diff options
| author | polo <ordipolo@gmx.fr> | 2026-10-23 00:47:32 +0200 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2026-10-23 00:47:32 +0200 |
| commit | f27cca08ff786ceff1870147f6d6bad14d71117f (patch) | |
| tree | d36597a72025313d6faf4ed228755fa267ebe2f6 /src/View/BreadcrumbBuilder.php | |
| parent | c7309f900ef05bd5cb313110ec159b761af394ec (diff) | |
| download | cms-f27cca08ff786ceff1870147f6d6bad14d71117f.tar.gz cms-f27cca08ff786ceff1870147f6d6bad14d71117f.tar.bz2 cms-f27cca08ff786ceff1870147f6d6bad14d71117f.zip | |
dossiers avec majuscule, namespace pour toutes les classes, autoload psr-4, UserDataService::createZip déplacé dans Backup
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..81df0eb --- /dev/null +++ b/src/View/BreadcrumbBuilder.php | |||
| @@ -0,0 +1,53 @@ | |||
| 1 | <?php | ||
| 2 | // src/View/BreadcrumbBuilder.php | ||
| 3 | |||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 6 | namespace App\View; | ||
| 7 | |||
| 8 | //use App\Entity\Node; | ||
| 9 | use App\Model\Model; | ||
| 10 | use App\Service\URL; | ||
| 11 | |||
| 12 | class 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 | ||
