« MediaWiki:Gadget-BandeauxPortails.js » : différence entre les versions

Contenu supprimé Contenu ajouté
Dr Brains (discuter | contributions)
m Licence
Dr Brains (discuter | contributions)
m Mise à jour : résolution de modèle redirigé + suggestions multiples
Ligne 5 :
// Licence : Domaine public
 
// <source lang=javascript>
// ==================================================================================================================== DEBUT DU CODE
// ====================================================================================================================
//<pre><nowiki>
 
/////////////////////////////////////////////////////////////////////////////////// Variables personnalisables
 
 
if(typeof(BandeauxPortails_AutoEdit)=='undefined') var BandeauxPortails_AutoEdit = true; // Publication automatique
 
if(typeof(BandeauxPortails_MinorEdit)=='undefined') var BandeauxPortails_MinorEdit = true; // Modification mineure
 
if(typeof(BandeauxPortails_TailleListe)=='undefined') var BandeauxPortails_TailleListe = 10; // Nombre de suggestions
 
if(typeof(BandeauxPortails_ListeBas)=='undefined') var BandeauxPortails_ListeBas = false; // Affichage des suggestions vers le bas
 
if(typeof(BandeauxPortails_KeyboardDelay)=='undefined') var BandeauxPortails_KeyboardDelay = 5; // Délai (en secondes) lors de la sélection d'une suggestion au clavier
 
 
 
/////////////////////////////////////////////////////////////////////////////////// Fonctions actives au chargement de la page
 
if( ((wgAction=="view")||(wgAction=="purge"))&&(wgNamespaceNumber=!=0)){
addOnloadHook(BandeauxPortails);
}else if((wgAction=="edit")&&(wgNamespaceNumber=!=0)){
addOnloadHook(BandeauxPortails_Edit);
}
 
function BandeauxPortails(){
var UlBandeaux = document.getElementById('bandeau-portail');
Ligne 73 ⟶ 74 :
var TitreDecode = Lien.innerHTML.split('Modèle:Portail').join('');
TitreDecode = TitreDecode.replace(/^ /,'');
Titre = encodeURIComponent(TitreDecode).replace(/'/g,"ZAPPOSTROPHE");
var NewLi = document.createElement('li');
NewLi.innerHTML = '<span id="lienPortail_' + a + '" >'
Ligne 94 ⟶ 95 :
+'</span>';
BandeauUl.appendChild(AddLi);
BandeauxPortails_Update();
}
/////////////////////////////////////////////////////////////////////////////////// Mise à jour des bandeaux effectivement présents
function BandeauxPortails_Update(){
var url = wgServer + wgScript + '?title=' + wgPageName.replace(/&/g, "%26") + '&oldid='+wgCurRevisionId+'&action=raw';
//alert(url);
var BandeauxPortails_Request = sajax_init_object();
BandeauxPortails_Request.open("GET", url, true);
BandeauxPortails_Request.onreadystatechange = function() {
if(BandeauxPortails_Request.readyState != 4 || BandeauxPortails_Request.status != 200) return;
var Contenu = BandeauxPortails_Request.responseText;
//alert(Contenu);
if(Contenu=='') return;
Contenu = Contenu.replace(/\{\{portail/ig, "\{\{Portail");
Contenu = Contenu.replace(/\{\{Portail /ig, "\{\{Portail\|");
var ParamsModele = Contenu.split('{{Portail|')[1].split('}}')[0] + '|';
ParamsModele = ParamsModele.replace(/\n/ig, "");
ParamsModele = ParamsModele.replace(/ \|/ig, "\|");
ParamsModele = ParamsModele.replace(/\| /ig, "\|");
ParamsModele = ParamsModele.replace(/\|\|/ig, "\|");
ParamsModele = ParamsModele.replace(/\|\}/ig, "\}");
//alert(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('lienPortail_'+m);
if(!Span) continue;
var LienRemove = Span.getElementsByTagName('a')[1];
LienRemove.href= "javascript:BandeauxPortails_SupprOne(\'"+encodeURIComponent(AllParamsModele[m]).replace(/'/g,"ZAPPOSTROPHE")+"\')";
LienRemove.title= "Supprimer le bandeau de portail "+AllParamsModele[m];
var LienModify = Span.getElementsByTagName('a')[2];
LienModify.href= "javascript:BandeauxPortails_ModifyOne(\'"+m+"\',\'"+encodeURIComponent(AllParamsModele[m]).replace(/'/g,"ZAPPOSTROPHE")+"\')";
LienModify.title= "Modifier le bandeau de portail "+AllParamsModele[m];
}
}
BandeauxPortails_Request.send(null);
}
Ligne 108 ⟶ 150 :
function BandeauxPortails_SupprOne(Portail){
Portail = Portail.replace(/ZAPPOSTROPHE/g,"'")
var SurEtCertain = confirm('Voulez-vous vraiment supprimer le bandeau «  '+Portail+'  » ?');
if(!SurEtCertain) return;
var editlk = document.getElementById('ca-edit').getElementsByTagName('a')[0].href;
Ligne 116 ⟶ 159 :
function BandeauxPortails_ModifyOne( id, portail ) {
portail = portail.replace(/ZAPPOSTROPHE/g,"'")
var Span = document.getElementById('lienPortail_' + id);
Span.style.display = "none";
Ligne 121 ⟶ 165 :
Form.style.display ="inline";
Form.innerHTML = '<select id="SelectModify_'+id+'" style="display:none;" title="Suggestions de bandeaux" />'
+'<input id="InputModify_'+id+'" type="text" value="'+portail+'" '
+'onkeyup="BandeauxPortails_TextChanged(\'SelectModify_'+id+'\')" />'
+'<input type="button" '
+'<input type="button" onclick="BandeauxPortails_ModifyThatOne(\''+id+'\',\''+portail+'\');" onselect="BandeauxPortails_ModifyThatOne(\''+id+'\',\''+portail+'\');" value="OK"/>'
+'onclick="BandeauxPortails_ModifyThatOne(\''+id+'\',\''+portail.replace(/'/g,"ZAPPOSTROPHE")+'\');" '
+'<input type="button" onclick="BandeauxPortails_Cancel(\'lienPortail_'+id+'\')" onselect="BandeauxPortails_Cancel(\'lienPortail_'+id+'\')" value="Annuler"/>';
+'onselect="BandeauxPortails_ModifyThatOne(\''+id+'\',\''+portail.replace(/'/g,"ZAPPOSTROPHE")+'\');" '
+'value="OK"/>'
+'<input type="button" '
+'onclick="BandeauxPortails_Cancel(\'lienPortail_'+id+'\')" '
+'onselect="BandeauxPortails_Cancel(\'lienPortail_'+id+'\')" '
+'value="Annuler"/>';
Span.parentNode.insertBefore(Form,Span);
document.getElementById('InputModify_'+id).focus() ;
Ligne 129 ⟶ 180 :
function BandeauxPortails_ModifyThatOne(id, oldportail){
oldportail = oldportail.replace(/ZAPPOSTROPHE/g,"'")
var Input = document.getElementById('InputModify_'+id);
var Portail = Input.value;
Ligne 147 ⟶ 199 :
Form.style.display ="inline";
Form.innerHTML = '<select id="SelectAdd" style="display:none;" title="Suggestions de bandeaux" />'
+'<input id="InputAdd" type="text" value="" onkeyup="BandeauxPortails_TextChanged(\'SelectAdd\')" />'
+'<input type="button" '
+'<input type="button" onclick="BandeauxPortails_AddThatOne();" onselect="BandeauxPortails_AddThatOne();"value="OK"/>'
+'onclick="BandeauxPortails_AddThatOne();" '
+'<input type="button" onclick="BandeauxPortails_Cancel(\'BandeauxPortails_Add\')" onselect="BandeauxPortails_Cancel(\'BandeauxPortails_Add\')" value="Annuler"/>';
+'onselect="BandeauxPortails_AddThatOne();" '
+'value="OK"/>'
+'<input type="button" '
+'onclick="BandeauxPortails_Cancel(\'BandeauxPortails_Add\')" '
+'onselect="BandeauxPortails_Cancel(\'BandeauxPortails_Add\')" '
+'value="Annuler"/>';
Span.parentNode.insertBefore(Form,Span);
document.getElementById('InputAdd').focus() ;
Ligne 168 ⟶ 226 :
}
 
/////////////////////////////////////////////////////////////////////////////////// Suggestions
 
Ligne 182 ⟶ 240 :
//if((!Input)||(!Select)) return;
var Value = Input.value;
Value = Value.replace(/.*\|/g, "");
if(Value=='') return;
BandeauxPortails_TextChanged_running = 1;
//Value = Value.substr(0,1).toUpperCase() + Value.substr(1,Value.length) ;
var url = wgServer + '/w/api.php?action=query&list=allpages&apnamespace=10&aplimit='+BandeauxPortails_TailleListe+'&apfrom=Portail%20'+Value;
Ligne 206 ⟶ 263 :
var TitrePage = Info.split('Portail')[1].split('"')[0];
TitrePage = TitrePage.replace(/^ /,'');
whileTitrePage = BandeauxPortails_HTMLDecode(TitrePage.indexOf('&amp);')!=-1){
TitrePage = TitrePage.split('&amp;').join("&");
if(TitrePage.indexOf('&amp;')==-1) break;
}
while(TitrePage.indexOf('&#039;')!=-1){
TitrePage = TitrePage.split('&#039;').join("'");
if(TitrePage.indexOf('&#039;')==-1) break;
}
TitrePageEncode = TitrePage.replace(/'/g,"ZAPOSTROPHE");
Select.innerHTML += '<option value="'+TitrePage+'" '
Ligne 228 ⟶ 278 :
if(Selected[a].selected){
var TextSelected = Selected[a].value;
var OldValue = document.getElementById(idInput).value = TextSelected;
var OldValuePlus = OldValue.replace(/.*\|/g, "");
if(OldValuePlus!=""){
OldValue = OldValue.split(OldValuePlus).join("")
}else{
OldValue = "";
}
document.getElementById(idInput).value = OldValue + TextSelected;
setTimeout("BandeauxPortails_TextChanged(\'"+id+"\');", BandeauxPortails_KeyboardDelay*1000);
}
Ligne 257 ⟶ 314 :
function BandeauxPortails_TextChanged_Set(id, text){
text = text.replace(/ZAPOSTROPHE/g,"'");
var OldValue = document.getElementById(id).value = text;
var OldValuePlus = OldValue.replace(/.*\|/g, "");
if(OldValuePlus!=""){
OldValue = OldValue.split(OldValuePlus).join("")
}else{
OldValue = "";
}
document.getElementById(id).value = OldValue + text;
document.getElementById(id).focus() ;
}
Ligne 277 ⟶ 341 :
 
var AddPortalText = decodeURIComponent(URL.substring(0, URL.indexOf("ENDA")).replace(/.*=/g,''));
var AddPortalText = AddPortalText.replace(/\|$/g,'');
 
var OldText = TextArea.value;
Ligne 341 ⟶ 406 :
}
 
document.getElementById('wpMinoredit').checked = BandeauxPortails_MinorEdit;
var TexteFinal = DebutModele + NouveauModele + SuiteModele;
var SommaireFinal = Sommaire + ' ; avec [[Projet:JavaScript/Notices/BandeauxPortails|BandeauxPortails]]';
document.getElementById('wpMinoredit').checked = BandeauxPortails_MinorEdit;
document.getElementById('wpTextbox1').value = TexteFinal;
document.getElementById('wpSummary').value = Sommaire + ' ; avec [[Projet:JavaScript/Notices/BandeauxPortails|BandeauxPortails]]'SommaireFinal;
if(BandeauxPortails_AutoEdit) document.editform.submit();
}
 
function BandeauxPortails_HTMLDecode(text){
var EncodedCharacter = new Array();
var DecodedCharacter = new Array();
var CharacterCount = 0;
EncodedCharacter[CharacterCount] = "&amp;";
DecodedCharacter[CharacterCount] = "&";
CharacterCount++;
EncodedCharacter[CharacterCount] = "&#039;";
DecodedCharacter[CharacterCount] = "'";
CharacterCount++;
EncodedCharacter[CharacterCount] = "&quot;";
DecodedCharacter[CharacterCount] = '"';
CharacterCount++;
for(var a=0;a<EncodedCharacter.length;a++){
while(text.indexOf(EncodedCharacter[a])!=-1){
text = text.split(EncodedCharacter[a]).join(DecodedCharacter[a]);
if(text.indexOf(EncodedCharacter[a])==-1) break;
}
}
return text;
}
 
 
//</nowiki></pre>
// ====================================================================================================================