php class

This commit is contained in:
2025-05-23 09:10:23 +02:00
parent b0c93b3eef
commit 86aaef30fc
9 changed files with 227 additions and 121 deletions
+40 -69
View File
@@ -81,64 +81,7 @@ jQuery(function ($) {
settings: { adaptiveHeight: true }
}]
});
// Classes media → .wrapper-ressource
$(".wrapper-ressource").each(function () {
const media = $(this).find(".field--name-field-type-de-media").text().trim();
const className = media
.toLowerCase()
.normalize("NFD").replace(/[\u0300-\u036f]/g, "")
.replace(/[^a-z0-9]+/g, '-')
.replace(/(^-|-$)/g, '');
$(this).addClass('type-media-' + className);
});
console.log("classses media");
// SLIDES RECONSTRUCTION LORS DU CHARGEMENT COMPLET
$(window).on('load', function () {
const $viewContent = $('.path-ressources .view-content').first();
if ($viewContent.length === 0) return;
$viewContent.addClass('view-ressources-hidden');
console.log($viewContent);
const allowedTypes = [
'type-publication-issue-du-programme-eqld',
'type-paroles-de-laureats',
'type-les-projets-en-images',
'type-presse'
];
// const $viewContent = $('.view-content');
const allRows = $('.path-ressources .view-base-de-donnees .views-row').detach();
function toLabel(str) {
return str.replace('type-', '').replace(/-/g, ' ').replace(/\b\w/g, l => l.toUpperCase());
}
allowedTypes.forEach(type => {
const label = toLabel(type);
const $slide = $(`
<div class="view-type-slide ${type}">
<h3 class="${type}">${label}</h3>
<div class="views-row-wrapper"></div>
</div>
`);
$viewContent.append($slide);
console.log(allowedTypes);
});
allRows.each(function () {
const $row = $(this);
const classList = $row.attr('class').split(/\s+/);
classList.forEach(cls => {
if (allowedTypes.includes(cls)) {
$(`.view-type-slide.${cls} .views-row-wrapper`).append($row.clone(true, true));
}
});
console.log(classList);
});
$('.path-ressources .view:not(.view-partenaires) .view-content .view-type-slide .views-row-wrapper').slick({
slidesToShow: 3,
dots: false,
@@ -155,19 +98,47 @@ jQuery(function ($) {
}
}]
});
// Supprimer les .view-type-slide originales générées par Drupal (vides ou non autorisées)
$('.path-ressources .view-base-de-donnees .view-type-slide').each(function () {
const classes = $(this).attr('class').split(/\s+/);
const isCustom = classes.some(cls => allowedTypes.includes(cls));
if (!isCustom) {
$(this).remove();
}
console.log(classes);
});
$viewContent.removeClass('view-ressources-hidden');
///// fusion views-type-slide de class identique ////////////
const seen = new Set();
$('.view-type-slide').each(function () {
const $slide = $(this);
const classes = $slide.attr('class').split(/\s+/);
const typeClass = classes.find(cls => cls.startsWith('type-'));
if (typeClass) {
if (seen.has(typeClass)) {
// Trouver le premier slide avec cette classe
const $target = $('.view-type-slide.' + typeClass).first();
// Déplacer les rows de la slide actuelle vers la première
$slide.find('.views-row').appendTo($target.find('.views-row-wrapper'));
// Supprimer la slide en double
$slide.remove();
} else {
seen.add(typeClass);
}
}
});
// Classes media → .wrapper-ressource
$(".wrapper-ressource").each(function () {
const media = $(this).find(".field--name-field-type-de-media").text().trim();
const className = media
.toLowerCase()
.normalize("NFD").replace(/[\u0300-\u036f]/g, "")
.replace(/[^a-z0-9]+/g, '-')
.replace(/(^-|-$)/g, '');
$(this).addClass('type-media-' + className);
});
console.log("classses media");
// Ouvrir les liens externes dans un nouvel onglet
document.querySelectorAll('a[href^="http"]').forEach(link => {