refactor(frontend): Duplikate in JS eliminieren – Runde 2
Neue Helper-Funktionen: - _openCardMenu(trigger, dropdown): Card-Menü-Positionierung (4x in dashboard.js dedupliziert) - _createModal(title, extraClasses): Modal-Boilerplate (3 Modals in modals.js dedupliziert) - _openPickerModal(title, items, currentId, onSelect, opts): Picker-Modal (Agent + Session zusammengeführt) - createMDE(element, opts): EasyMDE-Initialisierung (3x in agent/session/profile-page dedupliziert) Weitere Bereinigungen: - _formatReplyTimestamp() entfernt, durch _formatTimestamp() ersetzt (reply.js + chat.js) - showFormMessage/showPageMessage in admin-page.js durch showToast() ersetzt - Inline-Nachrichten (profileMessage, profilePasswordMessage, adminMessage, adminFormMessage) durch Toast-Notifications ersetzt, zugehörige HTML-Elemente entfernt - profile-page.js: messageDiv/passwordMessageDiv-Logik durch showToast() ersetzt 11 Dateien, -210 Zeilen netto
This commit is contained in:
1 parent
b56b83ad1e
commit
1a2c407538
11 files changed
+177
-387
No files matched your search
@@ -22,26 +22,6 @@ registerPage('admin', {
|
||||
var defaultPathBrowse = document.getElementById('adminDefaultPathBrowse');
|
||||
var isAdminCheckbox = document.getElementById('adminIsAdmin');
|
||||
var saveBtn = document.getElementById('adminFormSaveBtn');
|
||||
var formMessage = document.getElementById('adminFormMessage');
|
||||
var pageMessage = document.getElementById('adminMessage');
|
||||
|
||||
// ── Hilfsfunktionen ──
|
||||
|
||||
function showFormMessage(text, isError) {
|
||||
formMessage.textContent = text;
|
||||
formMessage.className = 'profile-message ' + (isError ? 'profile-message-error' : 'profile-message-success');
|
||||
formMessage.hidden = false;
|
||||
if (!isError) {
|
||||
setTimeout(function() { formMessage.hidden = true; }, 3000);
|
||||
}
|
||||
}
|
||||
|
||||
function showPageMessage(text, isError) {
|
||||
pageMessage.textContent = text;
|
||||
pageMessage.className = 'profile-message ' + (isError ? 'profile-message-error' : 'profile-message-success');
|
||||
pageMessage.hidden = false;
|
||||
setTimeout(function() { pageMessage.hidden = true; }, 4000);
|
||||
}
|
||||
|
||||
function renderUsers() {
|
||||
list.innerHTML = '';
|
||||
@@ -111,7 +91,7 @@ registerPage('admin', {
|
||||
users = await apiAdminGetUsers();
|
||||
renderUsers();
|
||||
} catch (err) {
|
||||
showPageMessage(err.message, true);
|
||||
showToast(err.message, 'error');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -128,7 +108,6 @@ registerPage('admin', {
|
||||
defaultPathInput.value = user.defaultPath || '';
|
||||
isAdminCheckbox.checked = user.isAdmin;
|
||||
saveBtn.textContent = 'Speichern';
|
||||
formMessage.hidden = true;
|
||||
userForm.hidden = false;
|
||||
usernameInput.focus();
|
||||
}
|
||||
@@ -142,7 +121,7 @@ registerPage('admin', {
|
||||
await apiAdminDeleteUser(user.userId);
|
||||
await loadUsers();
|
||||
} catch (err) {
|
||||
showPageMessage(err.message, true);
|
||||
showToast(err.message, 'error');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -152,7 +131,7 @@ registerPage('admin', {
|
||||
var link = window.location.origin + '/api/auth/autologin?token=' + result.token;
|
||||
showLoginLinkModal(user, link);
|
||||
} catch (err) {
|
||||
showPageMessage(err.message, true);
|
||||
showToast(err.message, 'error');
|
||||
}
|
||||
}
|
||||
|
||||
@@ -249,14 +228,12 @@ registerPage('admin', {
|
||||
defaultPathInput.value = '';
|
||||
isAdminCheckbox.checked = false;
|
||||
saveBtn.textContent = 'Erstellen';
|
||||
formMessage.hidden = true;
|
||||
userForm.hidden = false;
|
||||
usernameInput.focus();
|
||||
});
|
||||
|
||||
// Speichern
|
||||
saveBtn.addEventListener('click', async function() {
|
||||
formMessage.hidden = true;
|
||||
saveBtn.disabled = true;
|
||||
|
||||
try {
|
||||
@@ -276,14 +253,14 @@ registerPage('admin', {
|
||||
await apiAdminResetPassword(editingUserId, pw);
|
||||
}
|
||||
|
||||
showFormMessage('Benutzer aktualisiert', false);
|
||||
showToast('Benutzer aktualisiert');
|
||||
} else {
|
||||
// Create
|
||||
var username = usernameInput.value.trim();
|
||||
var password = passwordInput.value;
|
||||
|
||||
if (!username || !password) {
|
||||
showFormMessage('Benutzername und Passwort erforderlich', true);
|
||||
showToast('Benutzername und Passwort erforderlich', 'error');
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -295,13 +272,13 @@ registerPage('admin', {
|
||||
isAdmin: isAdminCheckbox.checked
|
||||
});
|
||||
|
||||
showFormMessage('Benutzer erstellt', false);
|
||||
showToast('Benutzer erstellt');
|
||||
}
|
||||
|
||||
userForm.hidden = true;
|
||||
await loadUsers();
|
||||
} catch (err) {
|
||||
showFormMessage(err.message, true);
|
||||
showToast(err.message, 'error');
|
||||
} finally {
|
||||
saveBtn.disabled = false;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user