Fix: Standort-Picker im Forum-Edit-Modal ergänzt

- _showEditThreadModal: location picker mit Vorausfüllung (thread_lat/lon/ort)
- ThreadUpdate-Schema: thread_lat/lon/ort Felder ergänzt
- PATCH /threads/{id}/content: Location wird jetzt gespeichert/überschrieben
This commit is contained in:
rene 2026-04-19 10:45:05 +02:00
parent 062c0209e6
commit b1053198de
3 changed files with 32 additions and 6 deletions

View file

@ -3,7 +3,7 @@
Router, State-Management, Navigation, Initialisierung.
============================================================ */
const APP_VER = '216'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
const APP_VER = '217'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
const App = (() => {

View file

@ -1067,19 +1067,39 @@ window.Page_forum = (() => {
</div>
<div class="form-group">
<label class="form-label">Text</label>
<textarea class="form-control" name="text" rows="6">${_esc(thread.text || '')}</textarea>
<textarea class="form-control" name="text" rows="5">${_esc(thread.text || '')}</textarea>
</div>
<div class="form-group">
<label class="form-label">Standort <span style="color:var(--c-text-secondary)">(optional)</span></label>
<div id="forum-edit-location-picker"></div>
</div>
</form>`,
footer: `
<button class="btn btn-ghost flex-1" onclick="UI.modal.close()">Abbrechen</button>
<button type="submit" form="${id}" class="btn btn-primary flex-1">${UI.icon('floppy-disk')} Speichern</button>`,
});
let _picker = null;
setTimeout(() => {
_picker = UI.locationPicker({ containerId: 'forum-edit-location-picker' });
if (thread.thread_lat && thread.thread_lon) {
_picker.setValue(thread.thread_lat, thread.thread_lon, thread.thread_ort || null);
}
}, 50);
document.getElementById(id)?.addEventListener('submit', async e => {
e.preventDefault();
const fd = new FormData(e.target);
const loc = _picker ? _picker.getValue() : { lat: null, lon: null, name: null };
const btn = document.querySelector(`[form="${id}"][type="submit"]`);
await UI.asyncButton(btn, async () => {
await API.forum.updateThread(thread.id, { titel: fd.get('titel'), text: fd.get('text') });
await API.forum.updateThread(thread.id, {
titel: fd.get('titel'),
text: fd.get('text'),
thread_lat: loc.lat ?? null,
thread_lon: loc.lon ?? null,
thread_ort: loc.name ?? null,
});
UI.modal.close();
_loadThreads(true);
UI.toast.success('Beitrag aktualisiert.');