ميدياويكي:ActivateGadget.js
المظهر
ملاحظة: بعد النشر، أنت قد تحتاج إلى إفراغ الكاش الخاص بمتصفحك لرؤية التغييرات.
- فايرفوكس / سافاري: أمسك Shift أثناء ضغط Reload، أو اضغط على إما Ctrl-F5 أو Ctrl-R (⌘-R على ماك)
- جوجل كروم: اضغط Ctrl-Shift-R (⌘-Shift-R على ماك)
- إنترنت إكسبلورر/إيدج: أمسك Ctrl أثناء ضغط Refresh، أو اضغط Ctrl-F5
- أوبرا: اضغط Ctrl-F5.
/**
* Prompt to activate a given gadget via the "gadgetname" URL param.
*
* @source https://commons.wikimedia.org/wiki/MediaWiki:ActivateGadget.js
* @rev 2023-10-07
* @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: "Yes",
confirmNo: "No",
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.replace('$1', gadgetname)
}).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['*']);
});
}
});
}());