Wikipedysta:Persino/Gadget-DodatkiSkrypt3.js/Nawigacja.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.
/** Collapsible tables *********************************************************
	*
	*  Description: Allows tables to be collapsed, showing only the header. See
	*               [[en:Wikipedia:NavFrame]].
	*  Maintainers: [[User:R. Koot]]
**/
DodatkiSkrypt.Nawigacja=new Array();

var autoCollapse = 2;
var collapseCaption = "ukryj";
var expandCaption = "pokaż";

zmienne.muteks_table=new DodatkiSkrypt.Muteks();
zmienne.muteks_table_collapseTable=new DodatkiSkrypt.Muteks();
DodatkiSkrypt.Nawigacja.collapseTable=function( tableIndex,nieusuwanie_cookie,czy_nie_pokazac_element_bez_cookie)
{
	return $(document).DodatkiSkryptReady(function(){
    	return DodatkiSkrypt.Libre.Zmienne["CzekajNaZbiórZmiennych"](DodatkiSkrypt.Info,new Array("page")).DodatkiSkryptThen(function(){
			var Button = document.getElementById( "collapseButton" + tableIndex );
    		var Table = document.getElementById( "collapsibleTable" + tableIndex );

    		if ( !Table || !Button ) {
        		return false;
    		}

			var strona=DodatkiSkrypt.Info.page.fullname;
			var mw_menu_boksy=DodatkiSkrypt.DodatkiSkryptUserOption.get('mw-menu-nawigacja-table-strona:'+strona+"-numer:"+tableIndex,"Nawigacja-Pudełka");
			var mw_menu_automat=DodatkiSkrypt.DodatkiSkryptUserOption.get('mw-menu-nawigacja-table-automat-strona:'+strona+"-numer:"+tableIndex,"Nawigacja-Pudełka");
			return Promise.all([mw_menu_boksy,mw_menu_automat]).DodatkiSkryptThen(function(data){
				var mw_menu_boksy=data[0];var mw_menu_automat=data[1];
				var czy_ukryc=undefined;
				if((mw_menu_boksy)&&(mw_menu_boksy!="")){
					if(!nieusuwanie_cookie){
						DodatkiSkrypt.DodatkiSkryptUserOption.set('mw-menu-nawigacja-table-strona:'+strona+"-numer:"+tableIndex,"","Nawigacja-Pudełka");
						czy_ukryc=true;
						Table.setAttribute("expand-table","false");
					}else{
						czy_ukryc=false;
						Table.setAttribute("expand-table","true");
					}
				}else if((typeof(czy_nie_pokazac_element_bez_cookie)=="boolean")&&((!mw_menu_automat)||(mw_menu_automat==""))){
					DodatkiSkrypt.DodatkiSkryptUserOption.set('mw-menu-nawigacja-table-automat-strona:'+strona+"-numer:"+tableIndex,"true","Nawigacja-Pudełka");
					if(czy_nie_pokazac_element_bez_cookie){
						czy_ukryc=true;
						Table.setAttribute("expand-table","false");
						DodatkiSkrypt.DodatkiSkryptUserOption.set('mw-menu-nawigacja-table-strona:'+strona+"-numer:"+tableIndex,"","Nawigacja-Pudełka");
					}else{
						czy_ukryc=false;
						Table.setAttribute("expand-table","true");
						DodatkiSkrypt.DodatkiSkryptUserOption.set('mw-menu-nawigacja-table-strona:'+strona+"-numer:"+tableIndex,"true","Nawigacja-Pudełka");
					}
				}else{
					if(!nieusuwanie_cookie){
						DodatkiSkrypt.DodatkiSkryptUserOption.set('mw-menu-nawigacja-table-strona:'+strona+"-numer:"+tableIndex,"true","Nawigacja-Pudełka");
						czy_ukryc=false;
						Table.setAttribute("expand-table","true");
					}else{
						czy_ukryc=true;
						Table.setAttribute("expand-table","false");
					}
				}
    			var Rows = Table.rows;

    			if ( czy_ukryc ) {
        			for ( var i = 1; i < Rows.length; i++ ) {
            			Rows[i].style.display = "none";
        			}
        			Button.firstChild.data = expandCaption;
    			} else {
        			for ( var i = 1; i < Rows.length; i++ ) {
            			Rows[i].style.display = Rows[0].style.display;
        			}
        			Button.firstChild.data = collapseCaption;
    			}
			});
    	});
	},null,zmienne.muteks_table_collapseTable);
}

DodatkiSkrypt.Nawigacja.createCollapseButtons=function()
{
	$(document).DodatkiSkryptReady(function(){
    	return DodatkiSkrypt.Libre.Zmienne["CzekajNaZbiórZmiennych"](DodatkiSkrypt.Info,new Array("page")).DodatkiSkryptThen(function(){
    		var strona=DodatkiSkrypt.Info.page.fullname;
    		var tableIndex = 0;
    		var NavigationBoxes = new Object();
    		var Tables = $('#mw-content-text .mw-parser-output').find( "table" );

			var tab_promise=new Array();
			var muteks_boksy_temp=new DodatkiSkrypt.Muteks();
    		for ( var i = 0; i < Tables.length; i++ ) {
    			(function(i){
    			  tab_promise.push($(document).DodatkiSkryptReady(function(){
        			if ( $(Tables[i]).hasClass( "collapsible" ) ) {

            			/* only add button and increment count if there is a header row to work with */
            			var HeaderRow = Tables[i].getElementsByTagName( "tr" )[0];
            			if (!HeaderRow) return;
            			var Header = HeaderRow.getElementsByTagName( "th" )[0];
            			if (!Header) return;

            			NavigationBoxes[ tableIndex ] = Tables[i];
            			Tables[i].setAttribute( "id", "collapsibleTable" + tableIndex );

          					var mw_menu_boksy=DodatkiSkrypt.DodatkiSkryptUserOption.get('mw-menu-nawigacja-table-strona:'+strona+"-numer:"+tableIndex,"Nawigacja-Pudełka");
          					return mw_menu_boksy.DodatkiSkryptThen(function(mw_menu_boksy){
            					var komunikat=undefined;
								if((mw_menu_boksy)&&(mw_menu_boksy!="")){
									komunikat=collapseCaption;
								}else{
									komunikat=expandCaption;
								}

            					var Button     = document.createElement( "span" );
            					var ButtonLink = document.createElement( "a" );
            					var ButtonText = document.createTextNode( komunikat/*collapseCaption */);

            					Button.style.styleFloat = "right";
            					Button.style.cssFloat = "right";
            					Button.style.fontWeight = "normal";
            					Button.style.textAlign = "right";
            					Button.style.width = "6em";

            					ButtonLink.style.color = Header.style.color;
            					ButtonLink.setAttribute( "id", "collapseButton" + tableIndex );
            					ButtonLink.setAttribute( "href", "javascript:window.UruchamiaczSkryptowyApi.DodatkiSkrypt().Nawigacja.collapseTable(" + tableIndex + ");" );
            					ButtonLink.appendChild( ButtonText );

            					Button.appendChild( document.createTextNode( "[" ) );
            					Button.appendChild( ButtonLink );
            					Button.appendChild( document.createTextNode( "]" ) );
           
            					$(Header.childNodes[0]).has('a#collapseButton' + tableIndex).each(function(i,element){
            						$(element).remove();
            					});
           
            					Header.insertBefore( Button, Header.childNodes[0]);
            
            					tableIndex++;
          					});
        				}
          			},null,muteks_boksy_temp));
        		})(i);
    		}
			tab_promise.push($(document).DodatkiSkryptReady(function(){
    			for ( var i = 0;  i < tableIndex; i++ ) {
        			var czy_ukryc=($(NavigationBoxes[i]).hasClass( "collapsed" ) || ( tableIndex >= autoCollapse && $(NavigationBoxes[i]).hasClass( "autocollapse" )));
            		tab_promise.push(DodatkiSkrypt.Nawigacja.collapseTable( i, true,czy_ukryc));
        			var czy_inner=$(NavigationBoxes[i]).hasClass( "innercollapse" );
        			if(czy_inner){
            			var element = NavigationBoxes[i];
            			while (element = element.parentNode) {
                			var czy_outer=$(element).hasClass( "outercollapse" );
                			if(czy_outer){
                    			tab_promise.push(DodatkiSkrypt.Nawigacja.collapseTable ( i,true,czy_ukryc));
                    			break;
                			}
            			}
        			}
    			}
			},null,muteks_boksy_temp));
			return Promise.all(tab_promise);
    	});
	},null,zmienne.muteks_table);
}

DodatkiSkrypt.Nawigacja.createCollapseButtons();


/** Dynamic Navigation Bars (experimental) *************************************
*
*  Description: See [[Wikipedia:NavFrame]].
*  Maintainers: UNMAINTAINED
*/

// set up the words in your language
var NavigationBarHide = '[' + collapseCaption + ']';
var NavigationBarShow = '[' + expandCaption + ']';

zmienne.muteks_div=new DodatkiSkrypt.Muteks();
zmienne.muteks_div_toggleNavigationBar=new DodatkiSkrypt.Muteks();
// shows and hides content and picture (if available) of navigation bars
// Parameters:
//     indexNavigationBar: the index of navigation bar to be toggled
DodatkiSkrypt.Nawigacja.toggleNavigationBar=function(indexNavigationBar,nieusuwanie_cookie,czy_pokazac_element_bez_cookie)
{
	return $(document).DodatkiSkryptReady(function(){
    	return DodatkiSkrypt.Libre.Zmienne["CzekajNaZbiórZmiennych"](DodatkiSkrypt.Info,new Array("page")).DodatkiSkryptThen(function(){
    		var NavToggle = document.getElementById("NavToggle" + indexNavigationBar);
			var NavFrame = document.getElementById("NavFrame" + indexNavigationBar);

    		if (!NavFrame || !NavToggle) {
        		return false;
			}

			var strona=DodatkiSkrypt.Info.page.fullname;
			var mw_menu_boksy=DodatkiSkrypt.DodatkiSkryptUserOption.get('mw-menu-nawigacja-div-strona:'+strona+"-numer:"+indexNavigationBar,"Nawigacja-Pudełka");
			var mw_menu_automat=DodatkiSkrypt.DodatkiSkryptUserOption.get('mw-menu-nawigacja-div-automat-strona:'+strona+"-numer:"+indexNavigationBar,"Nawigacja-Pudełka");
			return Promise.all([mw_menu_boksy,mw_menu_automat]).DodatkiSkryptThen(function(data){
				var mw_menu_boksy=data[0];var mw_menu_automat=data[1];
				var czy_ukryc=undefined;
				if((mw_menu_boksy)&&(mw_menu_boksy!="")){
					if(!nieusuwanie_cookie){
						DodatkiSkrypt.DodatkiSkryptUserOption.set('mw-menu-nawigacja-div-strona:'+strona+"-numer:"+indexNavigationBar,"","Nawigacja-Pudełka");
						czy_ukryc=true;
						NavFrame.setAttribute("expand-div","false");
					}else{
						czy_ukryc=false;
						NavFrame.setAttribute("expand-div","true");
					}
				}else if((typeof(czy_pokazac_element_bez_cookie)=="boolean")&&((!mw_menu_automat)||(mw_menu_automat==""))){
					DodatkiSkrypt.DodatkiSkryptUserOption.set('mw-menu-nawigacja-div-automat-strona:'+strona+"-numer:"+indexNavigationBar,"true","Nawigacja-Pudełka");
					if(czy_pokazac_element_bez_cookie){
						czy_ukryc=true;
						NavFrame.setAttribute("expand-div","true");
						DodatkiSkrypt.DodatkiSkryptUserOption.set('mw-menu-nawigacja-div-strona:'+strona+"-numer:"+indexNavigationBar,"","Nawigacja-Pudełka");
					}else{
						czy_ukryc=false;
						NavFrame.setAttribute("expand-div","false");
						DodatkiSkrypt.DodatkiSkryptUserOption.set('mw-menu-nawigacja-div-strona:'+strona+"-numer:"+indexNavigationBar,"true","Nawigacja-Pudełka");
					}
				}else{
					if(!nieusuwanie_cookie){
						DodatkiSkrypt.DodatkiSkryptUserOption.set('mw-menu-nawigacja-div-strona:'+strona+"-numer:"+indexNavigationBar,"true","Nawigacja-Pudełka");
						czy_ukryc=false;
						NavFrame.setAttribute("expand-div","true");
					}else{
						czy_ukryc=true;
						NavFrame.setAttribute("expand-div","false");
					}
				}
				// if shown now
    			if (czy_ukryc) {
        			for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
            			if ( $(NavChild).hasClass( 'NavPic' ) ) {
                			NavChild.style.display = 'none';
            			}
            			if ( $(NavChild).hasClass( 'NavContent') ) {
                			NavChild.style.display = 'none';
	            		}
    	    		}
    				NavToggle.firstChild.data = NavigationBarShow;

    				// if hidden now
    			} else{
        			for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
            			if ($(NavChild).hasClass( 'NavPic')) {
                			NavChild.style.display = 'block';
            			}
    	        		if ($(NavChild).hasClass( 'NavContent')) {
        	        		NavChild.style.display = 'block';
            			}
        			}
        			NavToggle.firstChild.data = NavigationBarHide;
    			}
			});
    	});
	},null,zmienne.muteks_div_toggleNavigationBar);
}

// adds show/hide-button to navigation bars
DodatkiSkrypt.Nawigacja.createNavigationBarToggleButton=function()
{
	return $(document).DodatkiSkryptReady(function(){
    	return DodatkiSkrypt.Libre.Zmienne["CzekajNaZbiórZmiennych"](DodatkiSkrypt.Info,new Array("page")).DodatkiSkryptThen(function(){
    		var strona=DodatkiSkrypt.Info.page.fullname;
    		/**/
			var indexNavigationBar = 0;
    		// iterate over all < div >-elements 
    		var muteks_div_temp=new DodatkiSkrypt.Muteks();
    		var tab_promise=new Array();
    		var divs = $('#mw-content-text .mw-parser-output').find("div");
    		for (var i = 0; NavFrame = divs[i]; i++) {
        		// if found a navigation bar
        		(function(i,NavFrame){
        			tab_promise.push($(document).DodatkiSkryptReady(function(){
        				if ($(NavFrame).hasClass( "NavFrame")) {

            				indexNavigationBar++;
	        				var NavToggle = document.createElement("a");
    	    				NavToggle.className = 'NavToggle';
        					NavToggle.setAttribute('id', 'NavToggle' + indexNavigationBar);
            				NavToggle.setAttribute('href', 'javascript:window.UruchamiaczSkryptowyApi.DodatkiSkrypt().Nawigacja.toggleNavigationBar(' + indexNavigationBar + ');');

	        				var isCollapsed = $(NavFrame).hasClass( "collapsed" );
    	    			/*
        					* Check if any children are already hidden.  This loop is here for backwards compatibility:
        					* the old way of making NavFrames start out collapsed was to manually add style="display:none"
	            			* to all the NavPic/NavContent elements.  Since this was bad for accessibility (no way to make
    	        			* the content visible without JavaScript support), the new recommended way is to add the class
        	    			* "collapsed" to the NavFrame itself, just like with collapsible tables.
            			*/
	        				for (var NavChild = NavFrame.firstChild; NavChild != null && !isCollapsed; NavChild = NavChild.nextSibling) {
    	        				if ( $(NavChild).hasClass( 'NavPic' ) || $(NavChild).hasClass( 'NavContent' ) ) {
        	        				if ( NavChild.style.display == 'none' ) {
            	        				isCollapsed = true;
                	    			}	
	            				}
    	    				}
        					/*if (isCollapsed) {
            					for (var NavChild = NavFrame.firstChild; NavChild != null; NavChild = NavChild.nextSibling) {
                					if ( $(NavChild).hasClass( 'NavPic' ) || $(NavChild).hasClass( 'NavContent' ) ) {
                    					NavChild.style.display = 'none';
	                				}
    	        				}
        					}*/
        			
        					var mw_menu_boksy=DodatkiSkrypt.DodatkiSkryptUserOption.get('mw-menu-nawigacja-div-strona:'+strona+"-numer:"+indexNavigationBar,"Nawigacja-Pudełka");
        					return mw_menu_boksy.DodatkiSkryptThen(function(mw_menu_boksy){
            					var komunikat=undefined;
								if((mw_menu_boksy)&&(mw_menu_boksy!="")){
									komunikat=NavigationBarHide;
								}else{
									komunikat=isCollapsed?NavigationBarShow:NavigationBarHide;
								}
        			
	        					var NavToggleText = document.createTextNode(komunikat);
            
    	    					NavToggle.appendChild(NavToggleText);
					
        						// Find the NavHead and attach the toggle link (Must be this complicated because Moz's firstChild handling is borked)
            					for(var j=0; j < NavFrame.childNodes.length; j++) {
                					if ($(NavFrame.childNodes[j]).hasClass( "NavHead")) {
            		
                						$(NavFrame.childNodes[j]).children('a.NavToggle#NavToggle' + indexNavigationBar).each(function(i,element){
            								$(element).remove();
	            						});
            
    	                				NavFrame.childNodes[j].appendChild(NavToggle);
        	        				}
            					}
            					NavFrame.setAttribute('id', 'NavFrame' + indexNavigationBar);
            					/**/
            					DodatkiSkrypt.Nawigacja.toggleNavigationBar(indexNavigationBar,true,isCollapsed);
            					//indexNavigationBar++;
        					});
        				};
        			},null,muteks_div_temp));
        		})(i,NavFrame);
    		}
    		return Promise.all(tab_promise);
    	});
	},null,zmienne.muteks_div);
}

DodatkiSkrypt.Nawigacja.createNavigationBarToggleButton();