Konto: Name jetzt fest wie E-Mail/Lieferadresse, nur Benutzername änderbar
Der echte Name war bisher versehentlich ebenfalls editierbar. Jetzt steht er als reine Anzeige in derselben Tabelle wie E-Mail und Lieferadresse — änderbar bleibt ausschließlich der optionale Benutzername (Spitzname). Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
279960b950
commit
5434801dda
@@ -198,17 +198,11 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
<span class="small" style="display:block; color: var(--c-text-muted); margin-top:0.3em;">{t.accountDash.usernameHint}</span>
|
<span class="small" style="display:block; color: var(--c-text-muted); margin-top:0.3em;">{t.accountDash.usernameHint}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="profile-field">
|
|
||||||
<label for="profile-name">{t.accountDash.profileName}</label>
|
|
||||||
<div class="profile-field-row">
|
|
||||||
<input type="text" id="profile-name" maxlength="60" />
|
|
||||||
<button type="button" class="btn btn-primary btn-sm" id="profile-name-save">{t.accountDash.nameSave}</button>
|
|
||||||
</div>
|
|
||||||
<span class="small" id="profile-name-status" style="display:none; color: var(--c-accent);">{t.accountDash.nameSaved}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="specs">
|
<table class="specs">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
{/* Name, E-Mail und Lieferadresse sind fest (wie bei einer echten Bestellung) — nur
|
||||||
|
der Spitzname oben ist änderbar. */}
|
||||||
|
<tr><th>{t.accountDash.profileName}</th><td id="profile-name-display">–</td></tr>
|
||||||
<tr><th>{t.accountDash.profileEmail}</th><td id="profile-email">–</td></tr>
|
<tr><th>{t.accountDash.profileEmail}</th><td id="profile-email">–</td></tr>
|
||||||
<tr><th>{t.accountDash.profileAddress}</th><td>Musterstraße 1<br />10115 Berlin<br />Deutschland</td></tr>
|
<tr><th>{t.accountDash.profileAddress}</th><td>Musterstraße 1<br />10115 Berlin<br />Deutschland</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -277,7 +271,7 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
setActiveTab(null);
|
setActiveTab(null);
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
import { getAccount, isLoggedIn, logout, setName, setUsername, setPhoto, hatBestellungBewertet, anzeigeName } from "../../../scripts/account";
|
import { getAccount, isLoggedIn, logout, setUsername, setPhoto, hatBestellungBewertet, anzeigeName } from "../../../scripts/account";
|
||||||
const { loginPath, fallbackName, greetingTemplate, reviewedBadgeText } = (window as any).__accountDashVars;
|
const { loginPath, fallbackName, greetingTemplate, reviewedBadgeText } = (window as any).__accountDashVars;
|
||||||
|
|
||||||
// Zugriffsschutz: diese Seite ist nur für angemeldete Kund:innen gedacht. Es gibt noch kein
|
// Zugriffsschutz: diese Seite ist nur für angemeldete Kund:innen gedacht. Es gibt noch kein
|
||||||
@@ -301,8 +295,8 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
if (greetingEl) greetingEl.textContent = greetingTemplate.replace("{name}", anzeigeName(a) || fallbackName);
|
if (greetingEl) greetingEl.textContent = greetingTemplate.replace("{name}", anzeigeName(a) || fallbackName);
|
||||||
const emailEl = document.getElementById("profile-email");
|
const emailEl = document.getElementById("profile-email");
|
||||||
if (emailEl) emailEl.textContent = a.email || "–";
|
if (emailEl) emailEl.textContent = a.email || "–";
|
||||||
const nameInput = document.getElementById("profile-name") as HTMLInputElement | null;
|
const nameDisplay = document.getElementById("profile-name-display");
|
||||||
if (nameInput && document.activeElement !== nameInput) nameInput.value = a.name;
|
if (nameDisplay) nameDisplay.textContent = a.name || "–";
|
||||||
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
||||||
if (usernameInput && document.activeElement !== usernameInput) usernameInput.value = a.username;
|
if (usernameInput && document.activeElement !== usernameInput) usernameInput.value = a.username;
|
||||||
|
|
||||||
@@ -316,19 +310,6 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
renderProfil();
|
renderProfil();
|
||||||
window.addEventListener("account:changed", renderProfil);
|
window.addEventListener("account:changed", renderProfil);
|
||||||
|
|
||||||
// Echter Name ändern (fest, Pflichtfeld)
|
|
||||||
const nameSaveBtn = document.getElementById("profile-name-save");
|
|
||||||
const nameInputEl = document.getElementById("profile-name") as HTMLInputElement | null;
|
|
||||||
const nameStatus = document.getElementById("profile-name-status");
|
|
||||||
nameSaveBtn?.addEventListener("click", () => {
|
|
||||||
if (!nameInputEl) return;
|
|
||||||
setName(nameInputEl.value);
|
|
||||||
if (nameStatus) {
|
|
||||||
nameStatus.style.display = "inline";
|
|
||||||
setTimeout(() => { nameStatus.style.display = "none"; }, 1800);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Benutzername ändern
|
// Benutzername ändern
|
||||||
const saveBtn = document.getElementById("profile-username-save");
|
const saveBtn = document.getElementById("profile-username-save");
|
||||||
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
||||||
|
|||||||
@@ -198,17 +198,11 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
<span class="small" style="display:block; color: var(--c-text-muted); margin-top:0.3em;">{t.accountDash.usernameHint}</span>
|
<span class="small" style="display:block; color: var(--c-text-muted); margin-top:0.3em;">{t.accountDash.usernameHint}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="profile-field">
|
|
||||||
<label for="profile-name">{t.accountDash.profileName}</label>
|
|
||||||
<div class="profile-field-row">
|
|
||||||
<input type="text" id="profile-name" maxlength="60" />
|
|
||||||
<button type="button" class="btn btn-primary btn-sm" id="profile-name-save">{t.accountDash.nameSave}</button>
|
|
||||||
</div>
|
|
||||||
<span class="small" id="profile-name-status" style="display:none; color: var(--c-accent);">{t.accountDash.nameSaved}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="specs">
|
<table class="specs">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
{/* Name, E-Mail und Lieferadresse sind fest (wie bei einer echten Bestellung) — nur
|
||||||
|
der Spitzname oben ist änderbar. */}
|
||||||
|
<tr><th>{t.accountDash.profileName}</th><td id="profile-name-display">–</td></tr>
|
||||||
<tr><th>{t.accountDash.profileEmail}</th><td id="profile-email">–</td></tr>
|
<tr><th>{t.accountDash.profileEmail}</th><td id="profile-email">–</td></tr>
|
||||||
<tr><th>{t.accountDash.profileAddress}</th><td>Musterstraße 1<br />10115 Berlin<br />Deutschland</td></tr>
|
<tr><th>{t.accountDash.profileAddress}</th><td>Musterstraße 1<br />10115 Berlin<br />Deutschland</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -277,7 +271,7 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
setActiveTab(null);
|
setActiveTab(null);
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
import { getAccount, isLoggedIn, logout, setName, setUsername, setPhoto, hatBestellungBewertet, anzeigeName } from "../../../scripts/account";
|
import { getAccount, isLoggedIn, logout, setUsername, setPhoto, hatBestellungBewertet, anzeigeName } from "../../../scripts/account";
|
||||||
const { loginPath, fallbackName, greetingTemplate, reviewedBadgeText } = (window as any).__accountDashVars;
|
const { loginPath, fallbackName, greetingTemplate, reviewedBadgeText } = (window as any).__accountDashVars;
|
||||||
|
|
||||||
// Zugriffsschutz: diese Seite ist nur für angemeldete Kund:innen gedacht. Es gibt noch kein
|
// Zugriffsschutz: diese Seite ist nur für angemeldete Kund:innen gedacht. Es gibt noch kein
|
||||||
@@ -301,8 +295,8 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
if (greetingEl) greetingEl.textContent = greetingTemplate.replace("{name}", anzeigeName(a) || fallbackName);
|
if (greetingEl) greetingEl.textContent = greetingTemplate.replace("{name}", anzeigeName(a) || fallbackName);
|
||||||
const emailEl = document.getElementById("profile-email");
|
const emailEl = document.getElementById("profile-email");
|
||||||
if (emailEl) emailEl.textContent = a.email || "–";
|
if (emailEl) emailEl.textContent = a.email || "–";
|
||||||
const nameInput = document.getElementById("profile-name") as HTMLInputElement | null;
|
const nameDisplay = document.getElementById("profile-name-display");
|
||||||
if (nameInput && document.activeElement !== nameInput) nameInput.value = a.name;
|
if (nameDisplay) nameDisplay.textContent = a.name || "–";
|
||||||
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
||||||
if (usernameInput && document.activeElement !== usernameInput) usernameInput.value = a.username;
|
if (usernameInput && document.activeElement !== usernameInput) usernameInput.value = a.username;
|
||||||
|
|
||||||
@@ -316,19 +310,6 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
renderProfil();
|
renderProfil();
|
||||||
window.addEventListener("account:changed", renderProfil);
|
window.addEventListener("account:changed", renderProfil);
|
||||||
|
|
||||||
// Echter Name ändern (fest, Pflichtfeld)
|
|
||||||
const nameSaveBtn = document.getElementById("profile-name-save");
|
|
||||||
const nameInputEl = document.getElementById("profile-name") as HTMLInputElement | null;
|
|
||||||
const nameStatus = document.getElementById("profile-name-status");
|
|
||||||
nameSaveBtn?.addEventListener("click", () => {
|
|
||||||
if (!nameInputEl) return;
|
|
||||||
setName(nameInputEl.value);
|
|
||||||
if (nameStatus) {
|
|
||||||
nameStatus.style.display = "inline";
|
|
||||||
setTimeout(() => { nameStatus.style.display = "none"; }, 1800);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Benutzername ändern
|
// Benutzername ändern
|
||||||
const saveBtn = document.getElementById("profile-username-save");
|
const saveBtn = document.getElementById("profile-username-save");
|
||||||
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
||||||
|
|||||||
@@ -198,17 +198,11 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
<span class="small" style="display:block; color: var(--c-text-muted); margin-top:0.3em;">{t.accountDash.usernameHint}</span>
|
<span class="small" style="display:block; color: var(--c-text-muted); margin-top:0.3em;">{t.accountDash.usernameHint}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="profile-field">
|
|
||||||
<label for="profile-name">{t.accountDash.profileName}</label>
|
|
||||||
<div class="profile-field-row">
|
|
||||||
<input type="text" id="profile-name" maxlength="60" />
|
|
||||||
<button type="button" class="btn btn-primary btn-sm" id="profile-name-save">{t.accountDash.nameSave}</button>
|
|
||||||
</div>
|
|
||||||
<span class="small" id="profile-name-status" style="display:none; color: var(--c-accent);">{t.accountDash.nameSaved}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="specs">
|
<table class="specs">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
{/* Name, E-Mail und Lieferadresse sind fest (wie bei einer echten Bestellung) — nur
|
||||||
|
der Spitzname oben ist änderbar. */}
|
||||||
|
<tr><th>{t.accountDash.profileName}</th><td id="profile-name-display">–</td></tr>
|
||||||
<tr><th>{t.accountDash.profileEmail}</th><td id="profile-email">–</td></tr>
|
<tr><th>{t.accountDash.profileEmail}</th><td id="profile-email">–</td></tr>
|
||||||
<tr><th>{t.accountDash.profileAddress}</th><td>Musterstraße 1<br />10115 Berlin<br />Deutschland</td></tr>
|
<tr><th>{t.accountDash.profileAddress}</th><td>Musterstraße 1<br />10115 Berlin<br />Deutschland</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -277,7 +271,7 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
setActiveTab(null);
|
setActiveTab(null);
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
import { getAccount, isLoggedIn, logout, setName, setUsername, setPhoto, hatBestellungBewertet, anzeigeName } from "../../../scripts/account";
|
import { getAccount, isLoggedIn, logout, setUsername, setPhoto, hatBestellungBewertet, anzeigeName } from "../../../scripts/account";
|
||||||
const { loginPath, fallbackName, greetingTemplate, reviewedBadgeText } = (window as any).__accountDashVars;
|
const { loginPath, fallbackName, greetingTemplate, reviewedBadgeText } = (window as any).__accountDashVars;
|
||||||
|
|
||||||
// Zugriffsschutz: diese Seite ist nur für angemeldete Kund:innen gedacht. Es gibt noch kein
|
// Zugriffsschutz: diese Seite ist nur für angemeldete Kund:innen gedacht. Es gibt noch kein
|
||||||
@@ -301,8 +295,8 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
if (greetingEl) greetingEl.textContent = greetingTemplate.replace("{name}", anzeigeName(a) || fallbackName);
|
if (greetingEl) greetingEl.textContent = greetingTemplate.replace("{name}", anzeigeName(a) || fallbackName);
|
||||||
const emailEl = document.getElementById("profile-email");
|
const emailEl = document.getElementById("profile-email");
|
||||||
if (emailEl) emailEl.textContent = a.email || "–";
|
if (emailEl) emailEl.textContent = a.email || "–";
|
||||||
const nameInput = document.getElementById("profile-name") as HTMLInputElement | null;
|
const nameDisplay = document.getElementById("profile-name-display");
|
||||||
if (nameInput && document.activeElement !== nameInput) nameInput.value = a.name;
|
if (nameDisplay) nameDisplay.textContent = a.name || "–";
|
||||||
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
||||||
if (usernameInput && document.activeElement !== usernameInput) usernameInput.value = a.username;
|
if (usernameInput && document.activeElement !== usernameInput) usernameInput.value = a.username;
|
||||||
|
|
||||||
@@ -316,19 +310,6 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
renderProfil();
|
renderProfil();
|
||||||
window.addEventListener("account:changed", renderProfil);
|
window.addEventListener("account:changed", renderProfil);
|
||||||
|
|
||||||
// Echter Name ändern (fest, Pflichtfeld)
|
|
||||||
const nameSaveBtn = document.getElementById("profile-name-save");
|
|
||||||
const nameInputEl = document.getElementById("profile-name") as HTMLInputElement | null;
|
|
||||||
const nameStatus = document.getElementById("profile-name-status");
|
|
||||||
nameSaveBtn?.addEventListener("click", () => {
|
|
||||||
if (!nameInputEl) return;
|
|
||||||
setName(nameInputEl.value);
|
|
||||||
if (nameStatus) {
|
|
||||||
nameStatus.style.display = "inline";
|
|
||||||
setTimeout(() => { nameStatus.style.display = "none"; }, 1800);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Benutzername ändern
|
// Benutzername ändern
|
||||||
const saveBtn = document.getElementById("profile-username-save");
|
const saveBtn = document.getElementById("profile-username-save");
|
||||||
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
||||||
|
|||||||
@@ -198,17 +198,11 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
<span class="small" style="display:block; color: var(--c-text-muted); margin-top:0.3em;">{t.accountDash.usernameHint}</span>
|
<span class="small" style="display:block; color: var(--c-text-muted); margin-top:0.3em;">{t.accountDash.usernameHint}</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="profile-field">
|
|
||||||
<label for="profile-name">{t.accountDash.profileName}</label>
|
|
||||||
<div class="profile-field-row">
|
|
||||||
<input type="text" id="profile-name" maxlength="60" />
|
|
||||||
<button type="button" class="btn btn-primary btn-sm" id="profile-name-save">{t.accountDash.nameSave}</button>
|
|
||||||
</div>
|
|
||||||
<span class="small" id="profile-name-status" style="display:none; color: var(--c-accent);">{t.accountDash.nameSaved}</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<table class="specs">
|
<table class="specs">
|
||||||
<tbody>
|
<tbody>
|
||||||
|
{/* Name, E-Mail und Lieferadresse sind fest (wie bei einer echten Bestellung) — nur
|
||||||
|
der Spitzname oben ist änderbar. */}
|
||||||
|
<tr><th>{t.accountDash.profileName}</th><td id="profile-name-display">–</td></tr>
|
||||||
<tr><th>{t.accountDash.profileEmail}</th><td id="profile-email">–</td></tr>
|
<tr><th>{t.accountDash.profileEmail}</th><td id="profile-email">–</td></tr>
|
||||||
<tr><th>{t.accountDash.profileAddress}</th><td>Musterstraße 1<br />10115 Berlin<br />Deutschland</td></tr>
|
<tr><th>{t.accountDash.profileAddress}</th><td>Musterstraße 1<br />10115 Berlin<br />Deutschland</td></tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
@@ -277,7 +271,7 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
setActiveTab(null);
|
setActiveTab(null);
|
||||||
</script>
|
</script>
|
||||||
<script>
|
<script>
|
||||||
import { getAccount, isLoggedIn, logout, setName, setUsername, setPhoto, hatBestellungBewertet, anzeigeName } from "../../scripts/account";
|
import { getAccount, isLoggedIn, logout, setUsername, setPhoto, hatBestellungBewertet, anzeigeName } from "../../scripts/account";
|
||||||
const { loginPath, fallbackName, greetingTemplate, reviewedBadgeText } = (window as any).__accountDashVars;
|
const { loginPath, fallbackName, greetingTemplate, reviewedBadgeText } = (window as any).__accountDashVars;
|
||||||
|
|
||||||
// Zugriffsschutz: diese Seite ist nur für angemeldete Kund:innen gedacht. Es gibt noch kein
|
// Zugriffsschutz: diese Seite ist nur für angemeldete Kund:innen gedacht. Es gibt noch kein
|
||||||
@@ -301,8 +295,8 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
if (greetingEl) greetingEl.textContent = greetingTemplate.replace("{name}", anzeigeName(a) || fallbackName);
|
if (greetingEl) greetingEl.textContent = greetingTemplate.replace("{name}", anzeigeName(a) || fallbackName);
|
||||||
const emailEl = document.getElementById("profile-email");
|
const emailEl = document.getElementById("profile-email");
|
||||||
if (emailEl) emailEl.textContent = a.email || "–";
|
if (emailEl) emailEl.textContent = a.email || "–";
|
||||||
const nameInput = document.getElementById("profile-name") as HTMLInputElement | null;
|
const nameDisplay = document.getElementById("profile-name-display");
|
||||||
if (nameInput && document.activeElement !== nameInput) nameInput.value = a.name;
|
if (nameDisplay) nameDisplay.textContent = a.name || "–";
|
||||||
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
||||||
if (usernameInput && document.activeElement !== usernameInput) usernameInput.value = a.username;
|
if (usernameInput && document.activeElement !== usernameInput) usernameInput.value = a.username;
|
||||||
|
|
||||||
@@ -316,19 +310,6 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
renderProfil();
|
renderProfil();
|
||||||
window.addEventListener("account:changed", renderProfil);
|
window.addEventListener("account:changed", renderProfil);
|
||||||
|
|
||||||
// Echter Name ändern (fest, Pflichtfeld)
|
|
||||||
const nameSaveBtn = document.getElementById("profile-name-save");
|
|
||||||
const nameInputEl = document.getElementById("profile-name") as HTMLInputElement | null;
|
|
||||||
const nameStatus = document.getElementById("profile-name-status");
|
|
||||||
nameSaveBtn?.addEventListener("click", () => {
|
|
||||||
if (!nameInputEl) return;
|
|
||||||
setName(nameInputEl.value);
|
|
||||||
if (nameStatus) {
|
|
||||||
nameStatus.style.display = "inline";
|
|
||||||
setTimeout(() => { nameStatus.style.display = "none"; }, 1800);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
// Benutzername ändern
|
// Benutzername ändern
|
||||||
const saveBtn = document.getElementById("profile-username-save");
|
const saveBtn = document.getElementById("profile-username-save");
|
||||||
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
const usernameInput = document.getElementById("profile-username") as HTMLInputElement | null;
|
||||||
|
|||||||
Reference in New Issue
Block a user