پرش به محتوا

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

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

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

  • فایرفاکس / سافاری: کلید Shift را نگه دارید و روی دکمهٔ Reload کلیک کنید، یا کلید‌های Ctrl-F5 یا Ctrl-R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-R)
  • گوگل کروم: کلیدهای Ctrl+Shift+R را با هم فشار دهید (در رایانه‌های اپل مکینتاش کلید‌های ⌘-Shift-R)
  • Edge: کلید Ctrl را نگه‌دارید و روی دکمهٔ Refresh کلیک کنید، یا کلید‌های Ctrl-F5 را با هم فشار دهید
$( document ).on(
    'click',
    '.wd-test-options li',
    function (event) {

        event.preventDefault();
        event.stopPropagation();

        var option = $( this );
        var test = option.closest( '.wd-test' );

        if ( !test.length ) {
            return;
        }

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

        /* =========================================
           فقط گزینه‌های همین تست
           ========================================= */

        var testOptions = test
            .children()
            .find( '.wd-test-options' )
            .first()
            .children( 'li' );

        /* =========================================
           پاسخ انتخاب‌شده
           ========================================= */

        var selectedText = $.trim(
            option.text()
        );

        var correctAnswer = $.trim(
            test.attr( 'data-answer' ) || ''
        );

        /* =========================================
           حذف انتخاب قبلی
           ========================================= */

        testOptions.removeClass(
            'wd-test-selected wd-test-correct wd-test-wrong'
        );

        option.addClass(
            'wd-test-selected'
        );

        /* =========================================
           استخراج حرف گزینه
           ========================================= */

        var selectedLetter = selectedText.replace(
            /^[\s‏‌]*([الفبجد])[\s\)\.:\-ـ]*/i,
            '$1'
        );

        if ( selectedLetter === selectedText ) {
            selectedLetter =
                selectedText.charAt( 0 );
        }

        var answerLetter = correctAnswer.replace(
            /^[\s‏‌]*([الفبجد])[\s\)\.:\-ـ]*/i,
            '$1'
        );

        if ( answerLetter === correctAnswer ) {
            answerLetter =
                correctAnswer.charAt( 0 );
        }

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

        /* =========================================
           پیدا کردن نتیجه فقط در همین تست
           ========================================= */

        var result = test
            .children( 'div' )
            .has( '.wd-test-options' )
            .first()
            .children( '.wd-test-result' );

        /*
         * اگر ساختار مرورگر متفاوت بود،
         * فقط اولین نتیجه مربوط به همین تست را بگیر.
         */
        if ( !result.length ) {

            result = test
                .children( 'div' )
                .find( '> .wd-test-result' )
                .first();

        }

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

        var answer =
            result.children(
                '.wd-test-answer'
            );

        /* =========================================
           نمایش نتیجه
           ========================================= */

        result.show();

        if ( isCorrect ) {

            resultMessage
                .text(
                    '✓ پاسخ شما صحیح است.'
                )
                .css({
                    color: '#168477'
                });

            option.addClass(
                'wd-test-correct'
            );

        } else {

            resultMessage
                .text(
                    '✕ پاسخ شما نادرست است.'
                )
                .css({
                    color: '#b44a4a'
                });

            option.addClass(
                'wd-test-wrong'
            );

            /* فقط گزینه‌های همین تست */
            testOptions.each(
                function () {

                    var item = $( this );

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

                    var itemLetter =
                        itemText.replace(
                            /^[\s‏‌]*([الفبجد])[\s\)\.:\-ـ]*/,
                            '$1'
                        );

                    if (
                        itemLetter === itemText
                    ) {
                        itemLetter =
                            itemText.charAt( 0 );
                    }

                    if (
                        $.trim(
                            itemLetter
                        ) ===
                        $.trim(
                            answerLetter
                        )
                    ) {
                        item.addClass(
                            'wd-test-correct'
                        );
                    }

                }
            );

        }

        /* =========================================
           نمایش پاسخ و تحلیل فقط همین تست
           ========================================= */

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

        /* این تست تمام شده */
        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(
                'بستن متن'
            );

        }

    }
);