Menüyü değiştir
Toggle preferences menu
Kişisel menüyü aç / kapat
Oturum açık değil
Your IP address will be publicly visible if you make any edits.

MediaWiki:Common.js: Revizyonlar arasındaki fark

MediaWiki arayüz sayfası
Değişiklik özeti yok
Değişiklik özeti yok
1. satır: 1. satır:
/* Ana Sayfa Dinamik Son Değişiklikler Feed Motoru */
/* Ana Sayfa Riski Sıfırlanmış Son Değişiklikler Feed Motoru */
mw.loader.using(['mediawiki.api'], function () {
mw.loader.using(['mediawiki.api', 'mediawiki.util'], function () {
     $(document).ready(function () {
     $(document).ready(function () {
         var $feedContainer = $('#wiki-recent-js-feed');
         var $feedContainer = $('#wiki-recent-js-feed');
         if (!$feedContainer.length) return; // Eğer sayfada şablon yoksa çalıştırma
         if (!$feedContainer.length) return;


         var api = new mw.Api();
         var api = new mw.Api();
          
          
         // 1. Adım: Son değişiklikleri API'den çek (Sadece Ana Maddeler - Namespace 0)
         // Teknik sayfaları (Şablon, Kategori, Özel vs.) baştan filtreleyip sadece ana maddeleri çağırıyoruz
         api.get({
         api.get({
             action: 'query',
             action: 'query',
             list: 'recentchanges',
             list: 'recentchanges',
             rcnamespace: 0, // Şablon, Özel, Kategori gibi teknik sayfaları eler
             rcnamespace: 0,  
             rclimit: 5,
             rclimit: 5,
             rctype: 'edit|new',
             rctype: 'edit|new',
18. satır: 18. satır:
             var items = data.query.recentchanges;
             var items = data.query.recentchanges;
             if (!items || items.length === 0) {
             if (!items || items.length === 0) {
                 $feedContainer.html('<div style="color:#666; padding:20px;">Henüz değişiklik yok.</div>');
                 $feedContainer.html('<div style="color:#666; padding:20px; text-align:center;">Henüz bir değişiklik bulunmuyor.</div>');
                 return;
                 return;
             }
             }


             var titles = items.map(function (item) { return item.title; });
             var htmlOutput = '';
 
           
             // 2. Adım: Bu maddelerin ana görsellerini (PageImages) topluca çek
             // Kodun kilitlenmesini önlemek için doğrudan HTML üretim döngüsüne giriyoruz
             api.get({
             items.forEach(function (item) {
                action: 'query',
                 var pageTitle = item.title;
                titles: titles.join('|'),
                 var pageLink = mw.util.getUrl(pageTitle);
                prop: 'pageimages',
                piprop: 'thumbnail',
                pithumbsize: 160,
                format: 'json'
            }).done(function (imgData) {
                 var pages = imgData.query.pages;
                 var imageMap = {};
                  
                  
                 // Sayfa başlığı ile görsel URL'sini eşleştir
                 // İnatçı görsel hatalarını aşmak için: Buraya sitendeki varsayılan bir görselin adını (örn: Recent-default.jpg)
                 for (var pageId in pages) {
                // ya da direkt MediaWiki'nin kendi yüklediğin logo/ikon URL'sini koyabilirsin. Şu an güvenli bir görsel alanı ayrıldı.
                    var p = pages[pageId];
                 var defaultThumb = '/skins/Common/images/magnify.png';  
                    if (p.thumbnail && p.thumbnail.source) {
                        imageMap[p.title] = p.thumbnail.source;
                    }
                }


                 // 3. Adım: HTML Yapısını Hatasız İnşa Et
                 htmlOutput += '<div class="wiki-recent-row">' +
                var htmlOutput = '';
                    '<div class="wiki-recent-text">' +
                items.forEach(function (item) {
                        '<div class="wiki-recent-title"><a href="' + pageLink + '">' + pageTitle + '</a></div>' +
                    var pageTitle = item.title;
                    '</div>' +
                    var pageLink = mw.util.getUrl(pageTitle);
                    '<div class="wiki-recent-img-wrapper">' +
                    // Görsel varsa onu koy, yoksa varsayılan boş siyah görsel koy
                        '<a href="' + pageLink + '"><div class="wiki-recent-fake-thumb">▶</div></a>' +
                    var imgUrl = imageMap[pageTitle] || 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="80" height="52" viewBox="0 0 80 52"><rect width="80" height="52" fill="%23111"/></svg>';
                    '</div>' +
 
                '</div>';
                    htmlOutput += '<div class="wiki-recent-row">' +
            });
                        '<div class="wiki-recent-text">' +
                            '<div class="wiki-recent-title"><a href="' + pageLink + '">' + pageTitle + '</a></div>' +
                        '</div>' +
                        '<div class="wiki-recent-img-wrapper">' +
                            '<a href="' + pageLink + '"><img src="' + imgUrl + '" alt="' + pageTitle + '"></a>' +
                        '</div>' +
                    '</div>';
                });


                $feedContainer.html(htmlOutput);
            $feedContainer.html(htmlOutput);
            });
         }).fail(function () {
         }).fail(function () {
             $feedContainer.html('<div style="color:#888; padding:20px;">Yüklenirken hata oluştu.</div>');
             $feedContainer.html('<div style="color:#888; padding:20px; text-align:center;">Akış yüklenirken bir sorun oluştu.</div>');
         });
         });
     });
     });
});
});

07.10, 5 Temmuz 2026 tarihindeki hâli

/* Ana Sayfa Riski Sıfırlanmış Son Değişiklikler Feed Motoru */
mw.loader.using(['mediawiki.api', 'mediawiki.util'], function () {
    $(document).ready(function () {
        var $feedContainer = $('#wiki-recent-js-feed');
        if (!$feedContainer.length) return;

        var api = new mw.Api();
        
        // Teknik sayfaları (Şablon, Kategori, Özel vs.) baştan filtreleyip sadece ana maddeleri çağırıyoruz
        api.get({
            action: 'query',
            list: 'recentchanges',
            rcnamespace: 0, 
            rclimit: 5,
            rctype: 'edit|new',
            format: 'json'
        }).done(function (data) {
            var items = data.query.recentchanges;
            if (!items || items.length === 0) {
                $feedContainer.html('<div style="color:#666; padding:20px; text-align:center;">Henüz bir değişiklik bulunmuyor.</div>');
                return;
            }

            var htmlOutput = '';
            
            // Kodun kilitlenmesini önlemek için doğrudan HTML üretim döngüsüne giriyoruz
            items.forEach(function (item) {
                var pageTitle = item.title;
                var pageLink = mw.util.getUrl(pageTitle);
                
                // İnatçı görsel hatalarını aşmak için: Buraya sitendeki varsayılan bir görselin adını (örn: Recent-default.jpg) 
                // ya da direkt MediaWiki'nin kendi yüklediğin logo/ikon URL'sini koyabilirsin. Şu an güvenli bir görsel alanı ayrıldı.
                var defaultThumb = '/skins/Common/images/magnify.png'; 

                htmlOutput += '<div class="wiki-recent-row">' +
                    '<div class="wiki-recent-text">' +
                        '<div class="wiki-recent-title"><a href="' + pageLink + '">' + pageTitle + '</a></div>' +
                    '</div>' +
                    '<div class="wiki-recent-img-wrapper">' +
                        '<a href="' + pageLink + '"><div class="wiki-recent-fake-thumb">▶</div></a>' +
                    '</div>' +
                '</div>';
            });

            $feedContainer.html(htmlOutput);
        }).fail(function () {
            $feedContainer.html('<div style="color:#888; padding:20px; text-align:center;">Akış yüklenirken bir sorun oluştu.</div>');
        });
    });
});