Gadgets

Below is a list of special gadgets users can enable on their preferences page, as defined by the definitions. This overview provides easy access to the system message pages that define each gadget's description and code.

ابزارهای عمومی    [View description]

ابزارهای بحث و گفتگو    [View description]

تلفن همراه    [View description]

رابط کاربری    [View description]

پشتیبانی از زبان‌ها    [View description]

نمای کلی ویکی‌شیعه    [View description]

رابط کاربری در پنجرهٔ ویرایش    [View description]

رابط کاربری در پنجرهٔ تاریخچه    [View description]

ابزارهای گشت‌زنی و مقابله با خرابکاری    [View description]

  • پیوند به تغییرات اخیر همراه با تنظیماتی که برای گشت‌زنی مناسب است (فقط ویرایش‌های گشت نخورده و مشکل‌دار نمایش داده می‌شود)(تصویر)  (View description | Export)
    Uses: Gadget-RCForPatrollers.js

    Requires the following right:

    • patrol
    Enabled for everyone by default.
  • ابزار گشت‌زنی: فهرستی از جدیدترین مقالات ایجاد شده را نمایش می‌دهد و مواردی که بازبینی نشده‌اند نامشان را پررنگ‌تر می‌کند (پنجرهٔ تغییرات اخیر، پایین نوار سمت راست)  (View description | Export)
    Uses: Gadget-patroller.js

    Requires the following right:

    • patrol
    Enabled for everyone by default.
  • پررنگ کردن برچسب‌ها (tags) در تغییرات اخیر  (View description | Export)
    Uses: Gadget-taghighlighter.css

    Requires the following right:

    • move
  • پنهان‌کردن برچسب‌هایی (tags) که مهم نیستند در تغییرات اخیر  (View description | Export)
    Uses: Gadget-taghider.css

    Requires the following right:

    • move
  • درخواست پنهان‌سازی ویرایش مقالات در تابلو اعلانات مدیران (دکمهٔ درخواست در حالت تفاوت، در کنار نوار جستجو)  (View description | Export)
    Uses: Gadget-HideRequest.js
  • ابزار تمیزکاری اسپم  (View description | Export)
    Uses: Gadget-AdsCleaner.js
  • ابزار کمک برای واگردانی خودکار  (View description | Export)
    Uses: Gadget-rollback.js

    Requires the following right:

    • rollback

منابع و پانویس‌ها    [View description]

رده‌ها    [View description]

میان‌ویکی    [View description]

آمارها    [View description]

برای مدیران    [View description]

  • پاک کردن دلایل: این اسکریپت بصورت خودکار قسمت دلایل دیگر/اضافی را پاک می‌کند و سیاهه‌ها را مرتب‌تر می‌نماید. این اسکریپپ بر روی قسمت توضیح حذف تاثیری ندارد.  (View description | Export)
    Uses: Gadget-CleanDeleteReasons.js

    Requires the following right:

    • delete
  • افزودن زبانه اختیارات کاربر به نوار سمت راست  (View description | Export)
    Uses: Gadget-UserRights.js

    Requires the following right:

    • undelete
  • ابزاری برای نمایش دادن سیاهه بستن کاربر در صفحات (تاریخچه، ویژه مشارکت‌ها، تغییرات اخیر و...)  (View description | Export)
    Uses: Gadget-markblocked.js

    Requires the following right:

    • delete
    Enabled for everyone by default.
  • خاموش و روشن کردن ResourceLoader (برای آزمودن تغییرات در کد ابزارها بدون معطلی)  (View description | Export)
    Uses: Gadget-RLtoggle.js
  • پررنگ کردن خلاصه ویرایش هنگام ویرایش فضای نام مدیاویکی  (View description | Export)
    Uses: Gadget-MediawikiEditSummary.js

    Requires the following right:

    • undelete
    Enabled for everyone by default.

توسط سایر افزونه‌ها استفاده می‌شود و در ترجیحات دیده نخواهند شد    [View description]

قلم‌های کاربردی    [View description]

ابزارهای آزمایشی    [View description]

  • قلم امیری برای متون عربی (آزمایشی)  (View description | Export)
    Uses: Gadget-Amiri.css
  • // تنظیم فونت و اندازه پیش‌فرض function setDefaultFont() {

       // دریافت تمام عناصر با کلاس "resizable-text" و تنظیم اندازه فونت پیش‌فرض
       var textElements = document.querySelectorAll(".resizable-text");
       for (var i = 0; i < textElements.length; i++) {
           var textElement = textElements[i];
           // بررسی فونت خانواده برای تعیین اندازه مناسب
           var fontFamily = window.getComputedStyle(textElement).fontFamily;
    
           if (fontFamily.indexOf("AdobeArabic-Regular") !== -1) {
               textElement.style.fontSize = "20px";
           } else {
               textElement.style.fontSize = "14px";
           }
       }
    
       // تنظیم فونت و اندازه برای عنصر با id "text"
       var textElement = document.querySelector("#text");
       if (textElement) {
           textElement.style.fontFamily = "'AdobeArabic-Regular', sans-serif";
           textElement.style.fontSize = "20px";
       }
    

    }

    // تغییر حالت دید در شب function toggleDarkMode() {

       // دریافت عنصر body و دکمه تغییر حالت
       var body = document.body;
       var darkModeButton = document.getElementById("toggle-dark-mode");
    
       // بررسی وجود دکمه تغییر حالت
       if (!darkModeButton) {
           return;
       }
    
       // تغییر کلاس حالت شب برای body
       body.classList.toggle("dark-mode");
    
       // بروزرسانی متن دکمه و ذخیره‌سازی وضعیت در localStorage
       if (body.classList.contains("dark-mode")) {
           darkModeButton.textContent = "\uD83C\uDF19"; // نمایش آیکون ماه
           localStorage.setItem("dark-mode", "enabled");
       } else {
           darkModeButton.textContent = "\uD83C\uDF1E"; // نمایش آیکون خورشید
           localStorage.setItem("dark-mode", "disabled");
       }
    

    }

    // مقداردهی اولیه حالت دید در شب function initializeDarkMode() {

       // دریافت دکمه تغییر حالت شب
       var darkModeButton = document.getElementById("toggle-dark-mode");
    
       // بررسی وجود دکمه
       if (!darkModeButton) {
           return;
       }
    
       // تنظیم وضعیت اولیه حالت شب بر اساس مقدار ذخیره‌شده در localStorage
       if (localStorage.getItem("dark-mode") === "enabled") {
           document.body.classList.add("dark-mode");
           darkModeButton.textContent = "\uD83C\uDF19"; // آیکون ماه
       } else {
           document.body.classList.remove("dark-mode");
           darkModeButton.textContent = "\uD83C\uDF1E"; // آیکون خورشید
       }
    
       // افزودن رویداد کلیک برای دکمه
       darkModeButton.addEventListener("click", toggleDarkMode);
    

    }

    // مقداردهی اولیه کنترل‌های تب و فونت function initializeTabsAndFontControls() {

       // دریافت تمام تب‌ها و محتوای مرتبط آن‌ها
       var TripleTabView = document.querySelectorAll(".tab");
       var contents = document.querySelectorAll(".tab-content");
    
       // بررسی وجود تب‌ها و محتواها
       if (TripleTabView.length === 0 || contents.length === 0) {
           return;
       }
    
       // افزودن رویداد کلیک به تب‌ها
       for (var i = 0; i < TripleTabView.length; i++) {
           TripleTabView[i].addEventListener("click", (function (index) {
               return function () {
                   // غیرفعال کردن تب‌ها و محتوای فعلی
                   for (var j = 0; j < TripleTabView.length; j++) {
                       TripleTabView[j].classList.remove("active");
                   }
                   for (var k = 0; k < contents.length; k++) {
                       contents[k].classList.remove("active");
                   }
    
                   // فعال کردن تب و محتوای مرتبط با آن
                   TripleTabView[index].classList.add("active");
                   var targetContent = document.getElementById(TripleTabView[index].getAttribute("data-tab"));
                   if (targetContent) {
                       targetContent.classList.add("active");
                   }
               };
           })(i));
       }
    
       // فعال کردن اولین تب و محتوا به صورت پیش‌فرض
       TripleTabView[0].classList.add("active");
       contents[0].classList.add("active");
    
       // دریافت دکمه‌های تنظیم فونت
       var increaseButton = document.getElementById("increase-font");
       var decreaseButton = document.getElementById("decrease-font");
       var resetButton = document.getElementById("reset-font");
    
       // مقادیر حداقلی و حداکثری اندازه فونت
       var MIN_FONT_SIZE = 10;
       var MAX_FONT_SIZE = 23;
    
       // تنظیم فونت پیش‌فرض
       setDefaultFont();
    
       // افزودن رویداد کلیک برای افزایش اندازه فونت
       if (increaseButton) {
           increaseButton.addEventListener("click", function () {
               adjustFontSize(0.5, MAX_FONT_SIZE);
           });
       }
    
       // افزودن رویداد کلیک برای کاهش اندازه فونت
       if (decreaseButton) {
           decreaseButton.addEventListener("click", function () {
               adjustFontSize(-0.5, MIN_FONT_SIZE);
           });
       }
    
       // افزودن رویداد کلیک برای بازنشانی اندازه فونت
       if (resetButton) {
           resetButton.addEventListener("click", function () {
               setDefaultFont();
           });
       }
    

    }

    // تنظیم اندازه فونت function adjustFontSize(delta, limit) {

       // دریافت محتوای فعال در تب‌ها
       var activeContent = document.querySelector('.tab-content.active');
       if (activeContent) {
           // دریافت تمام عناصر با کلاس "resizable-text" در محتوای فعال
           var textElements = activeContent.querySelectorAll(".resizable-text");
           for (var i = 0; i < textElements.length; i++) {
               var textElement = textElements[i];
               // محاسبه اندازه جدید فونت با توجه به تغییر دلتا و محدودیت‌ها
               var currentSize = parseFloat(window.getComputedStyle(textElement).fontSize);
               var newSize = currentSize + delta;
               if ((delta > 0 && newSize <= limit) || (delta < 0 && newSize >= limit)) {
                   textElement.style.fontSize = newSize + "px";
               }
           }
       }
    

    }

    // مشاهده تغییرات در DOM و مقداردهی اولیه var observer = new MutationObserver(function () {

       // بررسی وجود تمام دکمه‌های لازم برای مقداردهی اولیه
       if (
           document.getElementById("increase-font") &&
           document.getElementById("decrease-font") &&
           document.getElementById("reset-font") &&
           document.getElementById("toggle-dark-mode")
       ) {
           observer.disconnect();
           initializeTabsAndFontControls();
           initializeDarkMode();
       }
    

    });

    // مشاهده تغییرات در DOM برای اطمینان از در دسترس بودن عناصر مورد نیاز observer.observe(document.body, { childList: true, subtree: true });

    // مقداردهی اولیه در صورت آماده بودن DOM if (document.readyState === "loading") {

       document.addEventListener("DOMContentLoaded", function () {
           setDefaultFont();
           initializeTabsAndFontControls();
           initializeDarkMode();
       });
    

    } else {

       setDefaultFont();
       initializeTabsAndFontControls();
       initializeDarkMode();
    

    }

      (View description | Export)
    Uses: Gadget-TripleTabView.js, Gadget-TwoColumnTable.js, Gadget-TripleTabView Styles.css, Gadget-TripleTabView dark.css, Gadget-TripleTabView Font size.css, Gadget-TwoColumnTable.css
    Enabled for everyone by default.