aboutsummaryrefslogtreecommitdiff
path: root/src/view/MainBuilder.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/view/MainBuilder.php')
-rw-r--r--src/view/MainBuilder.php95
1 files changed, 0 insertions, 95 deletions
diff --git a/src/view/MainBuilder.php b/src/view/MainBuilder.php
deleted file mode 100644
index 1df5846..0000000
--- a/src/view/MainBuilder.php
+++ /dev/null
@@ -1,95 +0,0 @@
1<?php
2// src/view/MainBuilder.php
3
4declare(strict_types=1);
5
6use App\Entity\Article;
7use App\Entity\Node;
8use App\Entity\Presentation;
9
10class MainBuilder extends AbstractBuilder
11{
12 static public bool $modif_mode = false;
13
14 public function __construct(Node $node)
15 {
16 $this->html .= "<main>\n";
17
18 // page article: cas particulier où l'article est greffé sur main
19 if(Model::$page_path->getLast()->getEndOfPath() === 'article'){
20 // pas censé arriver
21 if(!isset($_GET['id'])){
22 header('Location: ' . new URL);
23 die;
24 }
25
26 // nouvel article
27 if($node->getAdoptedChild() == null){
28 $date = new \DateTime;
29 $article = new Article('', $date);
30 $new = new Node('new', 0, null, null, $article);
31 }
32 // modification
33 else{
34 $new = $node->getAdoptedChild();
35 }
36 //$builder_name = $this->snakeToPascalCase($new->getName()) . 'Builder';
37 $builder_name = 'NewBuilder';
38 $builder = new $builder_name($new);
39 $this->html .= $builder->render();
40 }
41 else{
42 // si action = "modif_page", affiche des commandes supplémentaires
43 if(IS_ADMIN && self::$modif_mode){
44 // ajouter un contrôle du champ in_menu
45 $this->viewEditBlocks($node);
46 }
47
48 // dans tous les cas
49 $this->useChildrenBuilder($node);
50 }
51
52 $this->html .= "</main>\n";
53 }
54
55 // mode modification de page uniquement
56 private function viewEditBlocks(Node $node): void
57 {
58 $options = '';
59 foreach(Presentation::BLOCKS as $key => $value){
60 $options .= '<option value= "' . $key . '">' . $value . "</option>\n";
61 }
62
63 // ceci pourrait être déplacé au début des blocs
64 $bloc_edit = '';
65 foreach($node->getChildren() as $child_node){
66 // ordre des articles 'news'
67 if($child_node->getName() === 'news_block'){
68 $order = $child_node->getNodeData()->getChronoOrder() ? 'chrono' : 'antichrono';
69 }
70
71 // présentation par défaut
72 if(Presentation::hasPresentation($child_node->getName()) && $child_node->getNodeData()->getPresentation() === null){
73 $child_node->getNodeData()->setPresentation('full_width'); // pas de persistence ici
74 }
75
76 ob_start();
77 require self::VIEWS_PATH . 'modify_block.php';
78 $bloc_edit .= ob_get_clean();
79 }
80
81 ob_start();
82 require self::VIEWS_PATH . 'modify_page.php';
83 $this->html .= ob_get_clean();
84 }
85
86 // utilisée dans modify_block.php
87 private function makePresentationOptions(string $presentation): string
88 {
89 $options = '';
90 foreach(Presentation::PRESENTATIONS as $key => $value){
91 $options .= '<option value="' . $key . '" ' . ($presentation === $key ? 'selected' : '') . '>' . $value . '</option>';
92 }
93 return $options;
94 }
95} \ No newline at end of file