پرش به محتوا

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

از ویکی داد
بدون خلاصۀ ویرایش
بدون خلاصۀ ویرایش
برچسب: برگردانده‌شده
خط ۱: خط ۱:
(function () {
$( document ).on(
    'click',
    '.wd-test-options li',
    function (event) {


    /* =========================================================
        event.preventDefault();
      سیستم تست‌های تعاملی ویکی‌داد
        event.stopPropagation();
      ========================================================= */


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


         $('.wd-test').each(function () {
         if ( !test.length ) {
            return;
        }


            var test = $(this);
        if ( test.hasClass( 'wd-test-finished' ) ) {
            return;
        }


            if (test.hasClass('wd-test-ready')) {
        /* =========================================
                return;
          فقط گزینه‌های همین تست
            }
          ========================================= */


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


            /*
        /* =========================================
            * فقط گزینه‌های همین تست
          پاسخ انتخاب‌شده
            */
          ========================================= */
            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'
            });


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


             test.find('.wd-test-answer').css({
        var correctAnswer = $.trim(
                'display': 'none'
             test.attr( 'data-answer' ) || ''
            });
        );


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


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


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


    /*
        /* =========================================
    * آماده‌سازی تست‌ها
          استخراج حرف گزینه
    */
          ========================================= */
    $(document).ready(function () {
        initWikidadTests();
    });


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


    /*
        if ( selectedLetter === selectedText ) {
    * کلیک روی یک گزینه
            selectedLetter =
    */
                selectedText.charAt( 0 );
    $(document).on(
         }
        'click',
        '.wd-test-options li',
         function (event) {


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


             var option = $(this);
        if ( answerLetter === correctAnswer ) {
             answerLetter =
                correctAnswer.charAt( 0 );
        }


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


            /*
        /* =========================================
            * اگر تست پیدا نشد، کاری نکن
          پیدا کردن نتیجه فقط در همین تست
            */
          ========================================= */
            if (!test.length) {
                return;
            }


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


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


             /*
             result = test
            * متن گزینه انتخاب‌شده
                .children( 'div' )
            */
                 .find( '> .wd-test-result' )
            var selectedText = $.trim(
                .first();
                 option.text()
            );


        }


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


 
        var answer =
             /*
             result.children(
            * استخراج حرف گزینه انتخاب‌شده
                 '.wd-test-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 =
        result.show();
                test.find('.wd-test-result-message');


        if ( isCorrect ) {


             /*
             resultMessage
            * نمایش نتیجه همین تست
                .text(
            */
                    '✓ پاسخ شما صحیح است.'
            result.css({
                 )
                'display': 'block',
                 .css({
                'visibility': 'visible',
                     color: '#168477'
                 'opacity': '1'
            });
 
 
            /*
            * پاسخ صحیح
            */
            if (isCorrect) {
 
                 option.css({
                     'background': '#edf8f5',
                    'border-color': '#168477',
                    'color': '#11695f',
                    'font-weight': 'bold'
                 });
                 });


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


            }
        } else {


 
            resultMessage
            /*
                .text(
            * پاسخ غلط
                    '✕ پاسخ شما نادرست است.'
            */
                )
            else {
                 .css({
 
                     color: '#b44a4a'
                 option.css({
                     'background': '#fff2f2',
                    'border-color': '#b44a4a',
                    'color': '#9b3838'
                 });
                 });


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


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


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


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


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


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


                     if (
                     if (
                         $.trim(itemLetter) ===
                         $.trim(
                         answerLetter
                            itemLetter
                        ) ===
                         $.trim(
                            answerLetter
                        )
                     ) {
                     ) {
 
                         item.addClass(
                         item.css({
                             'wd-test-correct'
                             'background': '#edf8f5',
                         );
                            'border-color': '#168477',
                            'color': '#11695f',
                            'font-weight': 'bold'
                         });
 
                     }
                     }


                 });
                 }
            );


            }
        }


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


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


        /* این تست تمام شده */
        test.addClass(
            'wd-test-finished'
        );


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


        }
    );


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


     /* =========================================================
$( document ).on(
      مشاهده / بستن متن نسخه قانون
     'click',
      ========================================================= */
    '.wd-version-toggle',
    function () {


    $(document).on(
        var button = $( this );
        'click',
        '.wd-version-toggle',
        function () {


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


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


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


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


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


            text
                .stop( true, true )
                .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('بستن متن');
 
            }


         }
         }
    );


})();
    }
);

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

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

        }

    }
);