retrouve page lessites

This commit is contained in:
Ouidade Soussi Chiadmi 2025-03-03 23:35:36 +01:00
parent 104633faa1
commit 735a9a0278
2 changed files with 505 additions and 606 deletions

File diff suppressed because one or more lines are too long

View File

@ -11,11 +11,11 @@
console.log('It works!');
}
};
} (Drupal));
} (Drupal));
//////// start header ////////////
document.addEventListener('DOMContentLoaded', function() {
//////// start header ////////////
document.addEventListener('DOMContentLoaded', function() {
const header = document.querySelector('header');
const logo = document.querySelector('#block-quartiers-de-demain-logoquartiersdedemain > div:nth-child(1) > div:nth-child(1) > a:nth-child(1) > svg:nth-child(1)');
@ -200,7 +200,7 @@
}
}
});
});
//////// end header ////////////
@ -210,22 +210,22 @@
(function($, window) {
var adjustAnchor = function() {
var adjustAnchor = function() {
var $anchor = $('.sidebar_first_container'),
fixedElementHeight = 500;
if ($anchor.length > 0) {
$('html, body').stop().animate({scrollTop: $anchor.offset().top - fixedElementHeight }, 0);
}
};
};
$(window).on('hashchange', function() {
$(window).on('hashchange', function() {
adjustAnchor();
});
});
//////////////////////// start script smooth apparition des textes /////////////////
//////////////////////// start script smooth apparition des textes /////////////////
function scrollReaveal(){
function scrollReaveal(){
const nodes = {
logo : document.querySelectorAll('#logo-animated-container'),
@ -263,16 +263,16 @@
ScrollReveal().reveal(nodes.lienDoc, showUp);
ScrollReveal().reveal(nodes.lienURL, showUp);
}
}
$( document ).ready(function() {
$( document ).ready(function() {
scrollReaveal();
});
});
//////////////////////// end script smooth apparition des textes /////////////////
//////////////////////// end script smooth apparition des textes /////////////////
// //////////////////// start Timeline script ///////////////////////
// //////////////////// start Timeline script ///////////////////////
// Update month field to only show the first 3 letters
document.querySelectorAll('.paragraph--type--phase-deroulement').forEach(function(paragraph) {
@ -322,7 +322,7 @@
});
// ////////////////////// start calendrier home /////////////////////////////////
// ////////////////////// start calendrier home /////////////////////////////////
$(document).ready(function(){
$('.__timeline-content').slick({
slidesToShow: 3,
@ -349,49 +349,33 @@
});
//////////////////////// end calendrier home /////////////////////////////////
//////////////////////// end calendrier home /////////////////////////////////
//////////////////////// end Timeline script /////////////////////////////////////////////
//////////////////////// end Timeline script /////////////////////////////////////////////
/////////////////// caracteres body actus/////////////////////////
/////////////////// caracteres body actus/////////////////////////
document.addEventListener('DOMContentLoaded', function() {
// Nombre maximum de caractères à afficher
const maxChars = 140; // Ajustez cette valeur selon vos besoins
document.addEventListener('DOMContentLoaded', function() {
// Maximum number of characters to display
const maxChars = 140; // Adjust this value as needed
document.querySelectorAll('#actus-caroussel .node-type-actualite').forEach(function(node) {
let paragraphs = node.querySelectorAll('.field_body p');
let fullText = "";
// Concaténer tous les paragraphes
paragraphs.forEach(p => fullText += p.textContent.trim() + " ");
fullText = fullText.trim();
// Vérifier si le texte dépasse la limite
if (fullText.length > maxChars) {
let truncatedText = fullText.slice(0, maxChars) + '...';
// Vider tout le contenu et insérer seulement le texte tronqué
let firstParagraph = paragraphs[0];
firstParagraph.textContent = truncatedText;
// Masquer les autres paragraphes
for (let i = 1; i < paragraphs.length; i++) {
paragraphs[i].style.display = "none";
}
document.querySelectorAll('#actus-caroussel .node-type-actualite .field_body p').forEach(function(paragraph) {
let text = paragraph.textContent.trim();
if (text.length > maxChars) {
let truncatedText = text.slice(0, maxChars) + '...';
paragraph.textContent = truncatedText;
}
});
});
});
//////////// start slideshow home //////////////////////////
//////////// start slideshow home //////////////////////////
$(document).ready(function(){
$(document).ready(function(){
let actuview = $('.content-actus .view ')
if (actuview) {
actuview.slick({
@ -428,12 +412,12 @@
lazyLoad: 'progressive', // Option 'ondemand' ou 'progressive'
});
});
});
$(document).ready(function () {
$(document).ready(function () {
let diapohome = $('.config_pages--type--diaporama-home .diaporama');
if (diapohome.length) {
@ -462,10 +446,10 @@
}]
});
}
}
});
//////////// end slideshow home //////////////////////////
//////////// end slideshow home //////////////////////////
//////////////// start lightbox galerie image page site////////////////////////
@ -504,56 +488,56 @@ lightbox.appendChild(nextBtn);
// Fonction pour afficher l'image et la légende à l'index donné
function showImage(index) {
if (index < 0) index = images.length - 1;
if (index >= images.length) index = 0;
currentIndex = index;
if (index < 0) index = images.length - 1;
if (index >= images.length) index = 0;
currentIndex = index;
// Mettre à jour l'image
img.src = images[currentIndex].getAttribute('src');
// Mettre à jour l'image
img.src = images[currentIndex].getAttribute('src');
// Récupérer la légende associée (le paragraphe dans blockquote suivant l'image)
const captionText = images[currentIndex]
// Récupérer la légende associée (le paragraphe dans blockquote suivant l'image)
const captionText = images[currentIndex]
.closest('.cadre-img-zoom')
.nextElementSibling.querySelector('.image-field-caption p')
.textContent;
caption.textContent = captionText || ''; // Affiche la légende ou une chaîne vide si elle est absente
lightbox.style.display = 'flex';
caption.textContent = captionText || ''; // Affiche la légende ou une chaîne vide si elle est absente
lightbox.style.display = 'flex';
}
// Événements de clic sur chaque image pour ouvrir le lightbox avec la légende
images.forEach((image, index) => {
image.addEventListener('click', () => {
image.addEventListener('click', () => {
showImage(index);
});
});
});
// Fermer le lightbox
closeBtn.addEventListener('click', () => {
lightbox.style.display = 'none';
lightbox.style.display = 'none';
});
// Navigation pour images précédente et suivante
prevBtn.addEventListener('click', (e) => {
e.stopPropagation();
showImage(currentIndex - 1);
e.stopPropagation();
showImage(currentIndex - 1);
});
nextBtn.addEventListener('click', (e) => {
e.stopPropagation();
showImage(currentIndex + 1);
e.stopPropagation();
showImage(currentIndex + 1);
});
// Fermer le lightbox en cliquant en dehors de l'image
lightbox.addEventListener('click', (e) => {
if (e.target === lightbox) {
if (e.target === lightbox) {
lightbox.style.display = 'none';
}
}
});
// Ajout des contrôles clavier (Échap, flèches gauche/droite)
document.addEventListener('keydown', (e) => {
if (lightbox.style.display === 'flex') {
if (lightbox.style.display === 'flex') {
if (e.key === 'Escape') {
lightbox.style.display = 'none';
} else if (e.key === 'ArrowLeft') {
@ -561,7 +545,7 @@ document.addEventListener('keydown', (e) => {
} else if (e.key === 'ArrowRight') {
showImage(currentIndex + 1);
}
}
}
});
@ -571,11 +555,11 @@ document.addEventListener('keydown', (e) => {
//////////////////// start wrapper views-row lessites /////////////////////////
document.addEventListener("DOMContentLoaded", function() {
// Sélectionne le conteneur principal avec l'ID 'lessites'
const container = document.getElementById("lessites");
// Sélectionne le conteneur principal avec l'ID 'lessites'
const container = document.getElementById("lessites");
// Vérifie si le conteneur existe pour éviter toute erreur sur d'autres pages
if (container) {
// Vérifie si le conteneur existe pour éviter toute erreur sur d'autres pages
if (container) {
// Sélectionne l'élément 'view' à l'intérieur de '.views-element-container'
const viewContainer = container.querySelector(".views-element-container .view");
@ -592,7 +576,7 @@ document.addEventListener("DOMContentLoaded", function() {
// Ajoute la div englobante dans le 'viewContainer'
viewContainer.appendChild(wrapperDiv);
}
}
}
});
@ -604,31 +588,31 @@ document.addEventListener("DOMContentLoaded", function() {
// Vérifie si la page a la classe 'node-type-site' dans le <body>
if (document.body.classList.contains('node-type-site')) {
// Sélectionne le conteneur principal
const blockRegion = document.querySelector('.block-region-second');
// Sélectionne le conteneur principal
const blockRegion = document.querySelector('.block-region-second');
// Liste des classes spécifiques à cibler
const fieldClasses = [
// Liste des classes spécifiques à cibler
const fieldClasses = [
'.field_field_region',
'.field_field_nom_du_qpv_nb_d_hab',
'.field_field_departement_s',
'.field_field_programme_de_l_etat',
'.field_field_porteur_s_de_site',
'.field_field_nom_de_la_commune_nb_d_hab'
];
];
// Sélectionne les div parents de chacun des champs listés
const elementsToWrap = [];
fieldClasses.forEach(className => {
// Sélectionne les div parents de chacun des champs listés
const elementsToWrap = [];
fieldClasses.forEach(className => {
const fieldElement = blockRegion.querySelector(className);
if (fieldElement) {
// Ajoute le parent du champ au tableau si trouvé
elementsToWrap.push(fieldElement.parentElement);
}
});
});
// Vérifie que des éléments ont été trouvés
if (elementsToWrap.length > 0) {
// Vérifie que des éléments ont été trouvés
if (elementsToWrap.length > 0) {
// Crée le conteneur avec la classe 'infos'
const infosContainer = document.createElement('div');
infosContainer.className = 'infos';
@ -639,47 +623,47 @@ if (document.body.classList.contains('node-type-site')) {
// Déplace chaque élément dans le conteneur `.infos`
elementsToWrap.forEach(element => infosContainer.appendChild(element));
}
}
}
//////////////////// end div infos site ////////////////////////
document.addEventListener("DOMContentLoaded", function() {
// Sélectionner les éléments à déplacer
const documentsField = document.querySelector(".field_field_documents");
const liensSiteField = document.querySelector(".field_field_liens_site");
// Sélectionner les éléments à déplacer
const documentsField = document.querySelector(".field_field_documents");
const liensSiteField = document.querySelector(".field_field_liens_site");
// Sélectionner la destination
const thirdRegion = document.querySelector(".block-region-third > div");
// Sélectionner la destination
const thirdRegion = document.querySelector(".block-region-third > div");
// Créer une nouvelle div pour englober les éléments déplacés
const wrapperDiv = document.createElement("div");
wrapperDiv.classList.add("documents-liens-wrapper");
// Créer une nouvelle div pour englober les éléments déplacés
const wrapperDiv = document.createElement("div");
wrapperDiv.classList.add("documents-liens-wrapper");
// Déplacer les éléments dans la nouvelle div
if (documentsField && liensSiteField && thirdRegion) {
// Déplacer les éléments dans la nouvelle div
if (documentsField && liensSiteField && thirdRegion) {
wrapperDiv.appendChild(documentsField);
wrapperDiv.appendChild(liensSiteField);
// Ajouter la nouvelle div dans la destination
thirdRegion.appendChild(wrapperDiv);
}
}
});
document.addEventListener("DOMContentLoaded", function() {
// Sélectionner les éléments pertinents
const documentsLiensWrapper = document.querySelector(".documents-liens-wrapper");
const blockRegionThird = document.querySelector(".block-region-third");
// Sélectionner les éléments pertinents
const documentsLiensWrapper = document.querySelector(".documents-liens-wrapper");
const blockRegionThird = document.querySelector(".block-region-third");
// Vérifier que les éléments existent avant de les manipuler
if (documentsLiensWrapper && blockRegionThird) {
// Vérifier que les éléments existent avant de les manipuler
if (documentsLiensWrapper && blockRegionThird) {
// Déplacer .documents-liens-wrapper en dehors du div contenant les boutons prev/next
blockRegionThird.appendChild(documentsLiensWrapper);
}
}
});
document.addEventListener("DOMContentLoaded", function () {
// Fonction pour déplacer le bloc en fonction de la taille de l'écran
function moveLanguageSwitcher() {
// Fonction pour déplacer le bloc en fonction de la taille de l'écran
function moveLanguageSwitcher() {
const languageSwitcher = document.getElementById("block-quartiers-de-demain-selecteurdelangue");
const navContainer = document.querySelector(".header_nav_container");
@ -693,99 +677,14 @@ document.addEventListener("DOMContentLoaded", function () {
headerRightContainer.appendChild(languageSwitcher); // Remet le bloc dans sa position initiale
}
}
}
}
// Déclencher au chargement et au redimensionnement
moveLanguageSwitcher();
window.addEventListener("resize", moveLanguageSwitcher);
// Déclencher au chargement et au redimensionnement
moveLanguageSwitcher();
window.addEventListener("resize", moveLanguageSwitcher);
});
//////////////////////////////////////////
/////////// Start script ressources ////////////////////////////////
document.addEventListener("DOMContentLoaded", () => {
const view = document.querySelector(".view");
const elements = Array.from(view.children);
let newView = document.createElement("div");
newView.classList.add("view");
let group = null;
let groupContent = null;
elements.forEach((el) => {
if (el.tagName === "H3") {
if (group) {
newView.appendChild(group);
}
group = document.createElement("div");
group.classList.add("group");
groupContent = document.createElement("div");
groupContent.classList.add("group-content");
groupContent.appendChild(el);
group.appendChild(groupContent);
} else if (el.classList.contains("views-row")) {
groupContent.appendChild(el);
}
});
if (group) {
newView.appendChild(group);
}
view.replaceWith(newView);
// Ajouter un bouton "Voir plus" dans chaque groupe
document.querySelectorAll(".group").forEach((group) => {
const rows = group.querySelectorAll(".views-row");
const button = document.createElement("button");
button.classList.add("toggle-btn");
button.textContent = "Voir plus de";
rows.forEach((row, index) => {
if (index >= 3) {
row.classList.add("hidden");
row.style.maxHeight = "0";
row.style.opacity = "0";
}
});
button.addEventListener("click", () => {
const isExpanded = button.textContent === "Voir moins de";
const hiddenRows = group.querySelectorAll(".views-row.hidden");
if (isExpanded) {
// Cacher les lignes avec un délai pour l'effet de transition
hiddenRows.forEach((row) => {
row.style.maxHeight = "0";
row.style.opacity = "0";
setTimeout(() => row.classList.add("hidden"), 500); // Délai pour la transition
});
} else {
// Afficher les lignes
hiddenRows.forEach((row) => {
row.classList.remove("hidden");
row.style.maxHeight = row.scrollHeight + "px";
row.style.opacity = "1";
});
}
button.textContent = isExpanded ? "Voir plus de" : "Voir moins de";
});
group.appendChild(button);
});
});
/////////// end script ressources ////////////////////////////////
})(jQuery, window);