Przejdź do zawartości

Wikipedysta:Nux/personalizacja.js

Z Wikipedii, wolnej encyklopedii
To jest najnowsza wersja artykułu Wikipedysta:Nux/personalizacja.js edytowana 21:37, 14 lip 2025 przez Nux (dyskusja | edycje).
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)

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.
/* ============================================
	Prywatna personalizacja
	(loaded via global.js)
   ============================================ */
/**
 * Globalna personalizacja.
 * 
 * Ładowane z global.js.
 * 
 * Zobacz też:
 * [[Wikipedysta:Nux/personlizacja-skryptow.js]] -- personalizacja lokalna, dla plwiki.
 */

//
// Ustawienia
//
disableRealTitle = true;


//
// Skrypty lokalne, globalnie
//
// [[Wikipedysta:Nux/mobileViewport.js]]
importScript('pl:User:Nux/mobileViewport.js');

// [[Wikipedysta:Nux/discussionToolsExtend.js]]
importScript('pl:User:Nux/discussionToolsExtend.js');

// [[Wikipedysta:Nux/wikiEditorExtend.js]]
importScript('pl:User:Nux/wikiEditorExtend.js');

//
// Disable VE switch confirmation dialog
//
/*
mw.loader.using('ext.visualEditor.switching').then(function () {

try{

var defaultFunction = mw.libs.ve.SwitchConfirmDialog.prototype.getSetupProcess;

mw.libs.ve.SwitchConfirmDialog.prototype.getSetupProcess = function () {
	// close just after setup
	var switchDialog = this;
	setTimeout(function(){
		switchDialog.close( { action: 'keep' } );
	}, 100);

	// default setup process
	return defaultFunction.apply(this, arguments);
};

}catch(e){console.warn('ve.SwitchConfirmDialog skip fail: ', e)}

});

/*
mw.hook( 've.activationComplete' ).add( function () {
    console.log('test ve.act', mw.libs.ve.SwitchConfirmDialog)
} );
mw.hook( 'wikipage.editform' ).add( function ( $editForm ) {
    console.log('test wikipage.editform', mw.libs.ve.SwitchConfirmDialog)
} );
mw.loader.using( 'mw.libs.ve.SwitchConfirmDialog' ).then( function () {
    console.log('test mw.libs.ve.SwitchConfirmDialog', mw.libs.ve.SwitchConfirmDialog)
} );
// mw.loader.getModuleNames().join('\n')
mw.loader.using( 'ext.visualEditor.ve' ).then( function () {
    console.log('test ve', mw.libs.ve.SwitchConfirmDialog)
} );
mw.loader.using( 'ext.visualEditor.switching' ).then( function () {
    console.log('test switching', mw.libs.ve.SwitchConfirmDialog)
} );
*/

//
// Extra Popups init
//
mw.hook('userjs.popups.completed').add(function(pg){
	if (pg.fn && pg.fn.addTooltip) {
		let addTooltipSafe = function (el) {
			if (el) {
				pg.fn.addTooltip(el);
			}
		};
		addTooltipSafe(document.querySelector('#ca-history a'));
		addTooltipSafe(document.querySelector('#ca-view a'));
	}
});

//
// Fullscreen in edit mode
//
$(function()
{
 try{
  var icon = '//commons.wikimedia.org/w/thumb.php?f=Gnome-view-fullscreen.svg&w=20px';
  var fullEl = document.getElementById('editform');
  if (!fullEl) {
  	return;
  }
  // seem to be required for FF (otherwise background is black for some reason...)
  fullEl.style.backgroundColor = 'white';
  // allows scrolling content
  fullEl.style.overflowY = 'auto';

  var btn = document.createElement('a');
  btn.innerHTML = '<img src ="'+icon+'" alt="fullscreen">';
  btn.style.cssText = 'float: right;';
  
  btn.onclick = function(){
	if (!document.fullscreenElement) {
		fullEl.requestFullscreen();
	} else {
		if (document.exitFullscreen) {
			document.exitFullscreen(); 
		}
	}   
    return false;
  };

  //var btnContainer = fullEl.parentNode;
  //btnContainer.insertBefore(btn, fullEl);
  //fullEl.insertBefore(btn, fullEl.firstChild); // in conflict with extra toolbar
  $(".editOptions").before(btn);

 }catch(e){console.warn('[Fullscreen]', e)}

});

//
// Review on top (oznaczanie do góry)
//
$(function()
{
 if (!$('#mw-fr-submit-accept').prop('disabled'))
  $('#mw-fr-reviewform').appendTo('#contentSub');
});

//
// Editnotice do archiwum
//
if (mw.config.get('wgPageName').indexOf("Dyskusja_wikipedysty:Nux/Archiwum")===0 && mw.config.get('wgAction') === "edit")
{
	jQuery(document).ready(function()
	{
		jQuery('.mw-newarticletext').css('display','none');
		jQuery.ajax({
			url: "http://pl.wikipedia.org/wiki/Dyskusja_wikipedysty:Nux/Archiwum/Editnotice?action=render",
			dataType:'text',
			context: document.getElementById('editnotice-area'),
			success: function(data)
			{
				this.innerHTML = data;
			}
		});
	});
}

//
// Autokorekta
//
window.isAutokorektaAlwaysOn = true;
mw.loader.using("ext.gadget.nuxTBKeys", function()
{
	// aktywuj jeśli nieaktywne
	if (oAutokorekta.getDisablance()) {
		oAutokorekta.setDisablance(false);
		jQuery.cookie("js_oAutokorekta_setup", "on", { expires: 77 });
	}
	
	// rozwijanie linków
	oAutokorekta.addReplacements ({from:'[[CSS]]', to:'[[Kaskadowe arkusze stylów|CSS]]'});
	oAutokorekta.addReplacements ({from:'[[JS]]', to:'[[JavaScript|JS]]'});
	// special chars
	oAutokorekta.addReplacements ({from:'  ', to:'	'});
	oAutokorekta.addReplacements ({from:'&bull', to:'•'});
	oAutokorekta.addReplacements ({from:'(c)', to:'©'});
	// other
	oAutokorekta.addReplacements ({from:'<!--', to:'<!-- -->'});
	oAutokorekta.addReplacements ({from:'--', to:'–'});
	// drugi cudzysłów
	oAutokorekta.addReplacements ({from:'>>', to:'»'});
	oAutokorekta.addReplacements ({from:'<<', to:'«'});
});

//
// OnLoad...
//
$(function()
{
	var el;
	var nel;
	
	(function extraTabsVe(){
		// add VE link (1=talk)
		if ([1].indexOf(mw.config.get('wgNamespaceNumber')) >= 0) {
			var editLink = document.querySelector('#ca-edit a');
			if (editLink) {
				var item = mw.util.addPortletLink('p-views',
					mw.util.getUrl(mw.config.get('wgPageName'), {veaction:'edit'}), 'VE',
					null, null, null,
					'#ca-edit'
				);
				item.classList.add('vector-tab-noicon'); // T321438
			}
		}
	})();

	//
	// Zakładki przestrzeni (Prefixindex)
	//
	(function prefixindexTabs(){
		if (mw.config.get('wgNamespaceNumber')!=-1)
		{
			var els = [];
			switch (mw.config.get('skin'))
			{
				case 'vector-2022':
				case 'vector':
				case 'monobook':
					// els = document.getElementById('ca-talk').parentNode.getElementsByTagName('li');
					var elTalk = document.getElementById('ca-talk');
					if (elTalk) {
						els.push(elTalk.previousElementSibling);
						els.push(elTalk);
					}
				break;
			}
			if (els!==null && els.length)
			{
				var tmp = encodeURIComponent(mw.config.get('wgTitle'));
				var nn = (mw.config.get('wgNamespaceNumber')%2==1) ? mw.config.get('wgNamespaceNumber')-1 : mw.config.get('wgNamespaceNumber');
				var staticEls = [];
				staticEls[0] = els[0];
				staticEls[1] = els[1];
				for (var i=0; i<staticEls.length; i++)
				{
					// tworzenie
					nel = staticEls[i].cloneNode(false);
					if (mw.config.get('wgVersion').indexOf('1.16')===0) {
						nel.innerHTML = '<a href="/w/index.php?title=Special:Prefixindex&namespace='+(nn+i)+'&prefix='+tmp+'"><span>.*</span></a>';
					} else if (mw.config.get('skin').indexOf('vector-202')===0) {	// vector-2022 or later
						nel.innerHTML = '<a href="/w/index.php?title=Special:Prefixindex&namespace='+(nn+i)+'&prefix='+tmp+'">.*</a>';
					} else {
						nel.innerHTML = '<span><a href="/w/index.php?title=Special:Prefixindex&namespace='+(nn+i)+'&prefix='+tmp+'">.*</a></span>';
					}
					// przyklejanie
					staticEls[i].style.marginRight = '0px';
					staticEls[i].style.paddingRight = '0px';
					staticEls[i].style.borderRight = '0px none';
					// wstawianie
					if (staticEls[i] == staticEls[i].parentNode.lastChild)
					{
						staticEls[i].parentNode.appendChild(nel);
					}
					else
					{
						staticEls[i].parentNode.insertBefore(nel, staticEls[i].nextSibling);
					}
				}
			}
		}
	})();

	//
	// Menu górne (podręczne linki)
	// CSS -> Wikipedysta:Nux/vector.css
	//
	(function customMenuItems(){
		/*
		var el = document.getElementById('pt-userpage');
		el.style.cssText = 'font-weight:bold';
		
		var elBefore = document.getElementById('pt-mytalk');
		elBefore.style.cssText = 'font-weight:bold';
		elBefore.firstChild.innerHTML = 'dyskusja';
		
		// item
		nel = document.createElement('li');
		nel.innerHTML = '<a href="http://meta.wikimedia.org/wiki/Help:Variable">meta:var</a>';
		elBefore.parentNode.insertBefore(nel, elBefore);
		*/
		window.nuxCreateArticle = function(defaultTitle) {
			var title = prompt('Create article', defaultTitle);
			var url = '/w/index.php?title='+encodeURIComponent(title)+'&action=edit';
			window.open(url, '_blank');
		};

		var userName = mw.config.get('wgUserName');
		var scriptsSkin = mw.config.get('skin');
		if (scriptsSkin != 'vector-2022') {
			return;
		}
		var items = [
			//'<a href="/w/index.php?title=User:'+ userName +'/todo">todo</a> <a href="/w/index.php?title=User:'+ userName +'/todo&action=edit&section=new">+</a>',
			'<a href="/wiki/Special:Prefixindex/User:'+ userName +'/test">test*</a>',
			'<a href="#js" onclick="nuxCreateArticle(\'User:'+userName+'/test\')">+</a>',
			'<a href="/wiki/User:'+ userName +'" class="me-user pop">🧍&thinsp;'+ userName +'</a>',
			'<a href="/wiki/User_talk:'+ userName +'" class="pop">💬&thinsp;dys.</a>',
			'<a href="/wiki/Special:Prefixindex/User:'+ userName +'/">'+ userName +'/</a>',
			'<a href="/wiki/Special:Prefixindex/User_talk:'+ userName +'/">dys./</a>',
			'<a href="/w/index.php?search=insource%3A%2Fnux%2Fi+intitle%3A%22.js%22+prefix%3AUser%3ANux&ns2=1&ns8=1&ns10=1&ns828=1">search🧍</a>',
			'<a href="/w/index.php?search=insource%3A%2Fnux%2Fi+intitle%3A%22.js%22&profile=advanced&fulltext=1&ns8=1&ns10=1&ns828=1">search⚙️</a>',
			'<a href="/wiki/User:'+ userName +'/common.js?diff=cur" class="pop">c.js</a><a href="/wiki/User:'+ userName +'/common.css" class="pop">c.css</a>',
			'<a href="https://meta.wikimedia.org/wiki/User:'+ userName +'/global.js?diff=cur">g.js</a><a href="https://meta.wikimedia.org/wiki/User:'+ userName +'/global.css">g.css</a>',
		];
		//var container = document.querySelector('.vector-user-links,.vector-menu-content');
		var container = document.querySelector('.vector-user-links');
		if (!container) {
			console.warn('[customMenuItems]', 'container not found');
			return;
		}
		mw.hook('userjs.nux.personal.customMenuItems.items').fire(items);
		//container = container.parentNode;
		var list = document.createElement('ul');
		list.className = 'nux-links';
		list.style.cssText = 'display:none';
		for (var i=0; i<items.length; i++) {
			var html = items[i];
			var nel = document.createElement('li');
			nel.innerHTML = html;
			list.appendChild(nel);
		}
		container.appendChild(list);
		//console.log('[customMenuItems] done', list);
		mw.hook('userjs.nux.personal.customMenuItems.done').fire(container, list);
		
		// popups
		mw.hook('userjs.popups.completed').add(function(pg){
			var anchors = container.querySelectorAll('a.pop');
			if (anchors.length) {
				anchors.forEach(function(anchor){
					pg.fn.addTooltip(anchor);
				});
			}
		});
		
	})();

	//
	// Przyciski własne do opisu zmian i skróty wstawialnicze
	// ~tags: opisy zmiany opisów zmian
	// gadżet: [[MediaWiki:Gadget-edit-summaries.js]]
	//
	mw.hook('userjs.przyciskiOpis.gotowe').add(function (przyciski, opisBtns) {
		przyciski.zmiana({tekst:'tł.', zmiana:'tłumaczenie', 
			dlugie:'Tłumaczenie'});
		przyciski.zmiana({tekst:'arch.', zmiana:'archiwizacja', 
			dlugie:'Archiwizacja'});
		przyciski.zmiana({tekst:'arch++', zmiana:'archiwizacja++', 
			dlugie:'Nowa strona lub sekcja archiwizacji'});
		przyciski.zmiana({tekst:'aktual.', zmiana:'aktualizacja', 
			dlugie:'Wykonano aktualizację'});
		przyciski.zmiana({tekst:'red.', zmiana:'redakcja', 
			dlugie:'Przeredagowanie'});
		przyciski.zmiana({tekst:'wikiflex', zmiana:'wikiflex', 
			dlugie:'Dodano .wikiflex'});
		// tymczasowe
		//przyciski.zmiana({tekst:'#Św2024', zmiana:'#ŚwiątecznaAkcjaEdycyjna2024', dlugie:'Zmiana w ramach akcji Święta2024'});
	});
	
	var el = document.getElementById('edittools_wikimarkup');
	if (el)
	{
		nel = document.createElement('br');
		el.appendChild(nel);
		nel = document.createElement('span');
		if (typeof nu_me_nu === 'object' && nu_me_nu.settings['szybkie_chowanie'])
		{
			nel.innerHTML =
				       "<a onclick=\"nu_me_nu.elMenu.style.display='none'; insertTags('[[Pomoc:Personalizacja#O co chodzi z tym odświeżaniem przeglądarki?|odśwież pamięć przeglądarki]]','','');return false\" href=\"#\">[[odśwież cache]]</a>"
				+"&nbsp;<a onclick=\"nu_me_nu.elMenu.style.display='none'; insertTags('<tt>','</tt>','');return false\" href=\"#\">&lt;tt&gt;&lt;/tt&gt;</a>"
				+"&nbsp;<a onclick=\"nu_me_nu.elMenu.style.display='none'; insertTags('<span style=>','</span>','');return false\" href=\"#\">&lt;span style=&gt;&lt;/span&gt;</a>"
			;
		}
		else
		{
			nel.innerHTML =
				       "<a onclick=\"insertTags('[[Pomoc:Personalizacja#O co chodzi z tym odświeżaniem przeglądarki?|odśwież pamięć przeglądarki]]','','');return false\" href=\"#\">[[odśwież cache]]</a>"
				+"&nbsp;<a onclick=\"insertTags('<tt>','</tt>','');return false\" href=\"#\">&lt;tt&gt;&lt;/tt&gt;</a>"
				+"&nbsp;<a onclick=\"insertTags('<span style=>','</span>','');return false\" href=\"#\">&lt;span style=&gt;&lt;/span&gt;</a>"
			;
		}
		el.appendChild(nel);
	}

	if (document.URL.indexOf("action=edit") > 0 || document.URL.indexOf("action=submit") > 0)
	{
		if ((mw.config.get('wgCanonicalNamespace')=="User_talk" && mw.config.get('wgTitle').indexOf("/")<0) || (mw.config.get('wgPageName').search(/^Wikipedia\:Kawiarenka\/[^/]+$/)!=-1)) 
		{
			var watchCheckbox = document.getElementById('wpWatchthis');
			if (watchCheckbox) {
				watchCheckbox.checked = false;
			}
		}
	}

	//
	// Link do TranslateWiki
	//
	if (mw.config.get('wgPageName').search(/^MediaWiki:[^\.]+$/)!=-1)
	{
		var a = document.createElement('a');
		a.href = 'http://translatewiki.net/wiki/'+mw.config.get('wgPageName')+'/pl';
		a.innerHTML = '[tr]';
		a.style.cssText = 'font-size:80%; margin:.2em .5em';
		try
		{
			document.getElementById('firstHeading').appendChild(a);
		}
		catch(e) {}
	}
});

// Move tools
$(function(){
	let spec, menu;
	// strony specjalne z tools to main
	spec = document.querySelector('#vector-page-tools #t-specialpages');
	//spec = document.querySelector('#t-specialpages');
	if (spec) {
		menu = [...document.querySelectorAll('#vector-main-menu .mw-portlet ul')].pop();
		menu.appendChild(spec)
	}
});

// ToC filter
// [[phab:T391610]]
mw.loader.load("https://pl.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&smaxage=21600&maxage=86400&title=Wikipedysta:Nux/TocViewFilter.js");