diff --git a/Web/templates/upload_admin.html b/Web/templates/upload_admin.html
index 0a2a8ee..5071946 100755
--- a/Web/templates/upload_admin.html
+++ b/Web/templates/upload_admin.html
@@ -1523,12 +1523,18 @@
document.getElementById('new-location-input').value = '';
}
- // Function to fetch book information from ISBN
- function fetchBookInfo(formType) {
- if (!libraryModuleEnabled) {
+ // Globale Variablen definieren
+ let currentFetchedIsbn = null;
+ let currentBookData = null;
+
+ // Function to fetch book information from ISBN (an window gebunden)
+ window.fetchBookInfo = function(formType) {
+ // Sicherheitsprüfung, falls die Variable in manchen Ladezuständen nicht existiert
+ if (typeof libraryModuleEnabled !== 'undefined' && !libraryModuleEnabled) {
alert('Bibliotheks-Modul ist deaktiviert.');
return;
}
+
const isbnField = document.getElementById('isbn');
const infoContainer = document.getElementById('book-info-container');
@@ -1537,13 +1543,25 @@
return;
}
- const isbn = normalizeIsbnClient(isbnField.value);
+ // Fallback, falls normalizeIsbnClient nicht geladen wurde
+ const isbn = typeof normalizeIsbnClient === 'function' ? normalizeIsbnClient(isbnField.value) : isbnField.value.trim();
if (!isbn) {
infoContainer.innerHTML = '
Bitte geben Sie eine ISBN oder einen Barcode ein.
';
+ currentFetchedIsbn = null;
return;
}
+ // FIX FÜR DAS DOPPELKLICK-PROBLEM:
+ // Wenn die gleiche ISBN bereits geladen wurde, brechen wir hier ab,
+ // um den Import-Button nicht durch das DOM-Refresh zu überschreiben.
+ if (currentFetchedIsbn === isbn && currentBookData !== null) {
+ return;
+ }
+
+ // Setze aktuelle ISBN, um neue Anfragen während des Ladens zu blockieren
+ currentFetchedIsbn = isbn;
+
// Show loading indicator
infoContainer.innerHTML = '
`;
currentBookData = null;
+ currentFetchedIsbn = null; // Bei Fehler zurücksetzen
});
- }
+ };
- // Function to import book information into form
- function importBookInfo(formType) {
+ // Function to import book information into form (an window gebunden)
+ window.importBookInfo = function(formType) {
if (!currentBookData) {
alert('Keine Buchdaten verfügbar zum Import.');
return;
@@ -1606,7 +1627,7 @@
// Get form fields
const nameField = document.getElementById('name');
const descriptionField = document.getElementById('beschreibung');
- const priceField = document.getElementById('anschaffungskosten'); // <-- NEU
+ const priceField = document.getElementById('anschaffungskosten');
if (!nameField || !descriptionField) {
alert('Fehler: Formularfelder nicht gefunden.');
@@ -1652,12 +1673,24 @@
}
// Download and import book cover image if available
+ // Sicherstellen, dass die Funktion nicht crasht, falls sie auf der Seite fehlt
if (currentBookData.thumbnail) {
- downloadBookCover(currentBookData.thumbnail);
+ if (typeof downloadBookCover === 'function') {
+ try {
+ downloadBookCover(currentBookData.thumbnail);
+ } catch(e) {
+ console.warn('Cover konnte nicht geladen werden:', e);
+ }
+ }
}
// Show success message
const infoContainer = document.getElementById('book-info-container');
+
+ // Alte Erfolgsmeldung entfernen, um Doppelungen zu vermeiden
+ const oldMessage = infoContainer.querySelector('.import-success-message');
+ if (oldMessage) oldMessage.remove();
+
const successMessage = document.createElement('div');
successMessage.className = 'import-success-message';
successMessage.textContent = 'Buchdaten erfolgreich in das Formular übernommen!';
@@ -1669,7 +1702,7 @@
successMessage.parentNode.removeChild(successMessage);
}
}, 3000);
- }
+ };
function downloadBookCover(imageUrl) {
if (!imageUrl) {