aboutsummaryrefslogtreecommitdiff
path: root/src/view/NewsBlockBuilder.php
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2025-08-26 01:15:33 +0200
committerpolo <ordipolo@gmx.fr>2025-08-26 01:15:33 +0200
commitf4df3e9b9df3d54ce58796f923da70ff7e566018 (patch)
treebbd037099976d0411533823b26a34949d04f286c /src/view/NewsBlockBuilder.php
parentb02b44d1da7e9ddd7a341d29a597accfbb78155c (diff)
downloadcms-f4df3e9b9df3d54ce58796f923da70ff7e566018.zip
séparation bloc / mise en page, bloc spécial pour les actus, renommage de classes, fichiers, etc
Diffstat (limited to 'src/view/NewsBlockBuilder.php')
-rw-r--r--src/view/NewsBlockBuilder.php76
1 files changed, 76 insertions, 0 deletions
diff --git a/src/view/NewsBlockBuilder.php b/src/view/NewsBlockBuilder.php
new file mode 100644
index 0000000..eebeadb
--- /dev/null
+++ b/src/view/NewsBlockBuilder.php
@@ -0,0 +1,76 @@
1<?php
2// src/view/NewsBlockBuilder.php
3
4declare(strict_types=1);
5
6use App\Entity\Node;
7
8class NewsBlockBuilder extends AbstractBuilder
9{
10 public function __construct(Node $node)
11 {
12 parent::__construct($node);
13
14 // à remplacer par list.php/grid.php (une vue par stratégie) le jour ou ou a besoin de les différencier
15 $viewFile = self::VIEWS_PATH . $node->getName() . '.php'; // = news_block.php, actuellement identique à post_block.php
16
17 if(file_exists($viewFile))
18 {
19 if(!empty($node->getNodeData()->getData()))
20 {
21 extract($node->getNodeData()->getData());
22 }
23
24 $presentation = $node->getNodeData()->getPresentation()->getName(); // affichage list ou grid
25
26 // exécution de la stratégie (utilisation d'une méthode ou d'une classe)
27 $section_class = $presentation;
28 $section_child_class = $presentation === 'grid' ? 'grid_columns' : '';
29
30 // ajouter un article
31 $new_article = '';
32 if($_SESSION['admin'])
33 {
34 $id = 'n' . $this->id_node;
35
36 $share_button = '<p class="share hidden"><img class="action_icon" src="assets/share.svg"></p>';
37
38 $new_button = '<p><a class="link_to_article" href="' . new URL(['page' => 'article', 'id' => $id]) . '"><button><img class="action_icon" src="assets/edit.svg">Nouvel article</button></a></p>';
39
40 $modify_js = 'onclick="openEditor(\'' . $id . '\')"';
41 $modify_article = '<p id="edit-' . $id . '" class="hidden"><img class="action_icon" src="assets/edit.svg" ' . $modify_js . '></p>' . "\n";
42
43 $up_js = 'onclick="switchPositions(\'' . $id . '\', \'up\')"';
44 $up_button = '<p id="position_up-' . $id . '" class="hidden"><img class="action_icon" src="assets/arrow-up.svg" ' . $up_js . '></p>' . "\n";
45
46 $down_js = 'onclick="switchPositions(\'' . $id . '\', \'down\')"';
47 $down_button = '<p id="position_down-' . $id . '" class="hidden"><img class="action_icon" src="assets/arrow-down.svg" ' . $down_js . '></p>' . "\n";
48
49 $delete_js = 'onclick="deleteArticle(\'' . $id . '\')"';
50 $delete_article = '<p id="delete-' . $id . '" class="hidden"><img class="action_icon" src="assets/delete-bin.svg" ' . $delete_js . '></p>' . "\n";
51
52 $close_js = 'onclick="closeEditor(\'' . $id . '\')"';
53 $close_editor = '<p id="cancel-' . $id . '" class="hidden"><button ' . $close_js . '>Annuler</button></p>';
54
55 $submit_js = 'onclick="submitArticle(\'' . $id . '\', \'\', clone' . $this->id_node . ')"';
56 $submit_article = '<p id="submit-' . $id . '" class="hidden"><button ' . $submit_js . '>Valider</button></p>';
57
58 $html = '';
59 $admin_buttons = $new_button . $modify_article . $up_button . $down_button . $delete_article . $close_editor . $submit_article;
60
61 // post vide mis là pour le bouton "Nouvel article" => déplace vers page "article"
62 ob_start();
63 require self::VIEWS_PATH . 'post.php'; // nécéssite $admin_buttons et $html
64 $new_article = ob_get_clean();
65 }
66
67 // articles existants
68 $this->useChildrenBuilder($node);
69 $content = $this->html;
70
71 ob_start();
72 require $viewFile; // utilise $content
73 $this->html = ob_get_clean(); // nouveau contenu
74 }
75 }
76} \ No newline at end of file