{% trans_default_domain 'header' %}
{% block header %}
{% set themes = getThemes() %}
{% set themePublication = getThemePublication() %}
<div id="containerDropdownTheme">
{% for theme in themes %}
<nav id="dropdownContent{{ theme.id }}" class="dropdown-content custom-bg-color animate__animated animate__fadeInUp animate__faster" data-color="{{ theme.color }}">
<ul>
{% for page in theme.pages %}
{% if page.activate %}
<li>
<a class="btn white" href="{{ path('app_page_show', {'slugTheme': theme.slug, 'slugPage': page.slug}) }}">
<span class="svg-text-container">
<img src="{{ vich_uploader_asset(page, 'iconFile') }}" alt="{{ page.iconAlt }}" class="svgToReplace">
<span>{{ page.title }}</span>
</span>
</a>
</li>
{% endif %}
{% endfor %}
</ul>
</nav>
{% endfor %}
<nav id="dropdownContentPublication" class="dropdown-content custom-bg-color animate__animated animate__fadeInUp animate__faster" data-color="{{ themePublication.color }}">
{% set items = [
{
'position': getManuelPage().position,
'icon': vich_uploader_asset(getManuelPage(), 'iconFile'),
'alt': getManuelPage().iconAlt,
'route': path('app_manuel_page_index'),
'label': getManuelPage().title
},
{
'position': getPublicationPage().position,
'icon': vich_uploader_asset(getPublicationPage(), 'iconFile'),
'alt': getPublicationPage().iconAlt,
'route': path('app_publication_list'),
'label': getPublicationPage().title
},
{
'position': getThesePage().position,
'icon': vich_uploader_asset(getThesePage(), 'iconFile'),
'alt': getThesePage().iconAlt,
'route': path('app_these_list'),
'label': getThesePage().title
},
{
'position': getDefinitionPage().position,
'icon': vich_uploader_asset(getDefinitionPage(), 'iconFile'),
'alt': getDefinitionPage().iconAlt,
'route': path('app_definition_page_index'),
'label': getDefinitionPage().title
}
] %}
{% set pagesPublication = getPagesPublication() %}
{% for pageItem in pagesPublication %}
{% if pageItem.activate %}
{% set items = items|merge([{
'position': pageItem.position,
'icon': vich_uploader_asset(pageItem, 'iconFile'),
'alt': pageItem.iconAlt,
'route': path('app_page_show', {'slugTheme': 'publication', 'slugPage': pageItem.slug}),
'label': pageItem.title
}]) %}
{% endif %}
{% endfor %}
{% set items = items|sort((a, b) => a.position <=> b.position) %}
<ul>
{% for item in items %}
<li>
<a class="btn white" href="{{ item.route }}">
<span class="svg-text-container">
<img src="{{ item.icon }}" alt="{{ item.alt }}" class="svgToReplace">
<span>{{ item.label }}</span> <!-- Titre dynamique affiché -->
</span>
</a>
</li>
{% endfor %}
</ul>
</nav>
</div>
<header>
<div class="headerTop">
{% if app.request.attributes.get('_route') == 'app_homepage' %}
<h1 class="mainTitle">SFMG - Société Française de Médecine Générale</h1>
{% else %}
<p class="mainTitle">SFMG - Société Française de Médecine Générale</p>
{% endif %}
<ul class="nav" id="navbarMenu">
<div id="closeMenu">
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.4 14L0 12.6L5.6 7L0 1.4L1.4 0L7 5.6L12.6 0L14 1.4L8.4 7L14 12.6L12.6 14L7 8.4L1.4 14Z" fill="#515462"/>
</svg>
</div>
<li><a href="{{ path('app_homepage') }}">Accueil</a></li>
{% set themePublication = getThemePublication() %}
{% set lastPosition = 0 %}
{% set displayPublication = false %}
{% for theme in themes %}
{% if themePublication.position > lastPosition and themePublication.position < theme.position and displayPublication == false %}
{% set displayPublication = true %}
<li class="onlyMobile dropdown">
<a href="" class="dropbtn custom-color" data-color="{{ themePublication.color }}">
Les publications
<svg width="11" height="7" viewBox="0 0 11 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.23145 0.394775H9.88573C10.4844 0.394775 10.7838 1.11793 10.36 1.54173L6.03453 5.87055C5.77218 6.1329 5.34501 6.1329 5.08266 5.87055L0.757202 1.54173C0.333401 1.11793 0.632752 0.394775 1.23145 0.394775Z" fill="#070C1F"/>
</svg>
</a>
<div class="dropdown-content animate__animated animate__fadeInUp animate__faster">
<a href="{{ path('app_manuel_page_index') }}" class="custom-color" data-color="{{ themePublication.color }}">Les manuels</a>
<a href="{{ path('app_publication_list') }}" class="custom-color" data-color="{{ themePublication.color }}">Les publications</a>
<a href="{{ path('app_these_list') }}" class="custom-color" data-color="{{ themePublication.color }}">Les thèses</a>
<a href="{{ path('app_definition_page_index') }}" class="custom-color" data-color="{{ themePublication.color }}">Les définitions</a>
</div>
</li>
{% endif %}
{% set firstPageTheme = getFirstPageOfTheme(theme) %}
{% if firstPageTheme %}
<li class="onlyMobile dropdown">
<a href="" class="dropbtn custom-color" data-color="{{ theme.color }}">
{{ theme.name }}
<svg width="11" height="7" viewBox="0 0 11 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.23145 0.394775H9.88573C10.4844 0.394775 10.7838 1.11793 10.36 1.54173L6.03453 5.87055C5.77218 6.1329 5.34501 6.1329 5.08266 5.87055L0.757202 1.54173C0.333401 1.11793 0.632752 0.394775 1.23145 0.394775Z" fill="#070C1F"/>
</svg>
</a>
<div class="dropdown-content animate__animated animate__fadeInUp animate__faster">
{% for page in theme.pages %}
{% if page.activate %}
<a href="{{ path('app_page_show', {'slugTheme': theme.slug, 'slugPage': page.slug}) }}" class="custom-color" data-color="{{ theme.color }}">{{ page.title }}</a>
{% endif %}
{% endfor %}
</div>
</li>
{% endif %}
{% endfor %}
<li class="dropdown">
<a href="" class="dropbtn">
L'association
<svg width="11" height="7" viewBox="0 0 11 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.23145 0.394775H9.88573C10.4844 0.394775 10.7838 1.11793 10.36 1.54173L6.03453 5.87055C5.77218 6.1329 5.34501 6.1329 5.08266 5.87055L0.757202 1.54173C0.333401 1.11793 0.632752 0.394775 1.23145 0.394775Z" fill="#070C1F"/>
</svg>
</a>
<div class="dropdown-content animate__animated animate__fadeInUp animate__faster">
<a href="{{ path('app_about_index') }}">A propos</a>
<a href="{{ path('app_composition_index') }}">Composition</a>
<a href="{{ path('app_full_member_page_index') }}">Membres titulaires</a>
<a href="{{ path('app_departement_index') }}">Départements</a>
<a href="{{ path('app_partenaire_page_index') }}">Partenaires</a>
</div>
</li>
<li><a href="{{ path('app_actuality_list') }}">Actualités</a></li>
<li class="onlyMobile">
<a href="{{ path('app_join_index') }}">Adhérer</a>
</li>
<li><a href="{{ path('app_contact_show') }}">Contact</a></li>
<li><a class="btn-line" href="https://www.boutique-sfmg.org/" target="_blank">
Boutique en ligne
<i class="fa-solid fa-arrow-up-right-from-square"></i>
</a>
</li>
</ul>
<div class="backdrop-menu" id="backdropMenu"></div>
</div>
<div class="headerBackground">
<div class="toFixed">
<div class="backgroundTop">
<div class="containerLogo">
<a class="logo" href="{{ path('app_homepage') }}" title="Lien vers l'accueil"><img src="{{ asset('/images/logo.png') }}" alt="Logo SFMG"></a>
<button class="navbar-toggler" type="button" id="toggleMenu">
<span class="navbar-toggler-icon">
<svg width="18" height="12" viewBox="0 0 18 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 12V10H18V12H0ZM0 7V5H18V7H0ZM0 2V0H18V2H0Z" fill="#515462"/>
</svg>
</span>
</button>
</div>
<div class="searchContainer">
<form method="post" action="{{ path('app_search_index') }}" id="searchbar">
<input type="search" id="search_query" name="query" required="required" placeholder="Rechercher par mots clés...">
<button class="submitSearch" type="submit">
<svg width="30" height="31" viewBox="0 0 30 31" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1263_1509)">
<path d="M11.6315 0.840649C7.28969 1.27424 3.38735 3.95784 1.41274 7.85432C-1.07749 12.7762 -0.216166 18.5887 3.59829 22.6727C4.31899 23.4403 5.66665 24.4715 6.70961 25.0457C8.63735 26.1063 10.6706 26.6219 12.9206 26.6219C15.985 26.6278 18.8092 25.6258 21.1237 23.7215L21.5924 23.3348L25.2838 27.0203C28.6061 30.3367 28.9987 30.7059 29.2038 30.7469C29.4967 30.7996 29.7838 30.6532 29.9069 30.3895C30.0241 30.1492 30.0241 29.991 29.9186 29.786C29.8717 29.6981 28.1959 27.993 26.1979 26.0008L22.5709 22.3739L22.9752 21.8817C25.2487 19.1219 26.2682 15.4364 25.7467 11.8446C25.0436 7.02229 21.6627 2.98518 17.028 1.44416C15.317 0.869946 13.4186 0.659008 11.6315 0.840649ZM14.4088 2.29963C15.0827 2.3758 16.2077 2.64534 16.8756 2.89143C18.5397 3.5008 19.8756 4.35627 21.1354 5.61018C22.9166 7.39143 24.0299 9.61213 24.4108 12.1551C24.528 12.9403 24.528 14.5574 24.4108 15.3426C24.0241 17.909 22.9284 20.0887 21.1237 21.8934C19.4245 23.5985 17.4147 24.659 15.0299 25.116C13.8873 25.3328 12.1647 25.3446 11.0456 25.1395C6.4518 24.3133 2.87172 20.9559 1.7643 16.4559C1.51235 15.4422 1.4479 14.8856 1.4479 13.7489C1.4479 12.6121 1.51235 12.0555 1.7643 11.0418C2.28579 8.90901 3.27602 7.15705 4.82875 5.59846C6.56899 3.86409 8.66079 2.78596 11.1334 2.34651C12.0123 2.19416 13.2897 2.17659 14.4088 2.29963Z" fill="#515462"/>
</g>
<defs>
<clipPath id="clip0_1263_1509">
<rect width="30" height="30" fill="white" transform="translate(0 0.770264)"/>
</clipPath>
</defs>
</svg>
</button>
</form>
<a href="{{ path('app_join_index') }}" class="btn default">
<span>
Adhérer
<svg width="11" height="10" viewBox="0 0 11 10" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4.75176 0.899899L5.24724 0.404419C5.45704 0.194621 5.79628 0.194621 6.00385 0.404419L10.3427 4.74099C10.5525 4.95079 10.5525 5.29003 10.3427 5.4976L6.00385 9.8364C5.79405 10.0462 5.4548 10.0462 5.24724 9.8364L4.75176 9.34092C4.53973 9.12889 4.54419 8.78295 4.76069 8.57538L7.45012 6.01317H1.03565C0.738813 6.01317 0.5 5.77436 0.5 5.47751V4.76331C0.5 4.46647 0.738813 4.22765 1.03565 4.22765H7.45012L4.76069 1.66544C4.54196 1.45787 4.5375 1.11193 4.75176 0.899899Z" fill="white"/>
</svg>
</span>
</a>
</div>
</div>
<div class="backgroundNav">
<div class="swiper swiperThemes container">
<div class="swiper-wrapper">
{% set themePublication = getThemePublication() %}
{% set lastPosition = 0 %}
{% set displayPublication = false %}
{% for theme in themes %}
{% if themePublication.position > lastPosition and themePublication.position < theme.position and displayPublication == false %}
{% set displayPublication = true %}
<div class="swiper-slide">
<button data-target="dropdownContentPublication" class="btn custom-bg-color triggerDropdownTheme" data-color="{{ themePublication.color }}">
<span>
<img src="{{ vich_uploader_asset(themePublication, 'iconFile') }}" class="svgToReplace" alt="{{ themePublication.iconAlt }}">
Les publications
</span>
</button>
</div>
{% endif %}
{% set firstPageTheme = getFirstPageOfTheme(theme) %}
{% if firstPageTheme %}
<div class="swiper-slide">
<button data-target="dropdownContent{{ theme.id }}" class="btn custom-bg-color triggerDropdownTheme" data-color="{{ theme.color }}">
<span>
<img src="{{ vich_uploader_asset(theme, 'iconFile') }}" class="svgToReplace" alt="{{ theme.iconAlt }}">
{{ theme.name }}
</span>
</button>
</div>
{% endif %}
{% endfor %}
</div>
<div class="swiper-navigation">
<div class="swiper-button-next"></div>
<div class="swiper-button-prev"></div>
</div>
</div>
</div>
</div>
{% if app.request.attributes.get('_route') == 'app_homepage' %}
<div class="containerSlidersHomepage">
<div class="containerSliderLarge">
<div class="swiper swiperActuLarge">
<div class="swiper-wrapper">
{% for actu in homepage.actualitiesSliderLarge %}
{% set actu = actu.actuality %}
{% if actu.activate %}
<div class="swiper-slide">
<div data-link class="card">
<div class="image">
{% if actu.labels|first %}
<div class="tag">
{{ actu.labels|first }}
</div>
{% endif %}
<img src="{{ vich_uploader_asset(actu, "illustrationFile")| imagine_filter('hp_actuality_large') }}" alt="{{ actu.illustrationAlt }}">
</div>
<div class="containerContent">
<div class="content">
<div class="subTitle">
{{ actu.category }} - {{ actu.createdAt|format_datetime(locale='fr', pattern="LLLL YYYY")|capitalize }}
</div>
<a href="{{ path('app_actuality_show', {'slug': actu.slug}) }}" class="title">
{{ actu.title }}
</a>
<div class="description">
{{ actu.resume|u.truncate(175, '...') }}
</div>
</div>
</div>
</div>
</div>
{% endif %}
{% endfor %}
</div>
<div class="swiper-pagination"></div>
</div>
</div>
<div class="containerSliderLittle">
<div class="swiper swiperActuLittle">
<div class="swiper-wrapper">
{% for actu in homepage.actualitiesSliderLittle %}
{% set actu = actu.actuality %}
{% if actu.activate %}
<div class="swiper-slide">
<div data-link class="card">
<div class="content">
{% if actu.labels|first %}
<div class="tag">
{{ actu.labels|first }}
</div>
{% endif %}
<div class="subTitle">
{{ actu.category }} - {{ actu.createdAt|format_datetime(locale='fr', pattern="LLLL YYYY")|capitalize }}
</div>
<a href="{{ path('app_actuality_show', {'slug': actu.slug}) }}" class="title">
{{ actu.title }}
</a>
<div class="description">
{{ actu.resume|u.truncate(175, '...') }}
</div>
</div>
<div class="image">
<img src="{{ vich_uploader_asset(actu, "illustrationFile")| imagine_filter('hp_actuality_little') }}" alt="{{ actu.illustrationAlt }}">
</div>
</div>
</div>
{% endif %}
{% endfor %}
</div>
<div class="swiper-pagination"></div>
</div>
</div>
</div>
{% endif %}
<div id="breadcrumb"></div>
{% set routes = ['app_manuel_page_index', 'app_publication_list', 'app_publication_show', 'app_these_list', 'app_these_show','app_definition_page_index' ] %}
{% if app.request.attributes.get('_route') == 'app_page_show' and not page.themePublication %}
<div class="sliderPage container">
<div class="swiper swiperPage">
<div class="swiper-wrapper">
{% for pageItem in theme.pages %}
{% if pageItem.activate %}
<div class="swiper-slide" data-link>
<div class="containerPage {% if pageItem == page %} active {% endif %}">
<div class="container-icon">
<img src="{{ vich_uploader_asset(pageItem, 'iconFile') }}" alt="{{ pageItem.iconAlt }}" class="svgToReplace">
</div>
<div class="container-content">
<span class="theme">{{ theme.name }}</span>
<a href="{{ path('app_page_show', {'slugTheme': theme.slug, 'slugPage': pageItem.slug}) }}">{{ pageItem.title }}</a>
</div>
</div>
</div>
{% endif %}
{% endfor %}
</div>
</div>
<div class="swiper-navigation">
<div class="swiper-button-prev">
</div>
<div class="swiper-button-next">
</div>
</div>
</div>
{% elseif app.request.attributes.get('_route') in routes or (page is defined and page.themePublication is defined and page.themePublication) %}
<div class="sliderPage container">
<div class="swiper swiperPage">
{% set slides = [
{
'position': getManuelPage().position,
'icon': vich_uploader_asset(getManuelPage(), 'iconFile'),
'alt': getManuelPage().iconAlt,
'route': path('app_manuel_page_index'),
'label': getManuelPage().title,
'condition': app.request.attributes.get('_route') == 'app_manuel_page_index'
},
{
'position': getPublicationPage().position,
'icon': vich_uploader_asset(getPublicationPage(), 'iconFile'),
'alt': getPublicationPage().iconAlt,
'route': path('app_publication_list'),
'label': getPublicationPage().title,
'condition': app.request.attributes.get('_route') in ['app_publication_list', 'app_publication_show']
},
{
'position': getThesePage().position,
'icon': vich_uploader_asset(getThesePage(), 'iconFile'),
'alt': getThesePage().iconAlt,
'route': path('app_these_list'),
'label': getThesePage().title,
'condition': app.request.attributes.get('_route') in ['app_these_list', 'app_these_show']
},
{
'position': getDefinitionPage().position,
'icon': vich_uploader_asset(getDefinitionPage(), 'iconFile'),
'alt': getDefinitionPage().iconAlt,
'route': path('app_definition_page_index'),
'label': getDefinitionPage().title,
'condition': app.request.attributes.get('_route') == 'app_definition_page_index'
}
] %}
{% set pagesPublication = getPagesPublication() %}
{% for pageItem in pagesPublication %}
{% if pageItem.activate %}
{% set slides = slides|merge([{
'position': pageItem.position,
'icon': vich_uploader_asset(pageItem, 'iconFile'),
'alt': pageItem.iconAlt,
'route': path('app_page_show', {'slugTheme': 'publication', 'slugPage': pageItem.slug}),
'label': pageItem.title,
'condition': pageItem == page
}]) %}
{% endif %}
{% endfor %}
{% set slides = slides|sort((a, b) => a.position <=> b.position) %}
<div class="swiper-wrapper">
{% for slide in slides %}
<div class="swiper-slide" data-link>
<div class="containerPage {% if slide.condition %} active {% endif %}">
<div class="container-icon">
<img src="{{ slide.icon }}" alt="{{ slide.alt }}" class="svgToReplace">
</div>
<div class="container-content">
<span class="theme">Les publications</span>
<a href="{{ slide.route }}">{{ slide.label }}</a> <!-- Titre dynamique affiché -->
</div>
</div>
</div>
{% endfor %}
</div>
</div>
<div class="swiper-navigation">
<div class="swiper-button-prev">
</div>
<div class="swiper-button-next">
</div>
</div>
</div>
{% endif %}
</div>
</header>
{% endblock %}