f
This commit is contained in:
@@ -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);
|
||||
});
|
||||
Reference in New Issue
Block a user