MediaWiki:Common.js: differenze tra le versioni
Vai alla navigazione
Vai alla ricerca
Aggiunta gallery dinamica immagini e loghi da PageImages |
Corretto fallback gallery dinamica usando pageimage |
||
| Riga 4: | Riga 4: | ||
/* WIKINESS_DYNAMIC_GALLERY_START */ | /* WIKINESS_DYNAMIC_GALLERY_START */ | ||
(function () { | (function () { | ||
function escapeHtml(text) { | |||
return String(text || '') | |||
.replace(/&/g, '&') | |||
.replace(/</g, '<') | |||
.replace(/>/g, '>') | |||
.replace(/"/g, '"'); | |||
} | |||
function imageUrlFromPage(page) { | |||
if (page.thumbnail && page.thumbnail.source) { | |||
return page.thumbnail.source; | |||
} | |||
if (page.pageimage) { | |||
return '/index.php?title=Special:Redirect/file/' + encodeURIComponent(page.pageimage); | |||
} | |||
return ''; | |||
} | |||
function buildGallery(targetId, categoryTitle, emptyText) { | function buildGallery(targetId, categoryTitle, emptyText) { | ||
var target = document.getElementById(targetId); | var target = document.getElementById(targetId); | ||
| Riga 40: | Riga 60: | ||
var withImages = pages.filter(function (page) { | var withImages = pages.filter(function (page) { | ||
return page | return imageUrlFromPage(page) && page.fullurl; | ||
}).slice(0, 10); | }).slice(0, 10); | ||
| Riga 52: | Riga 72: | ||
withImages.forEach(function (page) { | withImages.forEach(function (page) { | ||
var title = page.title || ''; | var title = page.title || ''; | ||
var img = page | var img = imageUrlFromPage(page); | ||
var url = page.fullurl; | var url = page.fullurl; | ||
html += '' | html += '' | ||
+ '<a class="wikiness-dynamic-gallery-card" href="' + url + '">' | + '<a class="wikiness-dynamic-gallery-card" href="' + escapeHtml(url) + '">' | ||
+ '<span class="wikiness-dynamic-gallery-thumb">' | + '<span class="wikiness-dynamic-gallery-thumb">' | ||
+ '<img src="' + img + '" alt="' + title | + '<img src="' + escapeHtml(img) + '" alt="' + escapeHtml(title) + '" loading="lazy">' | ||
+ '</span>' | + '</span>' | ||
+ '<span class="wikiness-dynamic-gallery-title">' + title + '</span>' | + '<span class="wikiness-dynamic-gallery-title">' + escapeHtml(title) + '</span>' | ||
+ '</a>'; | + '</a>'; | ||
}); | }); | ||
Versione delle 11:48, 1 giu 2026
/* WIKINESS_DYNAMIC_GALLERY_START */
(function () {
function escapeHtml(text) {
return String(text || '')
.replace(/&/g, '&')
.replace(/</g, '<')
.replace(/>/g, '>')
.replace(/"/g, '"');
}
function imageUrlFromPage(page) {
if (page.thumbnail && page.thumbnail.source) {
return page.thumbnail.source;
}
if (page.pageimage) {
return '/index.php?title=Special:Redirect/file/' + encodeURIComponent(page.pageimage);
}
return '';
}
function buildGallery(targetId, categoryTitle, emptyText) {
var target = document.getElementById(targetId);
if (!target) {
return;
}
target.innerHTML = '<div class="wikiness-gallery-loading">Caricamento immagini...</div>';
var apiUrl =
'/api.php?action=query' +
'&generator=categorymembers' +
'&gcmtitle=' + encodeURIComponent(categoryTitle) +
'&gcmlimit=50' +
'&gcmsort=sortkey' +
'&gcmdir=ascending' +
'&prop=pageimages|info' +
'&piprop=thumbnail|name' +
'&pithumbsize=140' +
'&inprop=url' +
'&format=json';
fetch(apiUrl, { credentials: 'same-origin' })
.then(function (response) {
return response.json();
})
.then(function (data) {
var pagesObj = data && data.query && data.query.pages ? data.query.pages : {};
var pages = Object.keys(pagesObj).map(function (key) {
return pagesObj[key];
});
pages.sort(function (a, b) {
return String(a.title || '').localeCompare(String(b.title || ''), 'it');
});
var withImages = pages.filter(function (page) {
return imageUrlFromPage(page) && page.fullurl;
}).slice(0, 10);
if (!withImages.length) {
target.innerHTML = '<div class="wikiness-gallery-empty">' + emptyText + '</div>';
return;
}
var html = '<div class="wikiness-dynamic-gallery-grid">';
withImages.forEach(function (page) {
var title = page.title || '';
var img = imageUrlFromPage(page);
var url = page.fullurl;
html += ''
+ '<a class="wikiness-dynamic-gallery-card" href="' + escapeHtml(url) + '">'
+ '<span class="wikiness-dynamic-gallery-thumb">'
+ '<img src="' + escapeHtml(img) + '" alt="' + escapeHtml(title) + '" loading="lazy">'
+ '</span>'
+ '<span class="wikiness-dynamic-gallery-title">' + escapeHtml(title) + '</span>'
+ '</a>';
});
html += '</div>';
target.innerHTML = html;
})
.catch(function () {
target.innerHTML = '<div class="wikiness-gallery-empty">' + emptyText + '</div>';
});
}
document.addEventListener('DOMContentLoaded', function () {
buildGallery(
'wikiness-gallery-professionisti',
'Categoria:- Pagine con immagini',
'Nessuna immagine disponibile.'
);
buildGallery(
'wikiness-gallery-loghi',
'Categoria:- Pagine con loghi',
'Nessun logo disponibile.'
);
});
}());
/* WIKINESS_DYNAMIC_GALLERY_END */