মিডিয়াউইকি:Gadget-massdelete.js
টীকা: সংরক্ষণ করার পর, পরিবর্তনসমূহ তৎক্ষণাৎ নাও দেখাতে পারে। আপনার ব্রাউজারের ক্যাশ কিভাবে এড়াবেন তা জানতে এখানে ক্লিক করুন।
- ফায়ারফক্স / সাফারি: Shift ধরে রাখা অবস্থায়পুনঃলোড করুন-এ ক্লিক করুন, অথবা Ctrl-F5 বা Ctrl-R (ম্যাক-এ ⌘-R) চাপুন
- গুগল ক্রোম: Ctrl-Shift-R (ম্যাক-এ ⌘-Shift-R) চাপুন
- ইন্টারনেট এক্সপ্লোরার: Ctrl ধরে রাখা অবস্থায় Refresh-এ ক্লিক করুন, অথবা Ctrl-F5 চাপুন
- অপেরা: মেনু → ব্যবস্থাপনাসমূহ-এ যান (ম্যাকে অপেরা → পছন্দসমূহ) এবং এরপর গোপনীয়তা ও সুরক্ষা → ব্রাউজিং-এর তথ্য পরিষ্কার করুন → ক্যাশে করা ছবি ও ফাইলগুলি।
অন্যান্য ব্রাউজার সম্পর্কে বিশদ নির্দেশাবলীর জন্য, উইকিপিডিয়া:আপনার ক্যাশে বাইপাস করুন দেখুন।
mw.loader.using(['mediawiki.api', 'mediawiki.Title'], function () {
"use strict";
var config = mw.config.get(['wgNamespaceNumber', 'wgTitle', 'wgUserGroups', 'skin']);
function removeBlanks(arr) {
var ret = [];
var i, len;
for (i = 0, len = arr.length; i < len; i++) {
var s = arr[i];
s = s.trim();
if (s) {
ret.push(s);
}
}
return ret;
}
function doMassDelete() {
document.getElementById("wpMassDeleteSubmit").disabled = true;
var articles = document.getElementById("wpMassDeletePages").value.split("\n");
articles = removeBlanks(articles);
if (!articles.length) {
return;
}
var
api = new mw.Api(),
wpMassDeleteReasons = document.getElementById("wpMassDeleteReasons").value,
wpMassDeleteReason = document.getElementById("wpMassDeleteReason").value,
deleted = 0,
failed = [],
error = [],
deferreds = [],
reason = wpMassDeleteReasons == "অন্য" ?
wpMassDeleteReason :
wpMassDeleteReasons + (wpMassDeleteReason ? " (" + wpMassDeleteReason + ")" : ""),
onSuccess = function () {
deleted++;
document.getElementById("wpMassDeleteSubmit").value = "(" + deleted + ")";
};
function makeDeleteFunc(article) {
return function () {
return $.Deferred(function (deferred) {
var promise = api.postWithToken('csrf', {
format: 'json',
action: 'delete',
title: article,
reason: reason
});
promise.done(onSuccess);
promise.fail(function (code, obj) {
failed.push(article);
error.push(obj.error.info);
});
promise.always(function () {
deferred.resolve();
});
});
};
}
// Make a chain of deferred objects. We chain them rather than execute them in
// parallel so that we don't make 1000 simultaneous delete requests and bring the
// site down. We use deferred objects rather than the promise objects returned
// from the API request so that the chain continues even if some articles gave
// errors.
var deferred = makeDeleteFunc(articles[0])();
for (var i = 1, len = articles.length; i < len; i++) {
deferred = deferred.then(makeDeleteFunc(articles[i]));
}
// Show the output and do cleanup once all the requests are done.
$.when(deferred).then(function () {
document.getElementById("wpMassDeleteSubmit").value = "করা হয়েছে (" + deleted + ")";
if (failed.length) {
var $failedList = $('<ul>');
for(var x = 0; x < failed.length; x++) {
// Link the titles in the "failed" array
var failedTitle = mw.Title.newFromText(failed[x]);
var $failedItem = $('<li>');
if (failedTitle) {
$failedItem.append( $('<a>')
.attr('href', failedTitle.getUrl())
.text(failed[x])
);
} else {
$failedItem.text(failed[x]);
}
$failedItem.append(document.createTextNode(': ' + error[x]));
$failedList.append($failedItem);
}
$('#wpMassDeleteFailedContainer')
.append($('<br />'))
.append($('<b>')
.text('অপসারণ ব্যর্থ হয়েছে:')
)
.append($failedList);
}
});
}
function massdeleteform() {
var bodyContent = (config.skin == "cologneblue" ? "article" : "bodyContent");
document.getElementsByTagName("h1")[0].textContent = "পাতা গণ অপসারণ";
document.title = "পাতা গণ অপসারণ";
document.getElementById(bodyContent).innerHTML = '<h3 id="siteSub">উইকিমিডিয়া ইনকিউবেটর থেকে নেওয়া - ২৮-১০-২০১৫ এর সংস্করণ</h3><br />' +
'<div>' +
'<form id="wpMassDelete" name="wpMassDelete">' +
'<p>গণ অপসারণ ফর্মে স্বাগতম, এই পাতাটি আপনি একাধিক পাতা গণ অপসারণ করতে ব্যবহার করতে পারবেন। আপনি যদি একাধিক পাতা অপসারণ করতে চান যা একজন ব্যবহারকারী তৈরি করেছেন তাহলে <a href="/wiki/Special:Nuke">বিশেষ:Nuke</a> ব্যবহার করুন!</p>' +
'<p>যদি আপনি <b>১০টির অধিক পাতা অপসারণ</b> করতে যান তাহলে, দয়া করে <a href="/wiki/Special:RecentChanges">বিশেষ:সাম্প্রতিক_পরিবর্তন</a> ভাসিয়ে না দিতে আপনি নিজেকে বট হিসেবে <a href="/wiki/Special:UserRights">পতাকাঙ্কিত</a> করতে বিবেচনা করুন, ধন্যবাদ!</p>' +
'<p>দয়া করে নিচের পাঠ্য বাক্সে আপনি সে পাতাগুলি অপসারণ করতে চান তাঁর একটি তালিকা যোগ করুন, লাইন প্রতি একটি পাতা যোগ করুন। এই সরঞ্জাম ব্যবহার করার জন্য ধন্যবাদ!</p>' +
'<div id="wpMassDeleteFailedContainer"></div>' +
'<br />' +
'অপসারণের জন্য পাতাসমূহ (লাইন প্রতি একটি দিন):<br />' +
'<textarea tabindex="1" accesskey="," name="wpMassDeletePages" id="wpMassDeletePages" rows="15" cols="80"></textarea>' +
'<br /><table style="background-color:transparent">' +
'<tr><td>সাধারণ কারণ:</td>' +
'<td><select id="wpMassDeleteReasons">' +
'<optgroup label="অন্য কারণ">' +
'<option value="অন্য">অন্য কারণ</option>' +
'</optgroup>' +
'<optgroup label="দ্রুত অপসারণের জন্য মানদণ্ড">' +
'<optgroup label="সাধারণ অপসারণের কারণসমূহ">' +
'<option value="লেখকের অনুরোধ">লেখকের অনুরোধ</option>' +
'<option value="প্রকল্পের বাইরে">প্রকল্পের বাইরে</option>' +
'<option value="কপিরাইট লঙ্ঘন">কপিরাইট লঙ্ঘন</option>' +
'<option value="অপ্রয়োজনীয় পুনর্নির্দেশ">অপ্রয়োজনীয় পুনর্নির্দেশ</option>' +
'<option value="অপ্রয়োজনীয়">অপ্রয়োজনীয়</option>' +
'<option value="ধ্বংসাত্মক">ধ্বংসাত্মক</option>' +
'</optgroup>' +
'<optgroup label="নিয়মমাফিক রক্ষণাবেক্ষণ">' +
'<option value="অপসারণ প্রক্রিয়া">অপসারণ প্রক্রিয়া</option>' +
'<option value="পিতৃহীন আলাপ পাতা">পিতৃহীন আলাপ পাতা</option>' +
'<option value="অতি পরিমাণ কার্যের পর অপ্রয়োজনীয়/অতিরিক্ত">অতি পরিমাণ কার্যের পর অপ্রয়োজনীয়/অতিরিক্ত</option>' +
'<option value="উৎস ফাইলের স্থিতি পরিবর্তন">উৎস ফাইলের স্থিতি পরিবর্তন</option>' +
'<option value="উচ্চতর প্রতিলিপি বিদ্যমান">উচ্চতর প্রতিলিপি বিদ্যমান</option>' +
'</optgroup>' +
'</optgroup>' +
'</select></td></tr>' +
'<tr><td>অন্যান্য/অতিরিক্ত কারণ:</td>' +
'<td><input type="text" id="wpMassDeleteReason" name="wpMassDeleteReason" size="42" maxlength="255" /></td></tr>' +
'<tr><td><input type="button" id="wpMassDeleteSubmit" name="wpMassDeleteSubmit" value="অপসারণ করুন" /></td>' +
'</form>' +
'</div>';
document.getElementById("wpMassDeleteReasons").onchange = function() {
var maxlength = (document.getElementById("wpMassDeleteReasons").value == "অন্য" ? 255 : 252-document.getElementById("wpMassDeleteReasons").value.length); //It's 252 because of the three characters (" ()") in addition to the selected summary.
document.getElementById("wpMassDeleteReason").setAttribute("maxlength", maxlength);
};
document.getElementById("wpMassDeleteSubmit").addEventListener("click", function (e) {
doMassDelete();
});
}
if (config.wgNamespaceNumber == -1 &&
config.wgTitle.toLowerCase() == "massdelete" &&
/sysop/.test(config.wgUserGroups)
) {
massdeleteform();
}
});