MediaWiki:Common.js: Revizyonlar arasındaki fark

MYWiki sitesinden
Gezinti kısmına atla Arama kısmına atla
Değişiklik özeti yok
Etiket: Geri alındı
Değişiklik özeti yok
Etiket: Geri alındı
1. satır: 1. satır:
mw.hook('wikipage.content').add(function () {
(function() {
    if (mw.config.get('wgNamespaceNumber') < 0) return; // Özel: ve Dosya: vb. sayfalarda çalışmaz
    if (mw.config.get('wgTitle') === 'Anasayfa') return; // Anasayfa hariç
    if (mw.config.get('wgNamespaceNumber') !== 0) return; // Wiki sayfası değilse çık


     var ns = mw.config.get('wgNamespaceNumber');
     const currentUser = mw.config.get('wgUserName');
     var title = mw.config.get('wgTitle');
     const pageTitle = mw.config.get('wgPageName');
    var user = mw.config.get('wgRelevantUserName');


     // Sadece içerik sayfaları, Anasayfa hariç
     function countWords(text) {
     if (ns !== 0 || title === 'Anasayfa') return;
        return text.trim().split(/\s+/).length;
     }


     var textLength = $('#mw-content-text').text().trim().length;
     function countCompoundWords(text) {
     var imageCount = $('#mw-content-text img').length;
        return (text.match(/\b\w{2,}\w+\b/g) || []).length;
     }


     if (textLength >= 600 && imageCount >= 1) return;
     function hasImages() {
        return document.querySelectorAll('img').length > 0;
    }


     if ($('#gelistirilmeli-kutu').length) return;
     function showTemplate(templateName, container=document.body) {
        const div = document.createElement('div');
        div.style.cssText = 'border:2px solid #ff6600; background-color:#fff3e6; padding:10px; border-radius:8px; font-weight:bold; color:#333; margin:10px 0;';
        if(templateName === 'Gelismeli') div.textContent = 'Bu sayfa yeterince geliştirilmemiştir. Lütfen içerik ekleyin!';
        if(templateName === 'Tecrübesiz') div.textContent = 'Bu kullanıcı tecrübesiz bir düzenleyicidir. Lütfen katkılarını gözden geçirin.';
        if(templateName === 'Hosgeldin') div.textContent = 'Hoşgeldin! Anasayfanı ve diğer sayfaları kontrol ederek katkıda bulunabilirsin.';
        container.prepend(div);
    }


     // Geliştirilmeli şablonunu ekle
     function checkPage() {
    $('#mw-content-text').prepend(
        const contentEl = document.querySelector('#mw-content-text');
         '<div id="gelistirilmeli-kutu">{{Gelismeli}}</div>'
         if(!contentEl) return;
    );


    // Sayfayı oluşturan kullanıcıyı bul
        const text = contentEl.innerText || '';
    new mw.Api().get({
        if(countWords(text) < 3 || countCompoundWords(text) < 3 || !hasImages()) {
        action: 'query',
            showTemplate('Gelismeli');
        prop: 'revisions',
            // Kullanıcının sayfaları sayılacak (örnek: MediaWiki API kullan)
        titles: title,
            fetch(`/api.php?action=query&list=allpages&apprefix=User:${currentUser}&format=json`)
        rvlimit: 1,
                .then(res => res.json())
        rvdir: 'newer',
                .then(data => {
        rvprop: 'user'
                    const userPages = data.query.allpages || [];
     }).done(function (data) {
                    let countGelismeli = 0;
                    userPages.forEach(p => {
                        // Burada gerçek kontroller için API ile pagecontent alınabilir
                        if(true) countGelismeli++; // örnek olarak hepsini say
                    });
                    if(countGelismeli >= 5) {
                        showTemplate('Tecrübesiz');
                        showTemplate('Hosgeldin');
                    }
                });
        }
     }


        var pages = data.query.pages;
    checkPage();
        var firstUser = Object.values(pages)[0].revisions[0].user;
})();
 
        // Kullanıcının kaç tane "Geliştirilmeli" sayfası var say
        new mw.Api().get({
            action: 'query',
            list: 'usercontribs',
            ucuser: firstUser,
            uclimit: 500
        }).done(function (ucdata) {
 
            var count = 0;
 
            ucdata.query.usercontribs.forEach(function (c) {
                if (c.title !== title) return;
                count++;
            });
 
            if (count < 5) return;
 
            // Kullanıcı sayfasına kutu ekle (sayfa olmasa bile)
            new mw.Api().postWithToken('csrf', {
                action: 'edit',
                title: 'Kullanıcı:' + firstUser,
                prependtext: '{{Tecrübesiz düzenleyici}}\n',
                createonly: false
            });
 
            // Kullanıcıya mesaj gönder
            new mw.Api().postWithToken('csrf', {
                action: 'edit',
                title: 'Kullanıcı mesaj:' + firstUser,
                appendtext: '\n== Sayfalarınızı geliştirmeniz gerekiyor ==
 
Merhaba,
 
Oluşturduğunuz bazı sayfalarda yeterli içerik ve görsel bulunmadığı tespit edildi.
 
Lütfen oluşturduğunuz sayfalara:
* Daha fazla açıklayıcı metin ekleyin
* En az bir görsel ekleyin
* Düzenleme kurallarına uygun hale getirin
 
Aksi halde sayfalarınız geliştirilmeli olarak işaretlenmeye devam edecektir.
 
İyi çalışmalar.\n',
                createonly: false
            });
 
        });
 
    });
 
});

14.20, 8 Şubat 2026 tarihindeki hâli

(function() {
    if (mw.config.get('wgNamespaceNumber') < 0) return; // Özel: ve Dosya: vb. sayfalarda çalışmaz
    if (mw.config.get('wgTitle') === 'Anasayfa') return; // Anasayfa hariç
    if (mw.config.get('wgNamespaceNumber') !== 0) return; // Wiki sayfası değilse çık

    const currentUser = mw.config.get('wgUserName');
    const pageTitle = mw.config.get('wgPageName');

    function countWords(text) {
        return text.trim().split(/\s+/).length;
    }

    function countCompoundWords(text) {
        return (text.match(/\b\w{2,}\w+\b/g) || []).length;
    }

    function hasImages() {
        return document.querySelectorAll('img').length > 0;
    }

    function showTemplate(templateName, container=document.body) {
        const div = document.createElement('div');
        div.style.cssText = 'border:2px solid #ff6600; background-color:#fff3e6; padding:10px; border-radius:8px; font-weight:bold; color:#333; margin:10px 0;';
        if(templateName === 'Gelismeli') div.textContent = 'Bu sayfa yeterince geliştirilmemiştir. Lütfen içerik ekleyin!';
        if(templateName === 'Tecrübesiz') div.textContent = 'Bu kullanıcı tecrübesiz bir düzenleyicidir. Lütfen katkılarını gözden geçirin.';
        if(templateName === 'Hosgeldin') div.textContent = 'Hoşgeldin! Anasayfanı ve diğer sayfaları kontrol ederek katkıda bulunabilirsin.';
        container.prepend(div);
    }

    function checkPage() {
        const contentEl = document.querySelector('#mw-content-text');
        if(!contentEl) return;

        const text = contentEl.innerText || '';
        if(countWords(text) < 3 || countCompoundWords(text) < 3 || !hasImages()) {
            showTemplate('Gelismeli');
            // Kullanıcının sayfaları sayılacak (örnek: MediaWiki API kullan)
            fetch(`/api.php?action=query&list=allpages&apprefix=User:${currentUser}&format=json`)
                .then(res => res.json())
                .then(data => {
                    const userPages = data.query.allpages || [];
                    let countGelismeli = 0;
                    userPages.forEach(p => {
                        // Burada gerçek kontroller için API ile pagecontent alınabilir
                        if(true) countGelismeli++; // örnek olarak hepsini say
                    });
                    if(countGelismeli >= 5) {
                        showTemplate('Tecrübesiz');
                        showTemplate('Hosgeldin');
                    }
                });
        }
    }

    checkPage();
})();