Utilisateur:Dr Brains/CreatePortal.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) ;
Firefox (sur GNU/Linux) / Chrome / Internet Explorer / Opera : maintenez la touche Ctrl en cliquant sur le bouton Actualiser ou pressez Ctrl-F5.if( (mw.config.get('wgNamespaceNumber')>-1)&&( (mw.config.get('wgAction')=="edit")||(mw.config.get('wgAction')=="submit")) ){
if(typeof(CreatePortal_Reference)=="undefined"){
var CreatePortal_Reference = 'Portail:Guam';
}
if(typeof(CreatePortal_ComposantDeReference)=="undefined"){
var CreatePortal_ComposantDeReference = new Array();
CreatePortal_ComposantDeReference.push("");
CreatePortal_ComposantDeReference.push("/Cadre introduction");
CreatePortal_ComposantDeReference.push("/Cadres dynamiques");
CreatePortal_ComposantDeReference.push("/Cadre standard");
CreatePortal_ComposantDeReference.push("/Introduction");
CreatePortal_ComposantDeReference.push("/Le saviez-vous ?");
CreatePortal_ComposantDeReference.push("/Le saviez-vous ?/Introduction");
CreatePortal_ComposantDeReference.push("/Suivi/Articles récents");
CreatePortal_ComposantDeReference.push("/Page au hasard");
CreatePortal_ComposantDeReference.push("/Page au hasard/Liste");
CreatePortal_ComposantDeReference.push("/Lumière sur...");
CreatePortal_ComposantDeReference.push("/Lumière sur.../Introduction");
CreatePortal_ComposantDeReference.push("/Articles récompensés");
CreatePortal_ComposantDeReference.push("/Sélection");
CreatePortal_ComposantDeReference.push("/Image au hasard");
CreatePortal_ComposantDeReference.push("/Image au hasard/Introduction");
CreatePortal_ComposantDeReference.push("/Navigation");
}
$(CreatePortal_AddButton);
if(mw.config.get('wgTitle').match(/\.js$/)!= null){
$(CreatePortal_AddClassButton);
$(CreatePortal_AddVariablesButton);
$(CreatePortal_replaceFunctionSyntaxButton);
}
mw.loader.addStyleTag('#MenuReplaceSpan { text-align:left; }');
}
function CreatePortal_AddButton(){
if(!document.editform) return;
var Toolbar = document.getElementById('monobooktoolbar');
if(!Toolbar){
var Textarea = document.getElementById("wpTextbox1");
if(!Textarea) return;
Toolbar = document.createElement('div');
Toolbar.id = 'monobooktoolbar';
Textarea.parentNode.insertBefore(Toolbar, Textarea);
}
var button = '<img src="//upload.wikimedia.org/wikipedia/commons/0/0d/Button_wikification.png" heigth="23" width="23" alt="Composant de portail" />';
var NewButton = document.createElement('a')
NewButton.title = "Créer un élément de portail";
NewButton.href="javascript:CreatePortal_OpenMenu();";
NewButton.className = "mw-toolbar-editbutton";
NewButton.innerHTML = button;
Toolbar.appendChild(NewButton);
}
function CreatePortal_Cancel(){
var MenuDiv = document.getElementById('Menu_Composant_de_portail');
MenuDiv.parentNode.removeChild(MenuDiv);
}
function CreatePortal_OpenMenu(){
var OldMenuDiv = document.getElementById('Menu_Composant_de_portail');
if(OldMenuDiv) return;
var Toolbar = document.getElementById('monobooktoolbar');
var MenuDiv = document.createElement('div');
MenuDiv.id = 'Menu_Composant_de_portail';
Toolbar.parentNode.insertBefore(MenuDiv, Toolbar.nextSibling);
var MenuSelect = document.createElement('select');
MenuSelect.id = 'SelectComposant';
MenuSelect.onchange = function(){
var Selected = this.getElementsByTagName('option');
for(var a=0;a<Selected.length;a++){
if(Selected[a].selected){
var TextSelected = Selected[a].value;
CreatePortal_GetComposant(TextSelected);
}
}
}
MenuSelect.innerHTML += '<option value="Type de composant" disabled="disabled" selected="selected" >Type de composant</option>';
for(var a=0;a<CreatePortal_ComposantDeReference.length;a++){
MenuSelect.innerHTML += '<option value="'+CreatePortal_ComposantDeReference[a]+'" >'+CreatePortal_ComposantDeReference[a]+'</option>';
}
MenuDiv.appendChild(MenuSelect);
var CurrentPortal = mw.config.get('wgTitle').split('/')[0];
var MenuSpan = document.createElement('span');
MenuSpan.id = 'MenuReplaceSpan';
MenuDiv.appendChild(MenuSpan);
MenuSpan.innerHTML = '<label for="CreatePortal_Replace1">Texte à remplacer</label>'
+ '<input id="CreatePortal_Replace1" type="text" value="'+CreatePortal_Reference.split(':')[1]+'" size="65"/>'
+ '<label for="CreatePortal_Replace2">Texte de remplacement</label>'
+ '<input id="CreatePortal_Replace2" type="text" value="'+CurrentPortal+'" size="65"/>'
+ '<input type="button" value="Remplacer" onclick="CreatePortal_Replace();" onselect="CreatePortal_Replace();"/>'
+ ' <input type="button" value="Annuler" onclick="CreatePortal_Cancel();" onselect="CreatePortal_Cancel();"/>'
}
function CreatePortal_GetComposant(SousPage){
var OldText = "Portail:"+document.getElementById('CreatePortal_Replace1').value;
if(OldText != CreatePortal_Reference && OldText!=""){
CreatePortal_Reference = OldText;
}
var Page = CreatePortal_Reference + SousPage;
var AdresseRequete = mw.config.get('wgServer') + mw.config.get('wgScript') + '?title=' + Page + '&action=edit';
var NouvelleRequete = new XMLHttpRequest();
NouvelleRequete.open("GET", AdresseRequete, true);
NouvelleRequete.send(null);
NouvelleRequete.onreadystatechange = function() {
if(NouvelleRequete.readyState == 4 && NouvelleRequete.status == 200) {
var ElementTraitement = document.createElement('div');
ElementTraitement.innerHTML = NouvelleRequete.responseText;
var EditTextArea = ElementTraitement.getElementsByTagName('textarea')[0].value;
document.getElementById('wpTextbox1').value = EditTextArea;
var OldText = document.getElementById('CreatePortal_Replace1').value;
var NewText = document.getElementById('CreatePortal_Replace2').value;
if((OldText!='')&&(NewText!='')) CreatePortal_Replace();
}
}
}
function CreatePortal_Replace(){
try{
var TextArea = document.getElementById('wpTextbox1');
var OldText = document.getElementById('CreatePortal_Replace1').value;
var NewText = document.getElementById('CreatePortal_Replace2').value;
var Text = TextArea.value;
}catch(e){ return; }
if((OldText=='')&&(NewText=='')) return;
if((OldText!='')&&(NewText!='')){
if(NewText.indexOf(OldText)!=-1){
alert("Le texte de remplacement contient le texte à remplacer.\nCela va générer une boucle et ne peut donc pas être effectué.\nVeuillez choisir d'autres paramètres.")
return;
}
}
var Scroll = TextArea.scrollTop;
while(Text.indexOf(OldText)!=-1){
Text = Text.split(OldText).join(NewText);
if(Text.indexOf(OldText)==-1) break;
}
document.getElementById('wpTextbox1').value = Text;
document.getElementById('CreatePortal_Replace1').value = NewText;
document.getElementById('CreatePortal_Replace2').value = OldText;
TextArea.scrollTop = Scroll;
}
// ===========================================================================================
function CreatePortal_AddClassButton(){
if(!document.editform) return;
var Toolbar = document.getElementById('monobooktoolbar');
if(!Toolbar){
var Textarea = document.getElementById("wpTextbox1");
if(!Textarea) return;
Toolbar = document.createElement('div');
Toolbar.id = 'monobooktoolbar';
Textarea.parentNode.insertBefore(Toolbar, Textarea);
}
var button = '<img src="//upload.wikimedia.org/wikipedia/commons/1/1c/Button_flamme.png" heigth="23" width="23" alt="Remplacement fonctions obsolètes" />';
var NewButton = document.createElement('a')
NewButton.title = "Remplacement fonctions obsolètes";
NewButton.href="javascript:CreatePortal_ReplaceObsoleteFunctions();";
NewButton.className = "mw-toolbar-editbutton";
NewButton.innerHTML = button;
Toolbar.appendChild(NewButton);
}
function CreatePortal_ReplaceObsoleteFunctions(){
var TextArea = document.getElementById("wpTextbox1");
if(!TextArea) return;
var Text = TextArea.value;
var Scroll = TextArea.scrollTop;
var Classes = ["hasClass", "addClass", "removeClass"];
for(var a=0,l=Classes.length;a<l;a++){
var ThisClass = Classes[a];
var Reg = new RegExp(ThisClass+"\\([^\\)]*\\)", "g");
//alert(Reg.toString());
var allmatches = Text.match(Reg);
if(allmatches == null) continue;
//alert(Reg.toString()+" found "+allmatches.length+" times");
for(var b=0,n=allmatches.length;b<n;b++){
var thismatch = allmatches[b];
var nodetext = thismatch.replace(/.*\( */g, "").replace(/ *,.*/g, "");
var classtext = thismatch.replace(/.*, */g, "").replace(/\).*/g, "");
Text = Text.replace(thismatch, "$("+nodetext+")."+ThisClass+"("+classtext+")");
}
}
TextArea.value = Text;
TextArea.scrollTop = Scroll;
}
function CreatePortal_AddVariablesButton(){
if(!document.editform) return;
var Toolbar = document.getElementById('monobooktoolbar');
if(!Toolbar){
var Textarea = document.getElementById("wpTextbox1");
if(!Textarea) return;
Toolbar = document.createElement('div');
Toolbar.id = 'monobooktoolbar';
Textarea.parentNode.insertBefore(Toolbar, Textarea);
}
var button = '<img src="//upload.wikimedia.org/wikipedia/commons/1/1c/Button_flamme.png" heigth="23" width="23" alt="Remplacement fonctions obsolètes" />';
var NewButton = document.createElement('a')
NewButton.title = "Remplacement variables obsolètes";
NewButton.href="javascript:CreatePortal_ReplaceObsoleteVariables();";
NewButton.className = "mw-toolbar-editbutton";
NewButton.innerHTML = button;
Toolbar.appendChild(NewButton);
}
function CreatePortal_ReplaceObsoleteVariables(){
var TextArea = document.getElementById("wpTextbox1");
if(!TextArea) return;
var Text = TextArea.value;
var Scroll = TextArea.scrollTop;
var LegacyVariables = ["skin", "stylepath", "wgActionPaths", "wgArticlePath", "wgAvailableSkins", "wgCaseSensitiveNamespaces", "wgContentLanguage", "wgContentNamespaces", "wgCookiePrefix", "wgCookieDomain", "wgCookiePath", "wgCookieExpiration", "wgDBname", "wgExtensionAssetsPath", "wgFileExtensions", "wgFormattedNamespaces", "wgLegacyJavaScriptGlobals", "wgLoadScript", "wgMainPageTitle", "wgNamespaceIds", "wgResourceLoaderMaxQueryLength", "wgScriptExtension", "wgScriptPath", "wgScript", "wgServer", "wgSiteName", "wgUrlProtocols", "wgVariantArticlePath", "wgVersion", "wgAction", "wgArticleId", "wgBreakFrames", "wgCanonicalNamespace", "wgCanonicalSpecialPageName", "wgCategories", "wgCurRevisionId", "wgDefaultDateFormat", "wgDigitTransformTable", "wgIsArticle", "wgIsProbablyEditable", "wgNamespaceNumber", "wgMonthNames", "wgMonthNamesShort", "wgPageContentLanguage", "wgPageName", "wgPostEdit", "wgRedirectedFrom", "wgRelevantPageName", "wgRevisionId", "wgRestrictionEdit", "wgRestrictionMove", "wgSeparatorTransformTable", "wgTitle", "wgRelevantUserName", "wgSearchType", "wgIsMainPage", "wgUserVariant", "wgUserEditCount", "wgUserGroups", "wgUserId", "wgUserLanguage", "wgUserName", "wgUserRegistration"];
for(var a=0,l=LegacyVariables.length;a<l;a++){
var ThisVariable = LegacyVariables[a];
var matches = Text.match(new RegExp("[^=+\\-:;,&\\|\\)\n]*[^\"' ]*"+ThisVariable, "g"));
if(matches===null) continue;
for(var x=0,xlen=matches.length;x<xlen;x++){
var thismatch = matches[x];
if(thismatch.indexOf("mw.config.get") !=-1) continue;
Text = Text.replace(thismatch, thismatch.substr(0, (thismatch.length-ThisVariable.length)) + "mw.config.get('"+ThisVariable+"')");
}
}
TextArea.value = Text;
TextArea.scrollTop = Scroll;
}
// ===========================================================================================
function CreatePortal_replaceFunctionSyntaxButton(){
if(!document.editform) return;
var Toolbar = document.getElementById('monobooktoolbar');
if(!Toolbar){
var Textarea = document.getElementById("wpTextbox1");
if(!Textarea) return;
Toolbar = document.createElement('div');
Toolbar.id = 'monobooktoolbar';
Textarea.parentNode.insertBefore(Toolbar, Textarea);
}
var button = '<img src="//upload.wikimedia.org/wikipedia/commons/1/1c/Button_flamme.png" heigth="23" width="23" alt="Remplacement syntaxe fonctions" />';
var NewButton = document.createElement('a')
NewButton.title = "Remplacement syntaxe fonctions";
NewButton.href="javascript:CreatePortal_ReplaceFunctionSyntax();";
NewButton.className = "mw-toolbar-editbutton";
NewButton.innerHTML = button;
Toolbar.appendChild(NewButton);
}
function CreatePortal_ReplaceFunctionSyntax(){
var TextArea = document.getElementById("wpTextbox1");
if(!TextArea) return;
var Text = TextArea.value;
var Scroll = TextArea.scrollTop;
var VARreg = /\nvar[ ]+/g
Text = Text.replace(VARreg, "\nwindow.");
var FUNCreg = /\nfunction [^\(]*/g
var allmatches = Text.match(FUNCreg);
if(allmatches !== null){
for(var b=0,n=allmatches.length;b<n;b++){
var thismatch = allmatches[b];
var funcname = thismatch.replace(/.*function /g, "").replace(/\n/g, "");
Text = Text.replace(thismatch, "\nwindow."+funcname+" = function");
}
}
TextArea.value = Text;
TextArea.scrollTop = Scroll;
}