پرش به محتوا

مدیاویکی:Common.js: تفاوت میان نسخه‌ها

از ویکی داد
بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
خط ۱۱: خط ۱۱:
             var test = $(this);
             var test = $(this);


            /*
            * اگر قبلاً آماده‌سازی شده، دوباره اجرا نشود
            */
             if (test.hasClass('wd-test-ready')) {
             if (test.hasClass('wd-test-ready')) {
                 return;
                 return;
خط ۲۱: خط ۱۸:


             /*
             /*
             * ظاهر اولیه گزینه‌ها
             * فقط گزینه‌های همین تست
             */
             */
             test.find('.wd-test-options li').css({
             test.find('.wd-test-options li').css({
خط ۳۶: خط ۳۳:


             /*
             /*
             * پاسخ و تحلیل از ابتدا مخفی باشند
             * فقط نتیجه همین تست مخفی شود
             */
             */
             test.find('.wd-test-result').css({
             test.find('.wd-test-result').css({
خط ۵۲: خط ۴۹:


     /*
     /*
     * آماده‌سازی هنگام بارگذاری صفحه
     * آماده‌سازی تست‌ها
     */
     */
     $(document).ready(function () {
     $(document).ready(function () {
خط ۶۰: خط ۵۷:


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


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


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


             /*
             /*
             * اگر تست قبلاً پاسخ داده شده،
             * اگر همین تست قبلاً پاسخ داده شده
            * دوباره قابل انتخاب نباشد.
             */
             */
             if (test.hasClass('wd-test-finished')) {
             if (test.hasClass('wd-test-finished')) {
خط ۸۹: خط ۹۷:


             /*
             /*
             * پاسخ صحیح ذخیره‌شده در data-answer
             * پاسخ صحیح فقط از همین تست
             */
             */
             var correctAnswer = $.trim(
             var correctAnswer = $.trim(
خط ۹۸: خط ۱۰۶:
             /*
             /*
             * استخراج حرف گزینه انتخاب‌شده
             * استخراج حرف گزینه انتخاب‌شده
            *
            * الف) ...
            * ب) ...
            * ج) ...
            * د) ...
             */
             */
             var selectedMatch = selectedText.match(
             var selectedMatch = selectedText.match(
خط ۱۳۰: خط ۱۳۳:


             /*
             /*
             * حذف حالت‌های قبلی
             * فقط گزینه‌های همین تست
             */
             */
             test.find('.wd-test-options li').css({
             var testOptions =
                test.find('.wd-test-options li');
 
 
            /*
            * پاک کردن وضعیت فقط در همین تست
            */
            testOptions.css({
                 'background': '#fff',
                 'background': '#fff',
                 'border-color': '#dce5ea',
                 'border-color': '#dce5ea',
خط ۱۵۷: خط ۱۶۷:


             /*
             /*
             * عناصر نتیجه
             * فقط نتیجه همین تست
             */
             */
             var result =
             var result =
خط ۱۶۷: خط ۱۷۷:


             /*
             /*
             * نمایش بخش نتیجه
             * نمایش نتیجه همین تست
             */
             */
             result.css({
             result.css({
خط ۱۸۷: خط ۱۹۷:
                     'font-weight': 'bold'
                     'font-weight': 'bold'
                 });
                 });


                 resultMessage
                 resultMessage
خط ۲۱۲: خط ۲۲۱:
                     'color': '#9b3838'
                     'color': '#9b3838'
                 });
                 });


                 resultMessage
                 resultMessage
خط ۲۲۶: خط ۲۳۴:


                 /*
                 /*
                 * مشخص کردن گزینه صحیح
                 * پیدا کردن پاسخ صحیح
                * فقط داخل همین تست
                 */
                 */
                 test.find('.wd-test-options li').each(
                 testOptions.each(function () {
                    function () {


                        var item = $(this);
                    var item = $(this);


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


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


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




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


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


                        }
                    }


                    }
                });
                );


             }
             }
خط ۲۶۷: خط ۲۷۴:


             /*
             /*
             * نمایش پاسخ، تحلیل، مستند و نکته
             * پاسخ و تحلیل فقط همین تست
             */
             */
             test.find('.wd-test-answer').css({
             test.find('.wd-test-answer').css({
خط ۲۷۷: خط ۲۸۴:


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

نسخهٔ ۱۴ سپتامبر ۲۰۲۶، ساعت ۱۳:۲۴

(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('بستن متن');

            }

        }
    );

})();