مدیاویکی:Common.js: تفاوت میان نسخهها
بدون خلاصۀ ویرایش |
بدون خلاصۀ ویرایش |
||
| خط ۱: | خط ۱: | ||
(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: '# | 'color': '#11695f', | ||
'font-weight': 'bold' | |||
}); | }); | ||
resultMessage | |||
.text('✓ پاسخ شما صحیح است.') | |||
.css({ | |||
'display': 'block', | |||
'visibility': 'visible', | |||
'opacity': '1', | |||
'color': '#168477', | |||
'font-weight': 'bold' | |||
}); | |||
} | |||
/* | /* | ||
* | * پاسخ غلط | ||
*/ | */ | ||
test.find( '.wd-test-options li' ).each( | 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('بستن متن'); | |||
. | |||
} | |||
} | } | ||
); | |||
})(); | |||
); | |||
نسخهٔ ۱۴ سپتامبر ۲۰۲۶، ساعت ۱۳:۲۲
(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('بستن متن');
}
}
);
})();