مدیاویکی:Gadget-AfD.js
از پژوهشکده امر به معروف
نسخهٔ تاریخ ۱۱ اسفند ۱۳۹۴، ساعت ۱۳:۰۷ توسط Admin (نظرات | مشارکتها) (صفحهای تازه حاوی «←jslint indent: 2, browser: true: ←global jQuery, mediaWiki, persianWikiTools, alert: var DateVar = ''; function ConvertYearToFarsi(yea...» ایجاد کرد)
نکته: پس از ذخیرهکردن ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.
- فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلیدهای Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-R)
- گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانههای اپل مکینتاش کلیدهای ⌘-Shift-R)
- اینترنت اکسپلورر: کلید Ctrl را نگهدارید و روی دکمهٔ Refresh کلیک کنید، یا کلیدهای Ctrl-F5 را با هم فشار دهید
- اپرا: حافظهٔ نهانی مرورگر را از طریق منوی Tools → Preferences پاک کنید
/*jslint indent: 2, browser: true*/
/*global jQuery, mediaWiki, persianWikiTools, alert*/
var DateVar = '';
function ConvertYearToFarsi(year) {
var i = 0;
for (i = 0; i <= 9; i = i + 1) {
year = year.replace(new RegExp('[' + '0123456789' [i] + ']', 'g'), '۰۱۲۳۴۵۶۷۸۹' [i]);
}
return year
}
function checkredirect(ar_title) {
params = { action: "query", prop: "info", titles: ar_title, format: "json" }
mw.loader.using('mediawiki.api', function () {( new mw.Api() ).get(params).done(function (data) {
if("redirect" in data["query"]["pages"][Object.keys(data["query"]["pages"])]) {alert("این مقاله منتقل شده است. حواستان باشد که دستی درست کنید.");}}
);
} );
}
function ConvertMonthToFarsi(month) {
if (month == 'January') {
return 'ژانویه'
};
if (month == 'February') {
return 'فوریه'
};
if (month == 'March') {
return 'مارس'
};
if (month == 'April') {
return 'آوریل'
};
if (month == 'May') {
return 'مه'
};
if (month == 'June') {
return 'ژوئن'
};
if (month == 'July') {
return 'ژوئیه'
};
if (month == 'August') {
return 'اوت'
};
if (month == 'September') {
return 'سپتامبر'
};
if (month == 'October') {
return 'اکتبر'
};
if (month == 'November') {
return 'نوامبر'
};
if (month == 'December') {
return 'دسامبر'
};
}
function creationdate(title, callback) {
mw.loader.using( 'mediawiki.api', function () {
( new mw.Api() ).get( {
action: 'query',
prop: 'revisions',
titles: title,
rvprop: 'timestamp',
rvdir: 'newer',
format: 'json',
rvlimit: '1',
} ).done(function ( data ) {
DateVar = data["query"]["pages"][Object.keys(data["query"]["pages"])]["revisions"][0]["timestamp"];
callback(DateVar);
});
} );
}
function ArchiveMonth(DateVar, callback) {
var ArchiveMonthLink = '';
var crdate = new Date(DateVar);
var ArchiveMonthLink = ConvertMonthToFarsi(crdate.getUTCMonthName()) + ' ' + ConvertYearToFarsi(String(crdate.getUTCFullYear()));
callback(ArchiveMonthLink);
}
(function ($, mw) {
'use strict';
function loadPage(title, callback) {
new mw.Api().get({
action: 'query',
prop: 'revisions',
titles: title,
rvprop: 'content',
format: 'json'
}).done(function (data) {
try {
callback($.map(data.query.pages, function (value) {
return value;
})[0].revisions[0]['*']);
}
catch (exception) {
callback('');}
}).fail(function (data) {
callback($.map(data.query.pages, function (value) {
return value;
})[0].revisions[0]);
});
}
function ProtectPageRefresh(page, summary) {
prottok(function (prottokk) {
protectPage(page, summary, prottokk);
});
}
function prottok(callback) {
new mw.Api().post({
action: 'tokens',
type: 'protect'
}).done(function (data) {
if (data.error && data.error.info) {
mw.notify(data.error.info);
} else {
callback(data.tokens.protecttoken);
}
}).fail(function (data) {
mw.notify(data);
});
}
function protectPage(title, summary, prottokk) {
new mw.Api().post({
action: 'protect',
title: title,
reason: summary,
token: prottokk,
protections: 'create=sysop',
expiry: '1 year',
}).done(function (data) {
if (data.error && data.error.info) {
mw.notify(data.error.info);
} else {
mw.notify('مقاله محافظت شد!');
}
}).fail(function (data) {
mw.notify(data);
});
}
function savePage(title, text, summary, callback) {
new mw.Api().post({
action: 'edit',
title: title,
text: text,
summary: summary,
minor: '',
token: mw.user.tokens.get('editToken')
}).done(function (data) {
if (data.error && data.error.info) {
mw.notify(data.error.info);
} else {
callback();
}
}).fail(function (data) {
mw.notify(data);
});
}
function ClosePage(text, comment) {
text = text.replace('/<noinclude' + '>\{\{(?:این الگو را زمان بستن نبح حذف کن|REMOVE THIS TEMPLATE WHEN CLOSING THIS AfD)\|.+?\}\}</noinclude' + '\/>\n?/g', '');
text = '{{آغاز بایگانی حذف}}\n\n' + comment + ' ~~' + '~~\n' + text + '\n{{پایان بایگانی حذف}}';
mw.notify('نظرخواهی بسته شد!');
return text;
}
function CloseTalkPage(text,article_name, comment) {
text = '{{پیشینه حذف| تاریخ =~~' + '~~' + '~| نتیجه =' + comment + ' | صفحه =' + article_name.replace(/\_/g, ' ') + ' |کوچک=}}\n\n' + text;
text = text.replace("صفحه =ویکیپدیا:نظرخواهی برای حذف/", "صفحه =")
mw.notify('الگو پیشینه حذف به بحث صفحه افزوده شد!');
return text;
}
function ArchivePage(text, pagelink, comment) {
text = text + '\n* [[' + pagelink.replace(/\_/g, ' ') + ']] -- ' + comment + ' ~~' + '~~'
mw.notify('بایگانی بهروز شد.');
return text;
}
function RemoveLink(text, pagelink) {
var text2 = text;
pagelink = pagelink.replace(/\_/g, ' ');
text = text.replace('{{' + pagelink + '}}\n', '')
if (text2 == text) {
mw.notify('توجه:برداشتن نظرخواهی از وپ:نبح با خطا مواجه شد!')
} else {
mw.notify('نظرخواهی از وپ:نبح برداشته شد!')
}
return text;
}
function RemoveTemplate(text) {
var text2 = text;
text = text.replace(/(\<!--(.+?)--\>\n*|)\{\{(نظرخواهی برای حذف|پیشنهاد حذف\s?۲)(.+?|)\}\}(\n*\<!--(.+?)--\>|)(\n*\<!--(.+?)--\>|)/g, '');
text = text.replace(/\<!-- قبلاً پیشنهاد حذف داده شدهاست(.+?)--\>/g, '');
text = text.replace(/\<noinclude\>\n\<\/noinclude\>/g, '');
if (text2 == text) {
mw.notify('توجه:برداشتن الگو از مقاله با مشکل مواجه شد!');
} else {
mw.notify('الگو پیشنهاد حذف از صفحه برداشته شد!');
}
text=text.trim()
return text;
}
function loadSavePageRefresh(page, replaceCallback, summary) {
loadPage(page, function (text) {
savePage(page, replaceCallback(text), summary, function () {
//window.location = mw.util.getUrl(page) + '?action=purge';
});
});
}
function DeletePageRefresh(page, summary) {
deltok(function (deltokk) {
deletePage(page, summary, deltokk, ProtectPageRefresh);
});
}
function deltok(callback) {
new mw.Api().post({
action: 'tokens',
type: 'delete'
}).done(function (data) {
if (data.error && data.error.info) {
mw.notify(data.error.info);
} else {
callback(data.tokens.deletetoken);
}
}).fail(function (data) {
mw.notify(data);
});
}
function deletePage(title, summary, deltokk, callback) {
new mw.Api().post({
action: 'delete',
title: title,
reason: summary,
token: deltokk,
}).done(function (data) {
if (data.error && data.error.info) {
mw.notify(data.error.info);
} else {
mw.notify('مقاله حذف شد!');
callback(title, 'محافظت صفحه بر اساس [[ویکیپدیا:نظرخواهی_برای_حذف/' + title + '|نظرخواهی برای حذف]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])' );
}
}).fail(function (data) {
mw.notify(data);
});
if (title.search(/کاربر:|الگو:|رده:|ویکیپدیا:|درگاه:|راهنما:/) > -1 ) {
var TalkLink = 'بحث ' + title;
} else {
var TalkLink = 'بحث:' + title;
}
new mw.Api().post({
action: 'delete',
title: TalkLink,
reason: summary,
token: deltokk,
}).done(function (data) {
if (data.error && data.error.info) {
mw.notify(data.error.info);
} else {
mw.notify('بحث مقاله حذف شد!');
}
}).fail(function (data) {
mw.notify(data);
});
}
if (mw.config.get('wgAction') === 'view' && (mw.config.get('wgPageName').search("ویکیپدیا:نظرخواهی_برای_حذف") > -1)) {
$(function () {
$(mw.util.addPortletLink('p-views', '#', 'جمعبندی', 'ca-afd', 'ابزار جمعبندی'))
.click(function (e) {
e.preventDefault();
var comment = prompt('لطفاً نتیجه جمعبندی را با عبارتهای «بماند» یا «حذف شود» یا «ادغام شود» اعلام نمائید.');
if (comment) {
var OurPage = mw.config.get('wgPageName');
var article_name = mw.config.get('wgPageName');
article_name = article_name.replace("ویکیپدیا:نظرخواهی_برای_حذف/", "").replace(/ \(بار دوم\)$/, "");
//Closing The RFD page
checkredirect(article_name)
loadSavePageRefresh(OurPage,
function (text) {
return ClosePage(text, comment);
},
'بستن نظرخواهی [[وپ:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])'
);
if (comment.search("حذف شود") == -1) {
if (article_name.search(/کاربر:|الگو:|رده:|ویکیپدیا:|درگاه:|راهنما:/) > -1) {
var TalkLink = 'بحث ';
} else {
var TalkLink = 'بحث:';
}
loadSavePageRefresh(TalkLink + article_name,
function (text) {
return CloseTalkPage(text, OurPage, comment);
},
'/'+'*افزودن [[الگو:پیشینه حذف]] به بحث صفحه ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])*'+'/'
);
}
//Archiving the RFD link
creationdate(OurPage, function(archlink) {ArchiveMonth(archlink, function (month) { loadSavePageRefresh('ویکیپدیا:نظرخواهی_برای_حذف/بایگانی/' + month,
function (text) {
return ArchivePage(text, OurPage, comment);
},
'/'+'*بایگانی نظرخواهی [[وپ:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])*'+'/'
)})});
//Remove RFD link form wp:RFD
loadSavePageRefresh('ویکیپدیا:نظرخواهی_برای_حذف',
function (text) {
return RemoveLink(text, OurPage);
},
'/'+'*حذف [['+OurPage.replace(/\_/g, ' ')+']] از [[وپ:نبح]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])*'+'/'
);
if (comment.search("حذف شود") > -1) {
//Deleting the Article
DeletePageRefresh(article_name, 'حذف صفحه بر اساس [[' + OurPage + '|نظرخواهی برای حذف]] ([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])' );
} else {
//Removing RFD template from article
if (comment.search("ادغام شود") > -1) {
var comment2 = prompt('عنوان مقالهای را که باید با آن ادغام شود بنویسید.')
var ExtraSum='و افزودن {{ادغام با|'+comment2 +'}} '
} else {
var ExtraSum=''
}
loadSavePageRefresh(article_name,
function (text) {
if (comment.search("ادغام شود") > -1) {
text=RemoveTemplate(text);
text='{{ادغام با|'+comment2 +'}}\n'+text;
} else {
text=RemoveTemplate(text);
}
return text
},
'/'+'*حذف [[الگو:پیشنهاد حذف]] از مقاله '+ExtraSum+'([[مدیاویکی:Gadget-AfD.js|ابزار جمعبندی]])*'+'/'
);
}
//mw.notify('جمع بندی با موفقیت انجام پذیرفت');
}
})
.insertBefore('#ca-view');
});
}
}(jQuery, mediaWiki));






