csv should now be checked when pressing the "csv verarbeiten" button

This commit is contained in:
Taarly 2025-12-17 10:35:56 +01:00
parent 531fc8e741
commit 0c1399d583

View File

@ -441,30 +441,46 @@ declare(strict_types=1);
}); });
} }
// Intercept submit: require preview validation or loaded file to have been checked // Intercept submit: read file if needed, validate preview passwords, then submit
form.addEventListener('submit', function (e) { function handleCsvSubmit(e) {
e.preventDefault();
const delim = document.getElementById('csvdelimiter').value || ','; const delim = document.getElementById('csvdelimiter').value || ',';
const file = fileInput.files && fileInput.files[0]; 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 (preview.value.trim() === '') {
if (file) { if (file) {
e.preventDefault(); const reader = new FileReader();
alert('Bitte klicken Sie auf "In Vorschau laden" bevor Sie die CSV verarbeiten, damit Passwörter validiert werden.'); reader.onload = function (ev) {
return false; 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.'); 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); proceedWithText(preview.value);
if (res.invalidCount > 0) { }
e.preventDefault();
alert('Import abgebrochen: Es gibt ungültige Passwörter in der CSV-Vorschau. Bitte korrigieren Sie diese zuerst.'); form.addEventListener('submit', handleCsvSubmit);
return false;
}
return true;
});
})(); })();
</script> </script>