MediaWiki:Gadget-wikibugs-loader.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)
  • Internet Explorer / Edge: Przytrzymaj Ctrl, jednocześnie klikając Odśwież, lub naciśnij klawisze Ctrl+F5
  • Opera: Naciśnij klawisze Ctrl+F5.
/**
 * Wikibugs loader.
 * See: [[MediaWiki:Gadget-wikibugs-core.js]]
 */
/* global mw, $ */
// <nowiki>

var config = mw.config.get( [
	'wgNamespaceNumber',
	'wgPageName',
] );
/**
 * A name of a page where report link-buttons are.
 */
var reportPage = 'Wikipedia:Zgłoś błąd w artykule';

// basic messages
mw.messages.set( {
	'wikibugs-link': 'Zgłoś błąd',
	'wikibugs-ns0':  ' w artykule',
	'wikibugs-ns5':  ' na stronie',
	'wikibugs-ns6':  ' w pliku',
	'wikibugs-ns10': ' w szablonie',
	'wikibugs-ns14': ' w kategorii',
} );

// make sure both utils and page is ready
$.when( mw.loader.using( [ 'mediawiki.util' ] ), $.ready ).then( function () {
	// 0 (artykuł), 6 (Plik), 10 (Szablon), 14 (Kategoria), 5 (Dyskusja_Wikipedii)
	if (config.wgNamespaceNumber == 0 || config.wgNamespaceNumber == 6
		|| config.wgNamespaceNumber == 5
		|| config.wgNamespaceNumber == 10 || config.wgNamespaceNumber == 14)
	{
		initSidebar(config.wgNamespaceNumber);
		lazyLoad();
	}

	// reportPage = 'Wikipedia:Zgłoś błąd w artykule'; (ns = 4)
	if ( mw.util.getUrl( config.wgPageName ) == mw.util.getUrl( reportPage ) ) {
		initInnerButton();
		lazyLoad();
	}
});

var lazyOpenWindow = function () {
	console.warn('[wikibugs]', 'not loaded before click');
	lazyLoad(true);
}
function lazyLoad(open) {
	mw.loader.using( [ 'ext.gadget.wikibugs-core-lib' ] );
	mw.hook('userjs.wikibugs.loaded').add( function(lazyOpen) {
		// console.log('[wikibugs]', 'loaded before click');
		// replace when loaded
		lazyOpenWindow = lazyOpen;
		if (open) {
			lazyOpen();
		}
	} );
}

/** Init links. */
function initSidebar(ns) {
	// add
	var portletId = mw.config.get( 'skin' ) === 'timeless' ? 'p-pagemisc' : 'p-tb';
	var linkTitle = mw.msg( 'wikibugs-link' ) + ' ' + mw.msg( 'wikibugs-ns' + ns );
	var link = mw.util.addPortletLink( portletId, '#', linkTitle, 'wikibugs-tool-link' );

	// behaviour
	$( link )
		.on( 'click', function ( evt ) {
			evt.preventDefault();
			lazyOpenWindow();
		} )
	;
}
/** Init button(s) in content. */
function initInnerButton() {
	// Link on the report-an-error page itself
	$( '#report-bug-link a' ).on( 'click', function ( evt ) {
		evt.preventDefault();
		lazyOpenWindow();
	} );
}
// </nowiki>