MediaWiki:Gadget-BDonizleme.js - Vikipedi
İçeriğe atla
Ana menü
Gezinti
  • Anasayfa
  • Hakkımızda
  • İçindekiler
  • Rastgele madde
  • Seçkin içerik
  • Yakınımdakiler
Katılım
  • Deneme tahtası
  • Köy çeşmesi
  • Son değişiklikler
  • Dosya yükle
  • Topluluk portalı
  • Wikimedia dükkânı
  • Yardım
  • Özel sayfalar
Vikipedi Özgür Ansiklopedi
Ara
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç
  • Bağış yapın
  • Hesap oluştur
  • Oturum aç

MediaWiki:Gadget-BDonizleme.js

  • Arayüz metni
  • Tartışma
  • Oku
  • Kaynağı gör
  • Geçmişi gör
Araçlar
Eylemler
  • Oku
  • Kaynağı gör
  • Geçmişi gör
Genel
  • Sayfaya bağlantılar
  • İlgili değişiklikler
  • Kalıcı bağlantı
  • Sayfa bilgisi
  • Kısaltılmış URL'yi al
  • Karekodu indir
Yazdır/dışa aktar
  • Bir kitap oluştur
  • PDF olarak indir
  • Basılmaya uygun görünüm
Diğer projelerde
Görünüm
Vikipedi, özgür ansiklopedi

Not: Sayfayı kaydettikten sonra değişiklikleri görebilmek için tarayıcınızın önbelleğinizi temizlemeniz gerekir. Google Chrome, Firefox, Microsoft Edge ve Safari: ⇧ Shift tuşuna basılı tutun ve Yeniden Yükle araç çubuğu düğmesine tıklayın. Ayrıntılar ve diğer tarayıcılara yönelik yönergeler için Vikipedi:Önbelleğinizi atlayın sayfasını inceleyin.

// Bekleyen Değişiklikler sayfasında diff önizleme
if (mw.config.get('wgCanonicalSpecialPageName') === 'PendingChanges') {
    mw.loader.using(['mediawiki.util'], function() {
        
        // Stil ekle
        $('<style>')
            .text('.preview-viewed { background-color: #d4edda !important; }')
            .appendTo('head');
        
        // Tablo sütun genişliklerini sabitle
        function fixTableColumnWidths($table) {
            // Eğer zaten sabitlenmişse tekrar yapma
            if ($table.data('widths-fixed')) return;
            
            // Her hücrenin genişliğini al ve sabitle
            $table.find('thead tr:first th, tbody tr:first td').each(function() {
                var $cell = $(this);
                var width = $cell.outerWidth();
                $cell.css('width', width + 'px');
            });
            
            $table.data('widths-fixed', true);
        }
        
        // Her incele linkinin yanına (Ön izleme) ekle
        $('a[href*="diff="]').each(function() {
            var $link = $(this);
            if ($link.text().includes('incele') && !$link.next('.preview-link').length) {
                // İncele linkini arka planda yeni sekmede aç ve yeşile çevir
                $link.on('click', function(e) {
                    e.preventDefault();
                    
                    // Satırı yeşile çevir
                    $(this).closest('tr').addClass('preview-viewed');
                    
                    // Yeni sekmede aç ama odağı burada tut
                    window.open($(this).attr('href'), '_blank');
                    window.focus();
                });
                
                $link.after(' <a href="#" class="preview-link" style="color: #72777d; font-size: 0.9em;">(Ön izleme)</a>');
            }
        });
        
        // Ön izleme linkine tıklama
        $(document).on('click', '.preview-link', function(e) {
            e.preventDefault();
            
            var $previewLink = $(this);
            var $inceleLink = $previewLink.prev('a');
            var $row = $previewLink.closest('tr');
            var $table = $row.closest('table');
            var $existingPreview = $row.next('.diff-preview-row');
            
            // Zaten bu satırda açıksa kapat
            if ($existingPreview.length) {
                $existingPreview.remove();
                $previewLink.text('(Ön izleme)');
                return;
            }
            
            // SÜTUN GENİŞLİKLERİNİ SABİTLE
            fixTableColumnWidths($table);
            
            // DİĞER TÜM ÖNİZLEMELERİ KAPAT
            $('.diff-preview-row').remove();
            $('.preview-link').text('(Ön izleme)');
            
            // Bu linki (Kapat) yap
            $previewLink.text('(Kapat)');
            
            // SATIRI YEŞİL YAP
            $row.addClass('preview-viewed');
            
            // Önizleme satırı oluştur
            var $previewRow = $('<tr>')
                .addClass('diff-preview-row')
                .insertAfter($row);
            
            var $cell = $('<td>')
                .attr('colspan', '4')
                .css({
                    'padding': '0',
                    'margin': '0',
                    'background': 'white',
                    'border': 'none'
                })
                .appendTo($previewRow);
            
            var $container = $('<div>')
                .css({
                    'margin': '0',
                    'padding': '0',
                    'background': 'white',
                    'border': 'none',
                    'box-shadow': 'none'
                })
                .appendTo($cell);
            
            // Başlık
            var $header = $('<div>')
                .css({
                    'position': 'sticky',
                    'top': '0',
                    'background': '#eaecf0',
                    'padding': '8px 10px',
                    'margin': '0',
                    'border': 'none',
                    'border-bottom': '1px solid #c8ccd1',
                    'z-index': '100'
                })
                .html(
                    '<button class="preview-close-btn" style="float: right; padding: 4px 12px; margin: 0; cursor: pointer; background: #d33; color: white; border: none; border-radius: 3px; font-weight: bold;">✕ Kapat</button>' +
                    '<strong>Ön izleme</strong> - ' +
                    '<a href="' + $inceleLink.attr('href') + '" target="_blank" class="preview-external-link" style="color: #0645ad;">Tam sayfada aç ↗</a>'
                )
                .appendTo($container);
            
            // Kapat butonuna tıklama
            $header.find('.preview-close-btn').on('click', function() {
                $previewRow.remove();
                $previewLink.text('(Ön izleme)');
            });
            
            // İçerik alanı
            var $content = $('<div>')
                .css({
                    'max-width': '100%',
                    'overflow-x': 'auto',
                    'padding': '0',
                    'margin': '0',
                    'border': 'none'
                })
                .html('<div style="padding: 20px; text-align: center;"><img src="//upload.wikimedia.org/wikipedia/commons/d/de/Ajax-loader.gif" alt="Yükleniyor..."> Yükleniyor...</div>')
                .appendTo($container);
            
            // Diff sayfasını yükle
            $.get($inceleLink.attr('href'), function(html) {
                var $doc = $(html);
                
                var $diff = $doc.find('.diff').first().clone();
                var $diffHeader = $doc.find('#mw-fr-diff-headeritems').first().clone();
                
                // Border ve padding'leri temizle
                $diff.css({
                    'border': 'none',
                    'margin': '0'
                });
                $diffHeader.css({
                    'border': 'none',
                    'margin': '0'
                });
                
                if ($diffHeader.length || $diff.length) {
                    $content.empty();
                    
                    // Sadece diff header ve diff tablosu
                    if ($diffHeader.length) $content.append($diffHeader);
                    if ($diff.length) $content.append($diff);
                    
                    // TÜM LİNKLERE TIKLANDIĞINDA ÖN İZLEMEYİ KAPAT
                    $content.find('a').not('.preview-close-btn').on('click', function(e) {
                        // Link yeni sekmede açılacak
                        var href = $(this).attr('href');
                        if (href && href !== '#') {
                            // Önizlemeyi kapat
                            $previewRow.remove();
                            $previewLink.text('(Ön izleme)');
                        }
                    });
                    
                } else {
                    $content.html('<div style="padding: 20px; color: #d33;">İçerik bulunamadı.</div>');
                }
            }).fail(function() {
                $content.html(
                    '<div style="padding: 20px; background: #fee;">' +
                    '<strong>Hata:</strong> İçerik yüklenemedi. ' +
                    '<a href="' + $inceleLink.attr('href') + '" target="_blank">Sayfayı aç</a>' +
                    '</div>'
                );
            });
            
            // "Tam sayfada aç" linkine tıklandığında ön izlemeyi kapat
            $header.find('.preview-external-link').on('click', function() {
                $previewRow.remove();
                $previewLink.text('(Ön izleme)');
            });
        });
        
    });
}
"https://tr.wikipedia.org/w/index.php?title=MediaWiki:Gadget-BDonizleme.js&oldid=36402129" sayfasından alınmıştır
  • Sayfa en son 00.44, 16 Kasım 2025 tarihinde değiştirildi.
  • Metin Creative Commons Atıf-AynıLisanslaPaylaş Lisansı altındadır ve ek koşullar uygulanabilir. Bu siteyi kullanarak Kullanım Şartlarını ve Gizlilik Politikasını kabul etmiş olursunuz.
    Vikipedi® (ve Wikipedia®) kâr amacı gütmeyen kuruluş olan Wikimedia Foundation, Inc. tescilli markasıdır.
  • Gizlilik politikası
  • Vikipedi hakkında
  • Sorumluluk reddi
  • Davranış Kuralları
  • Geliştiriciler
  • İstatistikler
  • Çerez politikası
  • Mobil görünüm
  • Wikimedia Foundation
  • Powered by MediaWiki
MediaWiki:Gadget-BDonizleme.js
Konu ekle