aboutsummaryrefslogtreecommitdiff
path: root/src/view/MenuBuilder.php
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2026-10-23 00:47:32 +0200
committerpolo <ordipolo@gmx.fr>2026-10-23 00:47:32 +0200
commitf27cca08ff786ceff1870147f6d6bad14d71117f (patch)
treed36597a72025313d6faf4ed228755fa267ebe2f6 /src/view/MenuBuilder.php
parentc7309f900ef05bd5cb313110ec159b761af394ec (diff)
downloadcms-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/MenuBuilder.php')
-rw-r--r--src/view/MenuBuilder.php97
1 files changed, 0 insertions, 97 deletions
diff --git a/src/view/MenuBuilder.php b/src/view/MenuBuilder.php
deleted file mode 100644
index 0395dfa..0000000
--- a/src/view/MenuBuilder.php
+++ /dev/null
@@ -1,97 +0,0 @@
1<?php
2// src/view/MenuBuilder.php
3//
4// page Menu et chemins en mode admin, fonctionne avec menu.js
5
6declare(strict_types=1);
7
8use App\Entity\Node;
9use App\Entity\Page;
10
11class MenuBuilder extends AbstractBuilder
12{
13 //private int $margin_left_multiplier = 29;
14 private string $options = '';
15
16 public function __construct(?Node $node, bool $template = true)
17 {
18 // $node peut $etre null parce qu'on ne construit pas de page dans MenuAndPathsController, on ne lit pas la table "node", etc
19 $viewFile = $node === null ? self::VIEWS_PATH . 'menu.php' : self::VIEWS_PATH . $node->getName() . '.php';
20
21 if(file_exists($viewFile))
22 {
23 if(IS_ADMIN){
24 $this->unfoldMenu(Model::$menu);
25
26 if($template){
27 $this->unfoldOptions(Model::$menu);
28 }
29 }
30 else{
31 header('Location: ' . new URL);
32 die;
33 }
34
35 // si faux, n'utilise pas le template
36 if($template){
37 ob_start();
38 require $viewFile; // insertion de $this->html généré par unfoldMenu
39 $this->html = ob_get_clean(); // pas de concaténation .= cette fois on écrase
40 }
41 }
42 }
43
44 private function unfoldMenu(Page $page): void
45 {
46 $this->html .= '<div class="level">' . "\n";
47
48 foreach($page->getChildren() as $entry)
49 {
50 $checked = $entry->isHidden() ? '' : 'checked';
51 $this->html .= '<div id="' . $entry->getId() . '" class="menu_edit_entry">
52 <img class="move_entry_icon" onclick="moveOneLevelUp(' . $entry->getId() . ')" src="assets/arrow-left.svg">
53 <img class="move_entry_icon" onclick="moveOneLevelDown(' . $entry->getId() . ')" src="assets/arrow-right.svg">
54 <img class="move_entry_icon" onclick="switchMenuPositions(' . $entry->getId() . ', \'up\')" src="assets/arrow-up.svg">
55 <img class="move_entry_icon" onclick="switchMenuPositions(' . $entry->getId() . ', \'down\')" src="assets/arrow-down.svg">
56 <span class="menu_entry_checkbox">
57 <input type="checkbox" ' . $checked . ' onclick="checkMenuEntry(' . $entry->getId() . ')">
58 </span>';
59
60 // entrées URL: bouton poubelle + nom du lien + adresse
61 if(str_starts_with($entry->getEndOfPath(), 'http')){
62 $this->html .= '<form style="display: inline;" id="delete-i' . $entry->getId() . '" method="post" action="' . new URL(['from' => 'menu_paths']) . '">
63 <input type="hidden" name="delete" value="' . $entry->getId() . '">
64 <input type="image" class="move_entry_icon" src="assets/delete-bin.svg" alt="delete link button" onclick="return confirm(\'Voulez-vous vraiment supprimer cette entrée?\');">
65 </form>
66 <span class="url_name">
67 <button class="url_name"><input type="text" value="' . htmlspecialchars($entry->getPageName()) . '"></button>
68 <img class="move_entry_icon" src="assets/save.svg" onclick="editUrl(' . $entry->getId() . ', \'url_name\')">
69 </span>
70 <span class="url_content">
71 <input type="url" value="' . htmlspecialchars($entry->getEndOfPath()) . '" placeholder="https://..." onchange="controlURL(this)">
72 <img class="move_entry_icon" src="assets/save.svg" onclick="editUrl(' . $entry->getId() . ', \'url_content\')">
73 </span>';
74 }
75 else{
76 $this->html .= '<button>' . $entry->getPageName() . '</button>
77 <i class="path">' . $entry->getPagePath() . '</i>';
78 }
79
80 if(count($entry->getChildren()) > 0){
81 $this->unfoldMenu($entry);
82 }
83 $this->html .= '</div>' . "\n";
84 }
85 $this->html .= "</div>\n";
86 }
87
88 private function unfoldOptions(Page $page): void
89 {
90 foreach($page->getChildren() as $entry){
91 $this->options .= '<option value="' . $entry->getId() . '">' . $entry->getPageName() . "</option>\n";
92 if(count($entry->getChildren()) > 0){
93 $this->unfoldOptions($entry);
94 }
95 }
96 }
97} \ No newline at end of file