מדיה ויקי:Common.js: הבדלים בין גרסאות בדף

מתוך אוצר מהרי''ט
קפיצה לניווט קפיצה לחיפוש
אין תקציר עריכה
אין תקציר עריכה
שורה 14: שורה 14:


// הקוד החדש - מוסיפים אחרי הקוד הקיים
// הקוד החדש - מוסיפים אחרי הקוד הקיים
$(document).ready(function() {
// מוסיפים את זה אחרי הקוד הקיים ב-MediaWiki:Common.js
     const $toc = $('#toc');
mw.hook('wikipage.content').add(function ($content) {
    const $headers = $('h2, h3');
     if ($('#toc').length) {  // בודק אם יש תוכן עניינים בדף
    const $tocLinks = $('#toc a');
        var $toc = $('#toc');
   
        var $headers = $('h2, h3');
    function updateTocPosition() {
        var $tocLinks = $('#toc a');
        const headerHeight = $('#firstHeading').outerHeight();
        var $firstHeading = $('#firstHeading');
        if ($(window).scrollTop() > headerHeight) {
 
            $toc.css('top', '0px');
        // פונקציה לעדכון מיקום תוכן העניינים
        } else {
        function updateTocPosition() {
            $toc.css('top', '220px');
            var headerHeight = $firstHeading.offset().top + $firstHeading.outerHeight();
            if ($(window).scrollTop() > headerHeight) {
                $toc.css('top', '0');
            } else {
                $toc.css('top', '220px');
            }
        }
 
        // פונקציה להדגשת הסעיף הנוכחי
        function highlightCurrentSection() {
            var scrollPosition = $(window).scrollTop();
            $headers.each(function() {
                var $header = $(this);
                var sectionTop = $header.offset().top;
                if (scrollPosition >= sectionTop - 150) {
                    var id = $header.attr('id');
                    $tocLinks.removeClass('active');
                    $tocLinks.filter('[href="#' + id + '"]').addClass('active');
                }
            });
         }
         }
    }


    function highlightCurrentSection() {
         // הוספת מאזיני אירועים
         let currentSection = '';
         $(window).on('scroll.toc', function() {
         $headers.each(function() {
             requestAnimationFrame(function() {
             if ($(window).scrollTop() >= $(this).offset().top - 100) {
                updateTocPosition();
                currentSection = this.id;
                highlightCurrentSection();
             }
             });
         });
         });
        $tocLinks.removeClass('toc-highlight');
        $tocLinks.each(function() {
            if ($(this).attr('href').slice(1) === currentSection) {
                $(this).addClass('toc-highlight');
            }
        });
    }


    $(window).on('scroll', function() {
        // קריאה ראשונית
         updateTocPosition();
         updateTocPosition();
         highlightCurrentSection();
         highlightCurrentSection();
     });
     }
 
    updateTocPosition(); // קריאה ראשונית
});
});

גרסה מ־22:37, 8 בפברואר 2025

// קוד קיים - משאירים אותו
(function () {
    var userLang = mw.config.get('wgUserLanguage');
    var pageName = mw.config.get('wgPageName');

    if (pageName === 'רבי_יואל_טייטלבוים' && userLang === 'yi') {
        window.location.href = mw.util.getUrl('רבי_יואל_טייטלבוים/yi');
    }

    if (pageName === 'רבי_יואל_טייטלבוים/yi' && userLang === 'he') {
        window.location.href = mw.util.getUrl('רבי_יואל_טייטלבוים');
    }
})();

// הקוד החדש - מוסיפים אחרי הקוד הקיים
// מוסיפים את זה אחרי הקוד הקיים ב-MediaWiki:Common.js
mw.hook('wikipage.content').add(function ($content) {
    if ($('#toc').length) {  // בודק אם יש תוכן עניינים בדף
        var $toc = $('#toc');
        var $headers = $('h2, h3');
        var $tocLinks = $('#toc a');
        var $firstHeading = $('#firstHeading');

        // פונקציה לעדכון מיקום תוכן העניינים
        function updateTocPosition() {
            var headerHeight = $firstHeading.offset().top + $firstHeading.outerHeight();
            if ($(window).scrollTop() > headerHeight) {
                $toc.css('top', '0');
            } else {
                $toc.css('top', '220px');
            }
        }

        // פונקציה להדגשת הסעיף הנוכחי
        function highlightCurrentSection() {
            var scrollPosition = $(window).scrollTop();
            $headers.each(function() {
                var $header = $(this);
                var sectionTop = $header.offset().top;
                if (scrollPosition >= sectionTop - 150) {
                    var id = $header.attr('id');
                    $tocLinks.removeClass('active');
                    $tocLinks.filter('[href="#' + id + '"]').addClass('active');
                }
            });
        }

        // הוספת מאזיני אירועים
        $(window).on('scroll.toc', function() {
            requestAnimationFrame(function() {
                updateTocPosition();
                highlightCurrentSection();
            });
        });

        // קריאה ראשונית
        updateTocPosition();
        highlightCurrentSection();
    }
});