diff options
31 files changed, 214 insertions, 20 deletions
diff --git a/public/css/main.css b/public/css/main.css index c5289f0..93a7bcf 100644 --- a/public/css/main.css +++ b/public/css/main.css | |||
| @@ -57,7 +57,7 @@ article .logo2 | |||
| 57 | } | 57 | } |
| 58 | article img | 58 | article img |
| 59 | { | 59 | { |
| 60 | max-width: 100%; | 60 | width: 100%; |
| 61 | height: auto; | 61 | height: auto; |
| 62 | } | 62 | } |
| 63 | 63 | ||
| @@ -131,4 +131,54 @@ main button:hover | |||
| 131 | article a:hover | 131 | article a:hover |
| 132 | { | 132 | { |
| 133 | cursor: pointer; | 133 | cursor: pointer; |
| 134 | } | ||
| 135 | |||
| 136 | |||
| 137 | |||
| 138 | /* -- mode modification d'une page -- */ | ||
| 139 | /*.modif_page_explanations | ||
| 140 | { | ||
| 141 | background-color: white; | ||
| 142 | padding: 10px; | ||
| 143 | margin: 10px 20px; | ||
| 144 | } | ||
| 145 | .modif_page_explanations div | ||
| 146 | { | ||
| 147 | display: flex; | ||
| 148 | flex-wrap: wrap; | ||
| 149 | font-size: smaller; | ||
| 150 | }*/ | ||
| 151 | .new_bloc | ||
| 152 | { | ||
| 153 | background-color: white; | ||
| 154 | padding: 10px; | ||
| 155 | margin: 10px 20px; | ||
| 156 | |||
| 157 | } | ||
| 158 | .new_bloc p | ||
| 159 | { | ||
| 160 | margin: 5px; | ||
| 161 | } | ||
| 162 | .new_bloc #bloc_title | ||
| 163 | { | ||
| 164 | width: 100%; | ||
| 165 | max-width: 300px; | ||
| 166 | } | ||
| 167 | .new_bloc form select, .new_bloc form input[type=submit] | ||
| 168 | { | ||
| 169 | color: #ff1d04; | ||
| 170 | font-size: medium; | ||
| 171 | border-radius: 4px; | ||
| 172 | background-color: white; | ||
| 173 | border: lightgrey 2px outset; | ||
| 174 | } | ||
| 175 | select:hover | ||
| 176 | { | ||
| 177 | cursor: pointer; | ||
| 178 | } | ||
| 179 | .new_bloc form input[type=submit]:hover | ||
| 180 | { | ||
| 181 | background-color: #ffff00; | ||
| 182 | border-radius: 4px; | ||
| 183 | cursor: pointer; | ||
| 134 | } \ No newline at end of file | 184 | } \ No newline at end of file |
diff --git a/public/css/menu.css b/public/css/menu.css index 3294c2b..61e8a01 100644 --- a/public/css/menu.css +++ b/public/css/menu.css | |||
| @@ -37,19 +37,15 @@ | |||
| 37 | { | 37 | { |
| 38 | display: flex; | 38 | display: flex; |
| 39 | flex-wrap: wrap; | 39 | flex-wrap: wrap; |
| 40 | } | ||
| 41 | .menu aside .controls_explanations p | ||
| 42 | { | ||
| 43 | font-size: smaller; | 40 | font-size: smaller; |
| 44 | } | 41 | } |
| 45 | .menu aside img | 42 | .menu aside img, .menu aside input |
| 46 | { | 43 | { |
| 47 | vertical-align: bottom; | 44 | vertical-align: bottom; |
| 48 | } | 45 | } |
| 49 | .menu aside input | 46 | .menu aside input |
| 50 | { | 47 | { |
| 51 | pointer-events: none; /* case non clicable, sauf action au clavier... */ | 48 | pointer-events: none; /* case non clicable, sauf action au clavier... */ |
| 52 | vertical-align: bottom; | ||
| 53 | } | 49 | } |
| 54 | .menu #location, .menu input[type=submit] | 50 | .menu #location, .menu input[type=submit] |
| 55 | { | 51 | { |
diff --git a/public/index.php b/public/index.php index abdac71..9f930fd 100644 --- a/public/index.php +++ b/public/index.php | |||
| @@ -60,6 +60,12 @@ elseif(isset($_GET['action']) && $_GET['action'] === 'modif_mdp') | |||
| 60 | { | 60 | { |
| 61 | changePassword($entityManager); | 61 | changePassword($entityManager); |
| 62 | } | 62 | } |
| 63 | elseif($_SESSION['admin'] && isset($_GET['page']) && isset($_GET['action']) && $_GET['action'] === 'modif_page' | ||
| 64 | && $_GET['page'] !== 'connexion' && $_GET['page'] !== 'article' && $_GET['page'] !== 'menu_chemins') | ||
| 65 | { | ||
| 66 | // les contrôles de la 2è ligne devraient utiliser un tableau | ||
| 67 | MainBuilder::$modif_mode = true; | ||
| 68 | } | ||
| 63 | 69 | ||
| 64 | // -- contrôleurs -- | 70 | // -- contrôleurs -- |
| 65 | $director = new Director($entityManager, true); | 71 | $director = new Director($entityManager, true); |
diff --git a/src/controller/Director.php b/src/controller/Director.php index a2528ed..56a90cb 100644 --- a/src/controller/Director.php +++ b/src/controller/Director.php | |||
| @@ -16,11 +16,11 @@ class Director | |||
| 16 | private Node $node; | 16 | private Node $node; |
| 17 | private Node $article; | 17 | private Node $article; |
| 18 | 18 | ||
| 19 | public function __construct(EntityManager $entityManager, bool $for_display = false) | 19 | public function __construct(EntityManager $entityManager, bool $get_menu = false) |
| 20 | { | 20 | { |
| 21 | $this->entityManager = $entityManager; | 21 | $this->entityManager = $entityManager; |
| 22 | if($for_display){ | 22 | if($get_menu){ |
| 23 | self::$menu_data = new Menu($entityManager); // Menu est un modèle mais pas une entité | 23 | self::$menu_data = new Menu($entityManager); |
| 24 | self::$page_path = new Path(); | 24 | self::$page_path = new Path(); |
| 25 | $this->page = self::$page_path->getLast(); | 25 | $this->page = self::$page_path->getLast(); |
| 26 | } | 26 | } |
| @@ -137,4 +137,24 @@ class Director | |||
| 137 | $this->node = $section; | 137 | $this->node = $section; |
| 138 | return true; | 138 | return true; |
| 139 | } | 139 | } |
| 140 | |||
| 141 | public function findNodeByName(string $name): void | ||
| 142 | { | ||
| 143 | $bulk_data = $this->entityManager | ||
| 144 | ->createQuery('SELECT n FROM App\Entity\Node n WHERE n.name_node = :name') | ||
| 145 | ->setParameter('name', $name) | ||
| 146 | ->getResult(); | ||
| 147 | $this->node = $bulk_data[0]; | ||
| 148 | echo $this->page->getPageName() . ' '; | ||
| 149 | |||
| 150 | $bulk_data = $this->entityManager | ||
| 151 | ->createQuery('SELECT n FROM App\Entity\Node n WHERE n.parent = :parent AND n.page = :page') | ||
| 152 | ->setParameter('parent', $this->node) | ||
| 153 | ->setParameter('page', $this->page) | ||
| 154 | ->getResult(); | ||
| 155 | foreach($bulk_data as $child){ | ||
| 156 | $this->node->addChild($child); | ||
| 157 | echo $child->getName() . ' '; | ||
| 158 | } | ||
| 159 | } | ||
| 140 | } | 160 | } |
diff --git a/src/controller/Security.php b/src/controller/Security.php index f9092e2..7d592e9 100644 --- a/src/controller/Security.php +++ b/src/controller/Security.php | |||
| @@ -3,6 +3,8 @@ | |||
| 3 | // | 3 | // |
| 4 | // htmlawed nettoie les entrées de l'utilisateur, en particulier le html de l'éditeur | 4 | // htmlawed nettoie les entrées de l'utilisateur, en particulier le html de l'éditeur |
| 5 | 5 | ||
| 6 | declare(strict_types=1); | ||
| 7 | |||
| 6 | class Security | 8 | class Security |
| 7 | { | 9 | { |
| 8 | private static $configHtmLawed = array( | 10 | private static $configHtmLawed = array( |
| @@ -14,10 +16,10 @@ class Security | |||
| 14 | // liste noire d'attributs HTML | 16 | // liste noire d'attributs HTML |
| 15 | 'deny_attribute'=> 'id, class' // on garde 'style' | 17 | 'deny_attribute'=> 'id, class' // on garde 'style' |
| 16 | ); | 18 | ); |
| 17 | |||
| 18 | // faire qu'un certain élément puisse n'avoir que certains attributs, regarder la doc | 19 | // faire qu'un certain élément puisse n'avoir que certains attributs, regarder la doc |
| 19 | private static $specHtmLawed = ''; | 20 | private static $specHtmLawed = ''; |
| 20 | 21 | ||
| 22 | // ATTENTION, n'applique pas htmlspecialchars() !! | ||
| 21 | public static function secureString(string $chaine): string | 23 | public static function secureString(string $chaine): string |
| 22 | { | 24 | { |
| 23 | return trim(htmLawed($chaine, self::$configHtmLawed, self::$specHtmLawed));; | 25 | return trim(htmLawed($chaine, self::$configHtmLawed, self::$specHtmLawed));; |
diff --git a/src/controller/post.php b/src/controller/post.php index d2e4477..76ac72b 100644 --- a/src/controller/post.php +++ b/src/controller/post.php | |||
| @@ -3,6 +3,8 @@ | |||
| 3 | 3 | ||
| 4 | declare(strict_types=1); | 4 | declare(strict_types=1); |
| 5 | 5 | ||
| 6 | use App\Entity\Node; | ||
| 7 | use App\Entity\NodeData; | ||
| 6 | use App\Entity\Page; | 8 | use App\Entity\Page; |
| 7 | 9 | ||
| 8 | if($_SERVER['REQUEST_METHOD'] === 'POST' && $_SESSION['admin'] === true) | 10 | if($_SERVER['REQUEST_METHOD'] === 'POST' && $_SESSION['admin'] === true) |
| @@ -10,17 +12,48 @@ if($_SERVER['REQUEST_METHOD'] === 'POST' && $_SESSION['admin'] === true) | |||
| 10 | /* -- formulaires HTML classiques -- */ | 12 | /* -- formulaires HTML classiques -- */ |
| 11 | if($_SERVER['CONTENT_TYPE'] === 'application/x-www-form-urlencoded') | 13 | if($_SERVER['CONTENT_TYPE'] === 'application/x-www-form-urlencoded') |
| 12 | { | 14 | { |
| 13 | // création d'une entrée de menu avec une URL | 15 | /* -- mode Modification d'une page -- */ |
| 14 | if(isset($_POST["label_input"]) && isset($_POST["url_input"]) && isset($_POST["location"])){ | 16 | |
| 15 | echo $_POST["label_input"] . '<br>'; | 17 | // ajout d'un bloc dans une page |
| 16 | echo $_POST["url_input"] . '<br>'; | 18 | if(isset($_POST['bloc_title']) && isset($_POST['bloc_select'])){ |
| 17 | echo $_POST["location"] . '<br>'; // id entrée précédente | 19 | $director = new Director($entityManager, true); // on a besoin de page_path qui dépend de menu_data |
| 20 | $page = Director::$page_path->getLast(); | ||
| 21 | $director->findNodeByName('main'); | ||
| 22 | $main = $director->getNode(); | ||
| 23 | $position = count($main->getChildren()) + 1; // position dans la fraterie | ||
| 24 | |||
| 25 | $bloc = new Node( | ||
| 26 | trim(htmlspecialchars($_POST["bloc_select"])), | ||
| 27 | null, [], | ||
| 28 | $position, | ||
| 29 | $main, | ||
| 30 | $page); | ||
| 31 | $data = new NodeData( | ||
| 32 | ['title' => trim(htmlspecialchars($_POST["bloc_title"]))], | ||
| 33 | $bloc); | ||
| 34 | |||
| 35 | $entityManager->persist($bloc); | ||
| 36 | $entityManager->persist($data); | ||
| 37 | $entityManager->flush(); | ||
| 38 | header("Location: " . new URL(['page' => $_GET['page'], 'action' => 'modif_page'])); | ||
| 39 | } | ||
| 18 | 40 | ||
| 41 | |||
| 42 | /* -- page Menu et chemins -- */ | ||
| 43 | |||
| 44 | // création d'une entrée de menu avec une URL | ||
| 45 | elseif(isset($_POST["label_input"]) && isset($_POST["url_input"]) && isset($_POST["location"])){ | ||
| 19 | Director::$menu_data = new Menu($entityManager); | 46 | Director::$menu_data = new Menu($entityManager); |
| 20 | $previous_page = Director::$menu_data->findPageById((int)$_POST["location"]); // (int) à cause de declare(strict_types=1); | 47 | $previous_page = Director::$menu_data->findPageById((int)$_POST["location"]); // (int) à cause de declare(strict_types=1); |
| 21 | $parent = $previous_page->getParent(); | 48 | $parent = $previous_page->getParent(); |
| 22 | 49 | ||
| 23 | $page = new Page($_POST["label_input"], $_POST["url_input"], true, true, false, $previous_page->getPosition(), $parent); | 50 | $page = new Page( |
| 51 | trim(htmlspecialchars($_POST["label_input"])), | ||
| 52 | filter_var($_POST["url_input"], FILTER_VALIDATE_URL), | ||
| 53 | true, true, false, | ||
| 54 | $previous_page->getPosition(), | ||
| 55 | $parent); | ||
| 56 | |||
| 24 | // on indique pour la nouvelle entrée la même position que la précédente, puis addChild l'ajoute à la fin du tableau "children" avant de déclencher un tri | 57 | // on indique pour la nouvelle entrée la même position que la précédente, puis addChild l'ajoute à la fin du tableau "children" avant de déclencher un tri |
| 25 | // exemple avec 2 comme position demandée: 1 2 3 4 2 devient 1 2 3 4 5 et la nouvelle entrée sera en 3è position | 58 | // exemple avec 2 comme position demandée: 1 2 3 4 2 devient 1 2 3 4 5 et la nouvelle entrée sera en 3è position |
| 26 | if($parent == null){ | 59 | if($parent == null){ |
| @@ -31,7 +64,6 @@ if($_SERVER['REQUEST_METHOD'] === 'POST' && $_SESSION['admin'] === true) | |||
| 31 | 64 | ||
| 32 | $entityManager->persist($page); | 65 | $entityManager->persist($page); |
| 33 | $entityManager->flush(); | 66 | $entityManager->flush(); |
| 34 | |||
| 35 | header("Location: " . new URL(['page' => $_GET['from']])); | 67 | header("Location: " . new URL(['page' => $_GET['from']])); |
| 36 | } | 68 | } |
| 37 | // suppression d'une entrée de menu avec une URL | 69 | // suppression d'une entrée de menu avec une URL |
| @@ -54,6 +86,7 @@ if($_SERVER['REQUEST_METHOD'] === 'POST' && $_SESSION['admin'] === true) | |||
| 54 | header("Location: " . new URL(['error' => 'paramètres inconnus'])); | 86 | header("Location: " . new URL(['error' => 'paramètres inconnus'])); |
| 55 | } | 87 | } |
| 56 | } | 88 | } |
| 89 | |||
| 57 | /* -- requêtes AJAX -- */ | 90 | /* -- requêtes AJAX -- */ |
| 58 | else{ | 91 | else{ |
| 59 | require '../src/controller/ajax.php'; | 92 | require '../src/controller/ajax.php'; |
diff --git a/src/model/Menu.php b/src/model/Menu.php index 10cf3d5..9fb8562 100644 --- a/src/model/Menu.php +++ b/src/model/Menu.php | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/controller/Menu.php | 2 | // src/model/Menu.php |
| 3 | 3 | ||
| 4 | declare(strict_types=1); | 4 | declare(strict_types=1); |
| 5 | 5 | ||
diff --git a/src/model/Path.php b/src/model/Path.php index 11be6fe..ad44fd9 100644 --- a/src/model/Path.php +++ b/src/model/Path.php | |||
| @@ -1,5 +1,7 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/controller/Path.php | 2 | // src/model/Path.php |
| 3 | // | ||
| 4 | // attention, cette classe dépend de src/model/Menu.php | ||
| 3 | 5 | ||
| 4 | declare(strict_types=1); | 6 | declare(strict_types=1); |
| 5 | 7 | ||
| @@ -14,6 +16,7 @@ class Path extends Page | |||
| 14 | { | 16 | { |
| 15 | $path_array = explode('/', CURRENT_PAGE); | 17 | $path_array = explode('/', CURRENT_PAGE); |
| 16 | try{ | 18 | try{ |
| 19 | // parcourir le menu de haut en bas pour obtenir un ou plusieurs objets Page | ||
| 17 | $this->findPage(Director::$menu_data, $path_array); // remplit $this->current_page | 20 | $this->findPage(Director::$menu_data, $path_array); // remplit $this->current_page |
| 18 | } | 21 | } |
| 19 | catch(Exception $e){} | 22 | catch(Exception $e){} |
diff --git a/src/view/AbstractBuilder.php b/src/view/AbstractBuilder.php index 285ebc3..76c51ed 100644 --- a/src/view/AbstractBuilder.php +++ b/src/view/AbstractBuilder.php | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/view/AbstractBuilder.php | 2 | // src/view/AbstractBuilder.php |
| 3 | 3 | ||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 4 | use App\Entity\Node; | 6 | use App\Entity\Node; |
| 5 | 7 | ||
| 6 | abstract class AbstractBuilder | 8 | abstract class AbstractBuilder |
diff --git a/src/view/ArticleBuilder.php b/src/view/ArticleBuilder.php index 1f5dbb8..3b9de87 100644 --- a/src/view/ArticleBuilder.php +++ b/src/view/ArticleBuilder.php | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/view/ArticleBuilder.php | 2 | // src/view/ArticleBuilder.php |
| 3 | 3 | ||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 4 | use App\Entity\Node; | 6 | use App\Entity\Node; |
| 5 | 7 | ||
| 6 | class ArticleBuilder extends AbstractBuilder | 8 | class ArticleBuilder extends AbstractBuilder |
diff --git a/src/view/BlogBuilder.php b/src/view/BlogBuilder.php index ca020b2..d646d5f 100644 --- a/src/view/BlogBuilder.php +++ b/src/view/BlogBuilder.php | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/view/BlogBuilder.php | 2 | // src/view/BlogBuilder.php |
| 3 | 3 | ||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 4 | use App\Entity\Node; | 6 | use App\Entity\Node; |
| 5 | 7 | ||
| 6 | class BlogBuilder extends AbstractBuilder | 8 | class BlogBuilder extends AbstractBuilder |
diff --git a/src/view/BreadcrumbBuilder.php b/src/view/BreadcrumbBuilder.php index 77f4c4c..fcdcd41 100644 --- a/src/view/BreadcrumbBuilder.php +++ b/src/view/BreadcrumbBuilder.php | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/view/BreadcrumbBuilder.php | 2 | // src/view/BreadcrumbBuilder.php |
| 3 | 3 | ||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 4 | use App\Entity\Node; | 6 | use App\Entity\Node; |
| 5 | 7 | ||
| 6 | class BreadcrumbBuilder extends AbstractBuilder | 8 | class BreadcrumbBuilder extends AbstractBuilder |
diff --git a/src/view/FooterBuilder.php b/src/view/FooterBuilder.php index 7abdb90..8678f56 100644 --- a/src/view/FooterBuilder.php +++ b/src/view/FooterBuilder.php | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/view/FooterBuilder.php | 2 | // src/view/FooterBuilder.php |
| 3 | 3 | ||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 4 | use App\Entity\Node; | 6 | use App\Entity\Node; |
| 5 | 7 | ||
| 6 | class FooterBuilder extends AbstractBuilder | 8 | class FooterBuilder extends AbstractBuilder |
diff --git a/src/view/GaleryBuilder.php b/src/view/GaleryBuilder.php index a895d70..f2dafc2 100644 --- a/src/view/GaleryBuilder.php +++ b/src/view/GaleryBuilder.php | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/view/GaleryBuilder.php | 2 | // src/view/GaleryBuilder.php |
| 3 | 3 | ||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 4 | use App\Entity\Node; | 6 | use App\Entity\Node; |
| 5 | 7 | ||
| 6 | class GaleryBuilder extends AbstractBuilder | 8 | class GaleryBuilder extends AbstractBuilder |
diff --git a/src/view/GridBuilder.php b/src/view/GridBuilder.php index fdc5426..6845c49 100644 --- a/src/view/GridBuilder.php +++ b/src/view/GridBuilder.php | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/view/GridBuilder.php | 2 | // src/view/GridBuilder.php |
| 3 | 3 | ||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 4 | use App\Entity\Node; | 6 | use App\Entity\Node; |
| 5 | 7 | ||
| 6 | class GridBuilder extends AbstractBuilder | 8 | class GridBuilder extends AbstractBuilder |
diff --git a/src/view/HeadBuilder.php b/src/view/HeadBuilder.php index c31c930..2cca757 100644 --- a/src/view/HeadBuilder.php +++ b/src/view/HeadBuilder.php | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/view/HeadBuilder.php | 2 | // src/view/HeadBuilder.php |
| 3 | 3 | ||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 4 | use App\Entity\Node; | 6 | use App\Entity\Node; |
| 5 | 7 | ||
| 6 | class HeadBuilder extends AbstractBuilder | 8 | class HeadBuilder extends AbstractBuilder |
diff --git a/src/view/HeaderBuilder.php b/src/view/HeaderBuilder.php index 28aae13..1c45d59 100644 --- a/src/view/HeaderBuilder.php +++ b/src/view/HeaderBuilder.php | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/view/HeaderBuilder.php | 2 | // src/view/HeaderBuilder.php |
| 3 | 3 | ||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 4 | use App\Entity\Node; | 6 | use App\Entity\Node; |
| 5 | 7 | ||
| 6 | class HeaderBuilder extends AbstractBuilder | 8 | class HeaderBuilder extends AbstractBuilder |
diff --git a/src/view/LoginBuilder.php b/src/view/LoginBuilder.php index ac9910f..532f054 100644 --- a/src/view/LoginBuilder.php +++ b/src/view/LoginBuilder.php | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/view/LoginBuilder.php | 2 | // src/view/LoginBuilder.php |
| 3 | 3 | ||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 4 | use App\Entity\Node; | 6 | use App\Entity\Node; |
| 5 | 7 | ||
| 6 | class LoginBuilder extends AbstractBuilder | 8 | class LoginBuilder extends AbstractBuilder |
diff --git a/src/view/MainBuilder.php b/src/view/MainBuilder.php index e73b298..fbdfbdd 100644 --- a/src/view/MainBuilder.php +++ b/src/view/MainBuilder.php | |||
| @@ -1,15 +1,20 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/view/MainBuilder.php | 2 | // src/view/MainBuilder.php |
| 3 | 3 | ||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 4 | use App\Entity\Article; | 6 | use App\Entity\Article; |
| 5 | use App\Entity\Node; | 7 | use App\Entity\Node; |
| 6 | 8 | ||
| 7 | class MainBuilder extends AbstractBuilder | 9 | class MainBuilder extends AbstractBuilder |
| 8 | { | 10 | { |
| 11 | static bool $modif_mode = false; | ||
| 12 | |||
| 9 | public function __construct(Node $node) | 13 | public function __construct(Node $node) |
| 10 | { | 14 | { |
| 11 | $this->html .= "<main>\n"; | 15 | $this->html .= "<main>\n"; |
| 12 | 16 | ||
| 17 | // cas particulier de la page article où l'article est greffé sur main | ||
| 13 | if(Director::$page_path->getLast()->getEndOfPath() === 'article'){ | 18 | if(Director::$page_path->getLast()->getEndOfPath() === 'article'){ |
| 14 | // pas censé arriver | 19 | // pas censé arriver |
| 15 | if(!isset($_GET['id'])){ | 20 | if(!isset($_GET['id'])){ |
| @@ -31,9 +36,53 @@ class MainBuilder extends AbstractBuilder | |||
| 31 | $this->html .= $builder->render(); | 36 | $this->html .= $builder->render(); |
| 32 | } | 37 | } |
| 33 | else{ | 38 | else{ |
| 39 | // si action = "modif_page", affiche des commandes pour modifier | ||
| 40 | if($_SESSION['admin'] && self::$modif_mode){ | ||
| 41 | // ajouter un contrôle du champ in_menu | ||
| 42 | $this->viewEditBlocks($node); | ||
| 43 | } | ||
| 44 | |||
| 34 | $this->useChildrenBuilder($node); | 45 | $this->useChildrenBuilder($node); |
| 35 | } | 46 | } |
| 36 | 47 | ||
| 37 | $this->html .= "</main>\n"; | 48 | $this->html .= "</main>\n"; |
| 38 | } | 49 | } |
| 50 | |||
| 51 | private function viewEditBlocks($node): void | ||
| 52 | { | ||
| 53 | // blocs disponibles | ||
| 54 | $blocs = ['Blog', 'Grille', 'Calendrier', 'Galerie']; // générer ça dynamiquement! | ||
| 55 | $blocs_true_names = ['blog', 'grid', 'calendar', 'galery']; | ||
| 56 | |||
| 57 | $options = ''; | ||
| 58 | for($i = 0; $i < count($blocs); $i++){ | ||
| 59 | $options .= '<option value= "' . $blocs_true_names[$i] . '">' . $blocs[$i] . "</option>\n"; | ||
| 60 | } | ||
| 61 | |||
| 62 | // blabla | ||
| 63 | /*$this->html .= '<aside class="modif_page_explanations"> | ||
| 64 | <p>Modification de la structure d\'une page:</p> | ||
| 65 | <div> | ||
| 66 | <p><img></p> | ||
| 67 | <p><img></p> | ||
| 68 | </div> | ||
| 69 | </aside>' . "\n";*/ | ||
| 70 | |||
| 71 | // ajout d'un nouveau bloc | ||
| 72 | $this->html .= '<div class="new_bloc"> | ||
| 73 | <p>Ajouter un bloc dans la page:</p> | ||
| 74 | <form method="post" action="' . new URL(['page' => CURRENT_PAGE]) . '"> | ||
| 75 | <p><label for="bloc_title">Titre</label> | ||
| 76 | <input type="text" id="bloc_title" name="bloc_title" required></p> | ||
| 77 | <p><label for="bloc_select">Type</label> | ||
| 78 | <select id="bloc_select" name="bloc_select" required>' | ||
| 79 | . $options . | ||
| 80 | '</select> | ||
| 81 | <input type="submit" value="Valider"></p> | ||
| 82 | </form> | ||
| 83 | </div>' . "\n"; | ||
| 84 | foreach($node->getChildren() as $child_node){ | ||
| 85 | //$this->html .= | ||
| 86 | } | ||
| 87 | } | ||
| 39 | } | 88 | } |
diff --git a/src/view/MenuBuilder.php b/src/view/MenuBuilder.php index 780ca7e..3b96af1 100644 --- a/src/view/MenuBuilder.php +++ b/src/view/MenuBuilder.php | |||
| @@ -3,6 +3,8 @@ | |||
| 3 | // | 3 | // |
| 4 | // page Menu et chemins en mode admin, fonctionne avec menu.js | 4 | // page Menu et chemins en mode admin, fonctionne avec menu.js |
| 5 | 5 | ||
| 6 | declare(strict_types=1); | ||
| 7 | |||
| 6 | use App\Entity\Node; | 8 | use App\Entity\Node; |
| 7 | use App\Entity\Page; | 9 | use App\Entity\Page; |
| 8 | 10 | ||
| @@ -84,7 +86,7 @@ class MenuBuilder extends AbstractBuilder | |||
| 84 | private function unfoldOptions(Page $page): void | 86 | private function unfoldOptions(Page $page): void |
| 85 | { | 87 | { |
| 86 | foreach($page->getChildren() as $entry){ | 88 | foreach($page->getChildren() as $entry){ |
| 87 | $this->options .= '<option value="' . $entry->getId() . '">' . $entry->getPageName() . "</options>\n"; | 89 | $this->options .= '<option value="' . $entry->getId() . '">' . $entry->getPageName() . "</option>\n"; |
| 88 | if(count($entry->getChildren()) > 0){ | 90 | if(count($entry->getChildren()) > 0){ |
| 89 | $this->unfoldOptions($entry); | 91 | $this->unfoldOptions($entry); |
| 90 | } | 92 | } |
diff --git a/src/view/NewBuilder.php b/src/view/NewBuilder.php index ac2cf9a..c410eb7 100644 --- a/src/view/NewBuilder.php +++ b/src/view/NewBuilder.php | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | <?php | 1 | <?php |
| 2 | // src/view/NewBuilder.php | 2 | // src/view/NewBuilder.php |
| 3 | 3 | ||
| 4 | declare(strict_types=1); | ||
| 5 | |||
| 4 | use App\Entity\Node; | 6 | use App\Entity\Node; |
| 5 | 7 | ||
| 6 | class NewBuilder extends AbstractBuilder | 8 | class NewBuilder extends AbstractBuilder |
diff --git a/src/view/password.php b/src/view/password.php index 0ff717c..aadfbae 100644 --- a/src/view/password.php +++ b/src/view/password.php | |||
| @@ -7,6 +7,8 @@ | |||
| 7 | // | 7 | // |
| 8 | // rajouter la page "créationn du mot de passe"? | 8 | // rajouter la page "créationn du mot de passe"? |
| 9 | 9 | ||
| 10 | declare(strict_types=1); | ||
| 11 | |||
| 10 | // insertion du captcha | 12 | // insertion du captcha |
| 11 | ob_start(); | 13 | ob_start(); |
| 12 | ?> | 14 | ?> |
diff --git a/src/view/templates/article.php b/src/view/templates/article.php index c57c1cb..5cf35c2 100644 --- a/src/view/templates/article.php +++ b/src/view/templates/article.php | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | <?php declare(strict_types=1); ?> | ||
| 1 | <article> | 2 | <article> |
| 2 | <div class="article_content"> | 3 | <div class="article_content"> |
| 3 | <div class="article_title_zone"> | 4 | <div class="article_title_zone"> |
diff --git a/src/view/templates/blog.php b/src/view/templates/blog.php index e2066c8..dfb65b5 100644 --- a/src/view/templates/blog.php +++ b/src/view/templates/blog.php | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | <?php declare(strict_types=1); ?> | ||
| 1 | <section class="blog" id="<?= $this->id_node ?>"> | 2 | <section class="blog" id="<?= $this->id_node ?>"> |
| 2 | <h3><?= $title ?></h3> | 3 | <h3><?= $title ?></h3> |
| 3 | <?= $new_article ?> | 4 | <?= $new_article ?> |
diff --git a/src/view/templates/footer.php b/src/view/templates/footer.php index a4e3544..52cb1b5 100644 --- a/src/view/templates/footer.php +++ b/src/view/templates/footer.php | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | <?php declare(strict_types=1); ?> | ||
| 1 | <footer> | 2 | <footer> |
| 2 | <?= $breadcrumb ?> | 3 | <?= $breadcrumb ?> |
| 3 | <div> | 4 | <div> |
diff --git a/src/view/templates/galery.php b/src/view/templates/galery.php index 246c4dd..97f8cd8 100644 --- a/src/view/templates/galery.php +++ b/src/view/templates/galery.php | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | <?php declare(strict_types=1); ?> | ||
| 1 | <section class="galery" id="<?= $this->id_node ?>"> | 2 | <section class="galery" id="<?= $this->id_node ?>"> |
| 2 | <h3><?= $title ?></h3> | 3 | <h3><?= $title ?></h3> |
| 3 | <?= $new_article ?> | 4 | <?= $new_article ?> |
diff --git a/src/view/templates/grid.php b/src/view/templates/grid.php index f9e441d..71c052b 100644 --- a/src/view/templates/grid.php +++ b/src/view/templates/grid.php | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | <?php declare(strict_types=1); ?> | ||
| 1 | <section class="grid" id="<?= $this->id_node ?>"> | 2 | <section class="grid" id="<?= $this->id_node ?>"> |
| 2 | <h3><?= $title ?></h3> | 3 | <h3><?= $title ?></h3> |
| 3 | <?= $new_article ?> | 4 | <?= $new_article ?> |
diff --git a/src/view/templates/head.php b/src/view/templates/head.php index 1ebb17e..b74335e 100644 --- a/src/view/templates/head.php +++ b/src/view/templates/head.php | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | <?php declare(strict_types=1); ?> | ||
| 1 | <!DOCTYPE html> | 2 | <!DOCTYPE html> |
| 2 | <html lang="fr"> | 3 | <html lang="fr"> |
| 3 | <head> | 4 | <head> |
diff --git a/src/view/templates/header.php b/src/view/templates/header.php index 4b633a6..1855741 100644 --- a/src/view/templates/header.php +++ b/src/view/templates/header.php | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | <?php declare(strict_types=1); ?> | ||
| 1 | <body> | 2 | <body> |
| 2 | <div> | 3 | <div> |
| 3 | <header> | 4 | <header> |
diff --git a/src/view/templates/menu.php b/src/view/templates/menu.php index d62b78b..55c9ff9 100644 --- a/src/view/templates/menu.php +++ b/src/view/templates/menu.php | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | <?php declare(strict_types=1); ?> | ||
| 1 | <section class="menu"> | 2 | <section class="menu"> |
| 2 | <h3>Menu et chemins</h3> | 3 | <h3>Menu et chemins</h3> |
| 3 | <div class="new_page_button"> | 4 | <div class="new_page_button"> |
diff --git a/src/view/templates/new.php b/src/view/templates/new.php index fce0702..6533913 100644 --- a/src/view/templates/new.php +++ b/src/view/templates/new.php | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | <?php declare(strict_types=1); ?> | ||
| 1 | <article> | 2 | <article> |
| 2 | <div class="new_content"> | 3 | <div class="new_content"> |
| 3 | <div class="article_title_zone"> | 4 | <div class="article_title_zone"> |
