templates/attestation/index.html.twig line 1
{% extends 'base_footer.html.twig' %}
{% block title %}{{ 'attestationp.titre'|trans }}{% endblock %}
{% block body %}
{% set faq_items = [
{
'question': 'attestationp.faq.question1',
'answer': 'attestationp.faq.reponse1'
},
{
'question': 'attestationp.faq.question2',
'answer': 'attestationp.faq.reponse2'
},
{
'question': 'attestationp.faq.question3',
'answer': 'attestationp.faq.reponse3'
},
{
'question': 'attestationp.faq.question4',
'answer': 'attestationp.faq.reponse4'
},
{
'question': 'attestationp.faq.question5',
'answer': 'attestationp.faq.reponse5'
}
] %}
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<!-- En-tête -->
<div class="bg-gray-200 py-12 md:py-16 mb-8 text-center w-full">
<h1 class="text-2xl md:text-3xl font-bold px-4">{{ 'attestationp.titre'|trans }}</h1>
</div>
<!-- Section Trouver un logement -->
<div class="py-12 md:py-16 mb-8 text-center">
<h2 class="text-2xl md:text-3xl font-bold mb-6 max-w-4xl mx-auto px-4">{{ 'attestationp.trouver_logement'|trans }}</h2>
<div class="max-w-3xl mx-auto space-y-4 px-4">
<p>{{ 'attestationp.trouver_logement_description'|trans }}</p>
<p>{{ 'attestationp.trouver_logement_description1'|trans }} <strong>{{ 'attestationp.trouver_logement_description2'|trans }}</strong> {{ 'attestationp.trouver_logement_description3'|trans }} <strong>{{ 'attestationp.trouver_logement_description4'|trans }}</strong> {{ 'attestationp.trouver_logement_description5'|trans }}</p>
</div>
</div>
<!-- Section Réservation anticipée -->
<div class="bg-gray-200 py-12 md:py-16 mb-8 w-full">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex flex-col lg:flex-row gap-8">
<div class="lg:w-1/2">
<h2 class="text-2xl md:text-3xl font-bold mb-6">{{ 'attestationp.reservation_anticipee'|trans }}</h2>
<div class="space-y-4">
<p>{{ 'attestationp.early_reservation_1'|trans }} <strong>{{ 'attestationp.early_reservation_1_2'|trans }}</strong></p>
<p>{{ 'attestationp.early_reservation_2'|trans }} <strong>{{ 'attestationp.early_reservation_2_2'|trans }}</strong> {{ 'attestationp.early_reservation_2_3'|trans }} <strong>{{ 'attestationp.early_reservation_2_4'|trans }}</strong></p>
<p>{{ 'attestationp.early_reservation_3'|trans }} <strong>{{ 'attestationp.early_reservation_3_1'|trans }}</strong></p>
<p>{{ 'attestationp.early_reservation_4'|trans }}</p>
</div>
</div>
<div class="lg:w-1/2 flex justify-center lg:justify-end">
<div class="bg-white p-6 md:p-8 rounded-lg shadow-md max-w-md w-full">
<p>💡 {{ 'attestationp.reservation_anticipee_description_2'|trans }} <strong>{{ 'attestationp.reservation_anticipee_description_3'|trans }}</strong> {{ 'attestationp.reservation_anticipee_description_4'|trans }}</p>
</div>
</div>
</div>
</div>
</div>
<!-- Section Pourquoi Roomlers -->
<div class="py-12 md:py-16 mb-8">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<h2 class="text-2xl md:text-3xl font-bold mb-6 text-center">{{ 'attestationp.pourquoi_roomlers'|trans }}</h2>
<p class="text-center max-w-3xl mx-auto mb-8 md:mb-12 px-4">
{{ 'attestationp.pourquoi_roomlers_description'|trans }} <strong>{{ 'attestationp.pourquoi_roomlers_description1'|trans }}</strong> {{ 'attestationp.pourquoi_roomlers_description2'|trans }} <strong>{{ 'attestationp.pourquoi_roomlers_description3'|trans }}</strong> {{ 'attestationp.pourquoi_roomlers_description4'|trans }} <strong>{{ 'attestationp.pourquoi_roomlers_description5'|trans }}</strong>
</p>
<div class="grid grid-cols-1 md:grid-cols-3 gap-6 max-w-5xl mx-auto">
<div class="bg-gray-100 p-6 rounded-lg">
<p class="font-bold">{{ 'attestationp.etudiants_internationaux'|trans }}</p>
</div>
<div class="bg-gray-100 p-6 rounded-lg">
<p class="font-bold">{{ 'attestationp.logements_verifies'|trans }}</p>
</div>
<div class="bg-gray-100 p-6 rounded-lg">
<p class="font-bold">{{ 'attestationp.accompagnement_complet'|trans }}</p>
</div>
</div>
</div>
</div>
<!-- Section Comment obtenir -->
<div class="bg-gray-200 py-12 md:py-16 mb-8 w-full">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex flex-col lg:flex-row gap-8">
<div class="lg:w-1/3 flex items-center"> <!-- Ajout de flex et items-center pour centrer verticalement -->
<h2 class="text-2xl md:text-3xl font-bold mb-6">{{ 'attestationp.comment_obtenir'|trans }}</h2>
</div>
<div class="lg:w-2/3">
<div class="space-y-6">
<p>{{ 'attestationp.comment_obtenir_description'|trans }} <strong>{{ 'attestationp.comment_obtenir_description1'|trans }}</strong> {{ 'attestationp.comment_obtenir_description2'|trans }}</p>
<div class="space-y-6">
<div class="bg-white p-6 rounded-lg shadow-sm">
<h3 class="font-bold text-lg mb-2">{{ 'attestationp.etapes.etape1'|trans }}</h3>
<p>{{ 'attestationp.etapes.etape1_description'|trans }}</p>
</div>
<div class="bg-white p-6 rounded-lg shadow-sm">
<h3 class="font-bold text-lg mb-2">{{ 'attestationp.etapes.etape2'|trans }}</h3>
<p>{{ 'attestationp.etapes.etape2_description'|trans }}</p>
</div>
<div class="bg-white p-6 rounded-lg shadow-sm">
<h3 class="font-bold text-lg mb-2">{{ 'attestationp.etapes.etape3'|trans }}</h3>
<p>{{ 'attestationp.etapes.etape3_description'|trans }}</p>
</div>
</div>
<div class="text-center mt-8 md:mt-12">
{% if app.user %}
{% if app.user.asRole('ROLE_TENANT') %}
<a href="{{ path('app_user_generateattestation') }}" class="inline-block bg-yellow-400 text-black font-semibold px-6 py-3 md:px-8 md:py-4 rounded-lg hover:bg-yellow-500 transition-colors">
{{ 'attestationp.demarrer_maintenant'|trans }}
</a>
{% elseif app.user.asRole('ROLE_AGENT') or app.user.asRole('ROLE_SUPER_AGENT') %}
<a href="{{ path('app_user_generateattestation') }}" class="inline-block bg-yellow-400 text-black font-semibold px-6 py-3 md:px-8 md:py-4 rounded-lg hover:bg-yellow-500 transition-colors">
{{ 'attestationp.demarrer_maintenant'|trans }}
</a>
{% elseif app.user.asRole('ROLE_LESSOR') or app.user.asRole('ROLE_LESSOR_RESIDENT') %}
<button id="openPopLink1" class="inline-block bg-yellow-400 text-black font-semibold px-6 py-3 md:px-8 md:py-4 rounded-lg hover:bg-yellow-500 transition-colors">
{{ 'attestationp.demarrer_prereservation'|trans }}
</button>
{% else %}
<button id="openModalLink1" class="inline-block bg-yellow-400 text-black font-semibold px-6 py-3 md:px-8 md:py-4 rounded-lg hover:bg-yellow-500 transition-colors">
{{ 'attestationp.demarrer_maintenant'|trans }}
</button>
{% endif %}
{% else %}
<button id="openModalLink1" class="inline-block bg-yellow-400 text-black font-semibold px-6 py-3 md:px-8 md:py-4 rounded-lg hover:bg-yellow-500 transition-colors">
{{ 'attestationp.demarrer_maintenant'|trans }}
</button>
{% endif %}
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Section FAQ -->
<div class="py-12 md:py-16 mb-8">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
<div class="flex flex-col lg:flex-row lg:items-center gap-8">
<!-- Titre à gauche sur desktop, centré verticalement -->
<div class="lg:w-1/3 lg:flex lg:items-center lg:justify-end">
<h2 class="text-2xl md:text-3xl font-bold text-center lg:text-right lg:pr-8">
{{ 'attestationp.rep'|trans }}<br/> {{ 'attestationp.question'|trans }}
</h2>
</div>
<!-- Questions à droite sur desktop -->
<div class="lg:w-2/3 space-y-4">
{% for item in faq_items %}
<div class="border border-gray-300 rounded-lg overflow-hidden shadow-md relative">
<button class="faq-question flex items-center justify-between w-full p-4 font-semibold text-left transition duration-300 ease-in-out hover:bg-gray-100">
<span class="text-left">{{ item.question|trans }}</span>
<svg class="faq-icon w-5 h-5 text-gray-600 transition-transform transform" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path>
</svg>
</button>
<div class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out">
<div class="p-4 text-gray-700">{{ item.answer|trans }}</div>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
</div>
<!-- Section Prêt à commencer -->
<div class="bg-gray-200 py-12 md:py-16 w-full">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 text-center">
<h2 class="text-2xl md:text-3xl font-bold mb-6">{{ 'attestationp.pret_commencer'|trans }}</h2>
<p class="max-w-3xl mx-auto mb-8 md:mb-12 px-4">
{{ 'attestationp.pret_commencer_description'|trans }} <strong>{{ 'attestationp.pret_commencer_description1'|trans }}</strong> {{ 'attestationp.pret_commencer_description2'|trans }} <strong>{{ 'attestationp.pret_commencer_description3'|trans }}</strong>
</p>
{% if app.user %}
{% if app.user.asRole('ROLE_TENANT') %}
<a href="{{ path('app_user_generateattestation') }}" class="inline-block bg-yellow-400 text-black font-semibold px-6 py-3 md:px-8 md:py-4 rounded-lg hover:bg-yellow-500 transition-colors">
{{ 'attestationp.demarrer_prereservation'|trans }}
</a>
{% elseif app.user.asRole('ROLE_AGENT') or app.user.asRole('ROLE_SUPER_AGENT') %}
<a href="{{ path('app_user_generateattestation') }}" class="inline-block bg-yellow-400 text-black font-semibold px-6 py-3 md:px-8 md:py-4 rounded-lg hover:bg-yellow-500 transition-colors">
{{ 'attestationp.demarrer_prereservation'|trans }}
</a>
{% elseif app.user.asRole('ROLE_LESSOR') or app.user.asRole('ROLE_LESSOR_RESIDENT') %}
<button id="openPopLink2" class="inline-block bg-yellow-400 text-black font-semibold px-6 py-3 md:px-8 md:py-4 rounded-lg hover:bg-yellow-500 transition-colors">
{{ 'attestationp.demarrer_prereservation'|trans }}
</button>
{% else %}
<button id="openModalLink2" class="inline-block bg-yellow-400 text-black font-semibold px-6 py-3 md:px-8 md:py-4 rounded-lg hover:bg-yellow-500 transition-colors">
{{ 'attestationp.demarrer_prereservation'|trans }}
</button>
{% endif %}
{% else %}
<button id="openModalLink2" class="inline-block bg-yellow-400 text-black font-semibold px-6 py-3 md:px-8 md:py-4 rounded-lg hover:bg-yellow-500 transition-colors">
{{ 'attestationp.demarrer_prereservation'|trans }}
</button>
{% endif %}
</div>
</div>
</div>
<!-- Modal de connexion/inscription -->
<div id="connectModal" class="fixed inset-0 bg-gray-500 bg-opacity-50 flex justify-center items-center hidden z-50">
<div class="bg-white p-6 rounded-lg shadow-lg max-w-sm w-full mx-4 text-center">
<p class="text-lg font-semibold mb-4">{{ 'attestationp.choisissez_option'|trans }}</p>
<button onclick="window.location.href='{{ path('app_login_site') }}'" class="bg-yellow-400 text-black px-4 py-2 rounded-lg font-semibold hover:bg-yellow-500 transition mb-2 w-full">
{{ 'attestationp.connexion'|trans }}
</button>
<button onclick="window.location.href='{{ path('app_register') }}'" class="bg-yellow-400 text-black px-4 py-2 rounded-lg font-semibold hover:bg-yellow-500 transition w-full">
{{ 'attestationp.inscription'|trans }}
</button>
</div>
</div>
<!-- Modal2-->
<div id="connectPop" class="fixed inset-0 bg-gray-500 bg-opacity-50 flex justify-center items-center hidden z-50">
<div class="bg-white p-6 rounded-lg shadow-lg max-w-sm w-full mx-4 text-center">
<p class="text-lg font-semibold mb-4">{{ 'attestationp.veuillez_connexion'|trans }}</p>
<button onclick="window.location.href='{{ path('app_login_site') }}'" class="bg-yellow-400 text-black px-4 py-2 rounded-lg font-semibold hover:bg-yellow-500 transition mb-2 w-full">
{{ 'attestationp.connexion'|trans }}
</button>
</div>
</div> <br> <br>
{% endblock %}
{% block javascripts %}
<script>
document.addEventListener('DOMContentLoaded', function () {
// Gestion du modal de connexion/inscription
const openModalElements = document.querySelectorAll('#openModalLink1, #openModalLink2');
const connectModal = document.getElementById('connectModal');
if (openModalElements.length > 0 && connectModal) {
openModalElements.forEach(element => {
element.addEventListener('click', function (event) {
event.preventDefault();
connectModal.classList.remove('hidden');
});
});
connectModal.addEventListener('click', function (event) {
if (event.target === connectModal) {
connectModal.classList.add('hidden');
}
});
connectModal.querySelector('.bg-white').addEventListener('click', function (event) {
event.stopPropagation();
});
}
const openPopElements = document.querySelectorAll('#openPopLink1, #openPopLink2');
const connectPop = document.getElementById('connectPop');
if (openPopElements.length > 0 && connectPop) {
openPopElements.forEach(element => {
element.addEventListener('click', function (event) {
event.preventDefault();
connectPop.classList.remove('hidden');
});
});
connectPop.addEventListener('click', function (event) {
if (event.target === connectPop) {
connectPop.classList.add('hidden');
}
});
connectPop.querySelector('.bg-white').addEventListener('click', function (event) {
event.stopPropagation();
});
}
// Gestion de l'accordéon FAQ
const faqQuestions = document.querySelectorAll('.faq-question');
faqQuestions.forEach(question => {
question.addEventListener('click', () => {
const answer = question.parentElement.querySelector('.faq-answer');
const icon = question.querySelector('.faq-icon');
// Fermer toutes les autres réponses
document.querySelectorAll('.faq-answer').forEach(item => {
if (item !== answer) {
item.classList.remove('max-h-[500px]');
item.previousElementSibling.querySelector('.faq-icon').classList.remove('rotate-180');
item.previousElementSibling.classList.remove('bg-gray-100');
}
});
// Basculer l'état de la réponse cliquée
if (answer.classList.contains('max-h-[500px]')) {
answer.classList.remove('max-h-[500px]');
icon.classList.remove('rotate-180');
question.classList.remove('bg-gray-100');
} else {
answer.classList.add('max-h-[500px]');
icon.classList.add('rotate-180');
question.classList.add('bg-gray-100');
}
});
});
});
</script>
<style>
.faq-answer {
transition: max-height 0.3s ease-out;
overflow: hidden;
}
.faq-icon {
transition: transform 0.3s ease;
}
.rotate-180 {
transform: rotate(180deg);
}
@media (max-width: 1023px) {
.lg\:flex-row {
flex-direction: column;
}
.lg\:w-1\/3, .lg\:w-2\/3, .lg\:w-1\/2 {
width: 100%;
}
}
</style>
{% endblock %}