Files
Escapepage/templates/website/admin/escape_room/form.html.twig
T
FrankandClaude Sonnet 5 008887ab60 Add physical escape room map, reviews, and website admin
Public:
- /escape-rooms: Leaflet + OpenStreetMap map with marker clustering and a
  searchable list, both built from a cached slim JSON feed
- /escape-rooms/{id}-{slug}: room detail with a mini-map and user reviews
  (rating + title + body, login required)
- /escape-rooms/suggest: visitor submission form with click-to-drop-pin map
  and reCAPTCHA v3; new rooms land as pending

Data:
- EscapeRoom / EscapeRoomReview entities (soft-delete), migration
- app:escaperooms:import-osm console command pulls leisure=escape_game from
  the Overpass API, upserts by (osmType, osmId), skips locked rows;
  --tiled / --area / --bbox options

Admin (new "Website Admin" area, separate from Game Admin):
- src/Website/Controller/AdminEscapeRoomController.php at /admin/escape-rooms:
  status-filtered list, new/edit, publish/hide/reject, delete, review removal
- game admin sidebar extracted into a block and cross-linked

Assets: leaflet + leaflet.markercluster; escaperoom-map and escaperoom-detail
Encore entries.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-31 00:24:03 +02:00

42 lines
1.6 KiB
Twig

{% extends 'website/admin/base.html.twig' %}
{% block title %}{{ heading }} — Website Admin{% endblock %}
{% block admin_body %}
<div style="margin-bottom: 1.25rem;">
<a href="{{ path('website_admin_escaperooms') }}" style="color: #64748b; text-decoration: none; font-size: 0.9rem;">← Escape Rooms</a>
</div>
<h1 style="margin: 0 0 1.5rem; font-size: 1.5rem; color: #0f172a;">{{ heading }}</h1>
<div style="background: #fff; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,.07); padding: 1.5rem;">
{{ form_start(form, {attr: {class: 'er-form'}}) }}
<div class="er-field-wide">{{ form_row(form.name) }}</div>
<div class="er-field-wide">{{ form_row(form.venue) }}</div>
{{ form_row(form.street) }}
{{ form_row(form.houseNumber) }}
{{ form_row(form.postcode) }}
{{ form_row(form.city) }}
{{ form_row(form.country) }}
<div></div>
{{ form_row(form.latitude) }}
{{ form_row(form.longitude) }}
{{ form_row(form.website) }}
{{ form_row(form.phone) }}
{{ form_row(form.status) }}
{{ form_row(form.source) }}
<div class="er-field-wide">{{ form_row(form.locked) }}</div>
<div class="er-field-wide" style="display: flex; gap: 0.75rem; margin-top: 0.5rem;">
<button type="submit" class="er-btn">Save</button>
<a href="{{ path('website_admin_escaperooms') }}" class="er-btn er-btn--ghost">Cancel</a>
</div>
{{ form_end(form) }}
</div>
{% endblock %}