templates/home/index.html.twig line 1
{% extends 'base.html.twig' %}{% block title %}Formation{% endblock %}{% block out %}<style>/* Class to hide element on both desktop and mobile */.hide {display: none;}/* Class to show element on desktop */.show-desktop {display: none;}/* Class to show element on mobile */.show-mobile {display: none;}/* Media query to override the display property for desktop and mobile devices */@media (min-width: 768px) {.hide {display: none !important;}.show-desktop {display: block;}}/* Media query to override the display property for mobile devices */@media (max-width: 767px) {.hide {display: none !important;}.show-mobile {display: block;}}</style><!-- Hero Section avec design flat minimal et animations hexagones --><section class="hero-parallax parallax" data-aos="fade-in"><div class="hexagon-container" style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; overflow: hidden; pointer-events: none;"></div><div class="hero-content hero-text-bottom" style="position: absolute; bottom: 0; left: 0; right: 0; z-index: 2;"><h1 class="hero-title-large">LA FORMATION EST LE MEILLEUR INVESTISSEMENT QUE VOUS PUISSIEZ FAIRE POUR VOTRE AVENIR</h1></div><!-- Image de fond --><div style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 1; opacity: 0.4;"><img src="{{ asset('couverture.jpeg') }}" alt="Background"class="parallax-image"style="width: 100%; height: 100%; object-fit: cover;"></div></section>{% endblock %}{% block body %}{% if user %}<div class="callout callout-warning" role="alert" data-aos="zoom-in"><h5>Bienvenue {{user.nom}}</h5><p>Félicitations pour votre achat. Vous allez pouvoir profiter des vidéos de votre formation.</p></div><div class="row cards-row"><div class="card-group no-gutters">{% for item in user.usersPlayslists %}<div class="card col-md-6 col-lg-4 hvr-grow" data-aos="slide-left"><div class="text-white card-body bg-img text-center py-80" style="background-image: url({{asset('image/'~item.playlist.imageDeCouverture)}});"><a class="hvr-grow" href="{{path('app_playlist_show',{'id':item.playlist.id})}}"><img class="avatar avatar-xl avatar-bordered" src="{{asset('play.png')}}"></a></div><ul class="flexbox flex-justified text-center"><p>{{item.playlist.titre}}</p></ul></div>{% endfor %}</div></div>{% endif %}{% if ads|length > 0 %}<div style="position: relative; margin-top: 3rem; margin-bottom: 3rem;" data-aos="fade-up"><span class="badge" style="position: absolute; top: -15px; left: 20px; z-index: 10; background: var(--primary-yellow); color: var(--primary-blue); padding: 0.5rem 1.5rem; font-size: 0.9rem; font-weight: 700; text-transform: uppercase; letter-spacing: 1px;">Publicités</span><div class="swiper ads-carousel" style="border-radius: var(--border-radius); overflow: hidden;"><div class="swiper-wrapper">{% for ad in ads %}<div class="swiper-slide"><div class="ads-slide" style="position: relative; height: 400px; overflow: hidden;">{% if ad.image %}<img src="{{ asset('image/' ~ ad.image) }}"alt="{{ ad.description }}"style="width: 100%; height: 100%; object-fit: cover;">{% endif %}<div class="ads-overlay" style="position: absolute; bottom: 0; left: 0; right: 0; background: linear-gradient(to top, rgba(24, 89, 129, 0.9), rgba(24, 89, 129, 0.5), transparent); padding: 3rem 2rem 2rem; color: var(--primary-white);">{% if ad.description %}<h3 style="color: var(--primary-white); font-size: 1.8rem; font-weight: 700; margin: 0 0 1rem 0; text-shadow: 0 2px 10px rgba(0, 0, 0, 0.5);">{{ ad.description }}</h3>{% endif %}</div></div></div>{% endfor %}</div><div class="swiper-pagination"></div><div class="swiper-button-next"></div><div class="swiper-button-prev"></div></div></div>{% endif %}<div class="callout callout-warning" role="alert" data-aos="zoom-in" id="formations"><h5>Nos formation</h5><p>Une formation qui pourrait susciter votre intérêt.</p></div>{# Filtres catégories #}{% if categories is defined and categories|length > 0 %}<div class="mb-3 d-flex flex-wrap align-items-center gap-2"><button class="btn btn-sm btn-pill filter-btn btn-primary text-white" data-category="all">Toutes</button>{% for cat in categories %}<button class="btn btn-sm btn-pill filter-btn btn-outline-primary" data-category="{{ cat.id }}">{{ cat.nom ?? cat.titre ?? ('Catégorie ' ~ cat.id) }}</button>{% endfor %}</div>{% endif %}<div class="row cards-row" id="playlist-container"><div class="card-group no-gutters">{% for item in playlist %}<div class="card col-md-6 col-lg-4 playlist-card" data-aos="zoom-in" data-category-id="{{ item.category ? item.category.id : 'none' }}">{% if item.imageDeCouverture %}<img class="card-img-top" style="width:100%" src="{{ asset('image/' ~ item.imageDeCouverture) }}" alt="Card image cap"onerror="this.onerror=null;this.outerHTML=`<svg class='card-img-top' style='width:100%;height:auto;' viewBox='0 0 600 350' width='600' height='350' xmlns='http://www.w3.org/2000/svg'><rect width='600' height='350' fill='#cccccc'></rect><text x='50%' y='50%' dominant-baseline='middle' text-anchor='middle' font-family='monospace' font-size='26px' fill='#333333'>600x350</text></svg>`;">{% else %}<svg class="card-img-top" style="width:100%;height:auto;" viewBox="0 0 600 350" width="600" height="350" xmlns="http://www.w3.org/2000/svg"><rect width="600" height="350" fill="#cccccc"></rect><text x="50%" y="50%" dominant-baseline="middle" text-anchor="middle" font-family="monospace" font-size="26px" fill="#333333">600x350</text></svg>{% endif %}<div class="card-body"><H5 class="text-center formation-title">{{item.titre}}</H5><p>{{item.description}}</p><p class="text-right"><small>{{item.prix}} MGA</small></p></div><footer class="card-footer text-right p-0"><a href="{{path('app_add_playlist',{'id':item.id})}}" class="btn btn-square btn-primary no-radius"><i class="ti-shopping-cart"></i></a></footer></div>{% endfor %}</div></div>{% if instructors is defined and instructors|length > 0 %}<div class="divider mt-6">Nos Instructeurs</div><div class="row cards-row">{% for instructor in instructors %}<div class="col-md-6 col-lg-4 mb-4" data-aos="zoom-in"><div class="card h-100">{% if instructor.photo %}<img class="card-img-top" style="height: 220px; object-fit: cover;" src="{{ asset('image/' ~ instructor.photo) }}" alt="{{ instructor.prenom }} {{ instructor.nom }}">{% else %}<div class="card-img-top d-flex align-items-center justify-content-center bg-light" style="height: 220px;"><i class="fa fa-user fa-3x text-muted"></i></div>{% endif %}<div class="card-body d-flex flex-column"><h5 class="card-title">{{ instructor.prenom }} {{ instructor.nom }}</h5>{% set hasCat = false %}<div class="mb-2">{% for pl in instructor.playlists %}{% if pl.category %}{% set hasCat = true %}{% set catName = pl.category.nom ?? pl.category.titre ?? 'Catégorie' %}{% set catColor = pl.category.couleur ?? '#3f4a59' %}<span class="badge badge-pill mr-1 mb-1" style="background: {{ catColor }}; color: #fff; display: inline-flex; align-items: center; gap: 6px;"><span style="width:16px;height:16px;display:inline-block;border-radius:50%;background:rgba(255,255,255,0.3);"></span>{{ catName }}</span>{% endif %}{% endfor %}{% if not hasCat %}<span class="text-muted small">Aucune catégorie</span>{% endif %}</div><p class="card-text text-muted" style="flex:1;">{{ instructor.bio ? instructor.bio|u.truncate(120, '...') : 'Biographie à venir' }}</p><div class="d-flex justify-content-between align-items-center"><small class="text-muted">{{ instructor.playlists|length }} playlists</small><a class="btn btn-sm btn-primary" href="{{ path('app_instructor_profile', {'id': instructor.id}) }}">Voir le profil</a></div></div></div></div>{% endfor %}</div>{% endif %}<script>document.addEventListener('DOMContentLoaded', () => {const filterButtons = document.querySelectorAll('.filter-btn');const cards = document.querySelectorAll('.playlist-card');function applyFilter(catId) {cards.forEach(card => {const cardCat = card.dataset.categoryId || 'none';const show = (catId === 'all') || (cardCat === catId);card.style.display = show ? '' : 'none';});}filterButtons.forEach(btn => {btn.addEventListener('click', () => {filterButtons.forEach(b => {b.classList.remove('active', 'btn-primary', 'text-white');b.classList.add('btn-outline-primary');});btn.classList.add('active', 'btn-primary', 'text-white');btn.classList.remove('btn-outline-primary');applyFilter(btn.dataset.category);});});// état initialconst initial = document.querySelector('.filter-btn.btn-primary') || document.querySelector('.filter-btn');if (initial) {applyFilter(initial.dataset.category);}});</script><div class="divider">Témoignage</div><div class="row gap-y" data-provide="photoswipe"><a class="col-6 col-lg-4" href="#"><img src="{{asset('min/img (1).jpg')}}" alt="Voici une description de la photo" data-original-src="{{asset('norm/img (1).jpg')}}"></a><a class="col-6 col-lg-4" href="#"><img src="{{asset('min/img (2).jpg')}}" alt="Voici une description de la photo" data-original-src="{{asset('norm/img (2).jpg')}}"></a><a class="col-6 col-lg-4" href="#"><img src="{{asset('min/img (3).jpg')}}" alt="Voici une description de la photo" data-original-src="{{asset('norm/img (3).jpg')}}"></a><a class="col-6 col-lg-4" href="#"><img src="{{asset('min/img (4).jpg')}}" alt="Voici une description de la photo" data-original-src="{{asset('norm/img (4).jpg')}}"></a><a class="col-6 col-lg-4" href="#"><img src="{{asset('min/img (5).jpg')}}" alt="Voici une description de la photo" data-original-src="{{asset('norm/img (5).jpg')}}"></a><a class="col-6 col-lg-4" href="#"><img src="{{asset('min/img (6).jpg')}}" alt="Voici une description de la photo" data-original-src="{{asset('norm/img (6).jpg')}}"></a></div><hr><div class="callout callout-warning" role="alert" data-aos="zoom-in"><h5>Nous Contactez</h5></div><div class="row" data-aos="zoom-in"><div class="col-lg-12"><div class="card"><div class="row no-gutters"><div class="col-12"><div class="card-body"><p>N'hésitez pas à nous contacter pour obtenir toutes les informations dont vous avez besoin !</p><i class="fa fa-phone"></i><a class="hover-primary text-uppercase fs-14 fw-500 ls-1" href="">0380941865 0388103048</a><div class="text-right"><a class="btn btn-square btn-facebook" href="https://web.facebook.com/profile.php?id=100070977424516"><i class="fa fa-facebook"></i></a></div></div></div></div></div></div>{# <div class="col-lg-6"><form class="card form-type-combine"><div class="card-body"><div class="form-groups-attached"><div class="row"><div class="form-group col-6"><label>Nom</label><input class="form-control" type="text"></div><div class="form-group col-6"><label>Téléphone</label><input class="form-control" type="text"></div></div><div class="form-group"><label>Email address</label><input class="form-control" type="text"></div><div class="form-group"><label>Message</label><input class="form-control" type="text"></div></div></div><footer class="card-footer text-right"><button class="btn btn-primary" type="submit">Envoyer</button></footer></form></div> #}</div>{% endblock %}