{# templates/app/menus/form.html.twig #} {% extends 'app/base.html.twig' %} {% block title %} {{ editMode ? 'Modifier' : 'Nouveau' }} menu — GestRestoSco {% endblock %} {% block stylesheets %} {% endblock %} {% block body %}

{{ editMode ? 'Modifier la semaine S' ~ semaine.numero_semaine : 'Nouvelle semaine de menu' }}

{# ── En-tête semaine ─────────────────────────────────────────────── #}
Informations de la semaine
{# ── Aide EGAlim ─────────────────────────────────────────────────── #} {% if resumeAllergenes is defined and resumeAllergenes|length > 0 %}
Allergènes / Intolérances — Convives actifs
{% for cat in resumeAllergenes %}
{{ cat.categorie_nom }} {% for label, nb in cat.allergenes %} {{ nb }}× {{ label }} {% endfor %} {% for item in cat.autres %} 1× {{ item }} {% endfor %}
{% endfor %}
{% endif %}
💡 Aide — Icônes EGAlim
🥬
Végétarien
Menu sans viande ni poisson
🌱
Bio
Agriculture biologique certifiée
🌟
Local
Produits locaux / régionaux
🌍
Durable
Labels durables (MSC, ASC, Label Rouge…)

Cochez les options correspondantes pour chaque composante du menu. Le ⚠️ révèle la liste des allergènes réglementaires.

{# ── Définitions ─────────────────────────────────────────────────── #} {% set serviceIcons = { 'dejeuner': 'sun', 'diner': 'moon', 'petitdejeuner': 'cloud-sun', 'gouter': 'cookie-bite' } %} {% set composantesParService = { 'dejeuner': ['entree', 'plat', 'accompagnement', 'laitage', 'dessert'], 'diner': ['entree', 'plat', 'accompagnement', 'laitage', 'dessert'], 'petitdejeuner': ['plat', 'laitage', 'dessert'], 'gouter': ['plat', 'laitage'] } %} {% set labelsDefaut = { 'entree': 'Entrée', 'plat': 'Plat principal', 'accompagnement': 'Accompagnement', 'laitage': 'Laitage', 'dessert': 'Dessert' } %} {% set labelsSpecifiques = { 'petitdejeuner': {'plat': 'Pain / Viennoiserie', 'laitage': 'Produit laitier', 'dessert': 'Fruit / Jus'}, 'gouter': {'plat': 'Collation', 'laitage': 'Boisson'} } %} {% set allergenOptions = { 'lait': 'Lait', 'oeufs': 'Œufs', 'gluten': 'Gluten', 'arachides': 'Arachides', 'fruits_coque': 'Fruits à coque', 'crustaces': 'Crustacés', 'poisson': 'Poisson', 'soja': 'Soja', 'celeri': 'Céleri', 'moutarde': 'Moutarde', 'sesame': 'Sésame', 'sulfites': 'Sulfites', 'lupin': 'Lupin', 'mollusques': 'Mollusques' } %} {# ── Onglets par jour ────────────────────────────────────────────── #}
{% for jour in ajours %}
{% for sKey, sLabel in services %} {% set composantes = composantesParService[sKey] ?? ['entree','plat','accompagnement','laitage','dessert'] %}
{{ sLabel }}
{# Effectif prévisionnel #}
{# Card par composante #} {% for composante in composantes %} {% set label = (labelsSpecifiques[sKey] is defined and labelsSpecifiques[sKey][composante] is defined) ? labelsSpecifiques[sKey][composante] : labelsDefaut[composante] %} {% set uid = sKey ~ '_' ~ jour ~ '_' ~ composante %} {% set optsComp = joursParService[sKey][jour].opts[composante] ?? {} %} {% set egalimVal = optsComp.egalim ?? [] %} {% set allergVal = optsComp.allergenes ?? [] %}
{{ label }} {% if composante == 'plat' %}*{% endif %}
{% endfor %}

Seuls les jours avec {% if sKey == 'petitdejeuner' %}un Pain / Viennoiserie {% elseif sKey == 'gouter' %}une Collation {% else %}un Plat principal{% endif %} renseigné seront enregistrés.

{% endfor %}
{% endfor %}
{# ── Boutons ──────────────────────────────────────────────────────── #}
Annuler
{% endblock %} {% block javascripts %} {% endblock %}