aboutsummaryrefslogtreecommitdiff
path: root/src/View/FooterBuilder.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/View/FooterBuilder.php')
-rw-r--r--src/View/FooterBuilder.php122
1 files changed, 122 insertions, 0 deletions
diff --git a/src/View/FooterBuilder.php b/src/View/FooterBuilder.php
new file mode 100644
index 0000000..72a571d
--- /dev/null
+++ b/src/View/FooterBuilder.php
@@ -0,0 +1,122 @@
1<?php
2// src/View/FooterBuilder.php
3
4declare(strict_types=1);
5
6namespace App\View;
7
8use App\Entity\Node;
9use App\Entity\Asset;
10use App\Controller\ViewController;
11use App\Model\Model;
12use App\Service\URL;
13
14class FooterBuilder extends AbstractBuilder
15{
16 public function __construct(Node $node)
17 {
18 $viewFile = self::VIEWS_PATH . $node->getName() . '.php';
19
20 if(file_exists($viewFile))
21 {
22 $node_data = $node->getNodeData();
23 // nom du contact, adresse et e-mail
24 if(!empty($node_data->getData()))
25 {
26 extract($node_data->getData());
27 }
28
29 $footer_logo = Asset::USER_PATH . $node_data->getAssetByRole('footer_logo')?->getFileName() ?? '';
30
31 $this->useChildrenBuilder($node);
32 $breadcrumb = $this->html;
33
34 $empty_admin_zone = '';
35 if(IS_ADMIN)
36 {
37 // données du footer
38 $admin_footer_name = '<input type="text" id="footer_name_input" class="hidden" value="' . htmlspecialchars($name ?? '') . '" placeholder="raison sociale" size="30">
39 <img id="footer_name_open" class="action_icon" src="assets/edit.svg" onclick="footer_name.open()">
40 <img id="footer_name_submit" class="action_icon hidden" src="assets/save.svg" onclick="footer_name.submit()">
41 <img id="footer_name_cancel" class="action_icon hidden" src="assets/close.svg" onclick="footer_name.cancel()">';
42 $admin_footer_address = '<input type="text" id="footer_address_input" class="hidden" value="' . htmlspecialchars($address ?? '') . '" placeholder="adresse" size="30">
43 <img id="footer_address_open" class="action_icon" src="assets/edit.svg" onclick="footer_address.open()">
44 <img id="footer_address_submit" class="action_icon hidden" src="assets/save.svg" onclick="footer_address.submit()">
45 <img id="footer_address_cancel" class="action_icon hidden" src="assets/close.svg" onclick="footer_address.cancel()">';
46 $admin_footer_email = '<input type="text" id="footer_email_input" class="hidden" value="' . htmlspecialchars($email ?? '') . '" placeholder="e-mail" size="30">
47 <img id="footer_email_open" class="action_icon" src="assets/edit.svg" onclick="footer_email.open()">
48 <img id="footer_email_submit" class="action_icon hidden" src="assets/save.svg" onclick="footer_email.submit()">
49 <img id="footer_email_cancel" class="action_icon hidden" src="assets/close.svg" onclick="footer_email.cancel()">';
50
51 $admin_footer_logo = '<input type="file" id="footer_logo_input" class="hidden" accept="image/png, image/jpeg, image/gif, image/webp, image/tiff">
52 <img id="footer_logo_open" class="action_icon" src="assets/edit.svg" onclick="footer_logo.open()">
53 <img id="footer_logo_submit" class="action_icon hidden" src="assets/save.svg" onclick="footer_logo.submit()">
54 <img id="footer_logo_cancel" class="action_icon hidden" src="assets/close.svg" onclick="footer_logo.cancel()">';
55
56 // zone admin
57 $empty_admin_zone = 'empty_admin_zone';
58 if(MainBuilder::$modif_mode){
59 $mode = 'modification de page';
60 $div_admin = 'logged_in modif_mode';
61 }
62 else{
63 $mode = 'administrateur';
64 $div_admin = 'logged_in';
65 }
66
67 $link_change_password = new URL(['page' => 'user_edit', 'from' => CURRENT_PAGE]);
68 isset($_GET['id']) ? $link_change_password->addParams(['id' => $_GET['id']]) : '';
69
70 $link_logout = new URL(['action' => 'deconnection', 'from' => CURRENT_PAGE]);
71 isset($_GET['id']) ? $link_logout->addParams(['id' => $_GET['id']]) : '';
72
73 $zone_admin = '<div class="admin_buttons_zone">
74 <p>Vous êtes en mode ' . $mode . ".</p>\n" .
75 '<div><a href="' . new URL(['page' => 'new_page']) . '"><button>Nouvelle page</button></a></div>' . "\n" .
76 $this->makePageModifModeButton() . "\n" .
77 '<div><a href="' . new URL(['page' => 'menu_paths']) . '"><button>Menu et chemins</button></a></div>' . "\n" .
78 '<div><a href="' . $link_change_password . '"><button>Mon compte</button></a></div>' . "\n" .
79 '<div><a href="' . new URL(['page' => 'maintenance']) . '"><button>Maintenance</button></a></div>' . "\n" .
80 '<div><a href="' . $link_logout . '"><button>Déconnexion</button></a></div>' . "\n" .
81 '</div>' . "\n";
82 }
83 else
84 {
85 $div_admin = 'logged_out';
86 $url = new URL(['page' => 'connection', 'from' => CURRENT_PAGE]);
87 if(Model::$page_path->getLast()->getEndOfPath() === 'article' && isset($_GET['id'])){
88 $url->addParams(['id' => $_GET['id']]);
89 }
90 $zone_admin = '<button><a href="' . $url . '">Mode admin</a></button>';
91
92 $admin_footer_name = '';
93 $admin_footer_address = '';
94 $admin_footer_email = '';
95 $admin_footer_logo = '';
96 }
97
98 ob_start();
99 require $viewFile;
100 $this->html = ob_get_clean();
101 }
102 }
103
104 private function makePageModifModeButton(): string
105 {
106 $link_edit_page = new URL(['page' => CURRENT_PAGE]);
107 if(!in_array(CURRENT_PAGE, ViewController::SPECIAL_PAGES)) // cas impossibles: 'user_edit' et 'connection' qui n'ont pas de footer
108 {
109 if(MainBuilder::$modif_mode){
110 $link_edit_label = 'Sortir du mode modification';
111 }
112 else{
113 $link_edit_page->addParams(['mode' => 'page_modif']);
114 $link_edit_label = 'Modifier la page';
115 }
116 return '<div><a href="' . $link_edit_page . '"><button>' . $link_edit_label . '</button></a></div>';
117 }
118 else{
119 return '';
120 }
121 }
122} \ No newline at end of file