Add social features and harden beta release

This commit is contained in:
kai
2026-08-26 17:08:10 +02:00
parent 3181b2fb35
commit a9741b6859
28 changed files with 1804 additions and 184 deletions
+59 -8
View File
@@ -10,7 +10,7 @@
content="width=device-width, initial-scale=1.0"
>
<title>Konzert hinzufügen · Pingu Concerts</title>
<title>Veranstaltung hinzufügen · Pingu Concerts</title>
<link
rel="stylesheet"
@@ -78,6 +78,8 @@
🎸 Pingu <span>Concerts</span>
</a>
{% include '_user_menu.html' %}
</div>
</header>
@@ -87,7 +89,7 @@
<div class="page-title">
<h1>🎤 Konzert hinzufügen</h1>
<h1>🎤 Veranstaltung hinzufügen</h1>
<p>
Trag ein, worauf wir uns freuen.
@@ -104,6 +106,26 @@
enctype="multipart/form-data"
>
<p>
<label for="event-type">Kategorie</label><br>
<select name="event_type" id="event-type" required>
<option value="concert">Konzert</option>
<option value="festival">Festival</option>
<option value="other">Sonstiges</option>
</select>
</p>
<p id="parent-event-field" hidden>
<label for="parent-event-id">Gehört zu</label><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 }}">{{ event.event_type_label }} · {{ event.title }} · {{ event.date }}</option>
{% endfor %}
</select>
<small>Zum Beispiel ein gemeinsames Vortrinken vor einem Konzert.</small>
</p>
<!-- ================================================= -->
<!-- Künstler -->
<!-- ================================================= -->
@@ -111,7 +133,7 @@
<p>
<label>
Künstler / Band<br>
Titel / Künstler / Band<br>
<input
type="text"
@@ -124,7 +146,6 @@
</p>
<!-- ================================================= -->
<!-- Veranstaltungsort -->
<!-- ================================================= -->
@@ -208,6 +229,13 @@
</p>
<p id="festival-end-field" hidden>
<label>
Enddatum und Uhrzeit<br>
<input type="datetime-local" name="end_datetime" id="festival-end-datetime">
</label>
</p>
<!-- ================================================= -->
<!-- Beschreibung -->
@@ -221,7 +249,7 @@
<textarea
name="description"
rows="5"
placeholder="Optional: Infos zum Konzert, Tour, Supportbands usw."
placeholder="Optional: Infos zur Veranstaltung, Tour, Supportbands usw."
></textarea>
</label>
@@ -277,9 +305,13 @@
<div class="flyer-upload">
<label for="flyer-url">🔗 Flyer extern verlinken <small>(bevorzugt)</small></label>
<input type="url" id="flyer-url" name="flyer_url" placeholder="https://veranstalter.example/flyer.jpg">
<div class="flyer-help">Bitte möglichst den offiziellen Flyer des Veranstalters oder der Band verlinken. Das Bild wird nicht auf Pingu Concerts kopiert; der Link wird als Quelle ausgewiesen.</div>
<label for="flyer">
🎨 Konzert-Flyer
🎨 Veranstaltungs-Flyer
</label>
@@ -294,7 +326,7 @@
<div class="flyer-help">
JPG, PNG oder WEBP · maximal 10 MB
Alternative, falls kein offizieller externer Link verfügbar ist: JPG, PNG oder WEBP · maximal 10 MB. Ist ein Link angegeben, wird er bevorzugt dargestellt.
</div>
@@ -330,7 +362,7 @@
type="submit"
class="button"
>
💾 Konzert speichern
💾 Veranstaltung speichern
</button>
@@ -352,6 +384,25 @@
<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);
updateEventFields();
/* ============================================================
VENUE SEARCH
============================================================ */