MediaWiki:Gadget-mylanguages.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.
// Script to move certain languages to the top of interwiki list and bold them.
// CC-BY-SA 3.0, [[w:pl:User:Matma Rex]]

mw.loader.using('ext.gadget.gConfig', function() {
	// Languages to display separate config items for
	var topLanguages = [
		'en', 'simple', 'de', 'ru', 'fr', 'es', // top 5 + simple
		'cs', 'sk', 'uk', 'be', 'lt', // sąsiedzi
		'szl', 'csb' // prawie jak polski ;)
	];

	// Messages
	if(mw.config.get('wgUserLanguage') === 'pl') {
		mw.messages.set( {
			'mylanguages-name': 'Moje języki',
			'mylanguages-language-be': 'białoruski (be)',
			'mylanguages-language-cs': 'czeski (cs)',
			'mylanguages-language-csb': 'kaszubski (csb)',
			'mylanguages-language-de': 'niemiecki (de)',
			'mylanguages-language-en': 'angielski (en)',
			'mylanguages-language-es': 'hiszpański (es)',
			'mylanguages-language-fr': 'francuski (fr)',
			'mylanguages-language-lt': 'litewski (lt)',
			'mylanguages-language-pl': 'polski (pl)',
			'mylanguages-language-ru': 'rosyjski (ru)',
			'mylanguages-language-simple': 'angielski uproszczony (simple)',
			'mylanguages-language-sk': 'słowacki (sk)',
			'mylanguages-language-szl': 'śląski (szl)',
			'mylanguages-language-uk': 'ukraiński (uk)',
			'mylanguages-language-additional': 'Dodatkowe języki (wpisz kody, oddzielając przecinkami)'
		} );
	} else {
		mw.messages.set( {
			'mylanguages-name': 'My languages',
			'mylanguages-language-be': 'Belarusian (be)',
			'mylanguages-language-cs': 'Czech (cs)',
			'mylanguages-language-csb': 'Kashubian (csb)',
			'mylanguages-language-de': 'German (de)',
			'mylanguages-language-en': 'English (en)',
			'mylanguages-language-es': 'Spanish (es)',
			'mylanguages-language-fr': 'French (fr)',
			'mylanguages-language-lt': 'Lithuanian (lt)',
			'mylanguages-language-pl': 'Polish (pl)',
			'mylanguages-language-ru': 'Russian (ru)',
			'mylanguages-language-simple': 'Simple English (simple)',
			'mylanguages-language-sk': 'Slovak (sk)',
			'mylanguages-language-szl': 'Silesian (szl)',
			'mylanguages-language-uk': 'Ukrainian (uk)',
			'mylanguages-language-additional': 'Dodatkowe języki (wpisz kody, oddzielając przecinkami)'
		} );
	}
	
	// Migrate settings from https://pl.wikipedia.org/wiki/Wikipedysta:Lampak/MyLanguages.js
	var legacyBuddy = {};
	legacyBuddy.additional = [];
	if(window.mylangsArray) {
		for(var i=0; i<mylangsArray.length; i++) {
			var lang = mylangsArray[i];
			legacyBuddy[lang] = true;
			if(topLanguages.indexOf(lang) == -1)
				legacyBuddy.additional.push(lang);
		}
	}
	legacyBuddy.additional = legacyBuddy.additional.join(', ');
	if(legacyBuddy.additional === '') delete legacyBuddy.additional;
	
	// Define settings
	function buildOptionItemFor(lang) {
		return {
			name: 'language-'+lang,
			desc: mw.msg('mylanguages-language-'+lang),
			type: 'boolean',
			legacy: [legacyBuddy, lang],
			deflt: false
		};
	}
	gConfig.register(
		'mylanguages',
		mw.msg('mylanguages-name'),
		topLanguages.map(buildOptionItemFor).concat({
			name: 'language-additional',
			desc: mw.msg('mylanguages-language-additional'),
			type: 'string',
			legacy: [legacyBuddy, 'additional'],
			deflt: ''
		})
	);
	
	// The real stuff at last
	// Build the list of items to move to top
	var moveToTop;
	moveToTop = topLanguages.filter(function(lang) {
		return gConfig.get('mylanguages', 'language-'+lang);
	});
	moveToTop = moveToTop.concat(
		gConfig.get('mylanguages', 'language-additional').split(/\s*,\s*/).map(function(lang) {
			// Sanitize potentially arbitrary data
			return lang.replace(/[^a-z-]/g, '');
		})
	);

	var selector = moveToTop.map(function(lang){ return 'li.interwiki-'+lang; }).join(', ');
	$(selector).prependTo('#p-lang ul').css('font-weight', 'bold');
});