مدیاویکی:Common.js: تفاوت میان نسخهها
بدون خلاصۀ ویرایش |
بدون خلاصۀ ویرایش |
||
| خط ۳: | خط ۳: | ||
/* ========================================================= | /* ========================================================= | ||
سیستم تستهای تعاملی ویکیداد | سیستم تستهای تعاملی ویکیداد | ||
نسخه نهایی — هماهنگ با طراحی ماده ۱۵ | |||
========================================================= */ | ========================================================= */ | ||
| خط ۱۸: | خط ۱۹: | ||
/* | /* | ||
* فقط | * فقط گزینههای همین تست | ||
*/ | */ | ||
test.find('.wd-test-options li').filter(function () { | var options = test.find('.wd-test-options li').filter(function () { | ||
return $(this).closest('.wd-test')[0] === test[0]; | return $(this).closest('.wd-test')[0] === test[0]; | ||
}).css({ | }); | ||
options.css({ | |||
'display': 'block', | 'display': 'block', | ||
'padding': ' | 'box-sizing': 'border-box', | ||
'padding': '10px 13px', | |||
'margin': '7px 0', | 'margin': '7px 0', | ||
'border': '1px solid # | 'border': '1px solid #d9dfdc', | ||
'border-radius': ' | 'border-radius': '6px', | ||
'background': '# | 'background': '#ffffff', | ||
'cursor': 'pointer', | 'cursor': 'pointer', | ||
'transition': ' | 'transition': 'background .15s ease, border-color .15s ease, color .15s ease', | ||
'line-height': '1.9' | 'line-height': '1.9' | ||
}); | }); | ||
/* | /* | ||
* | * نتیجه همین تست | ||
*/ | */ | ||
test.find('.wd-test-result').filter(function () { | test.find('.wd-test-result').filter(function () { | ||
| خط ۴۳: | خط ۴۷: | ||
}); | }); | ||
/* | |||
* پاسخ و تحلیل همین تست | |||
*/ | |||
test.find('.wd-test-answer').filter(function () { | test.find('.wd-test-answer').filter(function () { | ||
return $(this).closest('.wd-test')[0] === test[0]; | return $(this).closest('.wd-test')[0] === test[0]; | ||
| خط ۵۰: | خط ۵۷: | ||
}); | }); | ||
} | } | ||
| خط ۶۳: | خط ۶۹: | ||
/* | /* | ||
* کلیک روی | * کلیک روی گزینه | ||
*/ | */ | ||
$(document).on( | $(document).on( | ||
| خط ۷۴: | خط ۸۰: | ||
var option = $(this); | var option = $(this); | ||
var test = option.closest('.wd-test'); | var test = option.closest('.wd-test'); | ||
| خط ۸۵: | خط ۸۷: | ||
/* | /* | ||
* اگر | * اگر قبلاً پاسخ داده شده، دیگر قابل تغییر نباشد | ||
*/ | */ | ||
if (test.hasClass('wd-test-finished')) { | if (test.hasClass('wd-test-finished')) { | ||
| خط ۹۳: | خط ۹۵: | ||
/* | /* | ||
* | * گزینههای همین تست | ||
*/ | */ | ||
var | var testOptions = | ||
test.find('.wd-test-options li').filter(function () { | |||
return $(this).closest('.wd-test')[0] === test[0]; | |||
}); | |||
/* | /* | ||
* پاسخ صحیح | * پاسخ صحیح | ||
*/ | */ | ||
var correctAnswer = $.trim( | var correctAnswer = $.trim( | ||
| خط ۱۰۹: | خط ۱۱۲: | ||
/* | /* | ||
* استخراج حرف گزینه | * استخراج حرف گزینه | ||
* | |||
* الف، ب، ج، د، هـ، ه، و | |||
*/ | */ | ||
function extractLetter(text) { | |||
text = $.trim(text || ''); | |||
var match = text.match( | |||
/^[\s\u200c\u200f]*([الفبجدوهـه])[\s\)\.:\-ـ]*/ | |||
); | |||
return match | |||
? $.trim(match[1]) | |||
: $.trim(text.charAt(0)); | |||
} | |||
var selectedLetter = | |||
extractLetter(option.text()); | |||
var answerLetter = | |||
extractLetter(correctAnswer); | |||
var | |||
/* | /* | ||
* پاک کردن وضعیت فقط در همین تست | * پاک کردن وضعیت قبلی فقط در همین تست | ||
*/ | */ | ||
testOptions.css({ | testOptions.css({ | ||
'background': '# | 'background': '#ffffff', | ||
'border-color': '# | 'border-color': '#d9dfdc', | ||
'color': '', | 'color': '', | ||
'font-weight': '' | 'font-weight': '' | ||
| خط ۱۶۰: | خط ۱۵۲: | ||
*/ | */ | ||
option.css({ | option.css({ | ||
'background': '# | 'background': '#f5f1f8', | ||
'border-color': '# | 'border-color': '#8064a2' | ||
}); | }); | ||
| خط ۱۷۳: | خط ۱۶۵: | ||
/* | /* | ||
* نتیجه | * نتیجه همین تست | ||
*/ | */ | ||
var result = | var result = | ||
| خط ۱۸۲: | خط ۱۷۴: | ||
/* | /* | ||
* پیام نتیجه | * پیام نتیجه | ||
*/ | */ | ||
var resultMessage = | var resultMessage = | ||
| خط ۱۸۹: | خط ۱۸۱: | ||
/* | /* | ||
* نمایش نتیجه | * نمایش نتیجه | ||
*/ | */ | ||
result.css({ | result.css({ | ||
| خط ۲۰۵: | خط ۱۹۷: | ||
option.css({ | option.css({ | ||
'background': '#edf8f5', | 'background': '#edf8f5', | ||
'border-color': '# | 'border-color': '#527d77', | ||
'color': '# | 'color': '#405b56', | ||
'font-weight': 'bold' | 'font-weight': 'bold' | ||
}); | }); | ||
| خط ۲۱۶: | خط ۲۰۸: | ||
'visibility': 'visible', | 'visibility': 'visible', | ||
'opacity': '1', | 'opacity': '1', | ||
'color': '# | 'color': '#527d77', | ||
'font-weight': 'bold' | 'font-weight': 'bold' | ||
}); | }); | ||
| خط ۲۲۴: | خط ۲۱۶: | ||
/* | /* | ||
* پاسخ | * پاسخ نادرست | ||
*/ | */ | ||
else { | else { | ||
| خط ۲۳۱: | خط ۲۲۳: | ||
'background': '#fff2f2', | 'background': '#fff2f2', | ||
'border-color': '#b44a4a', | 'border-color': '#b44a4a', | ||
'color': '#9b3838' | 'color': '#9b3838', | ||
'font-weight': 'bold' | |||
}); | }); | ||
| خط ۲۴۶: | خط ۲۳۹: | ||
/* | /* | ||
* | * نمایش پاسخ صحیح | ||
*/ | */ | ||
testOptions.each(function () { | testOptions.each(function () { | ||
var item = $(this); | var item = $(this); | ||
var itemLetter = | |||
extractLetter(item.text()); | |||
if (itemLetter === answerLetter) { | |||
if | |||
item.css({ | item.css({ | ||
'background': '#edf8f5', | 'background': '#edf8f5', | ||
'border-color': '# | 'border-color': '#527d77', | ||
'color': '# | 'color': '#405b56', | ||
'font-weight': 'bold' | 'font-weight': 'bold' | ||
}); | }); | ||
| خط ۲۸۶: | خط ۲۶۴: | ||
/* | /* | ||
* پاسخ و تحلیل | * نمایش پاسخ و تحلیل | ||
*/ | */ | ||
var answer = | var answer = | ||
| خط ۲۹۹: | خط ۲۷۷: | ||
/* | /* | ||
* قفل کردن | * قفل کردن تست | ||
*/ | */ | ||
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');
/*
* فقط گزینههای همین تست
*/
var options = test.find('.wd-test-options li').filter(function () {
return $(this).closest('.wd-test')[0] === test[0];
});
options.css({
'display': 'block',
'box-sizing': 'border-box',
'padding': '10px 13px',
'margin': '7px 0',
'border': '1px solid #d9dfdc',
'border-radius': '6px',
'background': '#ffffff',
'cursor': 'pointer',
'transition': 'background .15s ease, border-color .15s ease, color .15s ease',
'line-height': '1.9'
});
/*
* نتیجه همین تست
*/
test.find('.wd-test-result').filter(function () {
return $(this).closest('.wd-test')[0] === test[0];
}).css({
'display': 'none'
});
/*
* پاسخ و تحلیل همین تست
*/
test.find('.wd-test-answer').filter(function () {
return $(this).closest('.wd-test')[0] === test[0];
}).css({
'display': 'none'
});
});
}
/*
* آمادهسازی تستها
*/
$(document).ready(function () {
initWikidadTests();
});
/*
* کلیک روی گزینه
*/
$(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.find('.wd-test-options li').filter(function () {
return $(this).closest('.wd-test')[0] === test[0];
});
/*
* پاسخ صحیح
*/
var correctAnswer = $.trim(
test.attr('data-answer') || ''
);
/*
* استخراج حرف گزینه
*
* الف، ب، ج، د، هـ، ه، و
*/
function extractLetter(text) {
text = $.trim(text || '');
var match = text.match(
/^[\s\u200c\u200f]*([الفبجدوهـه])[\s\)\.:\-ـ]*/
);
return match
? $.trim(match[1])
: $.trim(text.charAt(0));
}
var selectedLetter =
extractLetter(option.text());
var answerLetter =
extractLetter(correctAnswer);
/*
* پاک کردن وضعیت قبلی فقط در همین تست
*/
testOptions.css({
'background': '#ffffff',
'border-color': '#d9dfdc',
'color': '',
'font-weight': ''
});
/*
* مشخص کردن گزینه انتخابشده
*/
option.css({
'background': '#f5f1f8',
'border-color': '#8064a2'
});
/*
* بررسی پاسخ
*/
var isCorrect =
selectedLetter === answerLetter;
/*
* نتیجه همین تست
*/
var result =
test.find('.wd-test-result').filter(function () {
return $(this).closest('.wd-test')[0] === test[0];
}).first();
/*
* پیام نتیجه
*/
var resultMessage =
result.find('.wd-test-result-message').first();
/*
* نمایش نتیجه
*/
result.css({
'display': 'block',
'visibility': 'visible',
'opacity': '1'
});
/*
* پاسخ صحیح
*/
if (isCorrect) {
option.css({
'background': '#edf8f5',
'border-color': '#527d77',
'color': '#405b56',
'font-weight': 'bold'
});
resultMessage
.text('✓ پاسخ شما صحیح است.')
.css({
'display': 'block',
'visibility': 'visible',
'opacity': '1',
'color': '#527d77',
'font-weight': 'bold'
});
}
/*
* پاسخ نادرست
*/
else {
option.css({
'background': '#fff2f2',
'border-color': '#b44a4a',
'color': '#9b3838',
'font-weight': 'bold'
});
resultMessage
.text('✕ پاسخ شما نادرست است.')
.css({
'display': 'block',
'visibility': 'visible',
'opacity': '1',
'color': '#b44a4a',
'font-weight': 'bold'
});
/*
* نمایش پاسخ صحیح
*/
testOptions.each(function () {
var item = $(this);
var itemLetter =
extractLetter(item.text());
if (itemLetter === answerLetter) {
item.css({
'background': '#edf8f5',
'border-color': '#527d77',
'color': '#405b56',
'font-weight': 'bold'
});
}
});
}
/*
* نمایش پاسخ و تحلیل
*/
var answer =
result.find('.wd-test-answer').first();
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('بستن متن');
}
}
);
})();