src/Flexy/FrontBundle/Themes/CoWorking/templates/pages/actualites.html.twig line 1
{% extends '@Flexy/FrontBundle/Themes/CoWorking/templates/layout.html.twig' %}
{% block stylesheets %}
{{ parent() }}
<style>
.pagination {
display: flex;
justify-content: center;
margin-top: 20px;
}
.pagination li {
margin: 0 5px;
list-style: none;
}
.pagination li a {
text-decoration: none;
padding: 8px 12px;
border: 1px solid #FFCB00; /* Ajout de la couleur principale */
border-radius: 5px;
color: #FFCB00; /* Texte en couleur principale */
font-weight: 600;
transition: background-color 0.3s, color 0.3s;
}
.pagination li a:hover {
background-color: #FFCB00; /* Couleur au survol */
color: white; /* Texte en blanc au survol */
}
.pagination li.active a {
background-color: #FFCB00; /* Couleur principale pour l'élément actif */
color: white; /* Texte en blanc */
border: none; /* Supprimer la bordure */
}
.pagination li.disabled {
display: none; /* Cacher les boutons désactivés */
}
.img-article {
width: 100%; /* La largeur de l'image s'ajuste à la colonne */
height: 260px; /* Hauteur fixe pour uniformiser toutes les images */
object-fit: cover; /* Coupe les parties excédentaires pour conserver le rapport d'aspect */
border-radius: 5px; /* Optionnel : coins arrondis */
}
#hideHeaderInPageHome{
display:none !important;
}
.title-article{
color: #292825;
font-size: 21px;
line-height: 35px;
font-weight: 800;
}
.lire-suite{
/*padding: 10px;*/
font-weight:600;
font-size:13px;
border-radius: 4px;
}
.img-article{
width:95%;
}
.shadow-custom:hover{
box-shadow: rgba(0, 0, 0, 0.1) 0px 4px 12px;
}
.shadow-custom{
box-shadow: rgba(0, 0, 0, 0.02) 0px 1px 3px 0px, rgba(27, 31, 35, 0.15) 0px 0px 0px 1px;
}
.custom-hr {
width: 10%;
border: 3px solid #555;
margin: 4px;
}
.custom-hr-1{
width: 3%;
border: 3px solid #555;
margin: 4px;
}
.carousel-image {
width: 100%; /* Adapte la largeur à celle du conteneur */
height: 400px; /* Hauteur fixe pour un rendu uniforme */
object-fit: cover; /* Coupe et zoome l'image pour remplir le conteneur */
}
</style>
{% endblock %}
{% block body %}
<!--Carousel-->
<div id="carouselExampleInterval" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-inner">
<div id="carouselExampleInterval" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-inner">
{% for news in newshome %}
<div class="carousel-item {% if loop.first %}active{% endif %}" data-bs-interval="6000">
<img src="/uploads/coworking/{{ news.image }}" class="d-block w-100 carousel-image" alt="...">
</div>
{% endfor %}
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleInterval" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#carouselExampleInterval" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
<div class="container" style="max-width: 1230px;">
<div class="row">
<div class="col-lg-12">
<h1 style="font-size: 34px; color: black;" class="title-actualites mt-5 mb-2">Actualités</h1>
<hr class="custom-hr-1">
<div class="row">
<!-- Articles -->
<div class="col-lg-9">
<div id="result-container">
{% include '@Flexy/FrontBundle/Themes/CoWorking/templates/pages/_sorted_results.html.twig' with { 'news': newshome } %}
</div>
{# {% for news in newshome %}
<article class="card shadow-custom mt-4">
<div class="row g-0">
<div class="col-lg-5">
<img class="img-article img-fluid"
src="/uploads/coworking/{{ news.image }}"
alt="image">
</div>
<div class="col-lg-7 col-md-12 " >
<p class="mt-2" style="font-size:12px">{{ news.dateDebut|date('d M Y')|default('Aucune date') }}</p>
<h3> {{ news.title }} </h3>
<h2 class="title-article"> {{ news.underTitle }}</h2>
<p style="font-size: 15px;width:95%;">{{ news.description|slice(0, 110) ~ '...' }}</p>
<a href="{{path('actualite',{id:news.id})}}" class="lire-suite">Lire Plus <i style="font-size:18px" class="fa fa-play-circle" aria-hidden="true"></i></a>
</div>
</div>
</article>
{% endfor %}
#}
</div>
<!-- Sidebar -->
<div class="col-lg-3">
<select id="sortSelect" class="form-select" aria-label="Default select example">
<option selected value="1">Les plus récentes</option>
<option value="2">Les plus anciens</option>
</select>
<br>
<!-- Remplacez 'ffff' par du contenu réel -->
<h5 class="">Actualités récentes</h5>
<hr class="custom-hr">
{% for news in newshome %}
{% if loop.index <= 8 %}
<p class="mt-3" style="font-size: 14px;">{{ news.Title }}</p>
{% endif %}
{% endfor %}
</div>
</div>
</div>
{% if newshome is not null %}
<div class="pagination">
{{ knp_pagination_render(newshome) }}
</div>
{% endif %}
</div>
</div>
{% endblock %}
{% block javascripts %}
{{ parent() }}
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ENjdO4Dr2bkBIFxQpeoTz1HIcje39Wm4jDKdf19U8gI4ddQ3GYNS7NTKfAdVQSZe" crossorigin="anonymous"></script>
<script>
$(document).ready(function () {
// Fonction pour charger les actualités triées
function loadSortedNews(sortOrder, page = 1) {
console.log("Tri sélectionné :", sortOrder, "Page :", page);
$.ajax({
url: '{{ path('app_sort_data') }}',
type: 'GET',
data: { sortOrder: sortOrder, page: page },
beforeSend: function () {
$('#result-container').html('<div class="text-center"><i class="fa fa-spinner fa-spin fa-3x"></i> Chargement en cours ....</div>');
},
success: function (response) {
$('#result-container').html(response);
// Gérer les liens de pagination après le tri
$('#result-container').on('click', '.pagination a', function (e) {
e.preventDefault();
let pageUrl = $(this).attr('href');
let pageNumber = pageUrl.split('page=')[1];
loadSortedNews(sortOrder, pageNumber);
});
},
error: function () {
alert('Une erreur est survenue lors du tri.');
}
});
}
// Événement de changement sur le select
$('#sortSelect').on('change', function () {
let selectedValue = $(this).val();
loadSortedNews(selectedValue);
});
// Capture les clics de pagination dès le chargement initial
$('#result-container').on('click', '.pagination a', function (e) {
e.preventDefault();
let selectedValue = $('#sortSelect').val();
let pageUrl = $(this).attr('href');
let pageNumber = pageUrl.split('page=')[1];
loadSortedNews(selectedValue, pageNumber);
});
});
</script>
{% endblock %}