MediaWiki:Gadget-colorTextBoxEditor.js

From wikishia

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
  • Opera: Press Ctrl-F5.
$(function () {
    var edit = $("#wpTextbox1");
    if (edit.length === 0) { return; }

    // رنگ‌های پس‌زمینه و متن
    var backgroundColors = ['#ffffff', '#3c3c3c', '#4f4f4f', '#616161', '#1a1a1a', '#ff5722', '#8bc34a', '#9c27b0', '#009688', '#f44336'];
    var textColors = ['#ffffff', '#000000', '#c7c7c7', '#00bcd4', '#ff9800', '#8bc34a', '#3f51b5', '#e91e63', '#795548', '#ffeb3b'];
    var fontSizes = ['14px', '15px', '16px', '17px', '18px', '19px', '20px'];
    var fontFamily = 'iransansxlight';

    // بارگذاری تنظیمات ذخیره‌شده از localStorage
    var savedBackgroundColor = localStorage.getItem('background-color');
    var savedTextColor = localStorage.getItem('text-color');
    var savedFontSize = localStorage.getItem('font-size');
    var settingsVisible = localStorage.getItem('settings-visible') === 'true' || localStorage.getItem('settings-visible') === null;

    // اعمال تنظیمات ذخیره‌شده یا پیش‌فرض
    edit.css({
        'background-color': savedBackgroundColor || '#ffffff',
        'color': savedTextColor || '#000000',
        'font-size': savedFontSize || '16px',
        'font-family': fontFamily
    });

    // ایجاد یک کانتینر برای تنظیمات با نمایش پیش‌فرض و اسکرول در موبایل
    var controlsContainer = $('<div>', {
        css: {
            display: settingsVisible ? 'flex' : 'none',
            gap: '10px',
            alignItems: 'center',
            padding: '5px',
            border: '1px solid #ccc',
            borderRadius: '5px',
            marginBottom: '10px',
            backgroundColor: '#f9f9f9',
            overflowX: 'auto', // اسکرول افقی
            whiteSpace: 'nowrap', // جلوگیری از شکستن خط‌ها
            maxWidth: '100%' // عرض تطبیقی در دستگاه‌های مختلف
        }
    }).insertBefore(edit.parent());

    // دکمه باز و بسته کردن تنظیمات
    var toggleButton = $('<button>', {
        text: '🔧 تنظیمات',
		class: 'settings-button',
        css: {
            fontSize: '12px',
            padding: '2px 5px',
            margin: '5px 0',
            cursor: 'pointer',
            borderRadius: '3px',
            border: '1px solid #888'
        }
    }).insertBefore(controlsContainer);

    toggleButton.click(function () {
        settingsVisible = !settingsVisible;
        controlsContainer.toggle(settingsVisible);
        localStorage.setItem('settings-visible', settingsVisible);
    });

    // ایجاد دکمه‌ها برای انتخاب رنگ پس‌زمینه به صورت اینلاین
    var backgroundColorContainer = $('<div>', { css: { display: 'inline-flex', alignItems: 'center' } }).appendTo(controlsContainer);
    backgroundColorContainer.append($('<span>').text('رنگ پس‌زمینه:').css({ fontSize: '12px', marginRight: '5px' }));
    $.each(backgroundColors, function (_, color) {
        backgroundColorContainer.append($('<button>', {
            css: {
                backgroundColor: color,
                margin: '0 3px',
                width: '20px',
                height: '20px',
                border: '1px solid #ccc',
                borderRadius: '50%'
            }
        }).click(function () {
            edit.css('background-color', color);
            localStorage.setItem('background-color', color);
        }));
    });

    // ایجاد دکمه‌ها برای انتخاب رنگ متن به صورت اینلاین
    var textColorContainer = $('<div>', { css: { display: 'inline-flex', alignItems: 'center' } }).appendTo(controlsContainer);
    textColorContainer.append($('<span>').text('رنگ متن:').css({ fontSize: '12px', marginRight: '5px' }));
    $.each(textColors, function (_, color) {
        textColorContainer.append($('<button>', {
            css: {
                backgroundColor: color,
                margin: '0 3px',
                width: '20px',
                height: '20px',
                border: '1px solid #ccc',
                borderRadius: '50%'
            }
        }).click(function () {
            edit.css('color', color);
            localStorage.setItem('text-color', color);
        }));
    });

    // ایجاد دکمه‌ها برای انتخاب اندازه فونت به صورت اینلاین
    var fontSizeContainer = $('<div>', { css: { display: 'inline-flex', alignItems: 'center' } }).appendTo(controlsContainer);
    fontSizeContainer.append($('<span>').text('اندازهٔ متن:').css({ fontSize: '12px', marginRight: '5px' }));
    $.each(fontSizes, function (_, size) {
        fontSizeContainer.append($('<button>', {
            text: size,
            css: {
                margin: '0 3px',
                padding: '2px 4px',
                fontSize: '12px',
                border: '1px solid #ccc',
                borderRadius: '4px'
            }
        }).click(function () {
            edit.css('font-size', size);
            localStorage.setItem('font-size', size);
        }));
    });
});