مدیاویکی:Gadget-PageInfo.js

از ویکی‌سفر، راهنمای آزاد سفر

نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • اینترنت اکسپلورر/ Edge: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
  • اپرا: Ctrl-F5 را بفشارید.
window.PageInfo = {};

PageInfo.numbers = ["۰","۱","۲","۳","۴","۵","۶","۷","۸","۹"];

PageInfo.humanFileSize = function(bytes){
    if(bytes < 1024) return bytes + ' بایت';
    var units = ['کیلوبایت','مگابایت'];
    var u = -1;
    do {
        bytes /= 1024;
        ++u;
    } while(bytes >= 1024);
    return bytes.toFixed(1)+' '+units[u];
};

PageInfo.localize_numbers = function(text) {
	text = text.toString();
	for (var i = 0; i < PageInfo.numbers.length; i++) {
		var regexp = new RegExp(i.toString(), 'g');
		text = text.replace(regexp, PageInfo.numbers[i]);
	}
	text = text.replace(/\./gi, "٫");
	return text;
};

PageInfo.run = function(){
	if(mw.config.get('wgNamespaceNumber') >= 0)
	{
		var api = new mw.Api();
		api.get( {
			action: 'query',
			prop: 'info',
			inprop: 'watchers',
			titles: mw.config.get('wgPageName'),
		} ).done ( function ( data ) {
			if(typeof data.query != "undefined")
			{
				var tag = $('<span/>');
				var info = [];
				for(var key in data.query.pages) {
					var page = data.query.pages[key];
					console.log(page);
					if(typeof page.missing != "undefined")
					{
						info.push('صفحه\u200cای وجود ندارد.');
					} else {
						info.push('حجم صفحه: ' + PageInfo.localize_numbers(PageInfo.humanFileSize(page.length)));
						if(typeof page.watchers != "undefined")
						{
							info.push('تعداد کاربران پی\u200cگیری کننده: ' + PageInfo.localize_numbers(page.watchers));
						}
					}
					break;
				}
				tag.text('اطلاعات صفحه: ' + info.join('، '))
				tag.insertAfter($('#firstHeading'));
			}
		} );
	}
};

$(PageInfo.run);