summaryrefslogtreecommitdiff
blob: fc27242a89bdd36ff6730f16712f546917c90228 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
'use strict';
/* eslint-disable no-implicit-globals */

/*!
 * @author Santhosh Thottingal
 * @author Niklas Laxström
 * @license GPL-2.0-or-later
 */

var LanguagesMultiselectWidget = require( './LanguagesMultiselectWidget.js' );

// Needed for OOUI :(
window.LanguagesMultiselectWidget = LanguagesMultiselectWidget;

function configureLanguageInput( $form, $widget ) {
	var widget, $input;

	/** @type {LanguagesMultiselectWidget} */
	widget = OO.ui.infuse( $widget, { api: new mw.Api() } );

	$input = $( '<input>' ).prop( {
		type: 'hidden',
		name: 'prioritylangs',
		value: widget.getValue()
	} );

	$form.prepend( $input );
	widget.on( 'change', function () {
		$input.val( widget.getValue() );
	} );
}

function configurePostLinks( $container ) {
	$container.on( 'click', '.mw-translate-jspost', function ( e ) {
		var params,
			uri = new mw.Uri( e.target.href );

		params = uri.query;
		params.token = mw.user.tokens.get( 'csrfToken' );
		$.post( uri.path, params ).done( function () {
			location.reload();
		} );

		e.preventDefault();
	} );
}

// Init
$( function () {
	var mediaWikiVersion = mw.config.get( 'wgVersion' ),
		$widgets = $( '#mw-translate-SpecialPageTranslation-prioritylangs' );

	configurePostLinks( $( '#mw-content-text' ) );

	if ( $widgets.length ) {
		// On MW 1.34, pre-selected priority languages are not being displayed when using
		// LanguagesMultiselectWidget, which in turn uses MenuTagMultiselectWidget.
		// This could be due to an older version of OOUI.
		// Use a normal textarea and remove the loading input.
		if ( ( /^1\.34\./ ).test( mediaWikiVersion ) ) {
			$widgets.find( '.oo-ui-textInputWidget' ).last().remove();
			return;
		}

		configureLanguageInput( $( '.mw-tpt-sp-markform' ), $widgets );
	}
} );