مدیاویکی:Gadget-ImageDelete.js
' 'قئید:' یازدیقدان سونرا دییشیکلیکلری گؤرمک اوچون براوزئرینیزین کئش یادداشیندا تمیزلمهنیز لازیم اولا بیلر.
- 'فایرفاکس / سافاری:Shift دویمهسینه باسین "یئنیدن یوکله"-ا داخیل اولون یا دا Ctrl-F5 یا Ctrl-R ائدین (ماج اوچون ⌘-R).
- 'گووگل کروم:'Ctrl+Shift+R باسین. (ماج اوچون ⌘-Shift-R)
- 'اینترنت ایکسپئلور: کلید Ctrl باسین یئنیلئ 'یئ داخیل اولون یا دا Ctrl-F5 ائدین.
- 'اوپئرا:' آلتلری → سئچیملر 'دن اؤنبئللیغی Tools → Preferences تمیزلیین.
/**
* Immediate delete and move files for Image-reviewer group
*
* Author: User:Ebraminio
*/
(function ($, mw) {
'use strict';
if (mw.config.get('wgNamespaceNumber') !== 6 ||
mw.config.get('wgAction') !== 'view') {
return;
}
function imageDelete(dialog, file, reason, extra) {
$.ajax({
url: '//tools.wmflabs.org/fawikiauto/',
data: {
action: 'requestDeletion',
file: file,
reason: reason,
extra: extra
},
dataType: 'json',
xhrFields: { withCredentials: true }
}).then(function (data) {
if (data === null) {
$('#imageReviewerDeleteDialog').text('خطای اساسی');
return;
}
if (data.error) {
$('#imageReviewerDeleteDialog').text('خطای ابزار: ' + data.error);
return;
}
if (data.url) {
$('#imageReviewerDeleteDialog').html($('<a>', {
style: 'font-size: 200%',
href: '//' + data.url,
text: 'خود را به ابزار بشناسانید!',
target: '_blank'
}).click(function () {
$(dialog).dialog('close');
}));
return;
}
$(dialog).dialog('close');
mw.notify('با تشکر، حذف با موفقیت انجام شد!');
location.href = location.href;
}, function (e) {
$('#imageReviewerDeleteDialog').text('خطای ربات: ' + e);
});
}
var deleteReasons = {
F8: 'تصویر تکراری با تصویری در انبار (پیوند تصویر انبار را در زیر وارد کنید)',
F1: 'تکراری (پیوند تصویر دیگر را در زیر وارد کنید)',
F2: 'تصویر خراب',
F4: 'حق تکثیر یا منبع نامعلوم',
F5: 'تصویر منصفانه یتیم',
F9: 'تصویر ناقض حق تکثیر (پیوند مستقیم تصویر را در زیر وارد کنید)'
};
function deleteDialog(e) {
e.preventDefault();
mw.util.addCSS("#imageReviewerDeleteDialogMain * { font-family: Tahoma, 'Iranian Sans', 'DejaVu Sans', 'Noto Sans', 'Droid Arabic Kufi', sans-serif !important; } ");
$('<div id="imageReviewerDeleteDialog"><select style="width: 100%;" id="imageReviewerDeleteSelect">' +
$.map(deleteReasons, function (desc, reason) { return '<option value="' + reason + '">' + desc + '</option>'; }).join('\n') +
'</select><br /><input id="deleteReasonAdditional" style="width: 70%" placeholder="توضیح اضافی در صورت نیاز" /></div>'
).dialog({
title: 'حذف رباتیک تصویر (آزمایشی)',
width: '40%',
open: function () {
var that = $(this);
$.ajax({
url: '//tools.wmflabs.org/fawikiauto/?action=identify',
dataType: 'json',
xhrFields: { withCredentials: true }
}).then(function (data) {
if (data.url) {
$('#imageReviewerDeleteDialog').html($('<a>', {
style: 'font-size: 200%',
href: '//' + data.url,
text: 'خود را به ابزار بشناسانید!',
target: '_blank'
}).click(function () {
that.dialog('close');
}));
return;
}
});
$("#deleteReasonAdditional").val($('.mw-imagepage-duplicates a[href^="//commons"]:first()').text());
},
buttons: {
'درخواست حذف': function () {
$("#imageReviewerDeleteDialogMain .ui-dialog-buttonpane").hide();
imageDelete(
this,
mw.config.get('wgTitle'),
$('#imageReviewerDeleteSelect').val(),
$('#deleteReasonAdditional').val()
);
$("#imageReviewerDeleteDialogMain .ui-dialog-buttonpane").hide();
$('#imageReviewerDeleteDialog').html($('<center>').append($.createSpinner({
size: 'large',
type: 'block'
})));
}
},
close: function () {
$(this).remove();
}
}).parent().prop('id', 'imageReviewerDeleteDialogMain');
}
var moveReasons = {
M1: 'درخواست بارگذار',
M2: 'تغییر نامهای کاملاً بیمعنی به نامهای مناسب، بر طبق آنچه تصویر نشان میدهد',
M3: 'تصحیح نامهای گمراهکننده به نامهای صحیحشان',
M4: 'تغییر نامهای گونههای زیستشناسی به نامهای علمی دوبخشی',
M5: 'تصحیح اشتباهات آشکار در نام پروندهها',
M6: 'هماهنگ کردن نام پروندههای مجموعهای از تصاویر',
M7: 'ابهامزدایی پروندهها با نامهای بیش از حد مشابه',
M8: 'حذف نامهای تحقیرآمیز، توهینآمیز یا بیادبانه که برای توصیف پرونده مناسب نیستند',
other: 'سایر دلایل'
};
// Token could be retrieved from mw.user.tokens but currently it doesn't have csrf explicitly
var csrfToken;
function getCsrfToken() {
return new mw.Api().post({
action: 'query',
meta: 'tokens',
format: 'json'
}).then(function (data) {
csrfToken = data.query.tokens.csrftoken;
});
}
function moveFile(from, to, reason) {
return new mw.Api().post({
reason: reason,
action: 'move',
from: from,
to: to,
token: csrfToken,
movetalk: '',
format: 'json'
});
}
// Image-reviewers doesn't have move without redirect right so doing it in another pass
function deleteRedirect(title, reason) {
return new mw.Api().post({
action: 'delete',
title: title,
reason: reason,
token: csrfToken
});
}
function moveDialog(e) {
e.preventDefault();
mw.util.addCSS("#imageReviewerMoveDialogMain * { font-family: Tahoma, 'Iranian Sans', 'DejaVu Sans', 'Noto Sans', 'Droid Arabic Kufi', sans-serif !important; } ");
$('<div id="imageReviewerMoveDialog">' +
'<div>نام جدید: <input id="newFileMove" style="width: 70%" placeholder="نام جدید برای پرونده" /></div><br>' +
'<div>دلیل:<br><select style="width: 100%;" id="imageReviewerMoveSelect">' +
$.map(moveReasons, function (desc, reason) { return '<option value="' + reason + '">' + desc + '</option>'; }).join('\n') +
'</select></div>' +
'<div><input id="moveReason" style="width: 70%" placeholder="توضیح اضافی در صورت نیاز" /></div><br>' +
'<div><label><input type="checkbox" checked="checked" id="moveBacklinks"> انتقال استفادههای در مقالهها</label></div>' +
'<div><label><input type="checkbox" id="moveDelete">حذف تغییر مسیر پس از انتقال</label></div><br>' +
'<div>* اگر نام جدید پروندهای در ویکیانبار است بهتر است از ابزار حذف استفاده کنید.</div>' +
'</div>').dialog({
title: 'انتقال خودکار',
width: '40%',
open: function () {
$("#newFileMove").val(mw.config.get('wgTitle'));
},
buttons: { 'انتقال': function () {
var that = $(this);
$("#imageReviewerMoveDialogMain .ui-dialog-buttonpane").hide();
$('#imageReviewerMoveDialog *').hide();
$('#imageReviewerMoveDialog').append($('<center>').append($.createSpinner({
size: 'large',
type: 'block'
})).append('<div>', { id: 'movestatus' }));
var reason = $('#moveReason').val();
if ($('#imageReviewerMoveSelect').val() !== 'other') {
reason = moveReasons[$('#imageReviewerMoveSelect').val()];
if ($('#moveReason').val() !== '') {
reason = reason + ': ' + $('#moveReason').val();
}
}
var newName = $('#newFileMove').val().replace(/^(File:|پرونده:|Image:|تصویر:)/g, '');
$('#movestatus').text('گرفتن توکن');
getCsrfToken().then(function () {
$('#movestatus').text('انتقال پرونده');
return moveFile('پرونده:' + mw.config.get('wgTitle'), 'پرونده:' + newName, reason);
}).then(function () {
if ($("#moveBacklinks").val() !== "on") { return; }
$('#movestatus').text('ویرایش صفحههای استفادهشده');
return mw.libs.globalReplace(
mw.config.get('wgTitle'),
newName,
'تغییر نام',
reason
);
}).then(function () {
if ($("#moveDelete").val() !== "on") { return; }
$('#movestatus').text('حذف تغییرمسیر');
return deleteRedirect('پرونده:' + mw.config.get('wgTitle'), reason);
}).then(function () {
that.dialog('close');
mw.notify('انتقال موفقیتآمیز بود، ویرایشهایتان را بررسی کنید.');
location.href = mw.util.getUrl('ویژه:مشارکتها/' + mw.config.get('wgUserName'));
}, function () {
that.dialog('close');
mw.notify('انتقال به دلایلی موفقیتآمیر نبود.');
location.href = mw.util.getUrl('ویژه:مشارکتها/' + mw.config.get('wgUserName'));
});
}
}, close: function () {
$(this).remove();
} }).parent().prop('id', 'imageReviewerMoveDialogMain');
}
$.when($.ready, mw.loader.using(['jquery.ui', 'jquery.spinner', 'ext.gadget.libGlobalReplace'])).then(function () {
if (mw.config.get('wgNamespaceNumber') !== 6 ||
mw.config.get('wgAction') !== 'view' ||
$('#ca-view-foreign, #mw-imagepage-nofile').length !== 0) {
return;
}
$('#ca-imagedelete, #ca-imagemove, #ca-move').remove();
$(mw.util.addPortletLink('p-cactions', '#', 'حذف رباتیک', 'ca-imagedelete', 'درخواست حذف خودکار تصویر، ویژهٔ بازبینان تصاویر و مدیران'))
.click(deleteDialog);
$(mw.util.addPortletLink('p-cactions', '#', 'انتقال خودکار', 'ca-imagemove', 'انتقال خودکار')).click(moveDialog);
});
}(jQuery, mediaWiki));