This commit is contained in:
Dmitry Belan
2026-09-19 11:43:07 +03:00
commit 0e11a41d29
47 changed files with 1631 additions and 0 deletions
+66
View File
@@ -0,0 +1,66 @@
document.addEventListener('DOMContentLoaded', function() {
function toggleCorrectAnswer(row) {
const typeSelect = row.querySelector('select[name$="-question_type"]');
const correctAnswerInput = row.querySelector('[name$="-correct_answer"]');
if (typeSelect && correctAnswerInput) {
let wrapper = row.querySelector('.field-correct_answer');
if (!wrapper) {
// Find a suitable parent div to hide. Unfold puts fields in divs, often with mb-4 or similar.
// We go up to the closest field group container.
wrapper = correctAnswerInput.closest('.form-row') || correctAnswerInput.parentElement.parentElement;
}
if (wrapper) {
if (typeSelect.value === 'FILE_MANUAL') {
wrapper.style.display = 'none';
} else {
wrapper.style.display = '';
}
}
}
}
function updateOrder() {
const rows = document.querySelectorAll('.inline-related:not(.empty-form)');
let counter = 1;
rows.forEach(row => {
const deleteInput = row.querySelector('input[name$="-DELETE"]');
if (deleteInput && deleteInput.checked) return;
if (row.style.display !== 'none') {
const orderInput = row.querySelector('input[name$="-order"]');
if (orderInput) {
orderInput.value = counter++;
let wrapper = row.querySelector('.field-order');
if (!wrapper) {
wrapper = orderInput.closest('.form-row') || orderInput.parentElement.parentElement;
}
if (wrapper) wrapper.style.display = 'none';
}
}
});
}
document.body.addEventListener('change', function(e) {
if (e.target && e.target.matches('select[name$="-question_type"]')) {
const row = e.target.closest('.inline-related');
if (row) toggleCorrectAnswer(row);
}
if (e.target && e.target.matches('input[name$="-DELETE"]')) {
setTimeout(updateOrder, 50);
}
});
function initAll() {
const rows = document.querySelectorAll('.inline-related:not(.empty-form)');
rows.forEach(row => {
toggleCorrectAnswer(row);
});
updateOrder();
}
initAll();
// Aggressive fallback for dynamically added inline rows in Unfold
setInterval(initAll, 1000);
});