[go: nahoru, domu]

Przejdź do zawartości

Wikipedysta:Nux/legacy/nu-me-nu.js

Z Wikipedii, wolnej encyklopedii

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.
/* ------------------------------------------------------------------------ *\
    Rozwijalne menu w oknie edycji nu-me-nu

	Opis:
                http://pl.wikipedia.org/wiki/Wikipedia:Narz%C4%99dzia/Nu-me-nu

    Copyright:  ©2008-2021 Maciej Jaros (pl:User:Nux, en:User:EcceNux)
     Licencja:  GNU General Public License v2
                http://opensource.org/licenses/gpl-license.php
\* ------------------------------------------------------------------------ */
//  wersja:
	var tmp_VERSION = '0.6.0';  // = nu_me_nu.version = nu_me_nu.ver
// ------------------------------------------------------------------------ //

//
// Moduł(y) zewnętrzne
//
if(mw.config.get('wgAction')=='submit' || mw.config.get('wgAction')=='edit')
{
	if ((typeof nuxedtoolkit)!='object')
	{
		importScript('Wikipedysta:Nux/nuxedtoolkit.js');
	}
	mw.hook('userjs.nuxedtoolkit.done').add(function () {
		$(nu_me_nu.init);
	});
}

/* =====================================================
	Object Init
   ===================================================== */
if (nu_me_nu!==undefined)
{
	alert('Błąd krytyczny - konflikt nazw!\n\nJeden ze skryptów używa już nazwy nu_me_nu jako zmienną globalną.');
}
var nu_me_nu = {};
nu_me_nu.ver = nu_me_nu.version = tmp_VERSION;


/* =====================================================
	Domyślne ustawienia
   ===================================================== */
nu_me_nu.settings = {
	'menu_pozycja' : 'left',	// 'right' lub 'left'
	'menu_szerokosc' : '750px',
	'szybkie_chowanie' : true,	// true/false ew. 1/0
	'ukryj_oryginal' : true	// true/false ew. 1/0
};

/* =====================================================
	Function: nu_me_nu.init()

	Funkcja inicjowania menu
   ===================================================== */
nu_me_nu.init = function ()
{
	// jeśli nie ma czego przenieść do menu to szkoda czasu...
	var wikibtns = document.getElementById('editpage-specialchars_userButtons');
	if (!wikibtns) return;

	// pobranie ustawień użytkownika
	if (typeof nu_me_nu_user_settings != 'undefined')
	{
		var u_sets = nu_me_nu_user_settings;
		if (typeof u_sets['menu_pozycja'] != 'undefined')
		{
			nu_me_nu.settings['menu_pozycja'] = (u_sets['menu_pozycja']=='left' ? 'left' : 'right');
		}
		if (typeof u_sets['menu_szerokosc'] != 'undefined')
		{
			nu_me_nu.settings['menu_szerokosc'] = u_sets['menu_szerokosc'];
		}
		if (typeof u_sets['szybkie_chowanie'] != 'undefined')
		{
			nu_me_nu.settings['szybkie_chowanie'] = (u_sets['szybkie_chowanie'] ? true : false);
		}
		if (typeof u_sets['ukryj_oryginal'] != 'undefined')
		{
			nu_me_nu.settings['ukryj_oryginal'] = (u_sets['ukryj_oryginal'] ? true : false);
		}
	}

	// przycisk pokazywania menu
	if (!nu_me_nu.button())
	{
		return;
	}
	// stworzenie menu
	nu_me_nu.menu();
};

/* =====================================================
	Function: nu_me_nu.button()

	Dodaje przycisk menu
   ===================================================== */
nu_me_nu.button = function ()
{
	nuxedtoolkit.prepare();
	var group_el = nuxedtoolkit.addGroup();
	nu_me_nu.elBtns = group_el;
	if (nu_me_nu.settings['menu_pozycja']=='left')
	{
		nu_me_nu.elBtns.style.cssText = "float: left; position:relative";
	}
	else
	{
		nu_me_nu.elBtns.style.cssText = "float: right; position:relative; border-right: 0px none; border-left: 1px solid #ddd; padding-left: 5px; padding-right:0;";
	}

	var btn_attrs = {
		title : 'Menu toolbar (wer. '+nu_me_nu.ver+')',
		alt : "Menu"
	};
	var icons = {
		oldbar : '//upload.wikimedia.org/wikipedia/commons/f/f0/Btn_infotexto.png',
		newbar : '//commons.wikimedia.org/w/thumb.php?f=Accessories-character-map.svg&w=22'
	};
	nuxedtoolkit.addBtn(group_el, 'nu_me_nu.show()', icons, btn_attrs);

	return 1;	// backword compat.
};
/* =====================================================
	Function: nu_me_nu.menu()

	Dodaje element(y) menu
   ===================================================== */
nu_me_nu.menu = function ()
{
	var wikibtns = document.getElementById('editpage-specialchars_userButtons');
	if (!wikibtns) return;
	var nel=document.createElement('div');
	nel.style.cssText = 'position:absolute;'+nu_me_nu.settings['menu_pozycja']+':0px;top:20px;width:'+nu_me_nu.settings['menu_szerokosc']+';'
		+'opacity:.95;'
		+'padding:4px 8px;'
		+'background:#eff; border:1px solid #ccc;'
		+'display:none;'
		+'z-index:1000;'
	;
	if (navigator.userAgent.toLowerCase().indexOf('msie')!=-1)
	{
		nel.style.cssText += 'z-index:5000;filter:alpha(opacity=95);';
	}
	// gromadzenie onlicków
	var onclks = [];
	var onclks_i=0;
	var html = wikibtns.innerHTML.replace(/<a[^>]+>, function(a,onclk)
	{
		// niepotrzebne
		onclk = onclk.replace(/return false;?$/,'');

		// dodanie autoukrywania
		if (nu_me_nu.settings['szybkie_chowanie'])
		{
			onclk += "nu_me_nu.elMenu.style.display='none'";
		}

		onclks[onclks_i++] = onclk;
		return '<a id="nu_me_nu_clk'+(onclks_i-1)+'">';
	});
	nel.innerHTML = html;
	//nel. {nu_me_nu.elMenu.style.display='none'};

	/*
	// bajerek
	nel. Function("nu_me_nu.elMenu.style.opacity='.75'; nu_me_nu.elMenu.style.filter='alpha(opacity=75)'");
	nel. Function("nu_me_nu.elMenu.style.opacity='.45'; nu_me_nu.elMenu.style.filter='alpha(opacity=45)'");
	*/

	// dodanie elementu
	nu_me_nu.elBtns.appendChild(nel);
	nu_me_nu.elMenu = nel;

	// "dopisanie" onlicków
	for (var i=0; i<onclks.length;i++)
	{
		var el = document.getElementById('nu_me_nu_clk'+i);
		if (el)
		{
			el.onclick = new Function (onclks[i]);
		}
		else
		{
			console.warn('nu_me_nu_clk'+i+' - not found!');
		}
	}

	// ukrycie oryginału
	if (nu_me_nu.settings['ukryj_oryginal'])
	{
		wikibtns.style.display = 'none';
	}
};

/* =====================================================
	Function: nu_me_nu.show()

	Funkcja pokazywania menu
   ===================================================== */
nu_me_nu.show = function ()
{
	if (!nu_me_nu.elMenu)
	{
		alert("Menu jest niedostępne.");
	}

	if (nu_me_nu.elMenu.style.display=='none')
	{
		nu_me_nu.elMenu.style.display='block'
		// poprawka nowego toolbara
		if (typeof $ != 'undefined' && typeof $.fn.wikiEditor != 'undefined')
		{
			var nbar = document.getElementById('wikiEditor-ui-toolbar');
			//var secs = getElementsByClassName(nbar, "div", "sections")[0];
			var secs = $("div.sections", nbar)[0];
			secs.style.overflow = 'visible';
		}
	}
	else
	{
		nu_me_nu.elMenu.style.display='none'
	}
};