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-markadmins.js

  • Mesaj
  • 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.
// [[:İstifadəçi:Əkrəm Cəfər]] tərəfindən yazılmış, [[İstifadəçi:Nemoralis]] tərəfindən düzəlişlər edilmişdir. (2025)

const groups = {
    "bureaucrat": ["bürokrat", "B"],
    "checkuser": ["təftişçi", "T"],
    "global-deleter": ["qlobal silici", "QS"],
    "global-interface-editor": ["qlobal interfeys redaktoru", "QİR"],
    "global-sysop": ["qlobal inzibatçı", "Qİ"],
    "interface-admin": ["interfeys inzibatçısı", "İİ"],
    "ombuds": ["ombudsman", "O"],
    "staff": ["Vikimedia Fondunun əməkdaşı", "F"],
    "steward": ["stüard", "S"],
    "suppress": ["gizlədici", "G"],
    "sysadmin": ["sistem administratoru", "SA"],
    "sysop": ["inzibatçı", "İ"],
    "wmf-researcher": ["Vikimedia Fondu tədqiqatçısı", "FT"]
}

/**
 * Qadcetin əsas funksiyası. Bir parametr — XTools API-sindən əldə edilən datanı
 * qəbul edir və həmin dataya əsaslanaraq iş görür::
 * https://xtools.wmcloud.org/api/project/admin_groups/az.wikipedia.org
 */

const markAdmins = ($content, parsedData) => {
    // səhifə məzmunundan "İstifadəçi:" və "İstifadəçi müzakirəsi:" ilə başlayan keçidləri seçir və hər birinin üzərində iş görür
    const links = $content[0].querySelectorAll('a[title^="İstifadəçi:"], a[title^="User:"]')

    for (let i = 0; i < links.length; i++) {
        const anchorElement = links[i],

            // keçiddən istifadəçi adı olan hissəni alır
            username = anchorElement.getAttribute('title').replace('İstifadəçi:', '')

        if (anchorElement.parentElement.classList.contains('mw-usertoollinks')) continue
        if ((/[?#]/.test(anchorElement.href) && !anchorElement.href.includes('redlink=1'))) continue
        /**
         * Funksiyaya ötürülən siyahıda istifadəçinin adının olub-olmamasını və bot olmamasını yoxlayır
         * Əgər şərt ödənirsə, indikatoru əlavə edir.
         */

        if (parsedData[username] && !parsedData[username].includes("bot")) {
            const tipElement = document.createElement('span')
            tipElement.classList.add('userflags-wrapper')
            tipElement.innerHTML = '(' + parsedData[username].map(group => group.replace(group, match => (groups[match] ? groups[match][1] : ''))).filter(x => x.length !== 0).join(', ') + ')'
            tipElement.title = '(' + parsedData[username].map(group => group.replace(group, match => (groups[match] ? groups[match][0] : ''))).filter(x => x.length !== 0).join(', ') + ')'

            anchorElement.after(tipElement)
        }
    }

}

mw.loader.using(['mediawiki.storage'], () => {
    const cacheddata = mw.storage.get('mw-gadget-markadmins')

    const hasUserLinks = ($content) => {
        return $content[0] ? $content[0].querySelector('a[title^="İstifadəçi:"], a[title^="User:"]') !== null : false;
    };

    const addHooks = (parsedData) => {
        mw.hook('wikipage.content').add((content) => {
            if (hasUserLinks(content)) {
                markAdmins(content, parsedData);
            }
        });
        mw.hook('global.userlinks').add((content) => {
            if (hasUserLinks(content)) {
                markAdmins(content, parsedData);
            }
        });
    }
    /**
     * Qadceti hər dəqiqə işə salmamaq üçün səhifədə istifadəçi keçidlərinin olub-olmadığını yoxlayır. 
     * Brauzerdə yadda saxlanmış data varsa həmin datadan istifadə edir, yoxdursa XTools-a sorğu göndərib ordan yeni data əldə edir.
     */

    if (cacheddata) {
        const parsedData = JSON.parse(cacheddata)
        addHooks(parsedData)
    } else {
        fetch(`https://xtools.wmcloud.org/api/project/admin_groups/${mw.config.get('wgServerName')}`).then(res => res.json()).then(json => {

            /** Səhifəni hər yükləyəndə XTools-a yeni sorğu göndərməmək üçün datanı brauzerdə 1 saat müddətinə saxla
            ** https://www.w3schools.com/html/html5_webstorage.asp
            */
            mw.storage.set('mw-gadget-markadmins', JSON.stringify(json.users_and_groups), 3600)

            const parsedData = json.users_and_groups
            addHooks(parsedData)

        }).catch(() => {
            /**
             * XTools işləməyəndə lokaldakı JSON faylını istifadə et
             */
            fetch("https://az.wikipedia.org/w/index.php?title=MediaViki:Gadget-markadmins.json&action=raw").then(res => res.json()).then(json => {
                const parsedData = json.users_and_groups;
                mw.storage.set('mw-gadget-markadmins', JSON.stringify(parsedData), 3600)
                addHooks(parsedData)
            }).catch(console.error)
        })
    }
})
Mənbə — "https://az.wikipedia.org/w/index.php?title=MediaViki:Gadget-markadmins.js&oldid=8087597"
Informasiya Melumat Axtar