Wikipedysta:Persino/Gadget-StronicowyParser.js/AktualizacjaStron.js
Wygląd
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)
- Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5.
- Opera: Naciśnij klawisze Ctrl+F5.
StronicowyParser.AktualizacjaStron=function(fullname,kategoria_pozycji){
this.fullname=((!fullname)?(StronicowyParser.pageinfo.fullname.replace(/[_\s]+/g," ")):fullname);
this.tabcat=undefined;
this.kategoria_pozycji=((!kategoria_pozycji)?('Strony z błędami skryptów'):kategoria_pozycji);
this.prefix_kategorii_pozycji="Kategoria:";
this.muteks_aktualizacja_stron=new StronicowyParser.Muteks();
this.strona_aktualna=undefined;
this.strona_aktualna_powtarzanie=undefined;
this.PustaEdycjaStrony=async function(title){
let params={
action: 'edit',
title: title,
appendtext: '',
nocreate: true,
format: 'json',
smaxage: 600,
maxage: 600,
prop: 'info|revisions',
};
await StronicowyParser.api.ZadaniaApi(params,'csrf').then((data)=>{console.log("Udało się zaaktualizować stronę: "+title);}).catch((data)=>{console.log("Nie udało się zaaktualizować strony: "+title,"Kod błędu: "+data);});
};
this.OdswiezanieStrony=async function(title){
await StronicowyParser.api.ZadaniaApi({
action: 'purge',
titles: title,
format: 'json',
smaxage: 600,
maxage: 600,
prop: 'info|revisions',
}).then((data)=>{console.log("Udało się odświeżyć stronę: "+title);}).catch((data)=>{console.log("Nie udało się odświeżyć strony: "+title,"Kod błędu: "+data);});
};
this.PustaEdycjaIOdswiezanieStrony=async function(title){
let zmienna_this=this;
setTimeout(async function(){zmienna_this.PustaEdycjaStrony(title);},0);
setTimeout(async function(){zmienna_this.OdswiezanieStrony(title);},3000);
};
this.AktualizacjaCzlonkowKategorii=async function(kategoria){
let tab_promise=new Array();
let this_zmienne=this;
let czy_tak=null;
await StronicowyParser.api.ZadaniaApi({
action: 'query',
list: 'categorymembers',
cmtitle: kategoria,
cmtype: 'file|page|subcat',
cmlimit: 500,
format: 'json',
smaxage: 600,
maxage: 600,
}).then(function(data){
let category = data.query.categorymembers;
for (let cat in category){
czy_tak=true;
let title=category[cat].title;
if(title==this_zmienne.fullname){
const promise_aktualna=(async function(){
await this_zmienne.muteks_aktualizacja_stron.zablokuj();
if((!this_zmienne.strona_aktualna)||(this_zmienne.strona_aktualna_powtarzanie)){
this_zmienne.tabcat=this_zmienne.tabcat||await StronicowyParser.kategorie.StworzTabliceKategoriiZCatLinks();
let czy_istnieje_blad=this_zmienne.tabcat[this_zmienne.kategoria_pozycji];
if(czy_istnieje_blad){
await this_zmienne.PustaEdycjaIOdswiezanieStrony(title);
if(document.querySelector('body.action-view')){
window.location.reload(true);
}
this_zmienne.this_zmienne.tabcat=undefined;
}
this_zmienne.strona_aktualna=true;
}
this_zmienne.muteks_aktualizacja_stron.odblokuj();
})();
tab_promise.push(promise_aktualna);
continue;
}
const promise=this_zmienne.PustaEdycjaIOdswiezanieStrony(title);
tab_promise.push(promise);
}
}).catch((data)=>{});
if(tab_promise.length>0){
await Promise.all(tab_promise).then(()=>{}).catch(()=>{});
}
return czy_tak;
};
this.AktualizacjaAktualnejStrony=async function(){
let czy_tak=null;
let wlasciwe=document.querySelector(":root > body:not(.ns-special)");
if(wlasciwe!==null){
let aktualizacja_strony=document.querySelector('#mw-content-text .mw-parser-output .aktualizacja_strony');
if(aktualizacja_strony!==null){
await this.PustaEdycjaIOdswiezanieStrony(this.fullname);
}else{
await this.muteks_aktualizacja_stron.zablokuj();
if(!this.strona_aktualna){
this.tabcat=this.tabcat||await StronicowyParser.kategorie.StworzTabliceKategoriiZCatLinks();
if(this.tabcat[this.kategoria_pozycji]){
await this.PustaEdycjaIOdswiezanieStrony(this.fullname);
czy_tak=true;
if(document.querySelector(':root > body.action-view:not(.ns-special)')){
window.location.reload(true);
}
this.tabcat=undefined;
}
this.strona_aktualna=true;
}
this.muteks_aktualizacja_stron.odblokuj();
}
}
return czy_tak;
};
this.PowtarzanieAktualizacji=async function(){
this.strona_aktualna_powtarzanie=true;
let aktualizacja_strony_nie_powtarzanie=document.querySelector('#mw-content-text .mw-parser-output .aktualizacja_strony_nie_powtarzanie');
if(!this.aktualizacja_strony_nie_powtarzanie){
let this_zmienne=this;
let pelna_nazwa_pozycji=this.prefix_kategorii_pozycji+this.kategoria_pozycji;
setInterval(async function(){
await this_zmienne.PustaEdycjaIOdswiezanieStrony(pelna_nazwa_pozycji);
let czy_tak=await this_zmienne.AktualizacjaCzlonkowKategorii(pelna_nazwa_pozycji);
if(czy_tak){
await this_zmienne.PustaEdycjaIOdswiezanieStrony(pelna_nazwa_pozycji);
}
}, 1000*60*10);
}
};
this.AktualizacjaStronyAktualnejIStronyKategorii=async function(){
let pelna_nazwa_pozycji=this.prefix_kategorii_pozycji+this.kategoria_pozycji;
if(pelna_nazwa_pozycji!=this.fullname){
await this.PustaEdycjaIOdswiezanieStrony(pelna_nazwa_pozycji);
const promise1=this.AktualizacjaAktualnejStrony();
const promise2=this.AktualizacjaCzlonkowKategorii(pelna_nazwa_pozycji);
let czy_tak=null;
await Promise.all([promise1,promise2]).then((dane)=>{czy_tak=dane[0]||dane[1];}).catch(()=>{});
if(czy_tak){
await this.PustaEdycjaIOdswiezanieStrony(pelna_nazwa_pozycji);
}
}else{
await this.PustaEdycjaIOdswiezanieStrony(pelna_nazwa_pozycji);
let czy_tak=await this.AktualizacjaCzlonkowKategorii(pelna_nazwa_pozycji);
if(czy_tak){
await this.PustaEdycjaIOdswiezanieStrony(pelna_nazwa_pozycji);
}
}
};
};
StronicowyParser.aktualizacja=new StronicowyParser.AktualizacjaStron();
StronicowyParser.aktualizacja.AktualizacjaStronyAktualnejIStronyKategorii();
StronicowyParser.aktualizacja.PowtarzanieAktualizacji();