Add social features and harden beta release
This commit is contained in:
@@ -13,19 +13,37 @@
|
||||
.venue-actions label { display: flex; align-items: center; gap: 6px; }
|
||||
.merge-form { display: grid; grid-template-columns: minmax(180px, 1fr) auto; gap: 8px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); }
|
||||
.delete-form { margin-top: 10px; text-align: right; }
|
||||
.venue-card { padding: 0; overflow: hidden; }
|
||||
.venue-summary { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 14px 16px; cursor: pointer; list-style: none; }
|
||||
.venue-summary::-webkit-details-marker { display: none; }
|
||||
.venue-summary::after { content: "▾"; color: var(--muted); transition: transform .15s ease; }
|
||||
.venue-card[open] .venue-summary::after { transform: rotate(180deg); }
|
||||
.venue-card[open] .venue-summary { border-bottom: 1px solid var(--border); background: var(--surface-hover); }
|
||||
.venue-summary-title { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
||||
.venue-summary-meta { display: block; margin-top: 3px; color: var(--muted); font-size: .83rem; }
|
||||
.venue-verified { color: #86efac; }
|
||||
.venue-unverified { color: #fca5a5; }
|
||||
.venue-editor { padding: 16px; }
|
||||
@media (max-width: 900px) { .venue-fields { grid-template-columns: 1fr 1fr; } }
|
||||
@media (max-width: 560px) { .venue-fields, .merge-form { grid-template-columns: 1fr; } }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header><div class="header-inner"><a href="/" class="logo">🎸 Pingu <span>Concerts</span></a><span>{{ user.display_name }}</span></div></header>
|
||||
<header><div class="header-inner"><a href="/" class="logo">🎸 Pingu <span>Concerts</span></a>{% include '_user_menu.html' %}</div></header>
|
||||
<main>
|
||||
<div class="page-title"><h1>📍 Veranstaltungsorte</h1><p>Orte korrigieren, bestätigen, zusammenführen oder entfernen.</p></div>
|
||||
{% set admin_section = 'venues' %}{% include '_admin_nav.html' %}
|
||||
<section class="admin-section">
|
||||
<div class="admin-list">
|
||||
{% for venue in venues %}
|
||||
<article class="admin-row">
|
||||
<details class="admin-row venue-card" {% if not venue.is_verified %}open{% endif %}>
|
||||
<summary class="venue-summary">
|
||||
<span>
|
||||
<strong class="venue-summary-title">{{ venue.name }}{% if venue.city %} · {{ venue.city }}{% endif %}{% if venue.country %} · {{ venue.country }}{% endif %}</strong>
|
||||
<span class="venue-summary-meta"><span class="{% if venue.is_verified %}venue-verified{% else %}venue-unverified{% endif %}">{% if venue.is_verified %}✓ bestätigt{% else %}● unbestätigt{% endif %}</span> · {{ venue.concert_count }} Veranstaltung(en) · ID {{ venue.id }}</span>
|
||||
</span>
|
||||
</summary>
|
||||
<div class="venue-editor">
|
||||
<form method="post" action="/admin/venues/{{ venue.id }}">
|
||||
<div class="venue-fields">
|
||||
<input name="name" value="{{ venue.name }}" aria-label="Name" required>
|
||||
@@ -50,7 +68,8 @@
|
||||
<form class="delete-form" method="post" action="/admin/venues/{{ venue.id }}/delete" onsubmit="return confirm('{% if venue.concert_count %}Der Ort ist mit {{ venue.concert_count }} Konzert(en) verknüpft. Diese Konzerte haben danach keinen Veranstaltungsort mehr. {% endif %}Ort endgültig löschen?');">
|
||||
<button class="admin-danger" type="submit">Ort löschen{% if venue.concert_count %} ({{ venue.concert_count }} Verknüpfung(en)){% endif %}</button>
|
||||
</form>
|
||||
</article>
|
||||
</div>
|
||||
</details>
|
||||
{% else %}<p>Noch keine Veranstaltungsorte vorhanden.</p>{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
Reference in New Issue
Block a user