Utilisateur:Dr Brains/CategoryForceGallery.js
Apparence
Note : après avoir enregistré la page, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements.
Mozilla / Firefox / Konqueror / Safari : maintenez la touche Majuscule (Shift) en cliquant sur le bouton Actualiser (Reload) ou pressez Maj-Ctrl-R (Cmd-R sur Apple Mac) ;
Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.if(mw.config.get('wgNamespaceNumber')==14 && (mw.config.get('wgAction')=="view"||mw.config.get('wgAction')=="purge"||mw.config.get('wgAction')=="submit")) addOnloadHook(CategoryForceGallery_AddLink)
var CategoryForceGallery_Show = "Afficher la galerie";
var CategoryForceGallery_WidthText = "Largeur des images (en pixel)"
var CategoryForceGallery_Width = 150;
function CategoryForceGallery_AddLink(){
if(typeof(CategoryForceGallery_UserOptions)=="function") CategoryForceGallery_UserOptions();
var Pages = document.getElementById("mw-pages");
var Gallery = document.getElementById("mw-category-media");
if(!Pages || Gallery) return;
var Title = Pages.getElementsByTagName('h2')[0];
var GalleryUl = Pages.getElementsByTagName("ul");
if(GalleryUl[0]&&Title && CategoryForceGallery_GetLinks("Count")!=0){
var Span = document.createElement('span');
Span.id = 'CategoryForceGallery_Link';
Span.setAttribute('style', "font-size:75%");
var ToggleLink = document.createElement('a');
ToggleLink.href = 'javascript:CategoryForceGallery_Toggle();';
ToggleLink.title = CategoryForceGallery_Show;
ToggleLink.innerHTML = CategoryForceGallery_Show;
Span.appendChild(document.createTextNode("["));
Span.appendChild(ToggleLink);
Span.appendChild(document.createTextNode("]"));
Title.appendChild(document.createTextNode(" "));
Title.appendChild(Span);
}
}
function CategoryForceGallery_Toggle(){
var ListDiv = document.getElementById("mw-pages");
var Link = document.getElementById("CategoryForceGallery_Link");
if(!ListDiv || !Link) return;
var Gallery = document.getElementById("mw-category-media");
if(ListDiv.style.display == "none" && Gallery){
Gallery.style.display = "none";
ListDiv.style.display = "block";
}else{
if(Gallery){
Gallery.style.display = "block";
ListDiv.style.display = "none";
}else{
var Titles = CategoryForceGallery_GetLinks("Titles");
var LinkList = CategoryForceGallery_GetLinks("Links");
CategoryForceGallery_getImages(Titles, LinkList);
Link.style.display = "none";
}
}
}
function CategoryForceGallery_GetLinks(Mode){
var ListDiv = document.getElementById("mw-pages");
if(!ListDiv) return 0;
var Gallery = document.getElementById("mw-category-media");
var LinkCount = 0;
var LinkList = new Array();
var Titles = new Array();
var GalleryUl = ListDiv.getElementsByTagName("ul");
for(var a=0;a<GalleryUl.length;a++){
var Links = GalleryUl[a].getElementsByTagName('a');
for(var b=0;b<Links.length;b++){
if(Links[b].title.indexOf(mw.config.get('wgFormattedNamespaces')[6]+":")!=-1){
LinkList.push(Links[b]);
Titles.push(Links[b].title);
LinkCount++
}
}
}
if(Mode == "Links") return LinkList;
if(Mode == "Titles") return Titles;
if(Mode == "Count") return LinkCount;
}
function CategoryForceGallery_getImages(Titles, LinkList, offsetContinue){
if(!offsetContinue && offsetContinue!=""){
CategoryForceGallery_Width = prompt(CategoryForceGallery_WidthText,CategoryForceGallery_Width);
if(!CategoryForceGallery_Width) return;
offsetContinue = "";
}
var AdresseRequete = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&prop=imageinfo&iiprop=url&iiurlwidth='+CategoryForceGallery_Width+'&titles=' + Titles.join("|").replace(/&/g, "%26") + offsetContinue;
var NouvelleRequete = new XMLHttpRequest();
NouvelleRequete.open("GET", AdresseRequete, true);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState != 4 || NouvelleRequete.status != 200) return;
var ObjetXML = NouvelleRequete.responseXML;
if(!ObjetXML) return;
var NextRequestTitles = new Array();
var NextRequestLinks = new Array();
var Link = ObjetXML.getElementsByTagName('page');
for(var a=0,l=Link.length;a<l;a++){
var Page = Link[a].getAttribute('title');
var NewSrcImage = Link[a].getElementsByTagName('ii')[0].getAttribute("thumburl");
var PageIndex = Titles.indexOf(Page);
if(PageIndex<0) continue;
var ThisLink = LinkList[PageIndex];
if(ThisLink.className == "FileLink") continue;
ThisLink.className = "FileLink";
var Li = ThisLink.parentNode;
var Img = document.createElement('img');
Img.width = CategoryForceGallery_Width;
Img.src = NewSrcImage;
Img.setAttribute("style", "margin:0.5em;");
$(ThisLink).after('<br>', Img);
Li.setAttribute('style', 'margin:0.5em;border:1px dashed silver;text-align:center;background:url("http://upload.wikimedia.org/wikipedia/commons/5/5d/Checker-16x16.png")');
if( a==(l-1) && Page != Titles[(Titles.length-1)]){
for(var b=(PageIndex+1);b<Titles.length;b++){
if(Titles[b] && LinkList[b]){
NextRequestTitles.push(Titles[b]);
NextRequestLinks.push(LinkList[b]);
}
}
}
}
if(NextRequestTitles[0]){
CategoryForceGallery_getImages(NextRequestTitles, NextRequestLinks, "");
return;
}
}
NouvelleRequete.send(null);
}