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;
});
});
})();