MediaWiki:Gadget-PaletteDeluxe.js
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./* **********************************************************************************************************************
PalettesDeluxe
Permet d'ajouter/supprimer/modifier les palettes de la même manière que les gadgets de portail ou catégorie
Dérivé de : MediaWiki:Gadget-HotCats.js et MediaWiki:Gadget-BandeauxPortails.js (cf historique respectifs pour les auteurs)
Documentation : Projet:Scripts et gadgets/Notices/PaletteDeluxe
{{Catégorisation JS|PaletteDeluxe}}
*********************************************************************************************************************** */
// ====================================================================================================================
// DEBUT DU CODE
// ====================================================================================================================
// <syntaxhighlight lang=javascript><pre><nowiki>
/////////////////////////////////////////////////////////////////////////////////// Variables personnalisables
// Publication automatique
if (typeof window.PalettesDeluxe_AutoEdit === 'undefined') window.PalettesDeluxe_AutoEdit = true;
// Modification mineure
if (typeof window.PalettesDeluxe_MinorEdit === 'undefined') window.PalettesDeluxe_MinorEdit = true;
// Ajout à la liste de suivi ( -1 = défaut préférences, 0 = jamais, 1 = toujours)
if (typeof window.PalettesDeluxe_Watchthis === 'undefined') window.PalettesDeluxe_Watchthis = -1;
// Nombre de suggestions
if (typeof window.PalettesDeluxe_TailleListe === 'undefined') window.PalettesDeluxe_TailleListe = 10;
// Affichage des suggestions vers le bas
if (typeof window.PalettesDeluxe_ListeBas === 'undefined') window.PalettesDeluxe_ListeBas = false;
// Affichage des redirections de palette
if (typeof window.PalettesDeluxe_ShowRedirect === 'undefined') window.PalettesDeluxe_ShowRedirect = false;
// Non-confirmation de la suppression des palettes
if (typeof window.PalettesDeluxe_SkipConfirm === 'undefined') window.PalettesDeluxe_SkipConfirm = false;
// Groupe nécessaire pour appliquer une balise
if (typeof window.PalettesDeluxe_BaliseGroup === 'undefined') window.PalettesDeluxe_BaliseGroup = "user";
// Balise pour les modifications avec ce script
if (typeof window.PalettesDeluxe_Balise === 'undefined') window.PalettesDeluxe_Balise = "PaletteDeluxe";
var PalettesDeluxe_EditParams = [];
/////////////////////////////////////////////////////////////////////////////////// Édition
window.PaletteDeluxe_getBalise = function() {
if (!PalettesDeluxe_Balise || !PalettesDeluxe_BaliseGroup) return false;
var UserGroups = mw.config.get('wgUserGroups');
if (UserGroups.indexOf(PalettesDeluxe_BaliseGroup) !== -1) return PalettesDeluxe_Balise;
return false;
};
var PalettesDeluxe_ajax = {
http: function(bundle) {
var xmlhttp;
try {
xmlhttp = new XMLHttpRequest();
} catch (e) {
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
xmlhttp = false;
}
}
}
if (xmlhttp) {
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4)
PalettesDeluxe_ajax.httpComplete(xmlhttp, bundle);
};
xmlhttp.open(bundle.method ? bundle.method : "GET", bundle.url, bundle.async === false ? false : true);
if (bundle.headers) {
for (var field in bundle.headers)
try {
xmlhttp.setRequestHeader(field, bundle.headers[field]);
} catch (err) {}
}
xmlhttp.send(bundle.data ? bundle.data : null);
}
return xmlhttp;
},
httpComplete: function(xmlhttp, bundle) {
if (xmlhttp.status == 200 || xmlhttp.status == 302) {
if (bundle.onSuccess) bundle.onSuccess(xmlhttp, bundle);
} else if (bundle.onFailure) {
bundle.onFailure(xmlhttp, bundle);
}
}
};
// Nettoyage modèle (espaces, retour à la ligne, pipes)
function PalettesDeluxe_CleanModele(Modele) {
Modele = Modele.replace(/\n/ig, "");
Modele = Modele.replace(/ \|/ig, "\|");
Modele = Modele.replace(/\| /ig, "\|");
Modele = Modele.replace(/\|\|/ig, "\|");
Modele = Modele.replace(/\|\}/ig, "\}");
return Modele;
}
function PalettesDeluxe_DoEdit(Req, data) {
while (document.body.firstChild) {
document.body.removeChild(document.body.firstChild);
}
document.body.innerHTML = Req.responseText;
var TextArea = document.getElementById('wpTextbox1');
if (!TextArea) return;
if (PalettesDeluxe_AutoEdit) document.editform.style.display = "none";
var RemoveBandeauText = data.remove;
var AddBandeauText = data.add;
if (AddBandeauText) AddBandeauText = AddBandeauText.replace(/\|$/g, '');
var OldText = TextArea.value;
OldText = OldText.replace(/\{\{Palette /ig, "\{\{Palette\|"); // Cas d'une palette unique : {{Palette Truc}} -> {{Palette|Truc}}
OldText = PalettesDeluxe_DoEditFusion(OldText);
if ((OldText.indexOf('{{Palette|') != -1) || (OldText.indexOf('{{palette|') != -1)) {
// Il y a déjà un modèle {{Palette}}
var AvantModeleUp = OldText.substring(0, OldText.indexOf('{{Palette'));
var AvantModeleLow = OldText.substring(0, OldText.indexOf('{{palette'));
var ApresModele = OldText.split(AvantModeleUp).join('').split(AvantModeleLow).join('');
var DebutModele = OldText.split(ApresModele).join('');
var OldModele = ApresModele.substring(0, ApresModele.indexOf('}}')) + '}}';
var SuiteModele = ApresModele.split(OldModele).join('');
OldModele = PalettesDeluxe_CleanModele(OldModele);
if (AddBandeauText) {
if (((OldModele.indexOf('|' + AddBandeauText + '|') != -1) || (OldModele.indexOf('|' + AddBandeauText + '}') != -1))) {
alert('Le palette ' + AddBandeauText + ' est déjà présente.');
document.editform.style.display = "";
return;
}
}
var NouveauModele;
var Sommaire;
if (RemoveBandeauText && AddBandeauText) {
NouveauModele = OldModele;
NouveauModele = NouveauModele.split('|' + RemoveBandeauText + '|').join('|');
NouveauModele = NouveauModele.split('|' + RemoveBandeauText + '}}').join('}}');
NouveauModele = NouveauModele.split('}}').join('|' + AddBandeauText + '}}');
Sommaire = 'Changement rapide de {{palette}} : - ' + RemoveBandeauText + ' , + ' + AddBandeauText.replace(/\|/g, " , + ");
} else if (RemoveBandeauText) {
NouveauModele = OldModele;
NouveauModele = NouveauModele.split('|' + RemoveBandeauText + '|').join('|');
NouveauModele = NouveauModele.split('|' + RemoveBandeauText + '}}').join('}}');
Sommaire = 'Retrait rapide de {{palette}} : - ' + RemoveBandeauText;
} else if (AddBandeauText) {
NouveauModele = OldModele.split('}}').join('|' + AddBandeauText + '}}');
Sommaire = 'Ajout rapide de {{palette}} : + ' + AddBandeauText.replace(/\|/g, " , + ");
}
NouveauModele = PalettesDeluxe_CleanModele(NouveauModele);
if (NouveauModele.indexOf('|') == -1) {
if (PalettesDeluxe_SkipConfirm || confirm('Erreur :\nLe modèle {{Palette}} doit avoir au moins un paramètre.\n\nSupprimer le modèle {{Palette}} ?')) {
NouveauModele = "";
} else {
document.editform.style.display = "block";
return;
}
}
} else {
// Il n'y a pas de modèle {{Palette}}
if (!AddBandeauText) {
alert('Pas de palette à ajouter.');
document.editform.style.display = "";
return;
}
var NouveauModele = '{{Palette|' + AddBandeauText + '}}\n\n';
var Sommaire = 'Ajout rapide de {{palette}} : + ' + AddBandeauText.replace(/\|/g, " , + ");
if ((OldText.indexOf('{{DEFAULTSORT:') != -1) || (OldText.indexOf('[[Catégorie:') != -1) || (OldText.indexOf('[[catégorie:') != -1) || (OldText.indexOf('[[Categorie:') != -1) || (OldText.indexOf('[[categorie:') != -1) || (OldText.indexOf('{{Portail') != -1) || (OldText.indexOf('{{portail') != -1)) {
// Il y a des catégories/portails/palettes
var DebutModele1 = OldText.substring(0, OldText.indexOf('{{Portail'));
var DebutModele2 = OldText.substring(0, OldText.indexOf('{{portail'));
var DebutModele3 = OldText.substring(0, OldText.indexOf('{{DEFAULTSORT:'));
var DebutModele4 = OldText.substring(0, OldText.indexOf('[[Catégorie:'));
var DebutModele5 = OldText.substring(0, OldText.indexOf('[[catégorie:'));
var DebutModele6 = OldText.substring(0, OldText.indexOf('[[Categorie:'));
var DebutModele7 = OldText.substring(0, OldText.indexOf('[[categorie:'));
var SuiteModele = OldText.split(DebutModele1).join('').split(DebutModele2).join('').split(DebutModele3).join('').split(DebutModele4).join('').split(DebutModele5).join('').split(DebutModele6).join('').split(DebutModele7).join('');
var DebutModele = OldText.split(SuiteModele).join('');
} else {
// Il n'y a pas de catégories/portails/palettes
var interWiki = new RegExp('^\\s*\\[\\[([a-z][a-z].?(x?-[^\\]]+)?|simple|tokipona):([^\\]]*)\\]\\]\\s*$');
var blank = new RegExp('^\\s*$');
var lines = OldText.split('\n');
var DebutModele = '';
var SuiteModele = '';
for (var lineId = lines.length - 1; lineId >= 0; --lineId) {
if (!interWiki.test(lines[lineId]) && !blank.test(lines[lineId])) {
DebutModele = lines.slice(0, lineId + 1).join('\n') + '\n\n';
SuiteModele = lines.slice(lineId + 1).join('\n');
break;
}
}
if (DebutModele === '') {
// edge case: source has nothing else than interwikis
SuiteModele = OldText;
}
while (SuiteModele.indexOf('\n\n') != -1) {
SuiteModele = SuiteModele.split("\n\n").join("\n");
}
SuiteModele = SuiteModele.replace(/^\n/, "");
}
}
var TexteFinal = DebutModele + NouveauModele + SuiteModele;
var SommaireFinal = Sommaire + ' ; avec [[Projet:Scripts et gadgets/Notices/PaletteDeluxe|PalettesDeluxe]]';
document.getElementById('wpMinoredit').checked = PalettesDeluxe_MinorEdit;
if (PalettesDeluxe_Watchthis == 1) document.getElementById('wpWatchthis').checked = "checked";
if (PalettesDeluxe_Watchthis == 0) document.getElementById('wpWatchthis').checked = false;
document.getElementById('wpTextbox1').value = TexteFinal;
document.getElementById('wpSummary').value = SommaireFinal;
if (PalettesDeluxe_AutoEdit) {
var watchthisparam = {};
watchthisparam[-1] = "nochange";
watchthisparam[0] = "unwatch";
watchthisparam[1] = "watch";
var datas = {
action: 'edit',
title: mw.config.get('wgPageName'),
text: TexteFinal,
summary: SommaireFinal,
minor: (document.editform.wpMinoredit.checked ? 1 : 0),
watchlist: watchthisparam[PalettesDeluxe_Watchthis],
token: document.editform.wpEditToken.value
};
var ApplyTag = PaletteDeluxe_getBalise();
if (ApplyTag) {
datas.summary = Sommaire;
datas.tags = ApplyTag;
}
var api = new mw.Api();
api.post(datas, {
'contentType': 'application/x-www-form-urlencoded'
}).then(function(data) {
window.location.reload();
});
}
}
function PalettesDeluxe_Edit() {
var ToRemove = (PalettesDeluxe_EditParams["PalettesToRemove"] ? PalettesDeluxe_EditParams["PalettesToRemove"] : (PalettesDeluxe_EditParams["PalettesToModifyFrom"] ? PalettesDeluxe_EditParams["PalettesToModifyFrom"] : false));
var ToAdd = (PalettesDeluxe_EditParams["PalettesToAdd"] ? PalettesDeluxe_EditParams["PalettesToAdd"] : (PalettesDeluxe_EditParams["PalettesToModifyTo"] ? PalettesDeluxe_EditParams["PalettesToModifyTo"] : false));
var URL = mw.config.get('wgServer') + mw.config.get('wgScript') + "?title=" + encodeURIComponent(mw.config.get('wgPageName')) + "&action=submit";
PalettesDeluxe_ajax.http({
url: URL,
onSuccess: PalettesDeluxe_DoEdit,
remove: ToRemove,
add: ToAdd
});
}
function PalettesDeluxe_DoEditFusion(OldText) {
var Reg = new RegExp("\\{\\{(P|p)alette\\|[^\\}]*\\}\\}", "g");
var Matches = OldText.match(Reg);
if (Matches === null) return OldText;
if (Matches.length === 1) return OldText;
var Params = [];
for (var a = 0, l = Matches.length; a < l; a++) {
var thisMatch = Matches[a];
var thisParam = PalettesDeluxe_CleanModele(thisMatch).split("{{Palette|").join("").split("}}").join("");
Params.push(thisParam);
}
for (var a = 0, l = Matches.length; a < l; a++) {
if (a === 0) {
OldText = OldText.replace(Matches[a], "{{Palette|" + Params.join("|") + "}}");
} else {
OldText = OldText.replace(Matches[a], "").replace(/\n\n\n/g, "\n\n");
}
}
return OldText;
}
/////////////////////////////////////////////////////////////////////////////////// Mise à jour des palettes effectivement présentes
function PalettesDeluxe_Update() {
var URL = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + encodeURIComponent(mw.config.get('wgPageName')) + '&oldid=' + mw.config.get('wgCurRevisionId') + '&action=raw';
PalettesDeluxe_ajax.http({
url: URL,
onSuccess: PalettesDeluxe_UpdateBis
});
}
function PalettesDeluxe_UpdateBis(Req, data) {
var Contenu = Req.responseText;
if (Contenu == '') return;
Contenu = Contenu.replace(/\{\{palette/ig, "\{\{Palette");
Contenu = Contenu.replace(/\{\{Palette /ig, "\{\{Palette\|");
if (Contenu.indexOf('{{Palette|') == -1) return;
var ParamsModele = Contenu.split('{{Palette|')[1].split('}}')[0] + '|';
ParamsModele = PalettesDeluxe_CleanModele(ParamsModele);
var AllParamsModele = new Array();
while (ParamsModele.indexOf('|') != -1) {
var NewParam = ParamsModele.split('|')[0];
if (NewParam != '') AllParamsModele.push(NewParam);
ParamsModele = ParamsModele.split(NewParam + '|')[1];
}
for (var m = 0; m < AllParamsModele.length; m++) {
var Span = document.getElementById('lienPalette_' + m);
if (!Span) continue;
var LienRemove = Span.getElementsByTagName('a')[1];
if(LienRemove) {
LienRemove.href = "javascript:PalettesDeluxe_SupprOne(\'" + encodeURIComponent(AllParamsModele[m]).replace(/'/g, "ZAPPOSTROPHE") + "\')";
LienRemove.title = "Supprimer la palette « " + AllParamsModele[m] + " »";
}
var LienModify = Span.getElementsByTagName('a')[2];
if(LienModify) {
LienModify.href = "javascript:PalettesDeluxe_ModifyOne(\'" + m + "\',\'" + encodeURIComponent(AllParamsModele[m]).replace(/'/g, "ZAPPOSTROPHE") + "\')";
LienModify.title = "Modifier la palette « " + AllParamsModele[m] + " »";
}
}
}
/////////////////////////////////////////////////////////////////////////////////// Formulaires
window.PalettesDeluxe_Cancel = function(id) {
var Span = document.getElementById(id);
Span.style.display = 'inline';
var Parent = Span.parentNode;
var Form = Parent.getElementsByTagName('form')[0];
Parent.removeChild(Form);
Parent.lastChild.style.display = "inline";
};
window.PalettesDeluxe_SupprOne = function(Palette) {
Palette = Palette.replace(/ZAPPOSTROPHE/g, "'");
if (PalettesDeluxe_SkipConfirm || confirm('Voulez-vous vraiment supprimer la palette « ' + Palette + ' » ?')) {
PalettesDeluxe_EditParams["PalettesToRemove"] = Palette;
PalettesDeluxe_Edit();
}
// ********************************************************************************************************
};
window.PalettesDeluxe_ModifyThatOne = function(id, oldpalette) {
oldpalette = oldpalette.replace(/ZAPPOSTROPHE/g, "'");
var Input = document.getElementById('InputModify_' + id);
var Palette = Input.value;
if ((Palette != '') && (Palette != oldpalette)) {
// ********************************************************************************************************
PalettesDeluxe_EditParams["PalettesToModifyFrom"] = oldpalette;
PalettesDeluxe_EditParams["PalettesToModifyTo"] = Palette;
PalettesDeluxe_Edit();
// ********************************************************************************************************
} else {
PalettesDeluxe_Cancel('lienPalette_' + id);
}
};
window.PalettesDeluxe_ModifyOne = function(id, palette) {
palette = palette.replace(/ZAPPOSTROPHE/g, "'");
var Span = document.getElementById('lienPalette_' + id);
Span.style.display = "none";
var Form = document.createElement('form');
Form.id = "BP_Form_" + id;
Form.palette = palette.replace(/'/g, "ZAPPOSTROPHE");
Form.method = "post";
Form.onsubmit = function() {
var FormIndex = this.id.split("BP_Form_").join("");
var OldPalette = this.palette;
PalettesDeluxe_ModifyThatOne(FormIndex, OldPalette);
return false;
};
Form.style.display = "inline";
Form.innerHTML = '<select id="SelectModify_' + id + '" style="display:none;" title="Suggestions de palettes" />' +
'<input id="InputModify_' + id + '" type="text" value="' + palette + '" ' +
'onkeyup="PalettesDeluxe_TextChanged(\'SelectModify_' + id + '\')" />' +
'<input type="button" ' +
'onclick="PalettesDeluxe_ModifyThatOne(\'' + id + '\',\'' + palette.replace(/'/g, "ZAPPOSTROPHE") + '\');" ' +
'onselect="PalettesDeluxe_ModifyThatOne(\'' + id + '\',\'' + palette.replace(/'/g, "ZAPPOSTROPHE") + '\');" ' +
'value="OK"/>' +
'<input type="button" ' +
'onclick="PalettesDeluxe_Cancel(\'lienPalette_' + id + '\')" ' +
'onselect="PalettesDeluxe_Cancel(\'lienPalette_' + id + '\')" ' +
'value="Annuler"/>';
Span.parentNode.insertBefore(Form, Span);
Span.parentNode.lastChild.style.display = "none";
document.getElementById('InputModify_' + id).focus();
};
window.PalettesDeluxe_AddThatOne = function() {
var Input = document.getElementById('InputAdd');
var Palette = Input.value;
if (Palette != '') {
// ********************************************************************************************************
PalettesDeluxe_EditParams["PalettesToAdd"] = Palette;
PalettesDeluxe_Edit();
// ********************************************************************************************************
} else {
PalettesDeluxe_Cancel('PalettesDeluxe_Add');
}
};
window.PalettesDeluxe_AddOne = function() {
var Span = document.getElementById('PalettesDeluxe_Add');
Span.style.display = "none";
var Form = document.createElement('form');
Form.style.display = "inline";
Form.id = "BP_Form_Add";
Form.method = "post";
Form.onsubmit = function() {
PalettesDeluxe_AddThatOne();
return false;
};
Form.innerHTML = '<select id="SelectAdd" style="display:none;" title="Suggestions de palettes" />' +
'<input id="InputAdd" type="text" value="" onkeyup="PalettesDeluxe_TextChanged(\'SelectAdd\')" />' +
'<input type="button" ' +
'onclick="PalettesDeluxe_AddThatOne();" ' +
'onselect="PalettesDeluxe_AddThatOne();" ' +
'value="OK"/>' +
'<input type="button" ' +
'onclick="PalettesDeluxe_Cancel(\'PalettesDeluxe_Add\')" ' +
'onselect="PalettesDeluxe_Cancel(\'PalettesDeluxe_Add\')" ' +
'value="Annuler"/>';
Span.parentNode.insertBefore(Form, Span);
document.getElementById('InputAdd').focus();
};
/////////////////////////////////////////////////////////////////////////////////// Suggestions
var PalettesDeluxe_TextChanged_running_Up = 0;
var PalettesDeluxe_TextChanged_running_Low = 0;
var PalettesDeluxe_Up_Results = new Array();
var PalettesDeluxe_Low_Results = new Array();
function PalettesDeluxe_KeypressedOnList(e) {
if (!e) var e = window.event;
if (e.keyCode != 13) {
var IsEnter = false;
} else {
var IsEnter = true;
}
return IsEnter;
}
function PalettesDeluxe_TextChanged_MergeNoaccent(text) {
text = text.toLowerCase();
text = text.replace(/â/g, "a");
text = text.replace(/å/g, "a");
text = text.replace(/é/g, "e");
text = text.replace(/è/g, "e");
text = text.replace(/ê/g, "e");
text = text.replace(/ë/g, "e");
text = text.replace(/î/g, "i");
text = text.replace(/ï/g, "i");
text = text.replace(/ô/g, "o");
text = text.replace(/œ/g, "oe");
text = text.replace(/ç/g, "c");
text = text.replace(/š/g, "s");
text = text.replace(/-/g, " ");
text = text.replace(/'/g, " ");
text = text.replace(/;/g, "");
return text;
}
function PalettesDeluxe_TextChanged_Set(id, text) {
text = text.replace(/ZAPOSTROPHE/g, "'");
var OldValue = document.getElementById(id).value;
if (OldValue.indexOf('|') != -1) {
var AllParams = OldValue.split("|");
AllParams[(AllParams.length - 1)] = text;
var NewValue = AllParams.join("|");
} else {
var NewValue = text;
}
document.getElementById(id).value = NewValue;
document.getElementById(id).focus();
}
function PalettesDeluxe_TextChanged_Display(ResultArray, id) {
var Select = document.getElementById(id);
var idInput = id.split('Select').join('Input');
var Input = document.getElementById(idInput);
if ((!Input) || (!Select)) return;
Select.innerHTML = '';
var NbOptions = 0;
for (var a = 0; a < ResultArray.length; a++) {
var TitrePage = ResultArray[a];
var TitrePageEncode = TitrePage.replace(/'/g, "ZAPOSTROPHE");
var Option = document.createElement('option');
Option.value = TitrePage;
Option.innerHTML = TitrePage;
Option.onclick = function() {
var PageEncode = this.value;
PalettesDeluxe_TextChanged_Set(this.parentNode.id.split('Select').join('Input'), PageEncode);
PalettesDeluxe_TextChanged(this.parentNode.id);
};
if (a == 0) Option.selected = "selected";
Select.appendChild(Option);
NbOptions++;
}
if (NbOptions > 0) {
Select.onkeyup = function(e) {
if (!e) var e = window.event;
var IsEnter = PalettesDeluxe_KeypressedOnList(e);
if (!IsEnter) return;
var Selected = this.getElementsByTagName('option');
for (var a = 0; a < Selected.length; a++) {
if (Selected[a].selected) {
var TextSelected = Selected[a].value;
}
}
PalettesDeluxe_TextChanged_Set(idInput, TextSelected);
PalettesDeluxe_TextChanged(id);
};
Select.size = NbOptions;
Select.style.display = 'inline';
Select.style.zIndex = 5;
Select.style.position = "absolute";
Input.style.width = Select.offsetWidth + "px";
if (PalettesDeluxe_ListeBas) {
Select.style.top = (parseInt(Input.offsetTop) + parseInt(Input.offsetHeight)) + 'px';
} else {
Select.style.top = (parseInt(Input.offsetTop) - Select.offsetHeight) + 'px';
}
Select.style.left = (parseInt(Input.parentNode.offsetLeft) - 1) + 'px';
} else {
Select.style.display = 'none';
Select.innerHTML = '';
}
}
function PalettesDeluxe_TextChanged_Merge(id) {
var UpResults = PalettesDeluxe_Up_Results;
var LowResults = PalettesDeluxe_Low_Results;
var ResultArray = new Array();
for (var a = 0; a < LowResults.length; a++) {
LowResults[a] = LowResults[a].substr(0, 1).toUpperCase() + LowResults[a].substr(1, LowResults[a].length) + ";";
UpResults.push(LowResults[a]);
}
for (var b = 0; b < UpResults.length; b++) {
UpResults[b] = PalettesDeluxe_TextChanged_MergeNoaccent(UpResults[b]) + "|" + UpResults[b];
}
UpResults.sort();
for (var b = 0; b < UpResults.length; b++) {
var ThisPage = UpResults[b];
ThisPage = ThisPage.replace(/.*\|/g, "");
if (ThisPage.indexOf(";") != -1) {
ThisPage = ThisPage.replace(/;/g, "");
ThisPage = ThisPage.substr(0, 1).toLowerCase() + ThisPage.substr(1, ThisPage.length);
}
if (b < PalettesDeluxe_TailleListe) {
ResultArray.push(ThisPage);
}
}
PalettesDeluxe_TextChanged_Display(ResultArray, id);
}
function PalettesDeluxe_TextChanged_RequestUp(Value, id) {
if (PalettesDeluxe_TextChanged_running_Up) return;
PalettesDeluxe_TextChanged_running_Up = 1;
Value = Value.substr(0, 1).toUpperCase() + Value.substr(1, Value.length);
var Redirect = (PalettesDeluxe_ShowRedirect ? "" : "&apfilterredir=nonredirects");
var URL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&list=allpages&apnamespace=10&aplimit=' + PalettesDeluxe_TailleListe + Redirect + '&apfrom=Palette%20' + encodeURIComponent(Value);
PalettesDeluxe_ajax.http({
url: URL,
onSuccess: PalettesDeluxe_TextChanged_RequestUpBis,
value: Value,
id: id
});
}
function PalettesDeluxe_TextChanged_RequestUpBis(Req, data) {
var Value = data.value;
var id = data.id;
PalettesDeluxe_Up_Results = [];
var ObjetXML = Req.responseXML;
var AllPages = ObjetXML.getElementsByTagName('p');
for (var b = 0; b < AllPages.length; b++) {
var Titre = AllPages[b].getAttribute('title').replace(/Modèle:Palette /, "");
var TitreUp = Titre.substr(0, 1).toUpperCase() + Titre.substr(1, Titre.length);
if (Titre == TitreUp && Titre.indexOf("Modèle:") == -1) {
PalettesDeluxe_Up_Results.push(Titre);
}
}
PalettesDeluxe_TextChanged_running_Up = 0;
if (PalettesDeluxe_TextChanged_running_Low == 0) PalettesDeluxe_TextChanged_Merge(id);
}
function PalettesDeluxe_TextChanged_RequestLow(Value, id) {
if (PalettesDeluxe_TextChanged_running_Low) return;
PalettesDeluxe_TextChanged_running_Low = 1;
Value = Value.substr(0, 1).toLowerCase() + Value.substr(1, Value.length);
var Redirect = (PalettesDeluxe_ShowRedirect ? "" : "&apfilterredir=nonredirects");
var URL = mw.config.get('wgServer') + mw.config.get('wgScriptPath') + '/api.php?format=xml&action=query&list=allpages&apnamespace=10&aplimit=' + PalettesDeluxe_TailleListe + Redirect + '&apfrom=Palette%20' + encodeURIComponent(Value);
PalettesDeluxe_ajax.http({
url: URL,
onSuccess: PalettesDeluxe_TextChanged_RequestLowBis,
value: Value,
id: id
});
}
function PalettesDeluxe_TextChanged_RequestLowBis(Req, data) {
var Value = data.value;
var id = data.id;
PalettesDeluxe_Low_Results = [];
var ObjetXML = Req.responseXML;
var AllPages = ObjetXML.getElementsByTagName('p');
for (var b = 0; b < AllPages.length; b++) {
var Titre = AllPages[b].getAttribute('title').replace(/Modèle:Palette /, "");
var TitreLow = Titre.substr(0, 1).toLowerCase() + Titre.substr(1, Titre.length);
if (Titre == TitreLow && Titre.indexOf("Modèle:") == -1) {
PalettesDeluxe_Low_Results.push(Titre);
}
}
PalettesDeluxe_TextChanged_running_Low = 0;
if (PalettesDeluxe_TextChanged_running_Up == 0) PalettesDeluxe_TextChanged_Merge(id);
}
window.PalettesDeluxe_TextChanged = function(id) {
if (PalettesDeluxe_TailleListe == 0) return;
var Select = document.getElementById(id);
var idInput = id.split('Select').join('Input');
var Input = document.getElementById(idInput);
if ((!Input) || (!Select)) return;
var Value = Input.value;
Value = Value.replace(/.*\|/g, "");
if (Value == '') return;
PalettesDeluxe_TextChanged_RequestLow(Value, id);
PalettesDeluxe_TextChanged_RequestUp(Value, id);
};
/////////////////////////////////////////////////////////////////////////////////// Fonctions actives au chargement de la page
function PalettesDeluxe_CreateUl() {
var links = document.getElementById('bandeau-portail');
if (!links)
links = document.getElementById('catlinks');
if (!links)
return;
var ModelePalette = document.createElement('div');
ModelePalette.className = 'navbox-container';
ModelePalette.style.clear = "both"
links.parentNode.insertBefore(ModelePalette, links);
}
function PalettesDeluxe_ModifyUl() {
var unique = false;
var groupPalette = $(".navbox-container")[0];
//Cas spécial une seule palette : {{palette nom}}
if (!groupPalette) {
groupPalette = $(".navbox")[0];
unique = true;
}
if (groupPalette) {
var paletteList = [];
if (unique) paletteList.push(groupPalette);
else paletteList = groupPalette.getElementsByTagName('table');
var cpt = 0;
for (var a = 0; a < paletteList.length; a++) {
var palette = paletteList[a];
var th = palette.getElementsByTagName('th')[0];
var Lien = $(th).find(".navboxToggle")[0];
if (Lien) {
var voirModifier = th.getElementsByTagName('div')[0];
if(!voirModifier) {
continue;
}
var titre = voirModifier.getElementsByTagName('div')[0];
var TitreDecode = titre.title.split('Modèle:Palette').join('');
TitreDecode = TitreDecode.replace(/ \(page inexistante\)/g, "");
var Titre = encodeURIComponent(TitreDecode);
Lien.id = 'lienPalette_' + cpt;
var elem1 = document.createElement("a");
elem1.setAttribute("href", "javascript:PalettesDeluxe_SupprOne('" + Titre + "')");
elem1.setAttribute("title", "Supprimer la palette « " + TitreDecode + " »");
elem1.innerHTML = "(-)";
var elem2 = document.createElement("a");
elem2.setAttribute("href", "javascript:PalettesDeluxe_ModifyOne('" + cpt + "','" + Titre + "')");
elem2.setAttribute("title", "Modifier cette palette « " + TitreDecode + " »");
elem2.innerHTML = "(±)";
var point1 = document.createElement("span");
point1.innerHTML = " • ";
var point2 = document.createElement("span");
point2.innerHTML = " • ";
var elemSpan = document.createElement("span");
elemSpan.appendChild(point1);
elemSpan.appendChild(elem1);
elemSpan.appendChild(point2);
elemSpan.appendChild(elem2);
cpt++;
Lien.appendChild(elemSpan);
}
}
//récupération des palettes en erreur
var palettesError = $(groupPalette).find('.error');
for (var i = 0; i < palettesError.length; i++) {
var paletteError = palettesError[i];
var titre = paletteError.getElementsByTagName('a')[0];
var TitreDecode = titre.title.split('Modèle:Palette ').join('');
TitreDecode = TitreDecode.replace(/ \(page inexistante\)/g, "");
var Titre = encodeURIComponent(TitreDecode);
titre.id = 'lienPalette_' + cpt;
var elem1 = document.createElement("a");
elem1.setAttribute("href", "javascript:PalettesDeluxe_SupprOne('" + Titre + "')");
elem1.setAttribute("title", "Supprimer la palette « " + TitreDecode + " »");
elem1.innerHTML = "(-)";
var elem2 = document.createElement("a");
elem2.setAttribute("href", "javascript:PalettesDeluxe_ModifyOne('" + cpt + "','" + Titre + "')");
elem2.setAttribute("title", "Modifier cette palette « " + TitreDecode + " »");
elem2.innerHTML = "(±)";
var point1 = document.createElement("span");
point1.innerHTML = " • ";
var point2 = document.createElement("span");
point2.innerHTML = " • ";
paletteError.appendChild(point1);
paletteError.appendChild(elem1);
paletteError.appendChild(point2);
paletteError.appendChild(elem2);
cpt++
}
var AddP = document.createElement('p');
AddP.id = 'lienPalette_add';
AddP.className = 'center';
AddP.innerHTML += '<span class="js-palette-element">' +
'<span class="js-palette-texte" id="PalettesDeluxe_Add" >' +
'<a href="javascript:PalettesDeluxe_AddOne()" title="Ajouter une palette" >Ajouter une palette (+)</a>' +
'</span>' +
'</span>';
if (unique) {
groupPalette.parentNode.appendChild(AddP);
} else {
groupPalette.appendChild(AddP);
}
}
PalettesDeluxe_Update();
}
function PalettesDeluxe() {
var Homonymie = document.getElementById("homonymie");
var UlModelesPalette = $(".navbox-container")[0];
if (Homonymie && !UlModelesPalette) return;
if (!UlModelesPalette) PalettesDeluxe_CreateUl();
PalettesDeluxe_ModifyUl();
}
if (mw.config.get('wgAction') === 'view' && (mw.config.get('wgNamespaceNumber') === 0 || mw.config.get('wgNamespaceNumber') === 2 || mw.config.get('wgNamespaceNumber') === 4)) {
$(PalettesDeluxe);
}
//</nowiki></pre>
// ====================================================================================================================
// FIN DU CODE
// ====================================================================================================================
//</syntaxhighlight>