(Translated by https://www.hiragana.jp/)
کاربر:Jeeputer/editCounter.js - ویکی‌پدیا، دانشنامهٔ آزاد پرش به محتوا

کاربر:Jeeputer/editCounter.js

از ویکی‌پدیا، دانشنامهٔ آزاد

نسخه‌ای که می‌بینید، نسخهٔ فعلی این صفحه است که توسط Jeeputer (بحث | مشارکت‌ها) در تاریخ ‏۲۶ سپتامبر ۲۰۲۲، ساعت ۲۱:۴۵ ویرایش شده است. آدرس فعلی این صفحه، پیوند دائمی این نسخه را نشان می‌دهد.

(تفاوت) → نسخهٔ قدیمی‌تر | نمایش نسخهٔ فعلی (تفاوت) | نسخهٔ جدیدتر ← (تفاوت)
نکته: برای دیدن تغییرات، ممکن است نیاز باشد که حافظهٔ نهانی مرورگر خود را پس از انتشار پاک‌سازی کنید. گوگل کروم، فایرفاکس، مایکروسافت اج و سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload در نوار ابزار مرورگر کلیک کنید. برای آگاهی از جزئیات و نحوهٔ پاک‌سازی حافظهٔ نهانی سایر مرورگرها، صفحهٔ ویکی‌پدیا:میانگیر مرورگرتان را خالی کنید را ببینید.
/***********************************************************************************/
/*                                                                                 */
/*						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('کار شمارشگر ویرایش تمام شد! می‌توانید صفحه را ببندید.');
                    }
                });
            };
        });
    
    });
}