/*
== Code JavaScript ==
* Durée : environ 10 minutes pour 600 pages
{{Boîte déroulante début|titre=Images Utilisées}}<!--
*/
// --><source lang=javascript>
var UsedImages_ModeleDefautDebut = '{{Images utilisées\n'
+ '|pageportail=$1\n'
+ '|catégorie=$2\n'
+ '|defilant=oui\n'
+ '|hauteur=800\n'
+ '}}\n'
var UsedImages_ModeleDefautFin = '{{Images utilisées fin}}\n';
var UsedImages_ResumeModif = 'Mise à jour du modèle {{Images utilisées}}';
var UsedImages_DebutModele = '<!-- Ce tableau est créé automatiquement par un robot. Images Utilisées DEBUT -->\n';
var UsedImages_FinModele = '<!-- Ce tableau est créé automatiquement par un robot. Images Utilisées FIN -->\n'
var UsedImages_Minimum = 1;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/* ************************************************************************************************************************************
Lancement
*/
if( (mw.config.get('wgAction')!="edit")&&(mw.config.get('wgAction')!="submit") ){
addOnloadHook(UsedImages_makeUpdateLinks);
}
/* ************************************************************************************************************************************
1- recherche des modèles {{Maintenance de catégorie}} de la page courante
2- ajout des liens de mise à jour
*/
var UsedImages_StartButton = '<img height="50" width="50" src="http://upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Crystal_Clear_action_exit.svg/50px-Crystal_Clear_action_exit.svg.png" alt="Lancer la mise à jour">';
var UsedImages_WorkingButton = '<img height="50" width="50" src="http://upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif" alt="Mise à jour en cours">';
function UsedImages_makeUpdateLinks(){
var count=-1;
var Cadres = document.getElementsByTagName('div');
for(s=0;s<Cadres.length;s++){
if( $(Cadres).hasClass('categoryUsedImages') ){
count++
Cadres.id = 'categoryUsedImages_'+count;
var ParamCategorie = Cadres.firstChild.innerHTML;
var ParamPage = Cadres.firstChild.title;
var NewButton = '<a id="categoryUsedImagesLink_'+count+'" href="javascript:UsedImages_GetParams('+count+');" title="Cliquer pour mettre à jour l\'analyse de la catégorie ' + ParamCategorie + ' sur la page '+ParamPage+'" >'+UsedImages_StartButton+'</a>' ;
Cadres.innerHTML += NewButton ;
}
}
}
function UsedImages_GetParams(index){
var Modele = document.getElementById('categoryUsedImages_'+index);
if(!Modele) return;
var Cadre = Modele.firstChild;
if(!Cadre) return;
var ParamCategorie = Cadre.innerHTML;
var ParamPage = Cadre.title;
var Pop1 = 'Limite basse du nombre d\'occurrences :\n';
var Minimum = prompt(Pop1, UsedImages_Minimum);
if(Minimum){
if(Minimum!=''){
Minimum = parseInt(Minimum);
if(Minimum!="NaN") UsedImages_Minimum = Minimum;
}
}
var Pop = 'Catégorie à vérifier :\n'
+ '* '+ParamCategorie+'\n\n'
+ 'Page à mettre à jour :\n'
+ '* '+ParamPage+'\n\n'
+ 'Minimum :\n'
+ '* '+UsedImages_Minimum+'\n\n'
+ 'Continuer ?';
var SurEtCertain = confirm(Pop);
if(SurEtCertain){
Modele.innerHTML += '<br /><span id="WorkingFunction" ></span><br /><span id="WorkingPage" ></span>';
UsedImages_CheckCategory(ParamPage, ParamCategorie);
var Lien = document.getElementById('categoryUsedImagesLink_'+index)
if(Lien){
Lien.innerHTML = UsedImages_WorkingButton ;
Lien.title = "Arrêter la mise à jour" ;
Lien.href = "javascript:window.location.reload();";
Lien.blur();
}
}
}
// ///////////////////////////////////////////////////// REQUÊTE PAGES DE LA CATÉGORIE /////////////////////////
function UsedImages_CheckCategory(ParamPage, ParamCategorie, PageList, ParamContinue){
if(!PageList) PageList = new Array();
if(!ParamContinue) ParamContinue='';
if( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1) ){
var APILimit=4999;
}else{
var APILimit=499;
}
document.getElementById('WorkingFunction').innerHTML = "Listage des pages";
document.getElementById('WorkingPage').innerHTML = ParamCategorie;
var NouvelleRequete = new XMLHttpRequest()
var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&list=categorymembers&cmlimit='+APILimit+'&cmtitle=' + ParamCategorie.replace(/&/g,"%26") + '&cmcontinue=' + ParamContinue;
//alert(AdresseRequete);
NouvelleRequete.open("GET", AdresseRequete, true);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState != 4 || NouvelleRequete.status != 200) return;
var ElementTraitement = document.createElement('div');
ElementTraitement.innerHTML = NouvelleRequete.responseText;
var Informations = ElementTraitement.getElementsByTagName('span');
var AutreRequeteNecessaire = false;
for(a=0;a<Informations.length;a++){
var ContenuInformation = Informations.innerHTML;
if((ContenuInformation.indexOf('ns="0"')!=-1)||(ContenuInformation.indexOf('ns="1"')!=-1)){
var TitrePage = ContenuInformation.split('title="').split('"');
TitrePage = UsedImages_Clean(TitrePage);
PageList.push(TitrePage);
}
if(ContenuInformation.indexOf('cmcontinue=')!=-1){
AutreRequeteNecessaire = true;
var AutreRequeteContinue = ContenuInformation.split('cmcontinue="').split('"');
AutreRequeteContinue = UsedImages_Clean(AutreRequeteContinue);
}
}
if(AutreRequeteNecessaire==true){
UsedImages_CheckCategory(ParamPage, ParamCategorie, PageList, AutreRequeteContinue);
}else{
UsedImages_CheckPage(0, ParamPage, ParamCategorie, PageList);
}
}
NouvelleRequete.send(null);
}
function UsedImages_CheckPage(position, ParamPage, ParamCategorie, PageList, ImageList, imContinue){
if(!ImageList) ImageList = new Array();
if(!imContinue) imContinue='';
var Page = PageList;
if(!Page){
UsedImages_SortImages(ParamPage, ParamCategorie, ImageList);
return;
}
if( (mw.config.get('wgUserGroups').indexOf("sysop")!=-1)||(mw.config.get('wgUserGroups').indexOf("bot")!=-1) ){
var APILimit=4999;
}else{
var APILimit=499;
}
document.getElementById('WorkingFunction').innerHTML = "Listage des images";
document.getElementById('WorkingPage').innerHTML = Page;
var AdresseRequete = mw.config.get('wgServer') + '/w/api.php?action=query&prop=images&titles='+Page.replace(/&/g, "%26")+'&imlimit='+APILimit+imContinue;
var NouvelleRequete = new XMLHttpRequest()
NouvelleRequete.open("GET", AdresseRequete, true);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState != 4 || NouvelleRequete.status != 200) return;
var ElementTraitement = document.createElement('div');
ElementTraitement.innerHTML = NouvelleRequete.responseText;
var Informations = ElementTraitement.getElementsByTagName('span');
var AutreRequeteNecessaire = false;
for(a=0;a<Informations.length;a++){
var ContenuInformation = Informations.innerHTML;
if(ContenuInformation.indexOf('ns="6"')!=-1){
var TitrePage = ContenuInformation.split('title="').split('"');
TitrePage = UsedImages_Clean(TitrePage);
ImageList.push(TitrePage);
}
if(ContenuInformation.indexOf('imcontinue=')!=-1){
AutreRequeteNecessaire = true;
var AutreRequeteContinue = '&imcontinue=' + ContenuInformation.split('imcontinue="').split('"');
AutreRequeteContinue = UsedImages_Clean(AutreRequeteContinue);
}
}
if(AutreRequeteNecessaire==true){
UsedImages_CheckPage(position, ParamPage, ParamCategorie, PageList, ImageList, AutreRequeteContinue);
}else{
UsedImages_CheckPage((position+1), ParamPage, ParamCategorie, PageList, ImageList);
}
}
NouvelleRequete.send(null);
}
function UsedImages_SortImages(ParamPage, ParamCategorie, ImageList){
document.getElementById('WorkingFunction').innerHTML = "Tri des images";
document.getElementById('WorkingPage').innerHTML = '';
ImageList = ImageList.sort();
var SortedImageList = new Array();
var SortedImageListCount = new Array();
var index = 0;
var NbLiens = 1;
for(var a=0;a<ImageList.length;a++){
if(ImageList==ImageList){
NbLiens++
}else{
SortedImageList = ImageList;
SortedImageListCount = NbLiens;
index++
NbLiens = 1;
}
}
var StandardLine = '$2$5$1|]\n';
var TableLines = new Array();
for(var b=0;b<SortedImageList.length;b++){
if(SortedImageListCount>(UsedImages_Minimum-1)){
var pluriel = '';
if(SortedImageListCount>1) pluriel = 's';
var Occurrences = SortedImageListCount;
var ZeroOccurrences = "";
if(Occurrences<10) ZeroOccurrences +="0";
if(Occurrences<100) ZeroOccurrences +="0";
if(Occurrences<1000) ZeroOccurrences +="0";
var NewLine = StandardLine
NewLine = NewLine.split('$1').join(SortedImageList);
NewLine = NewLine.split('$2').join(ZeroOccurrences+Occurrences);
NewLine = NewLine.split('$3').join(Occurrences);
NewLine = NewLine.split('$4').join(pluriel);
TableLines.push(NewLine);
}
}
TableLines = TableLines.sort();
for(var c=0;c<TableLines.length;c++){
TableLines = TableLines.split('$5');
}
UsedImages_Edit(ParamPage, ParamCategorie, TableLines);
}
function UsedImages_Edit(ParamPage, ParamCategorie, TableLines){
document.getElementById('WorkingFunction').innerHTML = "Édition";
document.getElementById('WorkingPage').innerHTML = ParamPage;
var ajaxRequest = new XMLHttpRequest();
var url = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + ParamPage.replace(/&/g, "%26") + '&action=edit';
ajaxRequest.open("GET", url, true);
ajaxRequest.onreadystatechange = function() {
if(ajaxRequest.readyState != 4 || ajaxRequest.status != 200) return;
while(document.body.firstChild){document.body.removeChild(document.body.firstChild);}
document.body.innerHTML = ajaxRequest.responseText;
var Aujourdhui = new Date();
var Minutes = Aujourdhui.getMinutes()
if(Minutes<10){ var ZeroMinutes = "0" ; }else{ var ZeroMinutes = "";}
var Heures = Aujourdhui.getHours()
if(Heures<10){ var ZeroHeures = "0" ; }else{ var ZeroHeures = "";}
var Jour = Aujourdhui.getDate();
if(Jour<10){ var ZeroJour = "0" ; }else{ var ZeroJour = "";}
var Mois = Aujourdhui.getMonth() + 1;
if(Mois<10){ var ZeroMois = "0" ; }else{ var ZeroMois = "";}
var Annee = Aujourdhui.getYear();
if (Annee < 2000){
Annee = Annee + 1900;
}
var Titre = '<center>\'\'Catégorie : \'\'\'+':').join('')+']]\'\'\' - Tableau ] le ' + ZeroJour + Jour + '/' + ZeroMois + Mois + '/' + Annee + ' à ' + ZeroHeures + Heures + ':' + ZeroMinutes + Minutes + '\'\'</center>\n';
var Modele = Titre + '<gallery>\n';
for(var a=(TableLines.length-1);a>-1;a--){
Modele += TableLines;
}
Modele += '</gallery>\n';
var TableauComplet = UsedImages_DebutModele+Modele+UsedImages_FinModele;
UsedImages_ModeleDefautDebut = UsedImages_ModeleDefautDebut.split('$1').join(ParamPage);
UsedImages_ModeleDefautDebut= UsedImages_ModeleDefautDebut.split('$2').join(ParamCategorie);
var ContenuPage = document.getElementById("wpTextbox1").value;
var AncienResumeModif = document.editform.wpSummary.value;
if( (ContenuPage.indexOf(UsedImages_DebutModele)!=-1)&&(ContenuPage.indexOf(UsedImages_FinModele)!=-1) ){
// ----------------- Déja le modèle : remplacement tableau
var debutTexte = ContenuPage.substring(0, ContenuPage.indexOf(UsedImages_DebutModele));
var AncienModele = ContenuPage.substring(0, ContenuPage.indexOf(UsedImages_FinModele)) + UsedImages_FinModele;
AncienModele = AncienModele.replace(debutTexte, "");
var finTexte = ContenuPage.split(debutTexte).join('').split(AncienModele).join('');
var TexteFinal = debutTexte + TableauComplet + finTexte;
}else{
// ----------------- Pas de modèle : ajout modèle + tableau
var TexteFinal = UsedImages_ModeleDefautDebut + TableauComplet + UsedImages_ModeleDefautFin + ContenuPage;
}
document.getElementById ("wpTextbox1").value = TexteFinal ;
document.editform.wpSummary.value = AncienResumeModif + UsedImages_ResumeModif ;
document.editform.submit();
}
ajaxRequest.send(null);
}
// ///////////////////////////////////////////////////// NETTOYAGE REQUÊTES API /////////////////////////
function UsedImages_Clean(text){
while(text.indexOf('&')!=-1){
text = text.split('&').join("&");
if(text.indexOf('&')==-1) break;
}
while(text.indexOf(''')!=-1){
text = text.split(''').join("'");
if(text.indexOf(''')==-1) break;
}
while(text.indexOf('"')!=-1){
text = text.split('"').join('"');
if(text.indexOf('"')==-1) break;
}
while(text.indexOf(' ')!=-1){
text = text.split(' ').join(' ');
if(text.indexOf(' ')==-1) break;
}
return text;
}
//</source>{{Boîte déroulante fin}}