مدیاویکی:Gadget-RedirectMaker.js
نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
- فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلیدهای Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-R)
- گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-Shift-R)
- اینترنت اکسپلورر/ Edge: کلید Ctrl را نگهدارید و روی دکمهٔ Refresh کلیک کنید، یا کلیدهای Ctrl-F5 را با هم فشار دهید
- اپرا: Ctrl-F5 را بفشارید.
// <nowiki> // DO NOT REMOVE THIS LINE EVER
/*jslint browser: true, white: true*/
/*global mediaWiki, jQuery*/
/*!
* @author User:Ebraminio, User:Yamaha5
*/
(function ($, mw) {
'use strict';
function createPage(title, text, summary, callback) {
return new mw.Api().post({
action: 'edit',
title: title,
text: text,
summary: summary,
createonly: '',
minor: '',
token: mw.user.tokens.get('editToken')
}).then(
function (data) {
if (data.error && data.error.info) {
mw.notify(title + ' انجام نشد: ' + data.error.info);
} else {
callback();
}
return data;
},
function (data) {
mw.notify(title + ' انجام نشد: ' + data);
return data;
}
);
}
function startRedirect(redirect, dest) {
return createPage(
redirect,
'#تغییرمسیر [[' + dest + ']]',
'ایجاد تغییرمسیر برای [[' + dest + ']] (ابزار تغییرمسیرساز)',
function () {
mw.notify('ایجاد ' + redirect + ' با موفقیت انجام شد.');
}
);
}
// Make button by namespace
function makeButton() {
var namespaces = {
0: "",
2: "کاربر:",
4: ["وپ:", "ویکی\u200cپدیا:"],
6: "پرونده:",
8: "مدیاویکی:",
10: "الگو:",
12: "راهنما:",
14: "رده:",
100: "درگاه:",
102: "کتاب:",
446: "برنامه آموزشی:",
828: "پودمان:"
};
var append = "@";
var buttonText = "@";
var ns = mw.config.get("wgNamespaceNumber");
if (typeof namespaces[ns] === "object") {
append = namespaces[ns][0] + "@" + namespaces[ns][1] + mw.config.get("wgTitle");
buttonText = namespaces[ns][0] + "@اینجا";
} else if (typeof namespaces[ns] === "string") {
append = namespaces[ns] + "@" + namespaces[ns] + mw.config.get("wgTitle");
buttonText = namespaces[ns] + "@اینجا";
}
return $("<button>", {
text: buttonText,
style: "position: absolute; left: 1em;",
class: "mw-ui-button mw-ui-constructive"
}).click(function () {
var value = $("#redirectmakerinput").val().trim();
if (value !== '')
value = value + '\n';
value = value + append;
$("#redirectmakerinput").val(value).focus();
});
}
function init(e) {
e.preventDefault();
$('<div>' +
'<div style="width: 40em">تغییرمسیرها را در خط\u200cهای جداگانه در جعبهٔ زیر وارد کنید:</div>' +
'<textarea style="width: 100%; background-color: white; resize:vertical; padding-left: 50px;" placeholder="مبدأ@مقصد" id="redirectmakerinput" rows="7"></textarea>' +
'</div>'
).dialog({
title: "ابزار ایجاد تغییرمسیر",
modal: true,
width: 700,
open: function () {
$("#redirectmakerinput").before(makeButton());
},
buttons: [{
id: 'redirectmaker-button-import',
text: 'ایجاد تغییرمسیر',
click: function () {
var formInput = $('#redirectmakerinput').val();
if (formInput === '') {
mw.notify('لطفاً فرم درخواست را به درستی پر کنید');
return;
}
$.when.apply(null, $.map(formInput.split('\n'), function (x) {
var req = x.split('@');
if (req.length !== 2) {
return;
}
return startRedirect(req[0], req[1]);
})).then(function () {
mw.notify('ایجاد تغییرمسیرها\u200cها به پایان رسید، لطفاً بررسی کنید.');
window.location = '/view/Special:Contributions/' + mw.config.get('wgUserName');
});
}
}],
close: function () {
$(this).remove();
}
});
}
$(function () {
//mw.util.addCSS('#t-redirectmaker { font-weight: bold; }');
$(mw.util.addPortletLink('p-tb', '#', 'تغییرمسیر\u200cساز', 't-redirectmaker', 'ایجاد تغییرمسیر به صورت خودکار')).click(init);
});
}(jQuery, mediaWiki));