diff options
Diffstat (limited to 'src/view')
-rw-r--r-- | src/view/MenuBuilder.php | 46 | ||||
-rw-r--r-- | src/view/templates/menu.php | 9 |
2 files changed, 26 insertions, 29 deletions
diff --git a/src/view/MenuBuilder.php b/src/view/MenuBuilder.php index 5a010d5..42c9273 100644 --- a/src/view/MenuBuilder.php +++ b/src/view/MenuBuilder.php | |||
@@ -1,19 +1,19 @@ | |||
1 | <?php | 1 | <?php |
2 | // src/view/MenuBuilder.php | 2 | // src/view/MenuBuilder.php |
3 | // | 3 | // |
4 | // page Menu et chemins en mode admin | 4 | // page Menu et chemins en mode admin, fonctionne avec menu.js |
5 | 5 | ||
6 | use App\Entity\Node; | 6 | use App\Entity\Node; |
7 | use App\Entity\Page; | 7 | use App\Entity\Page; |
8 | 8 | ||
9 | class MenuBuilder extends AbstractBuilder | 9 | class MenuBuilder extends AbstractBuilder |
10 | { | 10 | { |
11 | private int $margin_left_multiplier = 29; | 11 | //private int $margin_left_multiplier = 29; |
12 | 12 | ||
13 | public function __construct(Node $node) | 13 | public function __construct(Node $node = null, bool $template = true) |
14 | { | 14 | { |
15 | parent::__construct($node); | 15 | //parent::__construct($node); |
16 | $viewFile = self::VIEWS_PATH . $node->getName() . '.php'; | 16 | $viewFile = $node === null ? self::VIEWS_PATH . 'menu.php' : self::VIEWS_PATH . $node->getName() . '.php'; |
17 | 17 | ||
18 | if(file_exists($viewFile)) | 18 | if(file_exists($viewFile)) |
19 | { | 19 | { |
@@ -22,33 +22,33 @@ class MenuBuilder extends AbstractBuilder | |||
22 | extract($node->getNodeData()->getData()); | 22 | extract($node->getNodeData()->getData()); |
23 | }*/ | 23 | }*/ |
24 | 24 | ||
25 | if($_SESSION['admin']) | 25 | if($_SESSION['admin']){ |
26 | { | 26 | $this->unfoldMenu(Director::$menu_data/*, 0 - $this->margin_left_multiplier*/); |
27 | $this->unfoldMenu(Director::$menu_data, 0 - $this->margin_left_multiplier); | ||
28 | } | 27 | } |
29 | else{ | 28 | else{ |
30 | header('Location: ' . new URL); | 29 | header('Location: ' . new URL); |
31 | die; | 30 | die; |
32 | } | 31 | } |
33 | 32 | ||
34 | ob_start(); | 33 | // si faux, n'utilise pas le template |
35 | require $viewFile; | 34 | if($template){ |
36 | $this->html = ob_get_clean(); // pas de concaténation ici, on écrase | 35 | ob_start(); |
36 | require $viewFile; // insertion de $this->html généré par unfoldMenu | ||
37 | $this->html = ob_get_clean(); // pas de concaténation .= cette fois on écrase | ||
38 | } | ||
37 | } | 39 | } |
38 | } | 40 | } |
39 | 41 | ||
40 | private function unfoldMenu(Page $menu, int $margin_left): void | 42 | private function unfoldMenu(Page $menu): void |
41 | { | 43 | { |
42 | $margin_left += $this->margin_left_multiplier; | ||
43 | $this->html .= '<div class="level">' . "\n"; | 44 | $this->html .= '<div class="level">' . "\n"; |
44 | 45 | ||
45 | foreach($menu->getChildren() as $entry) | 46 | foreach($menu->getChildren() as $entry) |
46 | { | 47 | { |
47 | $div_style = 'margin-left: ' . $margin_left . 'px;'; | ||
48 | $checked = $entry->isHidden() ? '' : 'checked'; | 48 | $checked = $entry->isHidden() ? '' : 'checked'; |
49 | $this->html .= '<div id="' . $entry->getId() . '" style="' . $div_style . '"> | 49 | $this->html .= '<div id="' . $entry->getId() . '" class="menu_edit_entry"> |
50 | <img class="move_entry_icon" onclick="" src="assets/arrow-left.svg"> | 50 | <img class="move_entry_icon" onclick="moveOneLevelUp(' . $entry->getId() . ')" src="assets/arrow-left.svg"> |
51 | <img class="move_entry_icon" onclick="" src="assets/arrow-right.svg"> | 51 | <img class="move_entry_icon" onclick="moveOneLevelDown(' . $entry->getId() . ')" src="assets/arrow-right.svg"> |
52 | <img class="move_entry_icon" onclick="switchMenuPositions(' . $entry->getId() . ', \'up\')" src="assets/arrow-up.svg"> | 52 | <img class="move_entry_icon" onclick="switchMenuPositions(' . $entry->getId() . ', \'up\')" src="assets/arrow-up.svg"> |
53 | <img class="move_entry_icon" onclick="switchMenuPositions(' . $entry->getId() . ', \'down\')" src="assets/arrow-down.svg"> | 53 | <img class="move_entry_icon" onclick="switchMenuPositions(' . $entry->getId() . ', \'down\')" src="assets/arrow-down.svg"> |
54 | <span class="menu_entry_checkbox"> | 54 | <span class="menu_entry_checkbox"> |
@@ -58,24 +58,18 @@ class MenuBuilder extends AbstractBuilder | |||
58 | 58 | ||
59 | if(str_starts_with($entry->getEndOfPath(), 'http')){ | 59 | if(str_starts_with($entry->getEndOfPath(), 'http')){ |
60 | $this->html .= '<span id="edit-i..."><img class="move_entry_icon" src="assets/edit.svg" onclick="openEditor(\'i...\')"></span> | 60 | $this->html .= '<span id="edit-i..."><img class="move_entry_icon" src="assets/edit.svg" onclick="openEditor(\'i...\')"></span> |
61 | <i>' . $entry->getEndOfPath() . '</i> | 61 | <i class="url">' . $entry->getEndOfPath() . '</i> |
62 | <span id="delete-i..."><img class="move_entry_icon" src="assets/delete-bin.svg" onclick="delete(\'i...\')"></span>'; | 62 | <span id="delete-i..."><img class="move_entry_icon" src="assets/delete-bin.svg" onclick="delete(\'i...\')"></span>'; |
63 | } | 63 | } |
64 | else{ | 64 | else{ |
65 | $this->html .= '<i>' . $entry->getPagePath() . '</i>'; | 65 | $this->html .= '<i class="path">' . $entry->getPagePath() . '</i>'; |
66 | } | 66 | } |
67 | 67 | ||
68 | /* | ||
69 | => flèche gauche: position = position du parent + 1, parent = grand-parent, recalculer les positions | ||
70 | => flèche droite: position = nombre d'éléments de la fraterie + 1, l'élément précédent devient le parent | ||
71 | */ | ||
72 | |||
73 | if(count($entry->getChildren()) > 0){ | 68 | if(count($entry->getChildren()) > 0){ |
74 | $this->unfoldMenu($entry, $margin_left); | 69 | $this->unfoldMenu($entry); |
75 | } | 70 | } |
76 | $this->html .= '</div>' . "\n"; | 71 | $this->html .= '</div>' . "\n"; |
77 | } | 72 | } |
78 | $this->html .= "</div>\n"; | 73 | $this->html .= "</div>\n"; |
79 | $margin_left -= $this->margin_left_multiplier; | ||
80 | } | 74 | } |
81 | } \ No newline at end of file | 75 | } \ No newline at end of file |
diff --git a/src/view/templates/menu.php b/src/view/templates/menu.php index a7f318e..1414ab0 100644 --- a/src/view/templates/menu.php +++ b/src/view/templates/menu.php | |||
@@ -6,10 +6,13 @@ | |||
6 | <p><img src="assets/arrow-up.svg"><img src="assets/arrow-down.svg"> déplacer la branche parmi celles de même niveau</p> | 6 | <p><img src="assets/arrow-up.svg"><img src="assets/arrow-down.svg"> déplacer la branche parmi celles de même niveau</p> |
7 | <p><input type="checkbox" checked>afficher/cacher</p> | 7 | <p><input type="checkbox" checked>afficher/cacher</p> |
8 | </aside> | 8 | </aside> |
9 | <div id="menu_edit_buttons"> | ||
9 | <?= $this->html ?> | 10 | <?= $this->html ?> |
11 | </div> | ||
10 | <div class="new_entry_buttons"> | 12 | <div class="new_entry_buttons"> |
11 | <p>Ajouter une nouvelle entrée dans le menu?</p> | 13 | <p>Ajouter une nouvelle entrée dans le menu |
12 | <button id="new-i..." onclick="openEditor('i...')"><img class="action_icon" src="assets/edit.svg">avec une URL</button> | 14 | <button id="new-i..." onclick="openEditor('i...')"><img class="action_icon" src="assets/edit.svg">avec une URL</button> |
13 | ...sinon cliquer sur Nouvelle page<img src="assets/arrow-down.svg">dans la barre jaune | 15 | ?</p> |
16 | <p>... ou cliquer sur <span style="color: #ff1d04;">Nouvelle page</span><img src="assets/arrow-down.svg">dans la barre jaune</p> | ||
14 | </div> | 17 | </div> |
15 | </section> \ No newline at end of file | 18 | </section> \ No newline at end of file |