new fichier ressuorces.je

This commit is contained in:
2025-12-01 13:35:51 +01:00
parent b266b73176
commit ad9c0349c7
5 changed files with 320 additions and 309 deletions

View File

@@ -378,109 +378,7 @@ window.addEventListener("resize", moveLanguageSwitcher);
/////////////////// end langswitcher position responsive///////////////////////////////////////////////////////////
/////////////// start class à view-rows-ressources ////////
$(document).ready(function () {
$(".view-rows-wrapper").each(function () {
let h3Container = $(this).prev("h3").find("div[class^='type-']");
let classToAdd = h3Container.attr("class"); // Récupère la classe complète (ex: "type-Documentation")
if (classToAdd) {
$(this).addClass(classToAdd); // Ajoute cette classe à .view-rows-wrapper
}
});
////////////////// end class à view-rows-wrapper ////////////////
/////////////////// start voir plus... ressources ////////////////////
// Vérifier si on est sur la page avec l'ID #ressources
if ($("#ressources").length > 0) {
$(".view-rows-wrapper").each(function () {
let container = $(this); // Cible uniquement cette section
let items = container.find(".views-row"); // Les éléments à afficher progressivement
let visibleCount = 4; // Nombre d'éléments visibles au départ (par défaut)
// Récupérer la classe `type-XXX`
let typeClass = container.attr("class").split(" ").find(cls => cls.startsWith("type-"));
let typeName = typeClass ? typeClass.replace("type-", "").replace(/-/g, " ") : "contenu"; // Nettoyer le nom
// >>> Exception : tout afficher pour type-Galerie-photos (pas de bouton)
if (typeClass && typeClass.toLowerCase() === "type-mission-photo") {
items.show(); // aucun masquage
return; // on sort : pas de "voir plus"
}
// Ajuster le nombre d'éléments visibles en fonction du type
if (typeClass && (typeClass === "type-podcast" || typeClass.toLowerCase() === "type-vidéo")) {
visibleCount = 2; // Pour Podcast et Vidéo
} else if (typeClass === "type-kit-de-communication") {
visibleCount = 1; // Pour Kit de Communication
}
// Si le nombre total d'éléments est inférieur ou égal à la limite, ne pas ajouter le bouton
if (items.length <= visibleCount) {
return; // Sortir de la boucle
}
// Ajouter le bouton dynamiquement après chaque `.view-rows-wrapper`
let button = $("<button>")
.addClass("voir-plus")
.text("Voir plus de " + typeName)
.insertAfter(container);
// Cacher tous les éléments sauf ceux définis par `visibleCount`
items.hide().slice(0, visibleCount).show();
// Action sur le bouton
button.on("click", function () {
let hiddenItems = container.find(".views-row:hidden").slice(0, 4); // Prochains éléments à afficher
if ($(this).text().includes("Voir plus")) {
hiddenItems.slideDown(); // Afficher avec un effet de glissement
if (container.find(".views-row:hidden").length === 0) {
$(this).text("Voir moins de " + typeName); // Changer le texte du bouton si tout est affiché
}
} else {
container.find(".views-row").slice(visibleCount).slideUp(); // Replier les éléments
$(this).text("Voir plus de " + typeName); // Revenir à l'état initial
}
});
});
// slimselect
let ressource_type_select = new SlimSelect({
select: '#edit-field-type-de-ressource-target-id--2',
settings:{
placeholderText: 'choisir',
searchPlaceholder: 'choisir'
}
})
let ressource_motscles_select = new SlimSelect({
select: '#edit-field-mots-clefs-target-id--2',
settings:{
placeholderText: 'choisir',
searchPlaceholder: 'choisir'
}
})
let ressource_sites_select = new SlimSelect({
select: '#edit-field-site-target-id-verf--2',
settings:{
placeholderText: 'choisir',
searchPlaceholder: 'choisir'
}
})
// console.log(('sites_select'), sites_select);
}
/////////////////// end voir plus... ressources ////////////////////
/////////////////// start voir plus... actualite dans /actualites & /home ////////////////////
@@ -555,17 +453,6 @@ $(document).ready(function () {
/////////////////// end voir plus... actualite dans /actualites & /home ////////////////////
/////////////// start class à view-rows-ressources ////////
$(".view-rows-wrapper").each(function () {
let h3Container = $(this).prev("h3").find("div[class^='type-']");
let classToAdd = h3Container.attr("class"); // Récupère la classe complète (ex: "type-Documentation")
if (classToAdd) {
$(this).addClass(classToAdd); // Ajoute cette classe à .view-rows-wrapper
}
});
////////////////// end class à view-rows-wrapper ////////////////
//////////////start toggle partenaire //////////////////
@@ -595,42 +482,6 @@ $(document).ready(function () {
////////////// start toggle page node projet //////////////////
// document.addEventListener('DOMContentLoaded', function () {
// const photo = document.querySelector('.field_field_equipe_photo');
// const pres = document.querySelector('.field_field_equipe_presentation');
// if (!pres) return;
// // Création du bouton
// const btn = document.createElement('button');
// btn.className = 'btn-equipe-toggle';
// btn.textContent = "EN SAVOIR PLUS SUR L'ÉQUIPE";
// btn.setAttribute('aria-expanded', false);
// // Insertion du bouton juste après le bloc présentation
// pres.insertAdjacentElement('afterend', btn);
// // 3. Ajout de la ligne après le bouton
// const separator = document.createElement('div');
// separator.className = 'equipe-separator';
// btn.insertAdjacentElement('afterend', separator);
// // Toggle
// btn.addEventListener('click', function () {
// const isOpen = pres.classList.toggle('is-open');
// if (photo) photo.classList.toggle('is-open');
// btn.textContent = isOpen
// ? "FERMER LA PRÉSENTATION DE L'ÉQUIPE"
// : "EN SAVOIR PLUS SUR L'ÉQUIPE";
// btn.setAttribute('aria-expanded', isOpen);
// });
// });
document.addEventListener('DOMContentLoaded', function () {
@@ -639,9 +490,9 @@ document.addEventListener('DOMContentLoaded', function () {
if (!photo || !pres) return;
// 🔒 Forcer l'état FERMÉ au chargement
photo.classList.remove('is-open');
pres.classList.remove('is-open');
// 🔒 Forcer l'état FERMÉ au chargement
photo.classList.remove('is-open');
pres.classList.remove('is-open');
// 1. Créer un wrapper autour de photo + présentation
const panel = document.createElement('div');
@@ -711,13 +562,13 @@ pres.classList.remove('is-open');
});
//////////////end toggle page node projet //////////////////
})(jQuery, window);
@@ -1228,6 +1079,163 @@ document.addEventListener('DOMContentLoaded', function() {
//////////////////////// end Timeline script /////////////////////////////////////////////
})(jQuery, window);
}();
// This entry need to be wrapped in an IIFE because it need to be isolated against other entry modules.
!function() {
/*!*************************************!*\
!*** ./src/assets/js/ressources.js ***!
\*************************************/
/**
* @file
* quartiers_de_demain behaviors.
*/
(function (Drupal) {
'use strict';
Drupal.behaviors.quartiers_de_demain = {
attach: function (context, settings) {
console.log('It works!');
}
};
} (Drupal));
(function($, window) {
$(document).ready(function () {
/////////////// start class à view-rows-ressources ////////
$(".view-rows-wrapper").each(function () {
let h3Container = $(this).prev("h3").find("div[class^='type-']");
let classToAdd = h3Container.attr("class"); // Récupère la classe complète (ex: "type-Documentation")
if (classToAdd) {
$(this).addClass(classToAdd); // Ajoute cette classe à .view-rows-wrapper
}
});
////////////////// end class à view-rows-wrapper ////////////////
/////////////////// start voir plus... ressources ////////////////////
// Vérifier si on est sur la page avec l'ID #ressources
if ($("#ressources").length > 0) {
$(".view-rows-wrapper").each(function () {
let container = $(this); // Cible uniquement cette section
let items = container.find(".views-row"); // Les éléments à afficher progressivement
let visibleCount = 4; // Nombre d'éléments visibles au départ (par défaut)
// Récupérer la classe `type-XXX`
let typeClass = container.attr("class").split(" ").find(cls => cls.startsWith("type-"));
let typeName = typeClass ? typeClass.replace("type-", "").replace(/-/g, " ") : "contenu"; // Nettoyer le nom
// >>> Exception : tout afficher pour type-Galerie-photos (pas de bouton)
if (typeClass && typeClass.toLowerCase() === "type-mission-photo") {
items.show(); // aucun masquage
return; // on sort : pas de "voir plus"
}
// Ajuster le nombre d'éléments visibles en fonction du type
if (typeClass && (typeClass === "type-podcast" || typeClass.toLowerCase() === "type-vidéo")) {
visibleCount = 2; // Pour Podcast et Vidéo
} else if (typeClass === "type-kit-de-communication") {
visibleCount = 1; // Pour Kit de Communication
}
// Si le nombre total d'éléments est inférieur ou égal à la limite, ne pas ajouter le bouton
if (items.length <= visibleCount) {
return; // Sortir de la boucle
}
// Ajouter le bouton dynamiquement après chaque `.view-rows-wrapper`
let button = $("<button>")
.addClass("voir-plus")
.text("Voir plus de " + typeName)
.insertAfter(container);
// Cacher tous les éléments sauf ceux définis par `visibleCount`
items.hide().slice(0, visibleCount).show();
// Action sur le bouton
button.on("click", function () {
let hiddenItems = container.find(".views-row:hidden").slice(0, 4); // Prochains éléments à afficher
if ($(this).text().includes("Voir plus")) {
hiddenItems.slideDown(); // Afficher avec un effet de glissement
if (container.find(".views-row:hidden").length === 0) {
$(this).text("Voir moins de " + typeName); // Changer le texte du bouton si tout est affiché
}
} else {
container.find(".views-row").slice(visibleCount).slideUp(); // Replier les éléments
$(this).text("Voir plus de " + typeName); // Revenir à l'état initial
}
});
});
// slimselect
let ressource_type_select = new SlimSelect({
select: '#edit-field-type-de-ressource-target-id--2',
settings:{
placeholderText: 'choisir',
searchPlaceholder: 'choisir'
}
})
let ressource_motscles_select = new SlimSelect({
select: '#edit-field-mots-clefs-target-id--2',
settings:{
placeholderText: 'choisir',
searchPlaceholder: 'choisir'
}
})
let ressource_sites_select = new SlimSelect({
select: '#edit-field-site-target-id-verf--2',
settings:{
placeholderText: 'choisir',
searchPlaceholder: 'choisir'
}
})
// console.log(('sites_select'), sites_select);
}
/////////////////// end voir plus... ressources ////////////////////
///////////////////////// start ressource img clicable mission photo //////////////////////
$('.view-rows-wrapper.type-Mission-photo .views-row').each(function () {
var $row = $(this);
// Lien cible : d'abord le titre, sinon "Voir la gallerie photo"
var $link = $row.find('.views-field-views-conditional-field-1 a, .views-field-views-conditional-field a').first();
// L'image
var $img = $row.find('.views-field-field-images img').first();
if ($link.length && $img.length && !$img.data('missionPhotoBound')) {
console.log('→ Bind click sur image pour', $link.attr('href'));
$img.css('cursor', 'pointer');
$img.on('click', function () {
window.location.href = $link.attr('href');
});
// éviter de binder plusieurs fois (si AJAX / re-init)
$img.data('missionPhotoBound', true);
}
});
///////////////////////// end ressource img clicable mission photo //////////////////////
});
})(jQuery, window);
}();
// This entry need to be wrapped in an IIFE because it need to be in strict mode.
!function() {
"use strict";

File diff suppressed because one or more lines are too long

View File

@@ -320,109 +320,7 @@ window.addEventListener("resize", moveLanguageSwitcher);
/////////////////// end langswitcher position responsive///////////////////////////////////////////////////////////
/////////////// start class à view-rows-ressources ////////
$(document).ready(function () {
$(".view-rows-wrapper").each(function () {
let h3Container = $(this).prev("h3").find("div[class^='type-']");
let classToAdd = h3Container.attr("class"); // Récupère la classe complète (ex: "type-Documentation")
if (classToAdd) {
$(this).addClass(classToAdd); // Ajoute cette classe à .view-rows-wrapper
}
});
////////////////// end class à view-rows-wrapper ////////////////
/////////////////// start voir plus... ressources ////////////////////
// Vérifier si on est sur la page avec l'ID #ressources
if ($("#ressources").length > 0) {
$(".view-rows-wrapper").each(function () {
let container = $(this); // Cible uniquement cette section
let items = container.find(".views-row"); // Les éléments à afficher progressivement
let visibleCount = 4; // Nombre d'éléments visibles au départ (par défaut)
// Récupérer la classe `type-XXX`
let typeClass = container.attr("class").split(" ").find(cls => cls.startsWith("type-"));
let typeName = typeClass ? typeClass.replace("type-", "").replace(/-/g, " ") : "contenu"; // Nettoyer le nom
// >>> Exception : tout afficher pour type-Galerie-photos (pas de bouton)
if (typeClass && typeClass.toLowerCase() === "type-mission-photo") {
items.show(); // aucun masquage
return; // on sort : pas de "voir plus"
}
// Ajuster le nombre d'éléments visibles en fonction du type
if (typeClass && (typeClass === "type-podcast" || typeClass.toLowerCase() === "type-vidéo")) {
visibleCount = 2; // Pour Podcast et Vidéo
} else if (typeClass === "type-kit-de-communication") {
visibleCount = 1; // Pour Kit de Communication
}
// Si le nombre total d'éléments est inférieur ou égal à la limite, ne pas ajouter le bouton
if (items.length <= visibleCount) {
return; // Sortir de la boucle
}
// Ajouter le bouton dynamiquement après chaque `.view-rows-wrapper`
let button = $("<button>")
.addClass("voir-plus")
.text("Voir plus de " + typeName)
.insertAfter(container);
// Cacher tous les éléments sauf ceux définis par `visibleCount`
items.hide().slice(0, visibleCount).show();
// Action sur le bouton
button.on("click", function () {
let hiddenItems = container.find(".views-row:hidden").slice(0, 4); // Prochains éléments à afficher
if ($(this).text().includes("Voir plus")) {
hiddenItems.slideDown(); // Afficher avec un effet de glissement
if (container.find(".views-row:hidden").length === 0) {
$(this).text("Voir moins de " + typeName); // Changer le texte du bouton si tout est affiché
}
} else {
container.find(".views-row").slice(visibleCount).slideUp(); // Replier les éléments
$(this).text("Voir plus de " + typeName); // Revenir à l'état initial
}
});
});
// slimselect
let ressource_type_select = new SlimSelect({
select: '#edit-field-type-de-ressource-target-id--2',
settings:{
placeholderText: 'choisir',
searchPlaceholder: 'choisir'
}
})
let ressource_motscles_select = new SlimSelect({
select: '#edit-field-mots-clefs-target-id--2',
settings:{
placeholderText: 'choisir',
searchPlaceholder: 'choisir'
}
})
let ressource_sites_select = new SlimSelect({
select: '#edit-field-site-target-id-verf--2',
settings:{
placeholderText: 'choisir',
searchPlaceholder: 'choisir'
}
})
// console.log(('sites_select'), sites_select);
}
/////////////////// end voir plus... ressources ////////////////////
/////////////////// start voir plus... actualite dans /actualites & /home ////////////////////
@@ -497,17 +395,6 @@ $(document).ready(function () {
/////////////////// end voir plus... actualite dans /actualites & /home ////////////////////
/////////////// start class à view-rows-ressources ////////
$(".view-rows-wrapper").each(function () {
let h3Container = $(this).prev("h3").find("div[class^='type-']");
let classToAdd = h3Container.attr("class"); // Récupère la classe complète (ex: "type-Documentation")
if (classToAdd) {
$(this).addClass(classToAdd); // Ajoute cette classe à .view-rows-wrapper
}
});
////////////////// end class à view-rows-wrapper ////////////////
//////////////start toggle partenaire //////////////////
@@ -537,42 +424,6 @@ $(document).ready(function () {
////////////// start toggle page node projet //////////////////
// document.addEventListener('DOMContentLoaded', function () {
// const photo = document.querySelector('.field_field_equipe_photo');
// const pres = document.querySelector('.field_field_equipe_presentation');
// if (!pres) return;
// // Création du bouton
// const btn = document.createElement('button');
// btn.className = 'btn-equipe-toggle';
// btn.textContent = "EN SAVOIR PLUS SUR L'ÉQUIPE";
// btn.setAttribute('aria-expanded', false);
// // Insertion du bouton juste après le bloc présentation
// pres.insertAdjacentElement('afterend', btn);
// // 3. Ajout de la ligne après le bouton
// const separator = document.createElement('div');
// separator.className = 'equipe-separator';
// btn.insertAdjacentElement('afterend', separator);
// // Toggle
// btn.addEventListener('click', function () {
// const isOpen = pres.classList.toggle('is-open');
// if (photo) photo.classList.toggle('is-open');
// btn.textContent = isOpen
// ? "FERMER LA PRÉSENTATION DE L'ÉQUIPE"
// : "EN SAVOIR PLUS SUR L'ÉQUIPE";
// btn.setAttribute('aria-expanded', isOpen);
// });
// });
document.addEventListener('DOMContentLoaded', function () {
@@ -581,9 +432,9 @@ document.addEventListener('DOMContentLoaded', function () {
if (!photo || !pres) return;
// 🔒 Forcer l'état FERMÉ au chargement
photo.classList.remove('is-open');
pres.classList.remove('is-open');
// 🔒 Forcer l'état FERMÉ au chargement
photo.classList.remove('is-open');
pres.classList.remove('is-open');
// 1. Créer un wrapper autour de photo + présentation
const panel = document.createElement('div');
@@ -653,13 +504,13 @@ pres.classList.remove('is-open');
});
//////////////end toggle page node projet //////////////////
})(jQuery, window);

View File

@@ -0,0 +1,151 @@
/**
* @file
* quartiers_de_demain behaviors.
*/
(function (Drupal) {
'use strict';
Drupal.behaviors.quartiers_de_demain = {
attach: function (context, settings) {
console.log('It works!');
}
};
} (Drupal));
(function($, window) {
$(document).ready(function () {
/////////////// start class à view-rows-ressources ////////
$(".view-rows-wrapper").each(function () {
let h3Container = $(this).prev("h3").find("div[class^='type-']");
let classToAdd = h3Container.attr("class"); // Récupère la classe complète (ex: "type-Documentation")
if (classToAdd) {
$(this).addClass(classToAdd); // Ajoute cette classe à .view-rows-wrapper
}
});
////////////////// end class à view-rows-wrapper ////////////////
/////////////////// start voir plus... ressources ////////////////////
// Vérifier si on est sur la page avec l'ID #ressources
if ($("#ressources").length > 0) {
$(".view-rows-wrapper").each(function () {
let container = $(this); // Cible uniquement cette section
let items = container.find(".views-row"); // Les éléments à afficher progressivement
let visibleCount = 4; // Nombre d'éléments visibles au départ (par défaut)
// Récupérer la classe `type-XXX`
let typeClass = container.attr("class").split(" ").find(cls => cls.startsWith("type-"));
let typeName = typeClass ? typeClass.replace("type-", "").replace(/-/g, " ") : "contenu"; // Nettoyer le nom
// >>> Exception : tout afficher pour type-Galerie-photos (pas de bouton)
if (typeClass && typeClass.toLowerCase() === "type-mission-photo") {
items.show(); // aucun masquage
return; // on sort : pas de "voir plus"
}
// Ajuster le nombre d'éléments visibles en fonction du type
if (typeClass && (typeClass === "type-podcast" || typeClass.toLowerCase() === "type-vidéo")) {
visibleCount = 2; // Pour Podcast et Vidéo
} else if (typeClass === "type-kit-de-communication") {
visibleCount = 1; // Pour Kit de Communication
}
// Si le nombre total d'éléments est inférieur ou égal à la limite, ne pas ajouter le bouton
if (items.length <= visibleCount) {
return; // Sortir de la boucle
}
// Ajouter le bouton dynamiquement après chaque `.view-rows-wrapper`
let button = $("<button>")
.addClass("voir-plus")
.text("Voir plus de " + typeName)
.insertAfter(container);
// Cacher tous les éléments sauf ceux définis par `visibleCount`
items.hide().slice(0, visibleCount).show();
// Action sur le bouton
button.on("click", function () {
let hiddenItems = container.find(".views-row:hidden").slice(0, 4); // Prochains éléments à afficher
if ($(this).text().includes("Voir plus")) {
hiddenItems.slideDown(); // Afficher avec un effet de glissement
if (container.find(".views-row:hidden").length === 0) {
$(this).text("Voir moins de " + typeName); // Changer le texte du bouton si tout est affiché
}
} else {
container.find(".views-row").slice(visibleCount).slideUp(); // Replier les éléments
$(this).text("Voir plus de " + typeName); // Revenir à l'état initial
}
});
});
// slimselect
let ressource_type_select = new SlimSelect({
select: '#edit-field-type-de-ressource-target-id--2',
settings:{
placeholderText: 'choisir',
searchPlaceholder: 'choisir'
}
})
let ressource_motscles_select = new SlimSelect({
select: '#edit-field-mots-clefs-target-id--2',
settings:{
placeholderText: 'choisir',
searchPlaceholder: 'choisir'
}
})
let ressource_sites_select = new SlimSelect({
select: '#edit-field-site-target-id-verf--2',
settings:{
placeholderText: 'choisir',
searchPlaceholder: 'choisir'
}
})
// console.log(('sites_select'), sites_select);
}
/////////////////// end voir plus... ressources ////////////////////
///////////////////////// start ressource img clicable mission photo //////////////////////
$('.view-rows-wrapper.type-Mission-photo .views-row').each(function () {
var $row = $(this);
// Lien cible : d'abord le titre, sinon "Voir la gallerie photo"
var $link = $row.find('.views-field-views-conditional-field-1 a, .views-field-views-conditional-field a').first();
// L'image
var $img = $row.find('.views-field-field-images img').first();
if ($link.length && $img.length && !$img.data('missionPhotoBound')) {
console.log('→ Bind click sur image pour', $link.attr('href'));
$img.css('cursor', 'pointer');
$img.on('click', function () {
window.location.href = $link.attr('href');
});
// éviter de binder plusieurs fois (si AJAX / re-init)
$img.data('missionPhotoBound', true);
}
});
///////////////////////// end ressource img clicable mission photo //////////////////////
});
})(jQuery, window);

View File

@@ -12,6 +12,7 @@ let config = {
"./src/assets/js/lightbox.js",
"./src/assets/js/header.js",
"./src/assets/js/timeline.js",
"./src/assets/js/ressources.js",
"./src/assets/scss/quartiers_de_demain.scss",
// "./src/assets/fonts/*",
// "./src/assets/css/animated_logo.css",