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

מתוך אוצר מהרי''ט
קפיצה לניווט קפיצה לחיפוש
Admin (שיחה | תרומות)
אין תקציר עריכה
Admin (שיחה | תרומות)
אין תקציר עריכה
 
(2 גרסאות ביניים של אותו משתמש אינן מוצגות)
שורה 56: שורה 56:
     function loadPreferences() {
     function loadPreferences() {
         var fontSize = AppearancePrefs.get('fontSize', 'medium');
         var fontSize = AppearancePrefs.get('fontSize', 'medium');
         var theme = AppearancePrefs.get('theme', 'light');
         var contentWidth = AppearancePrefs.get('contentWidth', 'normal');
         var fontFamily = AppearancePrefs.get('fontFamily', 'david');
         var fontFamily = AppearancePrefs.get('fontFamily', 'david');
        var panelVisible = AppearancePrefs.get('panelVisible', 'true');


         applyFontSize(fontSize);
         applyFontSize(fontSize);
         applyTheme(theme);
         applyContentWidth(contentWidth);
         applyFontFamily(fontFamily);
         applyFontFamily(fontFamily);
        // החלת מצב התפריט
        if (panelVisible === 'false') {
            $('#appearance-panel').addClass('hidden');
            $('#appearance-toggle').addClass('panel-hidden');
        }
     }
     }


     // החלת גודל טקסט
     // החלת גודל טקסט
     function applyFontSize(size) {
     function applyFontSize(size) {
         var $body = $('body');
         var $content = $('#content, .mw-parser-output');
         $body.removeClass('text-small text-medium text-large text-xlarge');
         $content.removeClass('text-small text-medium text-large text-xlarge');
         $body.addClass('text-' + size);
         $content.addClass('text-' + size);
         AppearancePrefs.set('fontSize', size);
         AppearancePrefs.set('fontSize', size);


        // עדכון בחירה בתפריט
         $('.appearance-option[data-type="fontSize"]').removeClass('active');
         $('.appearance-option[data-type="fontSize"]').removeClass('active');
         $('.appearance-option[data-type="fontSize"][data-value="' + size + '"]').addClass('active');
         $('.appearance-option[data-type="fontSize"][data-value="' + size + '"]').addClass('active');
     }
     }


     // החלת ערכת צבעים
     // החלת רוחב תוכן
     function applyTheme(theme) {
     function applyContentWidth(width) {
         var $body = $('body');
         var $content = $('#content');
         $body.removeClass('theme-light theme-dark theme-sepia');
         var $body = $('.mw-body');
         $body.addClass('theme-' + theme);
 
         AppearancePrefs.set('theme', theme);
         $content.removeClass('width-normal width-wide');
         $body.removeClass('width-normal width-wide');


         // עדכון בחירה בתפריט
         $content.addClass('width-' + width);
         $('.appearance-option[data-type="theme"]').removeClass('active');
        $body.addClass('width-' + width);
         $('.appearance-option[data-type="theme"][data-value="' + theme + '"]').addClass('active');
 
        AppearancePrefs.set('contentWidth', width);
 
         $('.appearance-option[data-type="contentWidth"]').removeClass('active');
         $('.appearance-option[data-type="contentWidth"][data-value="' + width + '"]').addClass('active');
     }
     }


     // החלת גופן
     // החלת גופן
     function applyFontFamily(font) {
     function applyFontFamily(font) {
         var $body = $('body');
         var $content = $('#content, .mw-parser-output');
         $body.removeClass('font-david font-frank font-arial');
         $content.removeClass('font-david font-frank font-arial');
         $body.addClass('font-' + font);
         $content.addClass('font-' + font);
         AppearancePrefs.set('fontFamily', font);
         AppearancePrefs.set('fontFamily', font);


        // עדכון בחירה בתפריט
         $('.appearance-option[data-type="fontFamily"]').removeClass('active');
         $('.appearance-option[data-type="fontFamily"]').removeClass('active');
         $('.appearance-option[data-type="fontFamily"][data-value="' + font + '"]').addClass('active');
         $('.appearance-option[data-type="fontFamily"][data-value="' + font + '"]').addClass('active');
    }
    // הצגה/הסתרת תפריט
    function togglePanel() {
        var $panel = $('#appearance-panel');
        var $toggle = $('#appearance-toggle');
        $panel.toggleClass('hidden');
        $toggle.toggleClass('panel-hidden');
        var isVisible = !$panel.hasClass('hidden');
        AppearancePrefs.set('panelVisible', isVisible ? 'true' : 'false');
    }
    // יצירת כפתור הצגה/הסתרה
    function createToggleButton() {
        var html = '<div id="appearance-toggle" title="הצג/הסתר תפריט מראה">⚙</div>';
        $('body').append(html);
        $('#appearance-toggle').on('click', function() {
            togglePanel();
        });
     }
     }


שורה 103: שורה 135:
     function createAppearanceMenu() {
     function createAppearanceMenu() {
         var html =
         var html =
             '<div id="appearance-panel" class="vector-menu vector-menu-portal portal" role="navigation">' +
             '<div id="appearance-panel">' +
             '  <h3 class="vector-menu-heading"><span>מראה</span></h3>' +
             '  <h3 class="appearance-heading">מראה</h3>' +
             '  <div class="vector-menu-content">' +
             '  <div class="appearance-content">' +
             '    <ul class="vector-menu-content-list">' +
             '    <div class="appearance-section">גודל טקסט:</div>' +
            '      <li class="appearance-section">גודל טקסט:</li>' +
             '   <div class="appearance-option" data-type="fontSize" data-value="small">קטן</div>' +
             '     <li class="appearance-option" data-type="fontSize" data-value="small">קטן</li>' +
             '   <div class="appearance-option" data-type="fontSize" data-value="medium">בינוני</div>' +
             '     <li class="appearance-option" data-type="fontSize" data-value="medium">בינוני</li>' +
             '   <div class="appearance-option" data-type="fontSize" data-value="large">גדול</div>' +
             '     <li class="appearance-option" data-type="fontSize" data-value="large">גדול</li>' +
             '   <div class="appearance-option" data-type="fontSize" data-value="xlarge">גדול מאוד</div>' +
             '     <li class="appearance-option" data-type="fontSize" data-value="xlarge">גדול מאוד</li>' +
             '   <div class="appearance-divider"></div>' +
             '     <li class="appearance-divider"></li>' +
             '   <div class="appearance-section">רוחב תוכן:</div>' +
             '     <li class="appearance-section">ערכת צבעים:</li>' +
             '   <div class="appearance-option" data-type="contentWidth" data-value="normal">רגיל</div>' +
             '     <li class="appearance-option" data-type="theme" data-value="light">בהיר</li>' +
             '   <div class="appearance-option" data-type="contentWidth" data-value="wide">רחב</div>' +
             '     <li class="appearance-option" data-type="theme" data-value="dark">כהה</li>' +
             '   <div class="appearance-divider"></div>' +
             '     <li class="appearance-option" data-type="theme" data-value="sepia">ספיה</li>' +
             '   <div class="appearance-section">גופן:</div>' +
            '      <li class="appearance-divider"></li>' +
             '   <div class="appearance-option" data-type="fontFamily" data-value="david">דוד</div>' +
             '     <li class="appearance-section">גופן:</li>' +
             '   <div class="appearance-option" data-type="fontFamily" data-value="frank">פרנק</div>' +
             '     <li class="appearance-option" data-type="fontFamily" data-value="david">דוד</li>' +
             '   <div class="appearance-option" data-type="fontFamily" data-value="arial">אריאל</div>' +
             '     <li class="appearance-option" data-type="fontFamily" data-value="frank">פרנק</li>' +
             '     <li class="appearance-option" data-type="fontFamily" data-value="arial">אריאל</li>' +
            '    </ul>' +
             '  </div>' +
             '  </div>' +
             '</div>';
             '</div>';


         // הוספת התפריט לסרגל הצד
         $('body').append(html);
        var $sidebar = $('#mw-panel');
        if ($sidebar.length) {
            $(html).insertBefore($sidebar.find('.portal').first());
        }


         // הוספת מאזינים לאירועים
         // מאזינים לאירועים
         $('.appearance-option').on('click', function() {
         $('.appearance-option').on('click', function() {
             var $this = $(this);
             var $this = $(this);
שורה 140: שורה 165:
             if (type === 'fontSize') {
             if (type === 'fontSize') {
                 applyFontSize(value);
                 applyFontSize(value);
             } else if (type === 'theme') {
             } else if (type === 'contentWidth') {
                 applyTheme(value);
                 applyContentWidth(value);
             } else if (type === 'fontFamily') {
             } else if (type === 'fontFamily') {
                 applyFontFamily(value);
                 applyFontFamily(value);
שורה 151: שורה 176:
     $(function() {
     $(function() {
         createAppearanceMenu();
         createAppearanceMenu();
        createToggleButton();
         loadPreferences();
         loadPreferences();
     });
     });


})();
})();

גרסה אחרונה מ־22:01, 1 בנובמבר 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('רבי_יואל_טייטלבוים');
    }
})();

// תוכן עניינים - גרסה משופרת
mw.hook('wikipage.content').add(function ($content) {
    var $toc = $('#toc');
    if ($toc.length) {
        var $window = $(window);
        var $header = $('#firstHeading');

        function updateTocPosition() {
            var scrollTop = $window.scrollTop();
            var headerHeight = $header.offset().top + $header.outerHeight();

            $toc.css('top', scrollTop > headerHeight ? '0' : '220px');
        }

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

// ========== בקרי מראה (Appearance Controls) ==========
(function() {
    'use strict';

    // פונקציות עזר לניהול העדפות
    var AppearancePrefs = {
        get: function(key, defaultVal) {
            try {
                var val = localStorage.getItem('otzar-' + key);
                return val !== null ? val : defaultVal;
            } catch(e) {
                return defaultVal;
            }
        },
        set: function(key, val) {
            try {
                localStorage.setItem('otzar-' + key, val);
            } catch(e) {}
        }
    };

    // טעינת העדפות שמורות
    function loadPreferences() {
        var fontSize = AppearancePrefs.get('fontSize', 'medium');
        var contentWidth = AppearancePrefs.get('contentWidth', 'normal');
        var fontFamily = AppearancePrefs.get('fontFamily', 'david');
        var panelVisible = AppearancePrefs.get('panelVisible', 'true');

        applyFontSize(fontSize);
        applyContentWidth(contentWidth);
        applyFontFamily(fontFamily);

        // החלת מצב התפריט
        if (panelVisible === 'false') {
            $('#appearance-panel').addClass('hidden');
            $('#appearance-toggle').addClass('panel-hidden');
        }
    }

    // החלת גודל טקסט
    function applyFontSize(size) {
        var $content = $('#content, .mw-parser-output');
        $content.removeClass('text-small text-medium text-large text-xlarge');
        $content.addClass('text-' + size);
        AppearancePrefs.set('fontSize', size);

        $('.appearance-option[data-type="fontSize"]').removeClass('active');
        $('.appearance-option[data-type="fontSize"][data-value="' + size + '"]').addClass('active');
    }

    // החלת רוחב תוכן
    function applyContentWidth(width) {
        var $content = $('#content');
        var $body = $('.mw-body');

        $content.removeClass('width-normal width-wide');
        $body.removeClass('width-normal width-wide');

        $content.addClass('width-' + width);
        $body.addClass('width-' + width);

        AppearancePrefs.set('contentWidth', width);

        $('.appearance-option[data-type="contentWidth"]').removeClass('active');
        $('.appearance-option[data-type="contentWidth"][data-value="' + width + '"]').addClass('active');
    }

    // החלת גופן
    function applyFontFamily(font) {
        var $content = $('#content, .mw-parser-output');
        $content.removeClass('font-david font-frank font-arial');
        $content.addClass('font-' + font);
        AppearancePrefs.set('fontFamily', font);

        $('.appearance-option[data-type="fontFamily"]').removeClass('active');
        $('.appearance-option[data-type="fontFamily"][data-value="' + font + '"]').addClass('active');
    }

    // הצגה/הסתרת תפריט
    function togglePanel() {
        var $panel = $('#appearance-panel');
        var $toggle = $('#appearance-toggle');

        $panel.toggleClass('hidden');
        $toggle.toggleClass('panel-hidden');

        var isVisible = !$panel.hasClass('hidden');
        AppearancePrefs.set('panelVisible', isVisible ? 'true' : 'false');
    }

    // יצירת כפתור הצגה/הסתרה
    function createToggleButton() {
        var html = '<div id="appearance-toggle" title="הצג/הסתר תפריט מראה">⚙</div>';
        $('body').append(html);

        $('#appearance-toggle').on('click', function() {
            togglePanel();
        });
    }

    // יצירת תפריט מראה
    function createAppearanceMenu() {
        var html =
            '<div id="appearance-panel">' +
            '  <h3 class="appearance-heading">מראה</h3>' +
            '  <div class="appearance-content">' +
            '    <div class="appearance-section">גודל טקסט:</div>' +
            '    <div class="appearance-option" data-type="fontSize" data-value="small">קטן</div>' +
            '    <div class="appearance-option" data-type="fontSize" data-value="medium">בינוני</div>' +
            '    <div class="appearance-option" data-type="fontSize" data-value="large">גדול</div>' +
            '    <div class="appearance-option" data-type="fontSize" data-value="xlarge">גדול מאוד</div>' +
            '    <div class="appearance-divider"></div>' +
            '    <div class="appearance-section">רוחב תוכן:</div>' +
            '    <div class="appearance-option" data-type="contentWidth" data-value="normal">רגיל</div>' +
            '    <div class="appearance-option" data-type="contentWidth" data-value="wide">רחב</div>' +
            '    <div class="appearance-divider"></div>' +
            '    <div class="appearance-section">גופן:</div>' +
            '    <div class="appearance-option" data-type="fontFamily" data-value="david">דוד</div>' +
            '    <div class="appearance-option" data-type="fontFamily" data-value="frank">פרנק</div>' +
            '    <div class="appearance-option" data-type="fontFamily" data-value="arial">אריאל</div>' +
            '  </div>' +
            '</div>';

        $('body').append(html);

        // מאזינים לאירועים
        $('.appearance-option').on('click', function() {
            var $this = $(this);
            var type = $this.data('type');
            var value = $this.data('value');

            if (type === 'fontSize') {
                applyFontSize(value);
            } else if (type === 'contentWidth') {
                applyContentWidth(value);
            } else if (type === 'fontFamily') {
                applyFontFamily(value);
            }
        });
    }

    // אתחול
    $(function() {
        createAppearanceMenu();
        createToggleButton();
        loadPreferences();
    });

})();