MediaWiki:Gadgets-Body.js
Note : après avoir enregistré tes préférences, tu devras forcer son rechargement complet en ignorant le contenu actuel du cache de ton explorateur pour voir les changements : Mozilla / Firefox / Konqueror / Safari : maintiens la touche Majuscule (Shift) en cliquant le bouton Actualiser (Reload,) ou presse Maj-Ctrl-R (Maj-Cmd-R sur Apple Mac) ; Internet Explorer / Opera : maintiens la touche Ctrl en cliquant le bouton Actualiser ou presse Ctrl-F5.
// __NORICHEDITOR__ /* ******************************************************************************** Ce script est destiné à mettre à jour automatiquement la page Utilisateur:<Pseudo>/wikimini.js de tout utilisateur enregistré. Les gadgets sélectionnables sont à définir dans une fonction "Gadgets_GetUserScripts()" dans la page [[Mediawiki:Gadgets_Definitions.js]] La sélection/déselection se fait à l'aide de cases à cocher. TODO : * Trouver un moyen pour forcer le navigateur à purger le cache * Séparer les gadgets par types dans différents onglets, comme sur [[Spécial:Préférences]] ******************************************************************************** */ // <pre><nowiki> // ******************************************************************************** VARIABLES // //////////////////////////////////////////////////////////// VARIABLES PERSONNALISABLES var Gadgets_Text_Title = "Mes Gadgets"; var Gadgets_Text_H1Title = "Mes Gadgets"; var Gadgets_Text_SelectScripts = "Sélectionner les gadgets à installer"; var Gadgets_Text_Help = "Aide"; var Gadgets_Text_InputOK = "Installer les gadgets"; var Gadgets_Text_NoGadget = "<span class=\"error\">Aucun gadget n'est encore configuré</span>"; var Gadgets_Text_Import = "Importation des gadgets"; var Gadgets_Text_Edit = "Édition des gadgets"; var Gadgets_Text_Save = "Sauvegarde des gadgets"; var Gadgets_Text_OK = "OK"; var Gadgets_Resume = 'Mise à jour des gadgets'; // //////////////////////////////////////////////////////////// VARIABLES NON PERSONNALISABLES var Gadgets_CommStart = '// __NORICHEDITOR__\n//DebutSectionAuto' var Gadgets_CommPlus = ' : Cette section est produite automatiquement'; var Gadgets_CommConfig = '//ConfigSectionAuto'; var Gadgets_CommEnd = '//FinSectionAuto'; var Gadgets_URL = wgServer + wgArticlePath.split('$1').join(''); var Gadgets_URLBis = wgServer + wgScriptPath + '?title='; var Gadgets_IsGadgetPage = false; var Gadgets_Running = 0; var Gadgets_ScriptEnabled = 0; var Gadgets_ScriptType = new Array(); var Gadgets_ScriptText = new Array(); var Gadgets_ScriptPage = new Array(); var Gadgets_ScriptId = new Array(); var Gadgets_InstalledScriptIds = new Array(); var Gadgets_NewScript = ''; var Gadgets_NewScriptConfig = Gadgets_CommStart + Gadgets_CommPlus + '\n' +Gadgets_CommConfig; // ******************************************************************************** FONCTIONS ////////////////////////// LANCEMENTS if(wgUserGroups!=null){ if(wgNamespaceNumber==2 && wgTitle === wgUserName + "/" + skin + ".js" && wgAction=="view"){ importScript('Mediawiki:Gadgets-Definitions.js'); addOnloadHook(Gadgets_Init); Gadgets_IsGadgetPage = true; } addOnloadHook(Gadgets_AddLink); } ////////////////////////// AJOUT DU LIEN "Gadgets" DANS LES LIENS PERSONNELS function Gadgets_AddLink(){ var Prefs = document.getElementById('pt-preferences'); if(!Prefs) return; var GadgetsLi = document.createElement('li'); GadgetsLi.id = "pt-gadgets"; var LiContent = '<a href="'+wgServer + wgArticlePath.split('$1').join("User:" + wgUserName + "/" + skin + ".js") +'" title="Modifier tes gadgets" '+ (Gadgets_IsGadgetPage ? 'style="font-weight:bold;"' :'') +' >Gadgets</a>' GadgetsLi.innerHTML = LiContent; insertAfter(GadgetsLi, Prefs); } ////////////////////////// SCRIPTS PAR DÉFAUT function Gadgets_GetDefaultScripts(){ Gadgets_ScriptType.push(4); Gadgets_ScriptText.push(Gadgets_Text_NoGadget); Gadgets_ScriptId.push(''); Gadgets_ScriptPage.push(''); } ////////////////////////// CRÉATION D'UN LIEN function Gadgets_MakeLink(Page, Mode, Text, Title){ if(!Page) return ''; if(!Text) Text = Page; if(!Title) Title = Page; var URL = wgServer + wgArticlePath.split('$1').join(''); var URLBis = wgServer + wgScriptPath + '?title='; var Lien ='<a href="'+(Mode ? URLBis : URL) + Page + '" title="'+Title+'">'+Text+'</a>'; return Lien; } ////////////////////////// INITIALISATION DE LA PAGE .JS function Gadgets_Init(){ if(Gadgets_Running==1) return; Gadgets_Running = 1; var Title = document.getElementsByTagName('title')[0]; var Titre = document.getElementsByTagName('h1')[0]; var Content = document.getElementById('bodyContent'); if(!Title || !Titre || !Content) return; var Pre = Content.getElementsByTagName('pre')[0]; if(!Pre) return; Title.innerHTML = Gadgets_Text_Title; Titre.innerHTML = Gadgets_Text_H1Title; var NewContent = document.createElement('div'); NewContent.id = "GadgetsContent"; var Center = document.createElement('center'); var Loading = document.createElement('h2'); Loading.innerHTML = "Chargement"; var LoadingImage = document.createElement('img'); LoadingImage.src = "http://upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif"; LoadingImage.width = "100"; LoadingImage.height = "100"; Center.appendChild(Loading); Center.appendChild(LoadingImage); NewContent.appendChild(Center); Pre.parentNode.insertBefore(NewContent, Pre); Pre.parentNode.removeChild(Pre); Gadgets_GetConfig(); } ////////////////////////// ANALYSE CONFIGURATION ACTUELLE function Gadgets_GetConfig(){ if(typeof(Gadgets_GetUserScripts)=="function"){ Gadgets_GetUserScripts(); Gadgets_ScriptEnabled = 1; }else{ Gadgets_GetDefaultScripts(); Gadgets_ScriptEnabled = 0; } var Adresse = Gadgets_URLBis + wgPageName.replace(/&/g, '%26') + '&oldid='+wgCurRevisionId+'&action=raw'; var RequeteEdition = sajax_init_object(); RequeteEdition.open("GET", Adresse, true); RequeteEdition.onreadystatechange = function() { if( !(RequeteEdition.readyState == 4 && RequeteEdition.status == 200) ) return; var Resultat = RequeteEdition.responseText; if(Resultat.indexOf(Gadgets_CommConfig)!=-1) var Configuration = Resultat.split(Gadgets_CommConfig)[1].split('\n')[0]; if(Configuration){ for(var a=0;a<Gadgets_ScriptType.length;a++){ if(Gadgets_ScriptType[a]==1){ if(Configuration.indexOf('setup-'+Gadgets_ScriptId[a]+'.js')!=-1){ Gadgets_InstalledScriptIds[a] = ' checked="checked" '; }else{ Gadgets_InstalledScriptIds[a] = ''; } }else{ Gadgets_InstalledScriptIds[a] = ''; } } }else{ for(var a=0;a<Gadgets_ScriptType.length;a++){ Gadgets_InstalledScriptIds[a] = ''; } } Gadgets_CreateForm(); } RequeteEdition.send(null); } ////////////////////////// CRÉATION FORMULAIRE function Gadgets_CreateForm(){ var DivRepere = document.getElementById('GadgetsContent'); if(!DivRepere) return; while(DivRepere.firstChild){ DivRepere.removeChild(DivRepere.firstChild); } var Form = document.createElement('div'); DivRepere.appendChild(Form); var OKInput = '<p>' + '<input type="button" class="GlobalManager_Input" ' + 'onclick="Gadgets_CreateNewScript();" ' + 'onselect="Gadgets_CreateNewScript();" ' + (Gadgets_ScriptEnabled ? '' : 'disabled="disabled" ') + 'value="'+Gadgets_Text_InputOK+'" />' + '</p>' var FormContent = '<fieldset id="Gadgets_Fieldset" >' +'<legend>' + '<span style="font-size:120%;">'+Gadgets_Text_SelectScripts + '</span> <sup><small>' + Gadgets_MakeLink('Aide:Gadgets', false, '('+Gadgets_Text_Help+')') + '</small></sup>' + '</legend>' + '<div id=\"Gadgets_ScriptList\">' + '<form id="Gadgets_Form">' + OKInput; var HeadLineCount = 0 for(var c=0;c<Gadgets_ScriptType.length;c++){ if(Gadgets_ScriptType[c] == 1){ FormContent += '<p><input type=\"checkbox\" ' + 'id=\"'+Gadgets_ScriptId[c]+'\" ' + Gadgets_InstalledScriptIds[c]+' ></input> ' + '<b>' + Gadgets_MakeLink(Gadgets_ScriptPage[c], false, Gadgets_ScriptId[c]) +'</b>' + ' : '+Gadgets_ScriptText[c]+'</p>'; }else{ FormContent += '<h'+Gadgets_ScriptType[c]+' id="Gadgets_headline_'+HeadLineCount+'">' + '<span class="mw-headline">' + Gadgets_ScriptText[c] + '</span>' +'</h'+Gadgets_ScriptType[c]+'>'; HeadLineCount++ } } FormContent += OKInput + '</form><div id="Gadgets_Running"></div></div></fieldset>'; Form.innerHTML = FormContent; } ////////////////////////// MISE A JOUR PAGE JS function Gadgets_CreateNewScript(){ var Form = document.getElementById('Gadgets_Form'); var ControlElement = document.getElementById('Gadgets_Running'); if((!Form)||(!ControlElement)) return; var Inputs = Form.getElementsByTagName("input"); for(var a=0;a<Inputs.length;a++){ Inputs[a].disabled = "disabled"; } ControlElement.innerHTML = '<b>* '+Gadgets_Text_Import+'</b><br/>'; for(var d=(Gadgets_ScriptId.length-1);d>-1;d--){ if(Gadgets_ScriptId[d]=='') continue; var Input = document.getElementById(Gadgets_ScriptId[d]); if(!Input) continue; if(Input.checked){ ControlElement.innerHTML += '<br/>' + Gadgets_ScriptPage[d]; Gadgets_NewScriptConfig += ' setup-'+Gadgets_ScriptId[d]+'.js '; Gadgets_NewScript += '// Importation de [['+Gadgets_ScriptPage[d]+']]\n'; Gadgets_NewScript += 'importScript(\''+ Gadgets_ScriptPage[d] + '\');\n\n'; } } Gadgets_NewScriptConfig += '\n\n'; Gadgets_NewScript += Gadgets_CommEnd; ControlElement.innerHTML += '<br/><b>* '+Gadgets_Text_Edit + '</b><br/>'; var AdresseEdition = Gadgets_URLBis + wgPageName.replace(/&/g, "%26") + '&action=edit'; var RequeteEdition = sajax_init_object(); RequeteEdition.open("GET", AdresseEdition, true); RequeteEdition.onreadystatechange = function() { if( RequeteEdition.readyState != 4 ) return; var Temp = document.createElement('div'); Temp.style.display = 'none'; document.body.insertBefore(Temp, document.body.firstChild); Temp.innerHTML = RequeteEdition.responseText; var ContenuTextarea = Temp.getElementsByTagName('textarea')[0].value; if((ContenuTextarea.indexOf(Gadgets_CommStart)!=-1)&&(ContenuTextarea.indexOf(Gadgets_CommEnd)!=-1)){ var Before = ContenuTextarea.split(Gadgets_CommStart)[0]; var After = ContenuTextarea.split(Gadgets_CommEnd)[1]; var TexteFinal = Before+Gadgets_NewScriptConfig+Gadgets_NewScript+After; }else{ var TexteFinal = Gadgets_NewScriptConfig+Gadgets_NewScript+ '\n' + ContenuTextarea; } ControlElement.innerHTML += '<b>* '+ Gadgets_Text_Save + '</b><br/>'; var AdressePublication = document.getElementById("editform").action; var boundary = '--------123xyz'; var data = ''; data += '--' + boundary + '\nContent-Disposition: form-data; name="wpTextbox1"\n\n' + TexteFinal + '\n' data += '--' + boundary + '\nContent-Disposition: form-data; name="wpSection"\n\n' + document.editform.wpSection.value + '\n' data += '--' + boundary + '\nContent-Disposition: form-data; name="wpSummary"\n\n' + Gadgets_Resume + '\n' data += '--' + boundary + '\nContent-Disposition: form-data; name="wpStarttime"\n\n' + document.editform.wpStarttime.value + '\n' data += '--' + boundary + '\nContent-Disposition: form-data; name="wpEdittime"\n\n' + document.editform.wpEdittime.value + '\n' data += '--' + boundary + '\nContent-Disposition: form-data; name="wpEditToken"\n\n' + document.editform.wpEditToken.value + '\n' var RequetePublication = sajax_init_object(); RequetePublication.open('POST', AdressePublication, true); RequetePublication.setRequestHeader('Content-Type', 'multipart/form-data; boundary='+boundary); RequetePublication.onreadystatechange = function(){ if (RequetePublication.readyState == 4){ Temp.innerHTML = RequetePublication.responseText; if(!Temp.getElementsByTagName('textarea')[0]){ ControlElement.innerHTML += '<b><big>'+Gadgets_Text_OK+'</big></b>'; window.location.reload(); }else{ Gadgets_CreateNewScript(); } } } RequetePublication.send(data + '--' + boundary); } RequeteEdition.send(null); } // ******************************************************************************** //</nowiki></pre>