Wikipedysta:Persino/Gadget-DodatkiSkrypt3.js/Api.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.
//var DodatkiSkrypt=DodatkiSkrypt ||new Array();
DodatkiSkrypt.Api=new Array();
DodatkiSkrypt.Api.PotrzebneFunkcje=new Array();
DodatkiSkrypt.Api.PotrzebneFunkcje.PotrzebnyNumerZapytania=function(wikikod){
var div=document.createElement('div');
div.innerHTML=wikikod;
var hn=$(div).children(".hn")[0];
if(!hn){return;}
var classlist=hn.classList;
var c=undefined;
for(var s=0;s<classlist.length;++s){
if(/^hn_\d+$/g.test(classlist[s])){
c=classlist[s].replace(/^hn_/g,"");
c=parseInt(c);
if(isNaN(c)){return undefined;}
return new Array(c,hn);
}
}
return undefined;
};
/*Funkcja generująca kolejkę strumieni new mw.Api();*/
DodatkiSkrypt.Api.CzekajNaZadaniaApi=function(){
var generator=new DodatkiSkrypt.LicznikGenerowanychKorutyn();
var category_fun=undefined;
var muteks_kategoria=new DodatkiSkrypt.Muteks();
var muteks_api=new DodatkiSkrypt.Muteks();
this.ZadaniaApi=function(params,token,dodaj_kategorie,numer,opakuj_kategorie,przytnij_tekst,czy_ignorowac_bledy,czy_ignorowac_bledy_lua,czy_zapisywac_wyniki){
var ileLoad=function(){
return new Promise(function(resolve,reject){
function Czekaj(){
$(document).DodatkiSkryptReady(function(){
generator._wygeneruj(1);
var liczba_wywolan_api=generator._length;
if(liczba_wywolan_api<3000){
resolve();
}else{
setTimeout(Czekaj,0);
}
},null,muteks_api);
}
Czekaj();
});
}
var loadStrona=function(){
var czy_kategorie=((!token)&&(dodaj_kategorie)&&(params.action)&&(params.action=="parse"));
var opakowanie_kategorii=((czy_kategorie)?(((opakuj_kategorie)?("{{OpakujKategorieZeSortowaniem|"):"")+((przytnij_tekst)?("{{PrzytnijTekst|"+params.text+"}}"):(params.text))+((opakuj_kategorie)?("}}"):"")):params.text);
var numer_int=parseInt(numer);
params.text=(((czy_kategorie)&&(!isNaN(numer_int))&&(params.text))?("<div class=\"hn hn_"+numer_int+"\">\n"+opakowanie_kategorii+"\n</div>"):(opakowanie_kategorii));
params.prop=(((czy_kategorie)&&(params.prop))?(params.prop+"|categories"):params.prop);
if(czy_kategorie){
console.log("Ładuję wikikod na stronie o nazwie: "+(params.title||"brak nazwy")+"...");
console.log("Kod rozwijany: "+params.text+".");
}
var PobierzDaneStron=function(params){
if((!czy_zapisywac_wyniki)||(!czy_kategorie)){
try{
return (new mw.Api()).post(params);
}catch(error){
return Promise.reject(null);
}
}else{
return DodatkiSkrypt.DodatkiSkryptUserOption.PobierzDaneStron((params.title||"brak nazwy"),params,function(){
try{
return (new mw.Api()).post(params);
}catch(error){
return Promise.reject(null);
}
});
}
}
function OperujNaSerwerze(token,params){
try{
return (new mw.Api()).postWithToken(token,params);
}catch(error){
return Promise.reject(null);
}
}
return ((token)?(OperujNaSerwerze(token,params)):(PobierzDaneStron(params))).DodatkiSkryptThen(function(data){
if(czy_kategorie){
/**/
$(document).DodatkiSkryptReady(function(){
if(!category_fun){
category_fun=new DodatkiSkrypt.Kategorie.ListaKategoriiStrony();
category_fun.PobierzKategorieStrony();
}
category_fun.AnalizaKategorii(data);
},null,muteks_kategoria);
/**/
var strony_z_bledami_skryptow=false;
var categories=data.parse.categories;
for(var c=0;c<categories.length>0;++c){
var cattab=categories[c];
var cat=cattab["*"].replace(/^[\s_]*/g,"").replace(/[\s_]*$/g,"").replace(/[\s_]+/g," ");
if(cat=="Strony z błędami skryptów"){
strony_z_bledami_skryptow=true;
}
}
var zawartosc=data.parse.text['*'];
var div_kontener=document.createElement('div');
div_kontener.innerHTML=zawartosc;
$(div_kontener).find('.ext-discussiontools-emptystate').remove();
var mw_parser_output=$(div_kontener).children('.mw-parser-output').first();
var tab_hn;
if(mw_parser_output.length>0){
tab_hn=DodatkiSkrypt.Api.PotrzebneFunkcje.PotrzebnyNumerZapytania(mw_parser_output[0].innerHTML);
}else{
tab_hn=DodatkiSkrypt.Api.PotrzebneFunkcje.PotrzebnyNumerZapytania(div_kontener.innerHTML);
}
var div;
if(tab_hn!==undefined){
var length=tab_hn[0];
data.parse.text.number=length;
div=tab_hn[1];
}else{
data.parse.text.number=0;
if(mw_parser_output.length>0){
div=mw_parser_output[0];
}else{
div=div_kontener;
}
}
$(div).children('section.mf-section-0:only-child').each(function(i,element){
element.outerHTML=element.innerHTML;
});
$(div).children('p:only-child').each(function(i,element){
element.outerHTML=element.innerHTML;
});
var selflink=((czy_ignorowac_bledy)?false:($(div).find('> a.mw-selflink.selflink:only-child, > .ocwkzks > .obkwk > a.mw-selflink.selflink:only-child')));
var str_fun_scribunto_error=$(div).find('.scribunto-error');
div.innerHTML=div.innerHTML.replace(/<!--.*-->/g,"");
if((strony_z_bledami_skryptow)||(str_fun_scribunto_error.length>0)||((selflink)&&(selflink.length>0))){
console.log("---------------------------------------")
console.log("Strona bazowa: "+data.parse.title+".");
console.log("Wywołanie: "+params.text+".");
if(str_fun_scribunto_error.length>0){
console.log("Liczba błędów skryptów Lua na stronie: "+str_fun_scribunto_error.length+".");
}
if(selflink.length>0){
console.log("Liczba wywołań szablonów, które nie istnieją: "+selflink.length+".");
}
console.log("Uzyskano wygenerowaną zawartość zapytania: "+div.innerHTML+".");
console.log("Numer wywołania: "+data.parse.text.number+".");
console.log('+++++++++++++++++++++++++++++++++++++++');
}
data.parse.text['*']=((((czy_ignorowac_bledy_lua)||((!strony_z_bledami_skryptow)&&(str_fun_scribunto_error.length==0)))&&((!selflink)||(selflink.length==0)))?(div.innerHTML.trim()):null);
}
$(document).DodatkiSkryptReady(function(){
generator._zwolnij();
},null,muteks_api);
return Promise.resolve(data);
}).DodatkiSkryptCatch(function(data){
if(!data){
return;
}else if(czy_kategorie){
console.log("---------------------------------------");
console.log("Uzyskano wyjątek zapytania, oto jego parametry:");
console.log("Strona bazowa: "+params.title+".");
console.log("Wywołanie: "+params.text+".");
console.log("Wygenerowana zawartość zapytania: "+data+".");
if((czy_kategorie)&&(typeof numer=="number")&&(params.text)){
console.log("Numer wywołania: "+numer+".");
}
console.log("+++++++++++++++++++++++++++++++++++++++")
}
$(document).DodatkiSkryptReady(function(){
generator._zwolnij();
},null,muteks_api);
return Promise.reject(data);
});
}
return Promise.all([ileLoad()]).DodatkiSkryptThen(function(data){
return loadStrona();
}).DodatkiSkryptCatch(function(data){return Promise.reject();});
}
};
DodatkiSkrypt.api=new DodatkiSkrypt.Api.CzekajNaZadaniaApi();