پرش به محتوا

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

از ویکی داد
بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
خط ۱: خط ۱:
/* =========================================================
(function () {
  سیستم تست‌های تعاملی ویکی‌داد
  ========================================================= */


$( document ).on(
     /* =========================================================
     'click',
      سیستم تست‌های تعاملی ویکی‌داد
    '.wd-test-options li',
      ========================================================= */
    function () {


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


         /* اگر تست قبلاً پاسخ داده شده، کاری نکن */
         $('.wd-test').each(function () {
        if ( test.hasClass( 'wd-test-finished' ) ) {
 
            return;
            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 () {
 
            var option = $(this);
            var test = option.closest('.wd-test');
 
 
            /*
            * اگر تست قبلاً پاسخ داده شده،
            * دوباره قابل انتخاب نباشد.
            */
            if (test.hasClass('wd-test-finished')) {
                return;
            }
 
 
            /*
            * متن گزینه انتخاب‌شده
            */
            var selectedText = $.trim(
                option.text()
            );
 
 
            /*
            * پاسخ صحیح ذخیره‌شده در data-answer
            */
            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 selectedText = $.trim( option.text() );


        /* پاسخ صحیح */
            /*
        var correctAnswer = $.trim(
            * حذف حالت‌های قبلی
            test.attr( 'data-answer' ) || ''
            */
        );
            test.find('.wd-test-options li').css({
                'background': '#fff',
                'border-color': '#dce5ea',
                'color': '',
                'font-weight': ''
            });


        /* حذف حالت انتخاب قبلی */
        test.find( '.wd-test-options li' )
            .removeClass( 'wd-test-selected' );


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


        /* نمایش نتیجه */
        var result = test.find( '.wd-test-result' );
        var resultMessage = test.find( '.wd-test-result-message' );


        /* پاسخ صحیح یا غلط */
            /*
        var isCorrect = false;
            * بررسی پاسخ
            */
            var isCorrect =
                selectedLetter === answerLetter;


        /*
        * پاسخ قالب معمولاً به شکل:
        * الف
        * ب
        * ج
        * د
        *
        * بنابراین ابتدا حرف گزینه را استخراج می‌کنیم.
        */
        var selectedLetter = selectedText
            .replace( /^[\s‏‌]*([الفبجد])[\s\)\.:\-ـ]*/i, '$1' );


        if ( selectedLetter === selectedText ) {
            /*
             selectedLetter = selectedText.charAt( 0 );
            * عناصر نتیجه
        }
            */
             var result =
                test.find('.wd-test-result');


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


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


        isCorrect =
            /*
             $.trim( selectedLetter ) ===
            * نمایش بخش نتیجه
             $.trim( answerLetter );
            */
             result.css({
                'display': 'block',
                'visibility': 'visible',
                'opacity': '1'
             });


        /* نمایش نتیجه */
        result.show();


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


            resultMessage
                 option.css({
                 .text( '✓ پاسخ شما صحیح است.' )
                    'background': '#edf8f5',
                .css({
                    'border-color': '#168477',
                     color: '#168477'
                     'color': '#11695f',
                    'font-weight': 'bold'
                 });
                 });


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


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


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


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


             /*
             /*
             * مشخص کردن گزینه صحیح
             * پاسخ غلط
             */
             */
             test.find( '.wd-test-options li' ).each(
             else {
                function () {
 
                option.css({
                    'background': '#fff2f2',
                    'border-color': '#b44a4a',
                    'color': '#9b3838'
                });
 
 
                resultMessage
                    .text('✕ پاسخ شما نادرست است.')
                    .css({
                        'display': 'block',
                        'visibility': 'visible',
                        'opacity': '1',
                        'color': '#b44a4a',
                        'font-weight': 'bold'
                    });
 
 
                /*
                * مشخص کردن گزینه صحیح
                */
                test.find('.wd-test-options li').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
                        ) {


                    var item = $( this );
                            item.css({
                    var itemText = $.trim( item.text() );
                                'background': '#edf8f5',
                                'border-color': '#168477',
                                'color': '#11695f',
                                'font-weight': 'bold'
                            });


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


                    if ( itemLetter === itemText ) {
                        itemLetter = itemText.charAt( 0 );
                     }
                     }
                );
            }
            /*
            * نمایش پاسخ، تحلیل، مستند و نکته
            */
            test.find('.wd-test-answer').css({
                'display': 'block',
                'visibility': 'visible',
                'opacity': '1'
            });


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


                }
            /*
             );
            * تست پاسخ داده شده
            */
             test.addClass('wd-test-finished');


         }
         }
    );


        /* نمایش پاسخ و تحلیل */
        test.find( '.wd-test-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'
  ========================================================= */
            );


$( document ).on(
            var text = card.find(
    'click',
                '.wd-version-text'
    '.wd-version-toggle',
            );
    function () {


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


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


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


        var icon = button.find(
            if (text.is(':visible')) {
            '.wd-version-toggle-icon'
        );


        var label = button.find(
                text.stop(true, true)
            '.wd-version-toggle-label'
                    .slideUp(180);
        );


        if ( text.is( ':visible' ) ) {
                icon.text('+');


            text.stop( true, true )
                 label.text('مشاهده متن');
                 .slideUp( 180 );


             icon.text( '+' );
             } else {


            label.text( 'مشاهده متن' );
                text.stop(true, true)
                    .slideDown(220);


        } else {
                icon.text('−');


            text.stop( true, true )
                 label.text('بستن متن');
                 .slideDown( 220 );


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


         }
         }
    );


    }
})();
);

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

(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 () {

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


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


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


            /*
             * پاسخ صحیح ذخیره‌شده در data-answer
             */
            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);


            /*
             * حذف حالت‌های قبلی
             */
            test.find('.wd-test-options li').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'
                    });


                /*
                 * مشخص کردن گزینه صحیح
                 */
                test.find('.wd-test-options li').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('بستن متن');

            }

        }
    );

})();