From cd6c14c3787fed123c84b16d915f10ef7c2f4059 Mon Sep 17 00:00:00 2001 From: Tykayn Date: Mon, 7 Jul 2025 23:30:09 +0200 Subject: [PATCH] gestion cuisine, page faq --- src/Controller/AdminController.php | 14 ++++++++++ src/Controller/PublicController.php | 6 +++++ src/Service/Motocultrice.php | 31 +++++++++++++++++++--- templates/public/edit/restaurant.html.twig | 19 ++++++++++++- templates/public/faq.html.twig | 29 ++++++++++++++++++++ templates/public/nav.html.twig | 3 +++ 6 files changed, 98 insertions(+), 4 deletions(-) create mode 100644 templates/public/faq.html.twig diff --git a/src/Controller/AdminController.php b/src/Controller/AdminController.php index 91439ba..ab8fc7b 100644 --- a/src/Controller/AdminController.php +++ b/src/Controller/AdminController.php @@ -25,6 +25,8 @@ final class AdminController extends AbstractController { private FollowUpService $followUpService; + // Flag pour activer/désactiver la suppression de ville + private $allowDeleteCity = false; public function __construct( private EntityManagerInterface $entityManager, @@ -2097,4 +2099,16 @@ final class AdminController extends AbstractController // ... autres variables nécessaires ... ]); } + + // Dans la méthode de suppression de ville (ex: deleteCity ou similaire) + public function deleteCityAction(Request $request, $id): Response + { + if (!$this->allowDeleteCity) { + $this->addFlash('danger', "La suppression de ville est désactivée par configuration."); + return $this->redirectToRoute('admin_dashboard'); + } + // ... logique de suppression existante ... + // Pour éviter l'erreur, on retourne une redirection par défaut si rien n'est fait + return $this->redirectToRoute('admin_dashboard'); + } } diff --git a/src/Controller/PublicController.php b/src/Controller/PublicController.php index 5d98a8e..3b89391 100644 --- a/src/Controller/PublicController.php +++ b/src/Controller/PublicController.php @@ -710,4 +710,10 @@ class PublicController extends AbstractController } } } + + #[Route('/faq', name: 'faq')] + public function faq(): Response + { + return $this->render('public/faq.html.twig'); + } } diff --git a/src/Service/Motocultrice.php b/src/Service/Motocultrice.php index 75db507..5f5ef7e 100644 --- a/src/Service/Motocultrice.php +++ b/src/Service/Motocultrice.php @@ -130,13 +130,11 @@ out meta;'; * @return void */ public function map_post_values($request_post) { - $has_ask_angela = false; $has_opening_hours = false; - $modified_request_post = []; - + foreach ($request_post as $key => $value) { if (strpos($key, 'custom__ask_angela') === 0 ) { if($value == 'ask_angela'){ @@ -146,6 +144,33 @@ out meta;'; if (strpos($key, 'custom__opening_hours') === 0 && $value != '') { $has_opening_hours = true; } + // Ajout gestion livraison/vente à emporter (takeaway) + if (strpos($key, 'custom__takeaway') === 0) { + if (in_array($value, ['yes', 'only', 'no'])) { + $modified_request_post['commerce_tag_value__takeaway'] = $value; + } + // Si vide ou autre, on ne met pas le champ + } + // Gestion spéciale pour le champ cuisine (multiple) + if (strpos($key, 'commerce_tag_value__cuisine') === 0) { + $newCuisines = $value; + if (!is_array($newCuisines)) { + $newCuisines = array_map('trim', explode(';', $newCuisines)); + } + // Récupérer la valeur existante si présente + $existing = isset($request_post['cuisine_existing']) ? $request_post['cuisine_existing'] : ''; + $existingCuisines = $existing ? array_map('trim', explode(';', $existing)) : []; + // Fusionner en gardant l'ordre de l'existant puis des nouveaux non déjà présents + $allCuisines = $existingCuisines; + foreach ($newCuisines as $c) { + if ($c !== '' && !in_array($c, $allCuisines)) { + $allCuisines[] = $c; + } + } + // Nettoyer les vides et assembler + $allCuisines = array_filter($allCuisines, fn($v) => $v !== ''); + $modified_request_post['commerce_tag_value__cuisine'] = implode(';', $allCuisines); + } $modified_request_post[$key] = $value; } diff --git a/templates/public/edit/restaurant.html.twig b/templates/public/edit/restaurant.html.twig index 0524909..3d74f87 100644 --- a/templates/public/edit/restaurant.html.twig +++ b/templates/public/edit/restaurant.html.twig @@ -50,7 +50,24 @@ - +
+ + +
+
+ + +
+
+ + + Décrivez brièvement le type de cuisine, les spécialités ou toute information utile sur la cuisine proposée. +
diff --git a/templates/public/faq.html.twig b/templates/public/faq.html.twig new file mode 100644 index 0000000..6b8d8be --- /dev/null +++ b/templates/public/faq.html.twig @@ -0,0 +1,29 @@ +{% extends 'base.html.twig' %} +{% block title %}FAQ / À propos - OSM Mon Commerce{% endblock %} +{% block body %} +
+

FAQ / À propos

+

Qu'est-ce que OSM Mon Commerce ?

+

OSM Mon Commerce est un projet citoyen pour améliorer la qualité des données OpenStreetMap sur les commerces et équipements publics. Il permet de visualiser, compléter et suivre la complétion des informations utiles sur les lieux de votre territoire en permettant aux commerçants et autres gérants de lieux de remplir les informations par eux-même suite à une suggestion par email trouvé dans OpenStreetMap.

+

Comment est calculée la complétion ?

+

Pour chaque thématique (commerce, école, défibrillateur, etc.), une liste de tags OSM attendus est définie. La complétion d'un objet est le pourcentage de ces tags effectivement renseignés (non vides). Un objet est « complet » si tous les tags attendus sont présents et non vides.

+
    +
  • Exemple : pour un commerce, on attend name, address, opening_hours, website, phone, wheelchair, siret
  • +
  • Si 4 tags sur 6 sont remplis, la complétion est de 66 %.
  • +
+

Auteur

+

Développé par Tykayn (contact : contact@cipherbliss.com).

+

Projets voisins et ressources

+ +

Liens utiles

+ +
+{% endblock %} \ No newline at end of file diff --git a/templates/public/nav.html.twig b/templates/public/nav.html.twig index ce84921..d384642 100644 --- a/templates/public/nav.html.twig +++ b/templates/public/nav.html.twig @@ -31,6 +31,9 @@ {{ 'display.contact_humans'|trans }} +