۸٬۳۲۰
ویرایش
Nazarzadeh (بحث | مشارکتها) بدون خلاصۀ ویرایش |
Nazarzadeh (بحث | مشارکتها) بدون خلاصۀ ویرایش |
||
خط ۶: | خط ۶: | ||
*/ | */ | ||
(function ($, mw) { | (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 = '/wiki/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)); | }(jQuery, mediaWiki)); |