پرش به محتوا

مدیاویکی:Common.js

از ویکی داد
نسخهٔ تاریخ ۱۴ سپتامبر ۲۰۲۶، ساعت ۱۳:۲۴ توسط Rasool (بحث | مشارکت‌ها)

نکته: پس از انتشار ممکن است برای دیدن تغییرات نیاز باشد که حافظهٔ نهانی مرورگر خود را پاک کنید.

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • Edge: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
(function () {

    /* =========================================================
       سیستم تست‌های تعاملی ویکی‌داد
       ========================================================= */

    function initWikidadTests() {

        $('.wd-test').each(function () {

            var test = $(this);

            if (test.hasClass('wd-test-ready')) {
                return;
            }

            test.addClass('wd-test-ready');

            /*
             * فقط گزینه‌های همین تست
             */
            test.find('.wd-test-options li').css({
                'display': 'block',
                'padding': '11px 14px',
                'margin': '7px 0',
                'border': '1px solid #dce5ea',
                'border-radius': '8px',
                'background': '#fff',
                'cursor': 'pointer',
                'transition': 'all .15s ease',
                'line-height': '1.9'
            });

            /*
             * فقط نتیجه همین تست مخفی شود
             */
            test.find('.wd-test-result').css({
                'display': 'none'
            });

            test.find('.wd-test-answer').css({
                'display': 'none'
            });

        });

    }


    /*
     * آماده‌سازی تست‌ها
     */
    $(document).ready(function () {
        initWikidadTests();
    });


    /*
     * کلیک روی یک گزینه
     */
    $(document).on(
        'click',
        '.wd-test-options li',
        function (event) {

            event.preventDefault();

            var option = $(this);

            /*
             * فقط نزدیک‌ترین تست
             */
            var test = option.closest('.wd-test');

            /*
             * اگر تست پیدا نشد، کاری نکن
             */
            if (!test.length) {
                return;
            }

            /*
             * اگر همین تست قبلاً پاسخ داده شده
             */
            if (test.hasClass('wd-test-finished')) {
                return;
            }


            /*
             * متن گزینه انتخاب‌شده
             */
            var selectedText = $.trim(
                option.text()
            );


            /*
             * پاسخ صحیح فقط از همین تست
             */
            var correctAnswer = $.trim(
                test.attr('data-answer') || ''
            );


            /*
             * استخراج حرف گزینه انتخاب‌شده
             */
            var selectedMatch = selectedText.match(
                /^[\s\u200c\u200f]*([الفبجد])[\s\)\.:\-ـ]*/
            );

            var selectedLetter = selectedMatch
                ? selectedMatch[1]
                : selectedText.charAt(0);


            /*
             * استخراج حرف پاسخ صحیح
             */
            var answerMatch = correctAnswer.match(
                /^[\s\u200c\u200f]*([الفبجد])[\s\)\.:\-ـ]*/
            );

            var answerLetter = answerMatch
                ? answerMatch[1]
                : correctAnswer.charAt(0);


            selectedLetter = $.trim(selectedLetter);
            answerLetter = $.trim(answerLetter);


            /*
             * فقط گزینه‌های همین تست
             */
            var testOptions =
                test.find('.wd-test-options li');


            /*
             * پاک کردن وضعیت فقط در همین تست
             */
            testOptions.css({
                'background': '#fff',
                'border-color': '#dce5ea',
                'color': '',
                'font-weight': ''
            });


            /*
             * مشخص کردن گزینه انتخاب‌شده
             */
            option.css({
                'background': '#f3f7fa',
                'border-color': '#3978ad'
            });


            /*
             * بررسی پاسخ
             */
            var isCorrect =
                selectedLetter === answerLetter;


            /*
             * فقط نتیجه همین تست
             */
            var result =
                test.find('.wd-test-result');

            var resultMessage =
                test.find('.wd-test-result-message');


            /*
             * نمایش نتیجه همین تست
             */
            result.css({
                'display': 'block',
                'visibility': 'visible',
                'opacity': '1'
            });


            /*
             * پاسخ صحیح
             */
            if (isCorrect) {

                option.css({
                    'background': '#edf8f5',
                    'border-color': '#168477',
                    'color': '#11695f',
                    'font-weight': 'bold'
                });

                resultMessage
                    .text('✓ پاسخ شما صحیح است.')
                    .css({
                        'display': 'block',
                        'visibility': 'visible',
                        'opacity': '1',
                        'color': '#168477',
                        'font-weight': 'bold'
                    });

            }


            /*
             * پاسخ غلط
             */
            else {

                option.css({
                    'background': '#fff2f2',
                    'border-color': '#b44a4a',
                    'color': '#9b3838'
                });

                resultMessage
                    .text('✕ پاسخ شما نادرست است.')
                    .css({
                        'display': 'block',
                        'visibility': 'visible',
                        'opacity': '1',
                        'color': '#b44a4a',
                        'font-weight': 'bold'
                    });


                /*
                 * پیدا کردن پاسخ صحیح
                 * فقط داخل همین تست
                 */
                testOptions.each(function () {

                    var item = $(this);

                    var itemText =
                        $.trim(item.text());

                    var itemMatch =
                        itemText.match(
                            /^[\s\u200c\u200f]*([الفبجد])[\s\)\.:\-ـ]*/
                        );

                    var itemLetter = itemMatch
                        ? itemMatch[1]
                        : itemText.charAt(0);


                    if (
                        $.trim(itemLetter) ===
                        answerLetter
                    ) {

                        item.css({
                            'background': '#edf8f5',
                            'border-color': '#168477',
                            'color': '#11695f',
                            'font-weight': 'bold'
                        });

                    }

                });

            }


            /*
             * پاسخ و تحلیل فقط همین تست
             */
            test.find('.wd-test-answer').css({
                'display': 'block',
                'visibility': 'visible',
                'opacity': '1'
            });


            /*
             * قفل کردن فقط همین تست
             */
            test.addClass('wd-test-finished');

        }
    );


    /* =========================================================
       مشاهده / بستن متن نسخه قانون
       ========================================================= */

    $(document).on(
        'click',
        '.wd-version-toggle',
        function () {

            var button = $(this);

            var card = button.closest(
                '.wd-version-history-card'
            );

            var text = card.find(
                '.wd-version-text'
            );

            var icon = button.find(
                '.wd-version-toggle-icon'
            );

            var label = button.find(
                '.wd-version-toggle-label'
            );


            if (text.is(':visible')) {

                text.stop(true, true)
                    .slideUp(180);

                icon.text('+');

                label.text('مشاهده متن');

            } else {

                text.stop(true, true)
                    .slideDown(220);

                icon.text('−');

                label.text('بستن متن');

            }

        }
    );

})();