Wikipedysta:Persino/Gadget-DodatkiSkrypt3.js/StronaStart.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.
/*Program do obsługi szablonu StronaStart i jego pokrewnych książkowych*/
DodatkiSkrypt.StronaStart=new Array();
var NumerBaza=function(element_baza){
var __str=$('#mw-content-text .mw-parser-output').find('.strona_start .strona_środkowa');
for(var p=0;p<__str.length;++p){
var str=$(__str[p]).find('> .menu > div > .menu_boks');
for(var i=0;i<str.length;++i){
if(element_baza==str[i]){
return i;
}
};
}
return null;
}
var toc_stronastart_muteks=new DodatkiSkrypt.Muteks();
var generowane_watki_2=new DodatkiSkrypt.LicznikGenerowanychKorutyn();
var tab_funkcja=new Array();
DodatkiSkrypt.StronaStart.DodatkowaInformacjaTekst=function(){
var przycisk=mw.html.element('div',{class:'menu_boks',style:'margin:0 5px 0 0;padding:0 5px;background-color:blue;color:white;float:left;width:auto;height:20px;border: solid #aaa 1px;text-align:center;position:relative;right:0;top:0;'},new mw.html.Raw(mw.html.element('span',{class:'spis_treści',style:'display:none;'},new mw.html.Raw('Spis treści'))+mw.html.element('span',{class:'boksy',style:'display:inline'},new mw.html.Raw('Boksy'))+mw.html.element('span',{class:'nic',style:'display:none;'},new mw.html.Raw('Nic'))));
var menu='[[Wikibooks:Prawa autorskie|Prawa autorskie]]{{•}} [[Wikibooks:Informacje prawne|Informacje prawne]]{{•}} [[Pomoc:Tworzenie podręcznika|Tworzenie podręcznika]]{{•}} [[Pomoc:Edycja kodu|Edycja kodu]]{{•}} [[Pomoc:Jak edytować artykuły|Jak edytować artykuły]]';
var tekst=mw.html.element('div',{style:'border: solid #aaa 1px;padding:5px 10px 4px 5px;margin-bottom:3px',class:'fonty_rodzina_sans fonty_główna_kolumna'},new mw.html.Raw(przycisk+mw.html.element('div',{style:'margin-top:1px'},new mw.html.Raw(menu))+'{{DivClear}}'));
return tekst;
}
DodatkiSkrypt.StronaStart.DodatkowaInformacjaStronaStart=function(){
var str=$('#mw-content-text .mw-parser-output').find('.strona_start .strona_środkowa > .menu');
if(str.length>0){
var tekst=DodatkiSkrypt.StronaStart.DodatkowaInformacjaTekst();
return DodatkiSkrypt.LibreLua.ApiLuaParse(tekst).DodatkiSkryptThen(function(data){
var tekst=DodatkiSkrypt.Libre.Style.WstawianieTekstuZnacznikaMwParserOutput(data.parse.text["*"]);
for(var i=0;i<str.length;++i){
str[i].innerHTML=tekst;
}
return Promise.resolve();
});
}
return Promise.reject();
}
DodatkiSkrypt.StronaStart.DodawanieFunkcjiDoStronaStart=function(element){
$(document).DodatkiSkryptReady(function(){
tab_funkcja.push(element);
},null,toc_stronastart_muteks);
}
DodatkiSkrypt.StronaStart.CzyNieukrytyLubNiepustyElement=function(element){
return (($(element).css('visibility')=="visible")&&($(element).children('div:not(:empty)').length>0));
}
DodatkiSkrypt.StronaStart.NawigacjaStronicowa=function(nie_przycisk,__FUNKCJA){
var promise=$(document).DodatkiSkryptReady(function(){
var Nawigacja=function(element,strona,czy_przeciwnie){
function DodatkoweFunkcje(){
$(document).DodatkiSkryptReady(function(){
for(var funkcja of tab_funkcja){
funkcja();
}
},null,toc_stronastart_muteks);
}
var SpisBoksyAnaliza=function(){
DodatkoweFunkcje();
$(document).DodatkiSkryptReady(function(){
DodatkiSkrypt.Boksy.ScrollBarOverflow(null,null,generowane_watki_2);
},generowane_watki_2);
$(document).DodatkiSkryptReady(function(){
DodatkiSkrypt.Boksy.OptimalXY(null,null,generowane_watki_2);
},generowane_watki_2);
}
var SpisPokazBoksyUkryj=function(element,numer){
$($(element).closest('.strona_start').find('.strona_lewa, .strona_prawa')[numer]).find('.nawigacja_boksy, .nawigacja_spis').each(function(i,element){
var str=$(element).closest('.strona_prawa, .strona_lewa').first();
str.css('position','relative');
str.addClass('strona_start-nawigacja_spis');
str.removeClass('strona_start-nawigacja_boksy');
});
$($(element).closest('.strona_start').find('.strona_lewa, .strona_prawa')[numer]).find('.nawigacja_boksy').each(function(i,element){
$(element).css('visibility',"hidden");
$(element).attr('mw-menu-boks',"false");
});
$($(element).closest('.strona_start').find('.strona_lewa, .strona_prawa')[numer]).find('.nawigacja_spis').each(function(i,element){
$(element).css('visibility',"visible");
$(element).attr('mw-menu-boks',"true");
});
SpisBoksyAnaliza();
}
var SpisUkryjBoksyPokaz=function(element,numer){
$($(element).closest('.strona_start').find('.strona_lewa, .strona_prawa')[numer]).find('.nawigacja_boksy, .nawigacja_spis').each(function(i,element){
var str=$(element).closest('.strona_prawa, .strona_lewa').first();
str.css('position','static');
str.addClass('strona_start-nawigacja_boksy');
str.removeClass('strona_start-nawigacja_spis');
});
$($(element).closest('.strona_start').find('.strona_lewa, .strona_prawa')[numer]).find('.nawigacja_spis').each(function(i,element){
$(element).css('visibility',"hidden");
$(element).attr('mw-menu-boks',"false");
});
$($(element).closest('.strona_start').find('.strona_lewa, .strona_prawa')[numer]).find('.nawigacja_boksy').each(function(i,element){
$(element).css('visibility',"visible");
$(element).attr('mw-menu-boks',"true");
});
SpisBoksyAnaliza();
}
var SpisUkryjBoksyUkryj=function(element,numer){
$($(element).closest('.strona_start').find('.strona_lewa, .strona_prawa')[numer]).find('.nawigacja_boksy, .nawigacja_spis').each(function(i,element){
$(element).css('visibility',"hidden");
$(element).attr('mw-menu-boks',"false");
var str=$(element).closest('.strona_prawa, .strona_lewa').first();
str.css('position','relative');
str.removeClass('strona_start-nawigacja_boksy');
str.removeClass('strona_start-nawigacja_spis');
});
SpisBoksyAnaliza();
}
var numer=1-NumerBaza(element);
$(element).attr('mw-menu-boks-order',numer);
var mw_menu_boksy=DodatkiSkrypt.DodatkiSkryptUserOption.get('mw-menu-boks-strona:'+strona+"-numer:"+numer,"Nawigacja-StronaStart");
return mw_menu_boksy.DodatkiSkryptThen(function(mw_menu_boksy){
var menu_boks_zmienna="0";
var czy_usr=false;
if((mw_menu_boksy)&&(mw_menu_boksy!="")){
menu_boks_zmienna=parseInt(mw_menu_boksy);
menu_boks_zmienna=Object(isNaN(menu_boks_zmienna)?"0":menu_boks_zmienna).toString();
}else{
menu_boks_zmienna=$($(element).closest('.strona_start').find('.nawigacja_boksy, .nawigacja_spis').closest('.strona_lewa, .strona_prawa')[numer]).attr('mw-menu-numer-boks');
if(!menu_boks_zmienna){
menu_boks_zmienna="0";
}
czy_usr=true;
}
var licznik=(parseInt(menu_boks_zmienna)+(czy_przeciwnie?1:0))%3;
var tab=[
['spis_treści','nawigacja_spis',SpisPokazBoksyUkryj],
['boksy','nawigacja_boksy',SpisUkryjBoksyPokaz],
['nic',null,SpisUkryjBoksyUkryj],
];
var str_element=$(element).children();
var menu=function(licznik){
for(var i=licznik;i<str_element.length;++i){
if(i+1==tab.length){return i;}
var element_pos=str_element[i];
var czy_niepusty=($($(element_pos).closest('.strona_start').find('.strona_lewa, .strona_prawa')[numer]).find('.'+tab[i][1]).children('div:not(:empty)').length>0);
if(czy_niepusty){
return i;
}
}
}
/**/
var menu_i=menu(licznik);
var menu_p=menu(menu_i+1);
menu_p=((menu_p!=undefined)?menu_p:0);
/**/
menu_boks_zmienna=Object(menu_i).toString();
/**/
$($(element).closest('.strona_start').find('.nawigacja_boksy, .nawigacja_spis').closest('.strona_lewa, .strona_prawa')[numer]).attr('mw-menu-numer-boks',menu_boks_zmienna);
if((czy_przeciwnie)||(czy_usr)){
DodatkiSkrypt.DodatkiSkryptUserOption.set('mw-menu-boks-strona:'+strona+"-numer:"+numer,menu_boks_zmienna,"Nawigacja-StronaStart");
}
/**/
var str_element=$(element).children();
str_element.each(function(i,element){
if(menu_p==i){
$(element).css('display',"block");
}else{
$(element).css('display',"none");
}
});
tab[menu_i][2](str_element[menu_i],numer);
if(__FUNKCJA){__FUNKCJA();}
});
}
return DodatkiSkrypt.Libre.Zmienne["CzekajNaZbiórZmiennych"](DodatkiSkrypt.Info,new Array("page")).DodatkiSkryptThen(function(){
var strona=DodatkiSkrypt.Info.page.fullname;
$('#mw-content-text .mw-parser-output').find('.strona_start .strona_środkowa > .menu > div > .menu_boks').each(function(i,element){
Nawigacja(element,strona,false);
});
var elements=$('#mw-content-text .mw-parser-output').find('.strona_start .strona_środkowa > .menu > div > .menu_boks');
elements.closest('.menu').show();
if(!nie_przycisk){
DodatkiSkrypt.StronaStart.StronaStartZdarzeniePrzycisku=function(){
var id=this;
$(document).DodatkiSkryptReady(function(){
$(id).parents('#mw-content-text .mw-parser-output .strona_start').first().find('.strona_środkowa > .menu > div > .menu_boks').each(function(i,element){
Nawigacja(element,strona,true);
});
},null,toc_stronastart_muteks);
}
if(DodatkiSkrypt.StronaStart.StronaStartZdarzeniePrzycisku){
DodatkiSkrypt.Zdarzenia.ZdarzeniaJavaScript(elements,'click','StronaStartZdarzeniePrzycisku',null,DodatkiSkrypt.PodTablicaDodatkiSkrypt(true,'StronaStart'),DodatkiSkrypt.PodTablicaDodatkiSkrypt(false,'StronaStart'));
}
}
return Promise.resolve(DodatkiSkrypt);
}).catch(function(){return Promise.reject(DodatkiSkrypt);});
},null,toc_stronastart_muteks);
var promise2=DodatkiSkrypt.CzekanieFinalizacjiWszystkichKorutyn(generowane_watki_2,toc_stronastart_muteks);
return Promise.all([promise,promise2]);
}
jQuery(document).DodatkiSkryptReady(function(){
return DodatkiSkrypt.StronaStart.DodatkowaInformacjaStronaStart().DodatkiSkryptThen(function(){
return DodatkiSkrypt.StronaStart.NawigacjaStronicowa(false);
}).DodatkiSkryptCatch(function(){});
}/*,generowane_watki_2*/);
DodatkiSkrypt.StronaStart.UstawianieStronySzablonuStronicowego=function(__FUNCTION){
var promise1=DodatkiSkrypt.Boksy.FunkcjaBoksowyMuteks(function(){__FUNCTION();});
var promise2=DodatkiSkrypt.Boksy.StickyXY();
return Promise.all([promise1,promise2]);
//var promise2=DodatkiSkrypt.CzekajNaZakaczenieWatkow(generowane_watki_2,toc_stronastart_muteks);
//return Promise.all([promise,promise2]);
}
/*Funkcja do kolorowania na czarno i w sposób pogrubiony napisu czcionki linki w spisie treści w szablonie stronicowym otwierającym po prawej, lwej, górnej lub dolnej, stronie*/
DodatkiSkrypt.StronaStart.ZaznaczTOCStronaStart=function(event){
var strona_start_elements=$('.strona_start');
var parser_element=document.querySelector('.mw-parser-output');
if(parser_element){
var height_sticky=0;
$('html.client-js.vector-sticky-header-enabled body.skin-vector-search-vue.vector-sticky-header-visible div.vector-sticky-header, html.client-js body.skin-timeless #mw-header-container ~ #mw-header-hack').each(function(i,el){
var rect_sticky=el.getBoundingClientRect();
height_sticky=parseInt(rect_sticky.height+rect_sticky.top);
});
var parser_rect=parser_element.getBoundingClientRect();
var tak_sticky=false;
for(var p=0;p<strona_start_elements.length;++p){
var strona_start_element=strona_start_elements[p];
var zawartosc_element=$(strona_start_element).find('> div > .główna_strona > .strona_środkowa > .strona > .ciało_kontener > .ciało_strona');
var h_element_str=zawartosc_element.find('h1, h2, h3, h4, h5, h6').find('.mw-headline');
var strony_element=$(strona_start_element).find('.główna_strona').find('.strona_prawa .mw-sticky-y, .strona_lewa .mw-sticky-y, .strona_górna .mw-sticky-x, .strona_dolna .mw-sticky-x');
for(var s=0;s<strony_element.length;++s){
var a_element=$(strony_element[s]).find('.kontener_spis_treści > table.spis_treści > tbody > tr:last-child > td > div li a, .pierwsza_strona_spis_treści > table.spis_treści > tbody > tr:last-child > td > div li a, .strona_spisu_treści > .toc_wykaz a');
a_element.removeClass('zaznaczone');
var tab_a_element=new Array();
for(var i=0;i<a_element.length;++i){
var a_element_temp=a_element[i];
var href=a_element_temp.getAttribute('href');
if(href===null){continue;}
href=DodatkiSkrypt.Libre.Kodowanie.DecodeHtml(href,false);
var id_href=href.replace(/^\s*#\s*/g,"").replace(/^[\s_]*/g,"").replace(/[\s_]*$/g,"").replace(/[\s_]+/g,"_");
tab_a_element[id_href]=a_element_temp;
}
var tak_przerwij=false;
for(var d=0;d<h_element_str.length;++d){
var h_element=h_element_str[d];
var rect_el_h=h_element.getBoundingClientRect();
if((rect_el_h.bottom>=height_sticky)&&(rect_el_h.top>=parser_rect.top)){
var id=h_element.getAttribute('id');
if(id===null){continue;}
id=DodatkiSkrypt.Libre.Kodowanie.DecodeHtml(id,false);
id=id.replace(/^[\s_]*/g,"").replace(/[\s_]*$/g,"").replace(/[\s_]+/g,"_");
//for(var y=0;y<a_element.length;++y){
var a_element_temp=tab_a_element[id];
if(a_element_temp===undefined){continue;}
var czy_ukryty=DodatkiSkrypt.Libre.CzyElementHTMLJestUkrytyPrzezSiebieLubPrzezRodzica(a_element_temp);
if(!czy_ukryty){
//var href=a_element_temp.getAttribute('href');
//href=DodatkiSkrypt.Libre.Kodowanie.DecodeHtml(href,false);
function ElementTOC(element_myszki){
if(!element_myszki){return null;}
var element_myszki_a=$(element_myszki.target).closest('a');
if(element_myszki_a.length==0){return null;}
var href_mysz=element_myszki_a[0].getAttribute('href');
var id_href_mysz=href_mysz.replace(/^\s*#\s*/g,"").replace(/^[\s_]*/g,"").replace(/[\s_]*$/g,"").replace(/[\s_]+/g,"_");
if(id==id_href_mysz){return true;}
return false;
}
var czy_href_toc=((event)?(ElementTOC(event)):null);
if((czy_href_toc==null)||(czy_href_toc)){
$(a_element_temp).addClass('zaznaczone');
tak_przerwij=true;
tak_sticky=true;
break;
}
}
}
}
if((!tak_przerwij)&&(h_element_str.length>0)){
var h_element=h_element_str[h_element_str.length-1];
var id=h_element.getAttribute('id');
if(id===null){continue;}
id=DodatkiSkrypt.Libre.Kodowanie.DecodeHtml(id,false);
id=id.replace(/^[\s_]*/g,"").replace(/[\s_]*$/g,"").replace(/[\s_]+/g,"_");
a_element_temp=tab_a_element[id];
if(a_element_temp===undefined){continue;}
$(a_element_temp).addClass('zaznaczone');
tak_sticky=true;
}
tak_przerwij=false;
}
}
//if(tak_sticky){
// DodatkiSkrypt.Boksy.StickyXY();
//}
}
}
/**/
var scrollclickmuteks=new DodatkiSkrypt.Muteks();
var __event=undefined;
/**/
DodatkiSkrypt.StronaStart.UstawScrollTop=function(){
return $(document).DodatkiSkryptReady(function(){
return $(document).DodatkiSkryptReady(function(){
var height_sticky=0;
$('html.client-js.vector-sticky-header-enabled body.skin-vector-search-vue.vector-sticky-header-visible div.vector-sticky-header, html.client-js body.skin-timeless #mw-header-container ~ #mw-header-hack').each(function(i,el){
var rect_sticky=el.getBoundingClientRect();
height_sticky=parseInt(rect_sticky.height+rect_sticky.top);
});
var parser_element=document.querySelector('.mw-parser-output');
if(parser_element){
var h_element_str=$(parser_element).find('h1, h2, h3, h4, h5, h6').find('.mw-headline');
for(var i=0;i<h_element_str.length;++i){
var element=h_element_str[i];
var rect_element=element.getBoundingClientRect();
if(rect_element.top>=height_sticky){
window.scrollTop=rect_element.top+window.scrollY-height_sticky;
break;
}
}
}
},null,zmienne.muteks_boksy);
},null,scrollclickmuteks);
}
DodatkiSkrypt.StronaStart.UstawScrollSpisRzeczy=function(){
return $(document).DodatkiSkryptReady(function(){
return $(document).DodatkiSkryptReady(function(){
$('.zaznaczone').each(function(i,element_zaznaczone){
$(element_zaznaczone).parents('strona_spisu_treści, .toc_wykaz, .pierwsza_strona, .toc_spis').each(function(i,element_spis_tresci){
var rect_element_zaznaczone=element_zaznaczone.getBoundingClientRect();
var rect_element_spis_tresci=element_spis_tresci.getBoundingClientRect();
var odleglosc=rect_element_zaznaczone.bottom-rect_element_spis_tresci.top-rect_element_spis_tresci.height;
if(odleglosc>=0){
element_spis_tresci.scrollTop=element_spis_tresci.scrollTop+odleglosc;
}else if(rect_element_zaznaczone.top<rect_element_spis_tresci.top){
//element_spis_tresci.scrollTop=element_spis_tresci.scrollTop+rect_element_zaznaczone.top-rect_element_spis_tresci.top;
};
});
});
},null,zmienne.muteks_boksy);
},null,scrollclickmuteks);
}
DodatkiSkrypt.StronaStart.ZaznaczScrollTOCStronaStart=function(){
return $(document).DodatkiSkryptReady(function(){
return $(document).DodatkiSkryptReady(function(){
return $(document).DodatkiSkryptSetTimeOut(function(){
var event=undefined;
if(__event){
event=__event;
__event=undefined;
}
return DodatkiSkrypt.StronaStart.ZaznaczTOCStronaStart(event);
},25);
},null,zmienne.muteks_boksy).DodatkiSkryptThen(function(){
return DodatkiSkrypt.Boksy.StickyXY();
});
},null,scrollclickmuteks);
}
DodatkiSkrypt.StronaStart.ZaznaczClickTOCStronaStart=function(event){
var promise1=$(document).DodatkiSkryptReady(function(){
return $(document).DodatkiSkryptReady(function(){
return $(document).DodatkiSkryptSetTimeOut(function(){
__event=event;
return DodatkiSkrypt.StronaStart.ZaznaczTOCStronaStart(__event);
},25);
},null,zmienne.muteks_boksy).DodatkiSkryptThen(function(){
return DodatkiSkrypt.Boksy.StickyXY();
});
},null,scrollclickmuteks);
/**/
}
DodatkiSkrypt.StronaStart.PreZaznaczTOCStronaStart=function(){
$(document).DodatkiSkryptReady(function(){
return $(document).DodatkiSkryptReady(function(){
return $(document).DodatkiSkryptSetTimeOut(function(){
return DodatkiSkrypt.StronaStart.ZaznaczTOCStronaStart();
},25);
},null,zmienne.muteks_boksy).DodatkiSkryptThen(function(){
return DodatkiSkrypt.Boksy.StickyXY();
});
},null,scrollclickmuteks);
}
jQuery(document).DodatkiSkryptReady(function(){
/**/
DodatkiSkrypt.StronaStart.UstawScrollTop();
DodatkiSkrypt.StronaStart.PreZaznaczTOCStronaStart();
DodatkiSkrypt.StronaStart.UstawScrollSpisRzeczy();
/**/
$(document).DodatkiSkryptReady(function(){
$('.strona_prawa > .mw-sticky-y ').find('.pierwsza_strona_spis_treści, .kontener_spis_treści').find('> table.spis_treści > tbody > tr:first-child > th:first-child > span > a').each(function(i,element){
var href=element.getAttribute('href');
href=href+";javascript:window.UruchamiaczSkryptowyApi.DodatkiSkrypt().StronaStart.PreZaznaczTOCStronaStart()";
element.setAttribute('href',href);
});
},null,zmienne.muteks_table);
/**/
DodatkiSkrypt.Zdarzenia.ZdarzeniaJavaScript(window,"scroll",'ZaznaczScrollTOCStronaStart',null,DodatkiSkrypt.PodTablicaDodatkiSkrypt(true,'StronaStart'),DodatkiSkrypt.PodTablicaDodatkiSkrypt(false,'StronaStart'));
DodatkiSkrypt.Zdarzenia.ZdarzeniaJavaScript(window,"resize",'ZaznaczScrollTOCStronaStart',null,DodatkiSkrypt.PodTablicaDodatkiSkrypt(true,'StronaStart'),DodatkiSkrypt.PodTablicaDodatkiSkrypt(false,'StronaStart'));
$('.strona_start').find('.główna_strona').find('.strona_prawa .mw-sticky-y, .strona_lewa .mw-sticky-y, .strona_górna .mw-sticky-x, .strona_dolna .mw-sticky-x').find('.kontener_spis_treści > table.spis_treści > tbody > tr:last-child > td > div, .pierwsza_strona_spis_treści > table.spis_treści > tbody > tr:last-child > td > div, .strona_spisu_treści > .toc_wykaz').each(function(i,element){
DodatkiSkrypt.Zdarzenia.ZdarzeniaJavaScript(element,"click",'UstawScrollTop',null,DodatkiSkrypt.PodTablicaDodatkiSkrypt(true,'StronaStart'),DodatkiSkrypt.PodTablicaDodatkiSkrypt(false,'StronaStart'));
DodatkiSkrypt.Zdarzenia.ZdarzeniaJavaScript(element,"click",'ZaznaczClickTOCStronaStart',null,DodatkiSkrypt.PodTablicaDodatkiSkrypt(true,'StronaStart'),DodatkiSkrypt.PodTablicaDodatkiSkrypt(false,'StronaStart'));
DodatkiSkrypt.Zdarzenia.ZdarzeniaJavaScript(element,"click",'UstawScrollSpisRzeczy',null,DodatkiSkrypt.PodTablicaDodatkiSkrypt(true,'StronaStart'),DodatkiSkrypt.PodTablicaDodatkiSkrypt(false,'StronaStart'));
});
});