کاربر:Jeeputer/editCounter.js
ظاهر
کدهایی که در این صفحه قرار میدهید، ممکن است حاوی محتوای مخربی باشند که حساب کاربری شما را به خطر میاندازند. اگر با استفاده از دستور «importScript» یا الگوی «نصب اسکریپت کاربری» اسکریپتی را از صفحهای دیگر درونریزی میکنید، دقت داشتهباشید که این کار باعث میشود تا بهطور سیال اسکریپتی را بارگیری کنید که امکان تغییر آن توسط دیگران وجود دارد. اگر از امنیت کدهایی که به این صفحه میافزایید مطمئن نیستید، در قهوهخانهٔ فنی درخواست کمک کنید. هرگاه پیشنمایش تغییراتی که در این صفحه اعمال کردهاید را مشاهده کنید، کد اجرا خواهد شد. |
![]() | بهنظر میرسد که این اسکریپت کاربری دارای یک صفحهٔ مستندات است که در کاربر:Jeeputer/editCounter قرار دارد. |
/***********************************************************************************/
/* */
/* Wikipedia Edit Counter Version 2.0 */
/* Developed by User:Jeeputer */
/* */
/***********************************************************************************/
if (mw.config.get('wgTitle') === mw.config.get('wgUserName') && mw.config.get('wgNamespaceNumber') === 2) {
$(function(){
if (!$('#t-contributions').length && mw.config.get('wgNamespaceNumber') == 2) {
alert('فقدان پیوند «مشارکتهای کاربر» در منوی کناری');
return;
}
var $editCountLink = $('<a>شمارشگر ویرایش</a>').attr({
id: 't-editcounter',
href: '#',
title: 'راندن اسکریپت شمارشگر ویرایش'
});
$('#t-contributions').after($('<li></li>').html($editCountLink));
$('#t-editcounter').click(function() {
$('#t-editcounter').text('در حال پردازش…');
mw.notify($('<span>در حال دریافت مشارکتهای شما...<br/>' +
'لطفاً صفحه را نبندید.' +
' پس از پایان کار، ابزار شما را آگاه خواهد کرد.</span>'),
{
title: 'شمارشگر ویرایش'
}
);
var namespaces = mw.config.get('wgFormattedNamespaces');
namespaces[0] = 'اصلی';
var namespaceID = function(ns) {
return mw.config.get('wgNamespaceIds')[ns.replace(' ', '_')];
};
var userName = mw.config.get('wgUserName');
var contribs = [];
config = {};
var API = new mw.Api({
ajax: {
headers: {
'Api-User-Agent': 'editCount/0.1.1' +
' ( https://fa.wikipedia.org/wiki/User:Jeeputer/editCount )'
}
}
});
config.isDone = false;
var grabData = function() {
var checkData = function() {
if (config.isDone) {
//all done - log totals
createTable();
}
};
var processQuery = function(result) {
var usercontrib = result.query.usercontribs,
uc, ns;
for (uc in usercontrib) {
ns = usercontrib[uc].ns;
contribs.push({ns: ns});
}
if (result.continue) {
doQuery($.extend(contribsQuery, result.continue));
return;
} else {
config.isDone = true;
}
checkData();
};
var contribsQuery = {
action: 'query',
format: 'json',
list: 'usercontribs',
ucuser: username,
uclimit: 500
};
var doQuery = function(q) {
API.get(q).done(processQuery);
};
doQuery(contribsQuery);
};
grabData();
var createTable = function() {
var contribsByNs = {},
i;
for (i = 0; i < contribs.length; i++) {
if (contribs[i].ns in contribsByNs) {
contribsByNs[contribs[i].ns]++;
} else {
contribsByNs[contribs[i].ns] = 1;
}
}
var incrHeaders = function(obj) {
var namespacesLocalNames = Object.keys(obj);
var editCountByNamespaceNum = Object.values(obj);
var fullTable = '',
tableStart = '{| ',
tableEnd = '|}',
contribLink = '[' + mw.config.get('wgServer') +
mw.config.get('wgScriptPath') +
'/index.php?title=Special%3AContributions&target=' +
encodeURIComponent(userName) + '&namespace=',
contribLinked = '',
bracesLeft = '{{',
bracesRight = '}}',
dateFormat = 'j F Y',
timeStamp = bracesLeft + 'subst:#time:' + dateFormat + bracesRight,
mainTableAttrib = 'class="wikitable" style="margin: ' +
'0 auto 1em; font-size: small; text-align: center"\n',
tableCaptionAttrib = '|+ style="caption-side: bottom; ' +
'font-size: x-small; font-weight: normal" | ',
tableCaption = '[[' + 'کاربر:Jeeputer/شمارشگر ویرایش|' +
'آخرین بروزرسانی: ' + timeStamp + ']]\n',
plainLinksAttrib = '|- class="plainlinks" \n',
headersStr = '',
colsString = '',
totalCount = mw.config.get('wgUserEditCount');
for (var j = 0; j < namespacesLocalNames.length; j++) {
headersStr += '! ' + namespaces[namespacesLocalNames[j]] + '\n';
}
for (var c = 0; c < editCountByNamespaceNum.length; c++) {
contribLinked = contribLink +
Object.keys(namespacesLocalNames)[c] + ' ' +
mw.language.convertNumber(editCountByNamespaceNum[c]) + ']';
colsString += '| ' + contribLinked + '\n';
}
colsString = colsString + '| [[ویژه:مشارکتها/' + userName +
'|' + mw.language.convertNumber(totalCount) + ']]\n';
fullTable = tableStart +
mainTableAttrib +
tableCaptionAttrib +
tableCaption +
headersStr + '! مجموع\n' +
plainLinksAttrib +
colsString +
tableEnd;
updateCountPage(fullTable);
};
incrHeaders(contribsByNs);
};
var updateCountPage = function (table) {
var fullPageName = 'کاربر:' + userName + '/شمار ویرایشها';
var editParams = {
format: 'json',
action: 'edit',
title: fullPageName,
text: table,
summary: '[[کاربر:Jeeputer/شمارشگر ویرایش|شمار ویرایشها بهروز شد]]',
bot: '1',
minor: '1',
recreate: '1'
};
API.postWithToken('csrf', editParams).done(function (data) {
if (data.edit.result != 'Success') {
$('#t-editcounter').text('انجام نشد!').css('color', 'red');
mw.notify('بهروزرسانی شمار ویرایشهای شما ناموفق بود!', {
title: 'شمارشگر ویرایش',
type: 'error'
});
} else {
$('#t-editcounter').text('انجام شد!').css('color', 'green');
mw.notify($('<span>شمارش ویرایشها موفق بود!<br/>زیرصفحهٔ <a href="/wiki/کاربر:' +
username + '/شمار_ویرایشها">شمار ویرایشها</a> ویرایش شد. (<a href="/wiki/ویژه:تفاوت/' +
data.edit.newrevid + '">تفاوت</a>)</span>'), {
title: 'شمارشگر ویرایش',
type: 'success',
autoHideSeconds: 20
});
alert('کار شمارشگر ویرایش تمام شد! میتوانید صفحه را ببندید.');
}
});
};
});
});
}