aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorpolo <ordipolo@gmx.fr>2025-10-29 12:08:28 +0100
committerpolo <ordipolo@gmx.fr>2025-10-29 12:08:28 +0100
commit822f526fd7f4e89043e64b435961720b622bdb6e (patch)
tree2c4bb2a653052f9dc76858db2a2f9f1d0d0a031a /src
parentf653506421ee8e2c46c78e93d28ee2418a1d399d (diff)
downloadcms-822f526fd7f4e89043e64b435961720b622bdb6e.tar.gz
cms-822f526fd7f4e89043e64b435961720b622bdb6e.tar.bz2
cms-822f526fd7f4e89043e64b435961720b622bdb6e.zip
gestion réseaux sociaux présents/absents, partie 1
Diffstat (limited to 'src')
-rw-r--r--src/controller/HeadFootController.php7
-rw-r--r--src/model/entities/NodeData.php2
-rw-r--r--src/view/HeaderBuilder.php51
-rw-r--r--src/view/templates/header.php8
-rw-r--r--src/view/templates/modify_block.php1
5 files changed, 34 insertions, 35 deletions
diff --git a/src/controller/HeadFootController.php b/src/controller/HeadFootController.php
index ffa33bc..7597683 100644
--- a/src/controller/HeadFootController.php
+++ b/src/controller/HeadFootController.php
@@ -3,14 +3,13 @@
3 3
4declare(strict_types=1); 4declare(strict_types=1);
5 5
6use App\Entity\NodeData;
6use App\Entity\NodeDataAsset; 7use App\Entity\NodeDataAsset;
7use App\Entity\Asset; 8use App\Entity\Asset;
8use Doctrine\ORM\EntityManager; 9use Doctrine\ORM\EntityManager;
9 10
10class HeadFootController 11class HeadFootController
11{ 12{
12 static array $social_networks = ['facebook', 'instagram', 'linkedin', 'github']; // à completer
13
14 static public function setTextData(EntityManager $entityManager, string $request_params, array $json): void 13 static public function setTextData(EntityManager $entityManager, string $request_params, array $json): void
15 { 14 {
16 $params_array = explode('_', $request_params); // header_title, header_description, footer_name, footer_address, footer_email 15 $params_array = explode('_', $request_params); // header_title, header_description, footer_name, footer_address, footer_email
@@ -22,7 +21,8 @@ class HeadFootController
22 $model = new Model($entityManager); 21 $model = new Model($entityManager);
23 if($model->findWhateverNode('name_node', $params_array[0])){ 22 if($model->findWhateverNode('name_node', $params_array[0])){
24 $node_data = $model->getNode()->getNodeData(); 23 $node_data = $model->getNode()->getNodeData();
25 if(in_array($params_array[1], self::$social_networks)){ 24
25 if(in_array($params_array[1], NodeData::$social_networks)){
26 $social = $node_data->getData()['social']; 26 $social = $node_data->getData()['social'];
27 $social[$params_array[1]] = $json['new_text']; 27 $social[$params_array[1]] = $json['new_text'];
28 $node_data->updateData('social', $social); 28 $node_data->updateData('social', $social);
@@ -30,6 +30,7 @@ class HeadFootController
30 else{ 30 else{
31 $node_data->updateData($params_array[1], $json['new_text']); // $params_array[1] n'est pas contrôlé 31 $node_data->updateData($params_array[1], $json['new_text']); // $params_array[1] n'est pas contrôlé
32 } 32 }
33
33 $entityManager->flush(); 34 $entityManager->flush();
34 echo json_encode(['success' => true]); 35 echo json_encode(['success' => true]);
35 } 36 }
diff --git a/src/model/entities/NodeData.php b/src/model/entities/NodeData.php
index ed94f1b..b0aaef9 100644
--- a/src/model/entities/NodeData.php
+++ b/src/model/entities/NodeData.php
@@ -13,6 +13,8 @@ use Doctrine\Common\Collections\Collection; // interface
13#[ORM\Table(name: TABLE_PREFIX . "node_data")] 13#[ORM\Table(name: TABLE_PREFIX . "node_data")]
14class NodeData 14class NodeData
15{ 15{
16 static array $social_networks = ['facebook', 'instagram', 'linkedin', 'github']; // à completer
17
16 #[ORM\Id] 18 #[ORM\Id]
17 #[ORM\GeneratedValue] 19 #[ORM\GeneratedValue]
18 #[ORM\Column(type: "integer")] 20 #[ORM\Column(type: "integer")]
diff --git a/src/view/HeaderBuilder.php b/src/view/HeaderBuilder.php
index 4fbf941..1cc4fc3 100644
--- a/src/view/HeaderBuilder.php
+++ b/src/view/HeaderBuilder.php
@@ -4,6 +4,7 @@
4declare(strict_types=1); 4declare(strict_types=1);
5 5
6use App\Entity\Node; 6use App\Entity\Node;
7use App\Entity\NodeData;
7use App\Entity\Asset; 8use App\Entity\Asset;
8 9
9class HeaderBuilder extends AbstractBuilder 10class HeaderBuilder extends AbstractBuilder
@@ -47,6 +48,7 @@ class HeaderBuilder extends AbstractBuilder
47 $header_logo = Asset::USER_PATH . $node_data->getAssetByRole('header_logo')?->getFileName() ?? ''; 48 $header_logo = Asset::USER_PATH . $node_data->getAssetByRole('header_logo')?->getFileName() ?? '';
48 $header_background_name = $node_data->getAssetByRole('header_background')?->getFileName(); 49 $header_background_name = $node_data->getAssetByRole('header_background')?->getFileName();
49 $header_background = $header_background_name ? Asset::USER_PATH . $header_background_name : ''; 50 $header_background = $header_background_name ? Asset::USER_PATH . $header_background_name : '';
51 $social_networks = '';
50 52
51 // boutons mode admin 53 // boutons mode admin
52 if($_SESSION['admin']){ 54 if($_SESSION['admin']){
@@ -66,6 +68,7 @@ class HeaderBuilder extends AbstractBuilder
66 <img id="header_logo_open" class="action_icon" src="assets/edit.svg" onclick="header_logo.open()"> 68 <img id="header_logo_open" class="action_icon" src="assets/edit.svg" onclick="header_logo.open()">
67 <img id="header_logo_submit" class="action_icon hidden" src="assets/save.svg" onclick="header_logo.submit()"> 69 <img id="header_logo_submit" class="action_icon hidden" src="assets/save.svg" onclick="header_logo.submit()">
68 <img id="header_logo_cancel" class="action_icon hidden" src="assets/close.svg" onclick="header_logo.cancel()">'; 70 <img id="header_logo_cancel" class="action_icon hidden" src="assets/close.svg" onclick="header_logo.cancel()">';
71
69 // texte dans classe header_content 72 // texte dans classe header_content
70 $admin_header_title = '<input type="text" id="header_title_input" class="hidden" value="' . htmlspecialchars($title ?? '') . '" placeholder="nom du site web" size="30"> 73 $admin_header_title = '<input type="text" id="header_title_input" class="hidden" value="' . htmlspecialchars($title ?? '') . '" placeholder="nom du site web" size="30">
71 <img id="header_title_open" class="action_icon" src="assets/edit.svg" onclick="header_title.open()"> 74 <img id="header_title_open" class="action_icon" src="assets/edit.svg" onclick="header_title.open()">
@@ -78,29 +81,23 @@ class HeaderBuilder extends AbstractBuilder
78 81
79 // icônes réseaux sociaux 82 // icônes réseaux sociaux
80 $header_social_flex_direction = 'column'; 83 $header_social_flex_direction = 'column';
81 $admin_social_networks = []; 84 // boucle sur la liste complète de réseaux sociaux
82 foreach(array_keys($social) as $one_key){ 85 foreach(NodeData::$social_networks as $network){
83 //<input type="file" id="header_' . $one_key . '_input" class="hidden" accept="image/svg+xml, image/png, image/jpeg, image/gif, image/webp, image/tiff"> 86 $checked = (isset($social_show[$network]) && $social_show[$network]) ? 'checked' : '';
84 // sinon plutôt qu'on bouton nouveau réseau, utiliser le foreach avec HeadFootController::$social_networks pour tous les parcourir et placer des cases à cocher 87 $href = isset($social[$network]) ? 'href="' . $social[$network] . '"' : '';
85 // les icones seront ajoutées par mes soins
86 $admin_social_networks[$one_key] = '<input type="text" id="header_' . $one_key . '_input" class="hidden" value="' . $social[$one_key] . '" placeholder="nom du réseau social" size="30">
87 <img id="header_' . $one_key . '_open" class="action_icon" src="assets/edit.svg" onclick="header_' . $one_key . '.open()">
88 <img id="header_' . $one_key . '_submit" class="action_icon hidden" src="assets/save.svg" onclick="header_' . $one_key . '.submit()">
89 <img id="header_' . $one_key . '_cancel" class="action_icon hidden" src="assets/close.svg" onclick="header_' . $one_key . '.cancel()">
90 <script>let header_' . $one_key . ' = new InputTextSocialNetwork(\'header_' . $one_key . '\');</script>';
91 }
92 //$admin_social_new_network = '<div>nouveau réseau</div>';
93 $admin_social_new_network = '';
94 88
95 /*$social_networks_inputs = '<div id="header_social_input" class="hidden">'; 89 $social_networks .= '<div id="header_' . $network . '">
96 foreach(array_keys($social) as $one_key){ 90 <input type="checkbox" onclick="" ' . $checked . '>
97 $social_networks_inputs .= '<div> 91 <a ' . $href . ' target="_blank" rel="noopener noreferrer">
98 <input type="text" placeholder="nom du réseau social"> 92 <img id="header_' . $network . '_content" src="assets/' . $network . '.svg" alt="'. $network . '_alt">
99 <input type="text" placeholder="lien https://..."> 93 </a>
100 <input type="file"> 94 <input type="text" id="header_' . $network . '_input" class="hidden" value="' . ($social[$network] ?? "") . '" placeholder="nom du réseau social" size="30">
101 </div>'; 95 <img id="header_' . $network . '_open" class="action_icon" src="assets/edit.svg" onclick="header_' . $network . '.open()">
96 <img id="header_' . $network . '_submit" class="action_icon hidden" src="assets/save.svg" onclick="header_' . $network . '.submit()">
97 <img id="header_' . $network . '_cancel" class="action_icon hidden" src="assets/close.svg" onclick="header_' . $network . '.cancel()">
98 <script>let header_' . $network . ' = new InputTextSocialNetwork(\'header_' . $network . '\');</script>
99 </div>';
102 } 100 }
103 $social_networks_inputs .= '</div>';*/
104 } 101 }
105 else{ 102 else{
106 $admin_favicon = ''; 103 $admin_favicon = '';
@@ -108,12 +105,16 @@ class HeaderBuilder extends AbstractBuilder
108 $admin_header_logo = ''; 105 $admin_header_logo = '';
109 $admin_header_title = ''; 106 $admin_header_title = '';
110 $admin_header_description = ''; 107 $admin_header_description = '';
108
111 $header_social_flex_direction = 'row'; 109 $header_social_flex_direction = 'row';
112 $admin_social_networks = []; 110 if(isset($social_show)){
113 foreach(array_keys($social) as $one_key){ 111 // boucle sur les réseaux sociaux "activés"
114 $admin_social_networks[$one_key] = ''; 112 foreach(array_keys($social_show) as $network){
113 $social_networks .= '<div id="header_' . $network . '">
114 <a href="' . $social[$network] . '" target="_blank" rel="noopener noreferrer"><img id="header_' . $network . '_content" src="assets/' . $network . '.svg" alt="'. $network . '_alt"></a>
115 </div>';
116 }
115 } 117 }
116 $admin_social_new_network = '';
117 } 118 }
118 119
119 ob_start(); 120 ob_start();
diff --git a/src/view/templates/header.php b/src/view/templates/header.php
index 89cdd4b..4c39cfd 100644
--- a/src/view/templates/header.php
+++ b/src/view/templates/header.php
@@ -36,13 +36,7 @@
36 <div class="header_right_col"> 36 <div class="header_right_col">
37 <div id="header_social"> 37 <div id="header_social">
38 <div id="header_social_content" style="flex-direction: <?= $header_social_flex_direction ?>;"> 38 <div id="header_social_content" style="flex-direction: <?= $header_social_flex_direction ?>;">
39<?php foreach(array_keys($social) as $one_key){ ?> 39 <?= $social_networks ?>
40 <div id="header_<?= $one_key ?>">
41 <a href="<?= $social[$one_key] ?>" target="_blank" rel="noopener noreferrer"><img id="header_<?= $one_key ?>_content" src="assets/<?= $one_key ?>.svg" alt="<?= $one_key ?>_alt"></a>
42 <?= $admin_social_networks[$one_key] ?>
43 </div>
44<?php } ?>
45 <?= $admin_social_new_network ?>
46 </div> 40 </div>
47 </div> 41 </div>
48 <?= $breadcrumb ?? '' ?> 42 <?= $breadcrumb ?? '' ?>
diff --git a/src/view/templates/modify_block.php b/src/view/templates/modify_block.php
index 6b7ceb0..d855a4a 100644
--- a/src/view/templates/modify_block.php
+++ b/src/view/templates/modify_block.php
@@ -1,3 +1,4 @@
1<?php declare(strict_types=1); ?>
1<div class="modify_one_block" id="bloc_edit_<?= $child_node->getId() ?>"> 2<div class="modify_one_block" id="bloc_edit_<?= $child_node->getId() ?>">
2 <div class="block_options"> 3 <div class="block_options">
3 <label for="bloc_rename_<?= $child_node->getId() ?>">Type <b><?= Blocks::$blocks[$child_node->getName()] ?? '<i>erreur base de données</i>' ?></b> 4 <label for="bloc_rename_<?= $child_node->getId() ?>">Type <b><?= Blocks::$blocks[$child_node->getName()] ?? '<i>erreur base de données</i>' ?></b>