summaryrefslogtreecommitdiff
path: root/src/view
diff options
context:
space:
mode:
Diffstat (limited to 'src/view')
-rw-r--r--src/view/MenuBuilder.php46
-rw-r--r--src/view/templates/menu.php9
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
6use App\Entity\Node; 6use App\Entity\Node;
7use App\Entity\Page; 7use App\Entity\Page;
8 8
9class MenuBuilder extends AbstractBuilder 9class 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