Add social features and harden beta release
This commit is contained in:
@@ -10,17 +10,39 @@
|
||||
<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>✏️ Konzert bearbeiten</h1>
|
||||
<p>Änderungen werden direkt beim Konzert gespeichert.</p>
|
||||
<h1>✏️ Veranstaltung bearbeiten</h1>
|
||||
<p>Änderungen werden direkt bei der Veranstaltung gespeichert.</p>
|
||||
</div>
|
||||
<section class="empty">
|
||||
<form method="post" action="/concerts/{{ concert.id }}/edit" enctype="multipart/form-data">
|
||||
{% if can_edit_details %}
|
||||
<p>
|
||||
<label>Kategorie<br>
|
||||
<select name="event_type" id="event-type" required>
|
||||
<option value="concert" {% if concert.event_type == 'concert' %}selected{% endif %}>Konzert</option>
|
||||
<option value="festival" {% if concert.event_type == 'festival' %}selected{% endif %}>Festival</option>
|
||||
<option value="other" {% if concert.event_type == 'other' %}selected{% endif %}>Sonstiges</option>
|
||||
</select>
|
||||
</label>
|
||||
</p>
|
||||
<p id="parent-event-field" {% if concert.event_type != 'other' %}hidden{% endif %}>
|
||||
<label>Gehört zu<br>
|
||||
<select name="parent_event_id" id="parent-event-id">
|
||||
<option value="">Keine Verknüpfung – eigenständige Karte</option>
|
||||
{% for event in linkable_events %}
|
||||
<option value="{{ event.id }}" {% if concert.parent_event and concert.parent_event.id == event.id %}selected{% endif %}>{{ event.event_type_label }} · {{ event.title }} · {{ event.date }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</label>
|
||||
</p>
|
||||
{% endif %}
|
||||
<p>
|
||||
<label>Künstler / Band<br>
|
||||
<label>Titel / Künstler / Band<br>
|
||||
<input type="text" name="artist" value="{{ concert.artist }}" {% if not can_edit_title %}disabled{% endif %} required>
|
||||
</label>
|
||||
</p>
|
||||
@@ -53,9 +75,9 @@
|
||||
<input type="datetime-local" name="start_datetime" value="{{ concert.start_local }}" required>
|
||||
</label>
|
||||
</p>
|
||||
<p>
|
||||
<p id="festival-end-field" {% if concert.event_type != 'festival' %}hidden{% endif %}>
|
||||
<label>Ende<br>
|
||||
<input type="datetime-local" name="end_datetime" value="{{ concert.end_local }}">
|
||||
<input type="datetime-local" name="end_datetime" id="festival-end-datetime" value="{{ concert.end_local }}" {% if concert.event_type == 'festival' %}required{% endif %}>
|
||||
</label>
|
||||
</p>
|
||||
<p>
|
||||
@@ -73,14 +95,20 @@
|
||||
<input type="number" name="ticket_price" value="{{ concert.ticket_price or '' }}" step="0.01" min="0">
|
||||
</label>
|
||||
</p>
|
||||
<p>
|
||||
<label>Flyer extern verlinken <small>(bevorzugt)</small><br>
|
||||
<input type="url" name="flyer_url" value="{{ concert.flyer_url or '' }}" placeholder="https://veranstalter.example/flyer.jpg">
|
||||
</label>
|
||||
<small>Bitte möglichst die offizielle Quelle verwenden. Ein externer Link wird gegenüber einem Upload bevorzugt und unter dem Bild genannt. Feld leeren, um wieder den Upload zu verwenden.</small>
|
||||
</p>
|
||||
<p>
|
||||
<label>Neuen Flyer hochladen<br>
|
||||
<input type="file" name="flyer" accept="image/jpeg,image/png,image/webp">
|
||||
</label>
|
||||
<small>Ohne neue Datei bleibt der bisherige Flyer erhalten.</small>
|
||||
</p>
|
||||
{% if concert.flyer_path %}
|
||||
<p><img src="{{ concert.flyer_path }}" alt="Aktueller Flyer" style="max-width: 300px; max-height: 400px; border-radius: 10px;"></p>
|
||||
{% if concert.flyer_url or concert.flyer_path %}
|
||||
<p><img src="{{ concert.flyer_url or concert.flyer_path }}" alt="Aktueller Flyer" referrerpolicy="no-referrer" style="max-width: 300px; max-height: 400px; border-radius: 10px;"></p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<div>
|
||||
@@ -90,5 +118,26 @@
|
||||
</form>
|
||||
</section>
|
||||
</main>
|
||||
{% if can_edit_details %}
|
||||
<script>
|
||||
const eventType = document.getElementById("event-type");
|
||||
const parentEventField = document.getElementById("parent-event-field");
|
||||
const parentEventId = document.getElementById("parent-event-id");
|
||||
const festivalEndField = document.getElementById("festival-end-field");
|
||||
const festivalEndDatetime = document.getElementById("festival-end-datetime");
|
||||
|
||||
function updateEventFields() {
|
||||
const isFestival = eventType.value === "festival";
|
||||
const isOther = eventType.value === "other";
|
||||
festivalEndField.hidden = !isFestival;
|
||||
festivalEndDatetime.required = isFestival;
|
||||
parentEventField.hidden = !isOther;
|
||||
if (!isFestival) festivalEndDatetime.value = "";
|
||||
if (!isOther) parentEventId.value = "";
|
||||
}
|
||||
|
||||
eventType.addEventListener("change", updateEventFields);
|
||||
</script>
|
||||
{% endif %}
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user