develop #28

Merged
blaerf merged 83 commits from develop into main 2025-12-17 14:28:04 +00:00
Showing only changes of commit 0c1399d583 - Show all commits

View File

@ -441,30 +441,46 @@ declare(strict_types=1);
});
}
// Intercept submit: require preview validation or loaded file to have been checked
form.addEventListener('submit', function (e) {
// Intercept submit: read file if needed, validate preview passwords, then submit
function handleCsvSubmit(e) {
e.preventDefault();
const delim = document.getElementById('csvdelimiter').value || ',';
const file = fileInput.files && fileInput.files[0];
// If no preview is present, require user to load preview first to ensure validation
const proceedWithText = function (text) {
const res = renderCsvPreview(text, delim);
if (res.invalidCount > 0) {
alert('Import abgebrochen: Es gibt ungültige Passwörter in der CSV-Vorschau. Bitte korrigieren Sie diese zuerst.');
return;
}
// ensure preview textarea contains the text we'll submit
preview.value = text;
// Remove handler to avoid re-validation loop and submit the form
form.removeEventListener('submit', handleCsvSubmit);
form.submit();
};
if (preview.value.trim() === '') {
if (file) {
e.preventDefault();
alert('Bitte klicken Sie auf "In Vorschau laden" bevor Sie die CSV verarbeiten, damit Passwörter validiert werden.');
return false;
const reader = new FileReader();
reader.onload = function (ev) {
const text = ev.target.result || '';
proceedWithText(text);
};
reader.onerror = function () {
alert('Fehler beim Lesen der Datei. Bitte versuchen Sie es erneut.');
};
reader.readAsText(file, 'utf-8');
return;
}
e.preventDefault();
alert('Die CSV-Vorschau ist leer. Bitte wählen Sie eine Datei oder fügen Sie CSV-Inhalt ein.');
return false;
return;
}
const res = renderCsvPreview(preview.value, delim);
if (res.invalidCount > 0) {
e.preventDefault();
alert('Import abgebrochen: Es gibt ungültige Passwörter in der CSV-Vorschau. Bitte korrigieren Sie diese zuerst.');
return false;
}
return true;
});
proceedWithText(preview.value);
}
form.addEventListener('submit', handleCsvSubmit);
})();
</script>