МедиаУики:ActivateGadget.js

Уикипедия — ашық энциклопедиясынан алынған мәлімет
Навигацияға өту Іздеуге өту

Ескерту: Сақтағаннан кейін өзгерістерді көру үшін браузеріңіздің бүркемесін (кэшін) тазарту керек болуы мүмкін.

  • Firefox / Safari: Қайта жүктеуді нұқығанда  Shift пернесін басып тұрыңыз немесе Ctrl+F5 не Ctrl+ Shift+R екеуінің біреуін басыңыз
    (Mac — +R)
  • Google Chrome: Ctrl+ Shift+R басыңыз (Mac — + Shift+R)
  • Internet Explorer: Жаңарту батырмасын нұқығанда Ctrl пернесін басып тұрыңыз немесе Ctrl+F5 басыңыз, не F5 пернесін басыңыз
  • Opera: Құралдар → Бапталымдар дегеннен бүркемесін тазарту керек.
/**
 * Prompt to activate a given gadget via the "gadgetname" URL param.
 *
 * @source https://commons.wikimedia.org/wiki/MediaWiki:ActivateGadget.js
 * @rev 2023-10-06
 * @author Rillke, 2012
 */
// List the global variables for jsHint-Validation. Please make sure that it passes http://jshint.com/
// Scheme: globalVariable:allowOverwriting[, globalVariable:allowOverwriting][, globalVariable:allowOverwriting]
/*global $:false, mw:false*/

// Set jsHint-options. You should not set forin or undef to false if your script does not validate.
/*jshint forin:true, noarg:true, noempty:true, eqeqeq:true, bitwise:true, strict:true, undef:true, curly:false, browser:true*/

(function() {
	"use strict";

	var i18n = {
		headingAnon: "Гаджетті іске қосу үшін жүйеге кіріңіз «$1»",
		headingDeactivation: "«$2» гаджетін өшіруді құптау",
	    headingActivation: "«$2» гаджетін іске қосуды құптау",
	    alreadyDisabled: "«$1» гаджеті баптауларыңыздан әлдеқашан өшірілген.",
	    alreadyEnabled: "«$1» гаджеті баптауларыңыздан әлдеқашан іске қосылған.",
	    promptDeactive: "Сіз «$2» гаджетін өшіруді қалайсыз ба?",
	    promptActivate: "Сіз «$2» гаджетін іске қосуды қалайсыз ба?",
	    confirmYes: "Иә",
	    confirmNo: "Жоқ",
	    // "Гаджет сәтті $1. Әсерді көру үшін бетті қайта жүктеңіз."
	    success: "Preference saved successfully. Please reload the pages to see any effect.",
	    failed: "Баптауларыңыздан гаджеттің статусы өзгермеді. Қолайсыздық үшін өкінеміз. Баптауларыңызға өтіп қалмен өзгертіңіз.",
	    cancelled: "Броузеріңіздің аддресс жолағында қате URL енгізген сияқтысыз не қате сілтемеге өткенсіз."
	};

	mw.loader.using(['jquery.ui',  'mediawiki.user', 'mediawiki.util', 'ext.gadget.libJQuery', 'ext.gadget.SettingsManager'], function() {
		var gadgetname = mw.util.getParamValue('gadgetname'),
			deactivate = mw.util.getParamValue('disablegadget'),
			gadget = mw.libs.settingsManager.gadget(gadgetname),
			UNUSED_PARAM = $.noop;

		// If the gadgetname URL parameter wasn't supplied, silently fail
		if (!gadgetname) return;

		// Check whether such a gadget exists
		if (null === gadget.getState()) return;

		// Check whether it is already enabled/disabled
		if (deactivate) {
			if (!gadget.isEnabled()) return mw.notify(i18n.alreadyDisabled.replace('$1', gadgetname));
		} else {
			if (gadget.isEnabled()) return mw.notify(i18n.alreadyEnabled.replace('$1', gadgetname));
		}


		var $dlg = $('<div>').hide().appendTo('#mw-content-text');
		if (mw.user.isAnon()) {
			// Ask the user to login
			var logInLink = mw.util.wikiScript() + '?' + $.param({
				title: 'Special:UserLogin',
				uselang: mw.config.get('wgUserLanguage'),
				returnto: mw.config.get('wgPageName')
			});
			$dlg.attr({
				title: i18n.headingAnon
			}).append(
				$('<a>').attr('href', logInLink).text($('#pt-login').text() || 'Login')
			).dialog({
				width: 600
			});
		} else {
			var $aboutGadget = $('<div>').css({
				'min-height': '50px',
				'border': '1px solid grey',
				'padding': '5px'
			});
			$dlg.attr({
				title: (deactivate ? i18n.headingDeactivation : i18n.headingActivation).replace('$2', gadgetname)
			}).text((deactivate ? i18n.promptDeactive : i18n.promptActivate).replace('$2', gadgetname)).append($aboutGadget).dialog({
				width: 600,
				buttons: [
					{ text: i18n.confirmYes, click: function() {
						var $prog = $('<div>').css({
							'height': '50px'
						}).progressbar();
						var action = deactivate ? 'disable' : 'enable';

						$dlg.parent().find('button').button({
							disabled: true
						});
						$dlg.text('').append($prog);
						if (!deactivate) gadget.load();
						gadget[action](function() {
							$prog.progressbar({
								value: 100
							});
							var $successtext = $('<div>').text(i18n.success);
							$dlg.append($successtext);
							$successtext.load(mw.util.wikiScript() + '?' + $.param({
								title: 'Template:Purge_client_cache/render',
								uselang: mw.config.get('wgUserLanguage'),
								action: 'render'
							}));
							setTimeout(function() {
								window.location = mw.util.getUrl(mw.config.get('wgPageName'));
							}, 4500);
						}, function() {
							var $errtext = $('<div>').text(i18n.failed);
							$dlg.append($errtext);
							setTimeout(function() {
								window.location = mw.util.getUrl('Special:Preferences') + '#mw-prefsection-gadgets';
							}, 4500);
						});
					} },
					{ text: i18n.confirmNo, click: function() {
						$dlg.dialog('close');
						$dlg.remove();
						mw.notify(i18n.cancelled);
					} }
				],
				open: function() {
					// Look out for http://bugs.jqueryui.com/ticket/6830 / jQuery UI 1.9
					var $buttons = $(this).parent().find('.ui-dialog-buttonpane button'),
						$submitButton = $buttons.eq(0).specialButton('proceed').focus(),
						$cancelButton = $buttons.eq(1).specialButton('cancel');

					UNUSED_PARAM($submitButton);
					UNUSED_PARAM($cancelButton);
				}
			});
			$.get(mw.util.wikiScript('api'), {
				format: 'json',
				action: 'parse',
				title: mw.config.get('wgPageName'),
				redirects: 1,
				prop: 'text',
				uselang: mw.config.get('wgUserLanguage'),
				text: '{{int:Gadget-' + gadgetname + '}}'
			}, function(r) {
				$aboutGadget.append(r.parse.text['*']);
			});
		}
	});
}());