Wikipedysta:Persino/Gadget-SzablonSubst.js
Uwaga: aby zobaczyć zmiany po opublikowaniu, może zajść potrzeba wyczyszczenia pamięci podręcznej przeglądarki.
- Firefox / Safari: Przytrzymaj Shift podczas klikania Odśwież bieżącą stronę, lub naciśnij klawisze Ctrl+F5, lub Ctrl+R (⌘-R na komputerze Mac)
- Google Chrome: Naciśnij Ctrl-Shift-R (⌘-Shift-R na komputerze Mac)
- Internet Explorer / Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5
- Opera: Naciśnij klawisze Ctrl+F5.
(function(mw,$){
var SzablonSubst=new Array();
var czy_nie_gconfig=false;
SzablonSubst.SzablonSubst=function(){
var szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej=undefined;
var szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej=undefined;
var szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej=undefined;
var szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej=undefined;
var szablonsubst_nie_uwzgledniaj_edycji_sekcji=undefined;
/**/
if((window.gConfig!==undefined)&&(window.gConfig.register!==undefined)&&(window.gConfig.get!==undefined)){
if(!czy_nie_gconfig){
czy_nie_gconfig=true;
mw.messages.set({
'SzablonSubst-name': 'Rozwijanie szablonów',
'SzablonSubst-description-page': 'Wikibooks:StronicowyParser/SzablonSubst',
'SzablonSubst-nie_uwzgledniaj_edycji_sekcji': 'Nie uwzględniaj edycji sekcji.',
'SzablonSubst-rozwijanie_szablonow_nie_na_stronie_zbiorczej': 'Włącz rozwijanie szablonów, w JavaScript, nie na stronie zbiorczej.',
'SzablonSubst-rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej': 'Włącz asynchroniczne rozwijanie szablonów, w JavaScript, nie na stronie zbiorczej.',
'SzablonSubst-rozwijanie_szablonow_na_stronie_zbiorczej': 'Włącz rozwijanie szablonów, w JavaScript, na stronie zbiorczej.',
'SzablonSubst-rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej': 'Włącz asynchroniczne rozwijanie szablonów, w JavaScript, na stronie zbiorczej.',
});
gConfig.register('SzablonSubst', {name: mw.msg('SzablonSubst-name'), descriptionPage: mw.msg('SzablonSubst-description-page')}, [
{
name: 'nie_uwzgledniaj_edycji_sekcji',
desc: mw.msg('SzablonSubst-nie_uwzgledniaj_edycji_sekcji'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_szablonsubst-nie_uwzgledniaj_edycji_sekcji']
},
{
name: 'rozwijanie_szablonow_nie_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_nie_na_stronie_zbiorczej']
},
{
name: 'rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej']
},
{
name: 'rozwijanie-szablonow_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_na_stronie_zbiorczej'),
type: 'boolean',
deflt: true,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_na_stronie_zbiorczej']
},
{
name: 'rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej',
desc: mw.msg('SzablonSubst-rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej'),
type: 'boolean',
deflt: false,
legacy: [window, 'wb_szablonsubst-rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej']
},
]);
}
szablonsubst_nie_uwzgledniaj_edycji_sekcji = (gConfig.get('SzablonSubst', 'nie_uwzgledniaj_edycji_sekcji')==true);
szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_nie_na_stronie_zbiorczej')==true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej')==true);
szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_na_stronie_zbiorczej')==true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej = (gConfig.get('SzablonSubst', 'rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej')==true);
}
szablonsubst_nie_uwzgledniaj_edycji_sekcji=((szablonsubst_nie_uwzgledniaj_edycji_sekcji!=undefined)?szablonsubst_nie_uwzgledniaj_edycji_sekcji:false);
szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej:true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej:false);
szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej:true);
szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej=((szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej!=undefined)?szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej:false);
var promise_szablon;
this.UstalanieZmiennychRozwijaniaSzablonowego=function(aktualna_strona){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyStronaSubst(aktualna_strona).DodatkiSkryptThen(function(wikikod){
if(wikikod){
var szablonsubst_rozwijanie_szablonow=szablonsubst_rozwijanie_szablonow_na_stronie_zbiorczej;
var szablonsubst_rozwijanie_szablonow_asynchroniczne=szablonsubst_rozwijanie_szablonow_asynchroniczne_na_stronie_zbiorczej
}else{
var szablonsubst_rozwijanie_szablonow=szablonsubst_rozwijanie_szablonow_nie_na_stronie_zbiorczej;
var szablonsubst_rozwijanie_szablonow_asynchroniczne=szablonsubst_rozwijanie_szablonow_asynchroniczne_nie_na_stronie_zbiorczej;
}
return Promise.resolve([szablonsubst_rozwijanie_szablonow,szablonsubst_rozwijanie_szablonow_asynchroniczne]);
});
}
promise_szablon=this.UstalanieZmiennychRozwijaniaSzablonowego();
this_zmienna=this;
var tab_num=new Array();
//var tab_promise=new Array();
//this.CzekanieNaZwolnienieWszystkichKorutynWTabeliObietnicSzablonSubst=function(promise){
// console.log(tab_promise.length)
// return DodatkiSkrypt.CzekanieNaZwolnienieWszystkichKorutynWTabeliObietnic(tab_promise);
//}
this.PobierzSzablon=function(element,nazwa,czy_numerowac,aktualna_strona){
var promise_szablon_domyslna=promise_szablon;
if(aktualna_strona){
promise_szablon=this_zmienna.UstalanieZmiennychRozwijaniaSzablonowego(aktualna_strona);
}
return promise_szablon.DodatkiSkryptThen(function(data){
var szablonsubst_rozwijanie_szablonow=data[0];var szablonsubst_rozwijanie_szablonow_asynchroniczne=data[1];
var PobierzSzablon=function(element,nazwa,czy_numerowac){
var tab_promise=new Array();
if(!szablonsubst_rozwijanie_szablonow){return;}
if(czy_numerowac==undefined){czy_numerowac=true;}
var szablon_js;
if(!element){
szablon_js=$('#mw-content-text .mw-parser-output .szablon_subst_js');
}else{
szablon_js=$(element).find('.szablon_subst_js');
}
if((szablon_js!==null)&&(szablon_js.length>0)){
var tab_szablon_js=new Array();
for(var i=0;i<szablon_js.length;++i){tab_szablon_js[i]=szablon_js[i];}
for(var i=0;i<tab_szablon_js.length;++i){
var element=tab_szablon_js[i];
var potomek=((element)?($('.szablon_subst_js').find(element)):element);
if((potomek===null)||(potomek.length==0)){
var strona_szablon_js=undefined;
var nazwa_strony=$(element).parent().first()[0].querySelector('.nazwa_strony');
if(nazwa_strony){
strona_szablon_js=DodatkiSkrypt.Szereg.Styl.UsuwanieZnacznikoweHTML(DodatkiSkrypt.Szereg.Styl.UsuwanieStyloweHTML(nazwa_strony.innerHTML));
if(/^[_\s]*$/g.test(strona_szablon_js)){
strona_szablon_js=undefined;
}
}
if(!strona_szablon_js){
strona_szablon_js=((nazwa)?nazwa:(DodatkiSkrypt.Info.page.fullname));
}
var zawartosc;
var wzor_element=$(element).children("*");
if((wzor_element!==null)&&(wzor_element.length>0)){
zawartosc=element.innerHTML;
for(var i=0;i<wzor_element.length;++i){
var math=wzor_element[i].outerHTML;
var math_temp=math;
math=math.replace(/[\{\}\=\|]/g,function(s){
var tab={
"{":"{{(}}",
"}":"{{)}}",
"=":"{{=}}",
"|":"{{!}}"
};
return tab[s]||s;
}).replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/\//g,"&#47;");
math_temp=DodatkiSkrypt.Szereg.Norma.BezZnakowychSpecjalnychElementowychWIndywiduum(math_temp);
var re=new RegExp(math_temp,"g");
zawartosc=zawartosc.replace(re,math);
}
}else{
zawartosc=element.innerHTML;
}
var grupa=zawartosc.match(/\|\s*grupa\s*=\s*[^\|\{\}<>]+/g);
if(grupa!==null){
var grupa_temp=grupa.toString();
var grupa_temp2=grupa_temp;
grupa_temp=DodatkiSkrypt.Szereg.Norma.BezZnakowychSpecjalnychElementowychWIndywiduum(grupa_temp);
var re=new RegExp(grupa_temp,"g");
grupa=grupa.toString().replace(/\|\s*grupa\s*=\s*/g,"").replace(/^\s*/g,"").replace(/\s*$/g,"");
tab_num[grupa]=((tab_num[grupa])?tab_num[grupa]:0)+1;
zawartosc=zawartosc.replace(re,grupa_temp2+"|numer szablonu="+tab_num[grupa]);
}
var promise=DodatkiSkrypt.api.ZadaniaApi({
action: 'parse',
format: 'json',
prop: 'text',
title: strona_szablon_js,
text: ((szablonsubst_nie_uwzgledniaj_edycji_sekcji)?"__NOEDITSECTION__\n":"\n")+zawartosc,
disabletoc: true,
disablelimitreport: true,
disablestylededuplication: true,
contentmodel: 'wikitext',
},null,true,i,false,true).DodatkiSkryptThen(function(data){
var wikikod=data.parse.text['*'];
var title=data.parse.title;
var number=data.parse.text.number;
wikikod=wikikod.replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&#47;/g,"/");
var parent_szablon_js=szablon_js[number].parentNode;
var element_div;
if($(parent_szablon_js).hasClass('rodzic_szablon_subst_js')){
element_div=parent_szablon_js;
}else{
element_div=szablon_js[number];
}
element_div.innerHTML=wikikod;
element_div.setAttribute('nazwa_strony',title);
element_div.classList.add('szablon_subst_js_zaanalizowany');
return PobierzSzablon(element_div,nazwa,czy_numerowac);
}).DodatkiSkryptCatch(function(error){console.log(error);});
tab_promise.push(promise);
}
}
}
return Promise.all(tab_promise);
};
return PobierzSzablon(element,nazwa,czy_numerowac);
}).DodatkiSkryptFinally(function(){
promise_szablon=promise_szablon_domyslna;
});
}
this.PobierzSzablonyStronyNieZbiorczej=function(){
//return $(document).DodatkiSkryptReady(function(){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](StronaSubst,new Array("analiza_stron_zbiorczych")).DodatkiSkryptThen(function(){
var id_strony=$('#mw-content-text .mw-parser-output').first();
if(id_strony.length>0){
return StronaSubst.analiza_stron_zbiorczych.AnalizujDalejSzablonSubst(id_strony[0]);
}
}).DodatkiSkryptCatch(function(){});
//});
}
}
var promise=new Promise(function(resolve,reject){
function Czekaj(){
if(window.DodatkiSkrypt){
resolve(window.DodatkiSkrypt);
}else{
setTimeout(Czekaj,0);
}
}
Czekaj();
});
promise.then(function(DodatkiSkrypt){
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](window,new Array("gConfig")).DodatkiSkryptThen(function(){
SzablonSubst.szablony=new SzablonSubst.SzablonSubst();
return DodatkiSkrypt.Szereg.Zmienne["CzekajNaZbiórZmiennych"](DodatkiSkrypt.Info,new Array("page")).DodatkiSkryptThen(function(){
return DodatkiSkrypt.Scribunto.StronicowyParser.CzyStronaSubst().DodatkiSkryptThen(function(wikikod){
if(!wikikod){
DodatkiSkrypt.Scribunto.StronicowyParser.CzyStronaSubst().DodatkiSkryptThen(function(wikikod){
if(!wikikod){
SzablonSubst.szablony.PobierzSzablonyStronyNieZbiorczej();
}
});
}
});
});
});
});
window.SzablonSubst=SzablonSubst;
})(mediaWiki,jQuery);