diff options
| author | polo <ordipolo@gmx.fr> | 2025-10-29 12:08:28 +0100 |
|---|---|---|
| committer | polo <ordipolo@gmx.fr> | 2025-10-29 12:08:28 +0100 |
| commit | 822f526fd7f4e89043e64b435961720b622bdb6e (patch) | |
| tree | 2c4bb2a653052f9dc76858db2a2f9f1d0d0a031a /src | |
| parent | f653506421ee8e2c46c78e93d28ee2418a1d399d (diff) | |
| download | cms-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.php | 7 | ||||
| -rw-r--r-- | src/model/entities/NodeData.php | 2 | ||||
| -rw-r--r-- | src/view/HeaderBuilder.php | 51 | ||||
| -rw-r--r-- | src/view/templates/header.php | 8 | ||||
| -rw-r--r-- | src/view/templates/modify_block.php | 1 |
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 | ||
| 4 | declare(strict_types=1); | 4 | declare(strict_types=1); |
| 5 | 5 | ||
| 6 | use App\Entity\NodeData; | ||
| 6 | use App\Entity\NodeDataAsset; | 7 | use App\Entity\NodeDataAsset; |
| 7 | use App\Entity\Asset; | 8 | use App\Entity\Asset; |
| 8 | use Doctrine\ORM\EntityManager; | 9 | use Doctrine\ORM\EntityManager; |
| 9 | 10 | ||
| 10 | class HeadFootController | 11 | class 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")] |
| 14 | class NodeData | 14 | class 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 @@ | |||
| 4 | declare(strict_types=1); | 4 | declare(strict_types=1); |
| 5 | 5 | ||
| 6 | use App\Entity\Node; | 6 | use App\Entity\Node; |
| 7 | use App\Entity\NodeData; | ||
| 7 | use App\Entity\Asset; | 8 | use App\Entity\Asset; |
| 8 | 9 | ||
| 9 | class HeaderBuilder extends AbstractBuilder | 10 | class 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> |
