MediaWiki:Gadget-topLangLinks.js: различия между версиями[править введение]

Материал из Minecraft Wiki
Перейти к навигации Перейти к поиску
Содержимое добавлено Содержимое удалено
(Новая страница: «mw.loader.using( [ 'mcw.messages', //'mediawiki.api', 'mediawiki.language', 'mediawiki.jqueryMsg', 'oojs-ui-widgets', 'oojs-ui.styles.icons-editing-advanced' ] ).then( function() {→‎// mcw.messages loads these messages return new mw.Api().loadMessagesIfMissing( [ 'vector-language-button-label', 'otherlanguages', 'pipe-separator' ] ); } ).then( function() {: var links = $('#p-lang .interlanguage-link a.interlanguage-link-target'); if ( !lin...»)
 
(Update from main using #Synchronizer)
 
Строка 1: Строка 1:
mw.loader.using( [
mw.loader.using( [
'mcw.messages',
'mcw.messages',
//'mediawiki.api',
// 'mediawiki.api',
'mediawiki.language',
'mediawiki.language',
'mediawiki.jqueryMsg',
'mediawiki.jqueryMsg',
'oojs-ui-widgets',
'oojs-ui-widgets',
'oojs-ui.styles.icons-editing-advanced'
'oojs-ui.styles.icons-editing-advanced'
] ).then( function() {/*
] )/*.then( function() {
// Load the system messages needed for the UI using `mediawiki.api`.
// mcw.messages loads these messages
// This is expensive for the server since this gadget is run on every visit.
// To save bandwidth, we're using `mcw.messages` to pre-load them instead.
// Alternatively, the messages can be hardcoded here before loading.
// Here's what that looks like for English:
mw.messages.set('vector-language-button-label', '{{PLURAL:$1|$1 language|$1 languages}}');
mw.messages.set('otherlanguages', 'In other languages');
mw.messages.set('pipe-separator', ' | ');

return new mw.Api().loadMessagesIfMissing( [
return new mw.Api().loadMessagesIfMissing( [
'vector-language-button-label',
'vector-language-button-label',
'otherlanguages',
'otherlanguages',
'pipe-separator'
'pipe-separator'
] );
], {
requestid: 'gadget-topLangLinks'
} ).then( function() {*/
} );
} )*/.then( function() {
var links = $('#p-lang .interlanguage-link a.interlanguage-link-target');
var links = $('#p-lang .interlanguage-link a.interlanguage-link-target');
if ( !links.length ) return;
if ( !links.length ) return;
Строка 73: Строка 84:
suggestWidget = buttonWidget.$element.clone()
suggestWidget = buttonWidget.$element.clone()
.attr('id', 'p-lang-suggest')
.attr('id', 'p-lang-suggest')
.css('margin-right', '0')
.css('margin-right', '0');
suggestWidget.find('a').css('width', '');
suggestWidget.find('a').css('width', '');
var pipe = $('<span>').text(mw.msg('pipe-separator'));
var pipe = $('<span>').text(mw.msg('pipe-separator'))
.css('user-select', 'none');
suggestWidget = suggestWidget.add(pipe);
suggestWidget = suggestWidget.add(pipe);
}
}

Текущая версия от 10:49, 14 ноября 2024

mw.loader.using( [
	'mcw.messages',
	// 'mediawiki.api',
	'mediawiki.language',
	'mediawiki.jqueryMsg',
	'oojs-ui-widgets',
	'oojs-ui.styles.icons-editing-advanced'
] )/*.then( function() {
	// Load the system messages needed for the UI using `mediawiki.api`.
	// This is expensive for the server since this gadget is run on every visit.
	// To save bandwidth, we're using `mcw.messages` to pre-load them instead.
	
	// Alternatively, the messages can be hardcoded here before loading.
	// Here's what that looks like for English:
	mw.messages.set('vector-language-button-label', '{{PLURAL:$1|$1 language|$1 languages}}');
	mw.messages.set('otherlanguages', 'In other languages');
	mw.messages.set('pipe-separator', ' | ');

	return new mw.Api().loadMessagesIfMissing( [
		'vector-language-button-label',
		'otherlanguages',
		'pipe-separator'
	], {
		requestid: 'gadget-topLangLinks'
	} );
} )*/.then( function() {
	var links = $('#p-lang .interlanguage-link a.interlanguage-link-target');
	if ( !links.length ) return;
	var config = mw.config.get( [
		'wgUserId',
		'wgUserLanguage',
		'wgContentLanguage'
	] );
	var languages = navigator.languages.slice();
	if ( config.wgUserId && config.wgUserLanguage !== config.wgContentLanguage ) {
		languages.unshift( config.wgUserLanguage );
	}
	var lang = languages.map( function(lang) {
		return lang.split('-')[0];
	} ).find( function(lang) {
		if ( lang === config.wgContentLanguage ) {
			return true;
		}
		return links.is( function() {
			return this.lang === lang;
		} );
	} );
	var suggestWidget;
	var popupWidget = new OO.ui.PopupButtonWidget( {
		framed: false,
		flags: ['progressive'],
		icon: 'translation',
		indicator: 'down',
		id: 'p-lang-btn',
		title: mw.msg('otherlanguages'),
		label: mw.msg(
			'vector-language-button-label',
			mw.language.convertNumber(links.length)
		),
		popup: {
			$content: $('<ul>').css( {
				'list-style': 'none',
				margin: '0'
			} ).append(
				links.map( function() {
					var buttonWidget = new OO.ui.ButtonWidget( {
						framed: false,
						flags: ['progressive'],
						title: this.title,
						label: this.text,
						href: this.href,
						rel: 'alternate',
						classes: [
							'interlanguage-link',
							'interwiki-' + this.lang
						]
					} );
					buttonWidget.$element.find('a')
						.addClass('interlanguage-link-target')
						.attr('hreflang', this.hreflang)
						.attr('lang', this.lang)
						.css('width', '140px');
					if ( lang === this.lang ) {
						suggestWidget = buttonWidget.$element.clone()
							.attr('id', 'p-lang-suggest')
							.css('margin-right', '0');
						suggestWidget.find('a').css('width', '');
						var pipe = $('<span>').text(mw.msg('pipe-separator'))
							.css('user-select', 'none');
						suggestWidget = suggestWidget.add(pipe);
					}
					return $('<li>')
						.css('margin', '0 0 0 6px')
						.append( buttonWidget.$element );
				} ).get()
			),
			anchor: false,
			width: 140,
			id: 'p-lang-btn-popup'
		}
	} );
	$('<div>').addClass('mw-indicator')
		.attr('id', 'mw-indicator-lang')
		.append( suggestWidget, popupWidget.$element )
		.prependTo('.mw-indicators');
} );