Butun axtardiqlarinizi tapmaq ucun buraya: DAXIL OLUN
  Mp4 Mp3 Axtar Yukle
  Video Axtar Yukle
  Shekil Axtar Yukle
  Informasiya Melumat Axtar
  Hazir Inshalar Toplusu
  AZERI CHAT + Tanishliq
  1-11 Sinif Derslikler Yukle
  Saglamliq Tibbi Melumat
  Whatsapp Plus Yukle(Yeni)

  • Ana səhifə
  • Təsadüfi
  • Yaxınlıqdakılar
  • Daxil ol
  • Nizamlamalar
İndi ianə et Əgər Vikipediya sizin üçün faydalıdırsa, bu gün ianə edin.

MediaViki:Gadget-userinfo.js

  • İnterfeys
  • Müzakirə
  • Mənbəyə bax

Qeyd: Dəyişiklikləri yayımladıqdan sonra etdiyiniz dəyişikliklərin görünməsi üçün brauzerinizin keşinin təmizlənməsi lazım ola bilər.

  • Firefox / Safari: Reload düyməsinə basılı tutarkən Shift düyməsinə basın, və ya Ctrl+F5 və ya Ctrl+R (Mac üçün ⌘-R )
  • Google Chrome: Ctrl-Shift-R (Mac üçün ⌘-Shift-R)
  • Edge: Ctrl düyməsini basılı tutarkən Refresh düyməsinə basın, və ya sadəcə Ctrl+F5.
(function () {
	const numFmt = new Intl.NumberFormat('az', { maximumFractionDigits: 0 });

	function fmtCount(n, unit) {
		return numFmt.format(n) + '\u00A0' + unit;
	}

	function fmtAgo(date) {
		const diff = Math.floor((Date.now() - date.getTime()) / 1000);
		const units = [
			{ name: 'il', secs: 31536000 },
			{ name: 'ay', secs: 2592000 },
			{ name: 'gün', secs: 86400 },
			{ name: 'saat', secs: 3600 },
			{ name: 'dəqiqə', secs: 60 },
			{ name: 'saniyə', secs: 1 },
		];
		let remaining = diff;
		const parts = [];
		for (const { name, secs } of units) {
			const value = Math.floor(remaining / secs);
			if (value > 0) {
				parts.push(`${numFmt.format(value)} ${name}`);
				remaining -= value * secs;
			}
		}
		return parts.length ? parts.slice(0, 2).join(' ') + ' əvvəl' : 'indi';
	}

	const ns = mw.config.get('wgNamespaceNumber');
	const title = mw.config.get('wgTitle');
	if (![2, 3].includes(ns) || title.includes('/')) return;

	mw.loader.using(['mediawiki.util', 'mediawiki.api', 'mediawiki.user', 'mediawiki.jqueryMsg']).then(() => {
		const username = encodeURIComponent(title);
		const api = new mw.Api({ userAgent: `${mw.config.get("wgDBname")}/Gadget-userinfo` });

		api.get({
			action: 'query',
			format: 'json',
			formatversion: 2,
			list: 'users|usercontribs',
			usprop: 'blockinfo|editcount|gender|registration|groups',
			uclimit: 1,
			ucprop: 'timestamp',
			ususers: title,
			ucuser: title,
			meta: 'allmessages',
			amprefix: 'group',
			amincludelocal: 1,
			amlang: 'az',
			amenableparser: true
		}).then(data => {
			const query = data.query;
			if (!query) return;

			const user = query.users[0];
			const contrib = query.usercontribs[0] || {};
			const { invalid, missing, groups = [], editcount = 0, registration, blockedby, blockexpiry, blockpartial, gender } = user;
			const lastTs = contrib.timestamp;
			const regDate = registration ? new Date(registration) : null;
			const lastDate = lastTs ? new Date(lastTs) : null;

			const parts = [];

			if (blockedby) {
				const forever = blockexpiry === 'infinite';
				parts.push('<a href="' + mw.util.getUrl('Xüsusi:Jurnal', {
					page: 'İstifadəçi:' + user.name,
					type: 'block'
				}) + '">' + (forever ? 'müddətsiz' : 'müvəqqəti') + (blockpartial ? ' qismən' : '') + ' bloklanmış</a>');
			}

			if (missing) {
				parts.push('istifadəçi adı qeydiyyatda yoxdur');
			} else if (invalid) {
				parts.push(
					mw.util.isIPv4Address(user.name) ? 'anonim IPv4 istifadəçisi' :
						mw.util.isIPv6Address(user.name) ? 'anonim IPv6 istifadəçisi' :
							'səhv istifadəçi adı'
				);
			} else {
				const allMsg = query.allmessages || [];
				const groupPages = {};
				for (const msg of allMsg) {
					const key = msg.name.replace('grouppage-', '');
					groupPages[key] = msg.content;
				}

				const IGNORED = ['*', 'user', 'autoconfirmed'];
				const shownGroups = groups.filter(g => !IGNORED.includes(g));

				const names = shownGroups.map(g => {
					const msgObj = allMsg.find(m => m.name === 'group-' + g + '-member');
					const label = msgObj ? msgObj.content : g;
					if (groupPages[g]) {
						const href = mw.util.getUrl(groupPages[g]);
						return '<a href="' + href + '">' + label + '</a>';
					}
					return label;
				});

				if (names.length) {
					parts.push(
						names.length === 1 ? names[0] :
							names.length === 2 ? names.join(' və ') :
								names.slice(0, -1).join(', ') + ' və ' + names[names.length - 1]
					);
				} else {
					parts.push('istifadəçi');
				}
			}

			if (regDate) {
				parts.push('<a href="' + mw.util.getUrl('Xüsusi:Jurnal', {
					type: 'newusers',
					page: 'İstifadəçi:' + user.name,
					dir: 'prev',
					limit: 1
				}) + '">' + fmtAgo(regDate) + '</a> qeydiyyatdan keçib və');
			}

			if (!missing) {
				parts.push(
					'<a href="//xtools.wmcloud.org/ec/' + mw.config.get("wgServerName") + '/' + username + '">' +
					fmtCount(editcount, 'yə sahibdir.') + '</a>'
				);
			}

			if (lastDate) {
				parts.push(
					'Son sini <a href="' +
					mw.util.getUrl('Xüsusi:Töhfələr/' + user.name) + '">' +
					fmtAgo(lastDate) + '</a> edib'
				);
			}

			const statusText = 'Bu ' + parts.join(' ') + '.';

			const fh = document.querySelector('#firstHeading, #section-0');
			if (!fh) return;
			if (blockedby) fh.classList.add('mw-gadget-userinfo-blocked');
			if (invalid) fh.classList.add('mw-gadget-userinfo-invalid');
			if (!invalid && !missing) fh.classList.add('mw-gadget-userinfo-registered');
			for (const g of groups) {
				fh.classList.add('mw-gadget-userinfo-group-' + g);
			}

			const genderSym = gender === 'male' ? '♂' : gender === 'female' ? '♀' : '';
			fh.insertAdjacentHTML('beforeend',
				'<span class="mw-gadget-userinfo-gender" style="padding-left:.25em;font-size:.75em">' +
				genderSym + '</span>'
			);

			let ss = document.getElementById('siteSub');
			if (!ss) {
				const d = document.createElement('div');
				d.id = 'siteSub';
				d.textContent = 'Vikipediya, azad ensiklopediya';
				const bodyContent = document.getElementById('bodyContent');
				if (bodyContent) bodyContent.insertBefore(d, bodyContent.firstChild);
				ss = d;
			}

			ss.style.display = 'block';
			ss.innerHTML = '<span class="mw-gadget-userinfo-text">' + statusText + '</span> ' + ss.innerHTML;
		});
	});
})();
Mənbə — "https://az.wikipedia.org/w/index.php?title=MediaViki:Gadget-userinfo.js&oldid=8163195"
Informasiya Melumat Axtar