Gitea-Repo fix
Dieser Commit ist enthalten in:
committet von
Server Deploy
Ursprung
c21be47428
Commit
623bbdf5dd
@ -108,6 +108,14 @@
|
||||
font-weight: 600;
|
||||
font-size: 1rem;
|
||||
flex-shrink: 0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.admin-user-initials {
|
||||
font-size: 0.875rem;
|
||||
font-weight: 600;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
.admin-user-info {
|
||||
|
||||
@ -150,15 +150,34 @@ class AdminManager {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Holt die Initialen des Benutzers
|
||||
*/
|
||||
getInitials(user) {
|
||||
// Verwende primär das initials Feld
|
||||
if (user.initials) {
|
||||
return user.initials.toUpperCase();
|
||||
}
|
||||
|
||||
// Fallback auf custom_initials für Kompatibilität
|
||||
if (user.custom_initials) {
|
||||
return user.custom_initials.toUpperCase();
|
||||
}
|
||||
|
||||
// Letzer Fallback
|
||||
return 'XX';
|
||||
}
|
||||
|
||||
renderUserCard(user) {
|
||||
const initial = (user.display_name || user.username).charAt(0).toUpperCase();
|
||||
const initials = this.getInitials(user);
|
||||
console.log('Rendering user card for:', user.email || user.username, '- Initials:', initials);
|
||||
const isLocked = user.locked_until && new Date(user.locked_until) > new Date();
|
||||
const permissions = user.permissions || [];
|
||||
|
||||
return `
|
||||
<div class="admin-user-card" data-user-id="${user.id}">
|
||||
<div class="admin-user-avatar" style="background-color: ${user.color || '#808080'}">
|
||||
${initial}
|
||||
<span class="admin-user-initials">${initials}</span>
|
||||
</div>
|
||||
<div class="admin-user-info">
|
||||
<div class="admin-user-name">${this.escapeHtml(user.display_name)}</div>
|
||||
@ -236,8 +255,8 @@ class AdminManager {
|
||||
this.currentEditUser = user;
|
||||
this.userModalTitle.textContent = 'Benutzer bearbeiten';
|
||||
this.editUserId.value = user.id;
|
||||
this.usernameInput.value = user.username;
|
||||
this.usernameInput.disabled = true; // Username cannot be changed
|
||||
this.usernameInput.value = user.initials || '';
|
||||
this.usernameInput.disabled = false; // Initials can be changed
|
||||
this.displayNameInput.value = user.display_name;
|
||||
this.emailInput.value = user.email || '';
|
||||
this.emailInput.disabled = false;
|
||||
@ -285,9 +304,8 @@ class AdminManager {
|
||||
permissions: this.roleSelect.value === 'admin' ? [] : this.getSelectedPermissions()
|
||||
};
|
||||
|
||||
if (!isEdit) {
|
||||
data.username = this.usernameInput.value.trim().toUpperCase();
|
||||
}
|
||||
// Kürzel immer mitschicken (bei Create und Update)
|
||||
data.initials = this.usernameInput.value.trim().toUpperCase();
|
||||
|
||||
if (this.passwordInput.value) {
|
||||
data.password = this.passwordInput.value;
|
||||
|
||||
@ -135,12 +135,14 @@ class AuthManager {
|
||||
// Get user initials
|
||||
getUserInitials() {
|
||||
if (!this.user) return '?';
|
||||
|
||||
return this.user.username
|
||||
.split(' ')
|
||||
.map(part => part.charAt(0).toUpperCase())
|
||||
.slice(0, 2)
|
||||
.join('');
|
||||
|
||||
// Verwende das initials Feld direkt
|
||||
if (this.user.initials) {
|
||||
return this.user.initials.toUpperCase();
|
||||
}
|
||||
|
||||
// Fallback für alte Daten
|
||||
return '??';
|
||||
}
|
||||
|
||||
// Get user color
|
||||
|
||||
@ -372,6 +372,7 @@ class BoardManager {
|
||||
const currentUser = users.find(u => u.id === assignee.id);
|
||||
const color = currentUser?.color || assignee.color || '#888';
|
||||
const name = currentUser?.display_name || assignee.display_name || assignee.username || 'Benutzer';
|
||||
const initials = currentUser?.initials || assignee.initials || getInitials(name);
|
||||
|
||||
const avatar = createElement('span', {
|
||||
className: 'avatar task-assignee-avatar stacked',
|
||||
@ -380,7 +381,7 @@ class BoardManager {
|
||||
zIndex: 10 - index
|
||||
},
|
||||
title: name
|
||||
}, [getInitials(name)]);
|
||||
}, [initials]);
|
||||
assigneesContainer.appendChild(avatar);
|
||||
});
|
||||
|
||||
|
||||
@ -868,7 +868,7 @@ class CalendarViewManager {
|
||||
if (task.assignees && task.assignees.length > 0) {
|
||||
task.assignees.forEach(assignee => {
|
||||
const currentUser = users.find(u => u.id === assignee.id);
|
||||
const initials = currentUser?.username || assignee.username || '??';
|
||||
const initials = currentUser?.initials || assignee.initials || '??';
|
||||
const color = currentUser?.color || assignee.color || '#6B7280';
|
||||
badges.push({ initials, color });
|
||||
});
|
||||
@ -879,7 +879,7 @@ class CalendarViewManager {
|
||||
if (task.assignedTo) {
|
||||
const user = users.find(u => u.id === task.assignedTo);
|
||||
if (user) {
|
||||
const initials = user.username || '??';
|
||||
const initials = user.initials || '??';
|
||||
badges.push({ initials, color: user.color || '#6B7280' });
|
||||
return badges;
|
||||
}
|
||||
|
||||
@ -251,7 +251,7 @@ class DashboardManager {
|
||||
createElement('span', {
|
||||
className: 'avatar avatar-sm',
|
||||
style: { backgroundColor: task.assignee.color || '#888' }
|
||||
}, [getInitials(task.assignee.username)])
|
||||
}, [task.assignee.initials || getInitials(task.assignee.username || '??')])
|
||||
]) : null
|
||||
].filter(Boolean));
|
||||
|
||||
|
||||
@ -443,7 +443,7 @@ class ListViewManager {
|
||||
className: 'avatar',
|
||||
style: { backgroundColor: user.color || '#6366F1' },
|
||||
title: user.displayName // Tooltip zeigt Name beim Hover
|
||||
}, [getInitials(user.displayName)]);
|
||||
}, [user.initials || getInitials(user.displayName)]);
|
||||
avatarContainer.appendChild(avatar);
|
||||
}
|
||||
});
|
||||
|
||||
@ -818,7 +818,7 @@ class TaskModalManager {
|
||||
const avatar = createElement('div', {
|
||||
class: 'multi-select-option-avatar',
|
||||
style: `background-color: ${user.color || '#6366F1'}`
|
||||
}, [getInitials(user.display_name || user.username)]);
|
||||
}, [user.initials || getInitials(user.display_name || user.username)]);
|
||||
|
||||
const name = createElement('span', { class: 'multi-select-option-name' }, [user.display_name || user.username]);
|
||||
|
||||
|
||||
@ -4,7 +4,7 @@
|
||||
* Offline support and caching
|
||||
*/
|
||||
|
||||
const CACHE_VERSION = '189';
|
||||
const CACHE_VERSION = '197';
|
||||
const CACHE_NAME = 'taskmate-v' + CACHE_VERSION;
|
||||
const STATIC_CACHE_NAME = 'taskmate-static-v' + CACHE_VERSION;
|
||||
const DYNAMIC_CACHE_NAME = 'taskmate-dynamic-v' + CACHE_VERSION;
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren