מדיה ויקי:Common.js

מתוך אוצר מהרי''ט
קפיצה לניווט קפיצה לחיפוש

הערה: לאחר הפרסום, ייתכן שיהיה צורך לנקות את זיכרון המטמון (cache) של הדפדפן כדי להבחין בשינויים.

  • פיירפוקס / ספארי: להחזיק את המקש Shift בעת לחיצה על טעינה מחדש (Reload) או ללחוץ על צירוף המקשים Ctrl-F5 או Ctrl-R (במחשב מק: ⌘-R).
  • גוגל כרום: ללחוץ על צירוף המקשים Ctrl-Shift-R (במחשב מק: ⌘-Shift-R).
  • אינטרנט אקספלורר / אדג': להחזיק את המקש Ctrl בעת לחיצה על רענן (Refresh) או ללחוץ על צירוף המקשים Ctrl-F5.
  • אופרה: ללחוץ על Ctrl-F5.
// קוד קיים - משאירים אותו
(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();
    }
});