Files
urlshort-qr-gen/templates/domains/form.php
T
florian.wilde fabaef1f2b feat(ui): Serverseitig gerenderte Oberflaeche ohne Build-Schritt
Eigenes CSS statt Framework, Vanilla-JavaScript, heller und dunkler
Modus. Ohne JavaScript bleibt alles bedienbar; das Liniendiagramm
faellt auf eine selbst gezeichnete Balkendarstellung zurueck, wenn das
CDN nicht erreichbar ist.

Chart.js ist auf eine Version festgelegt und per Subresource Integrity
an seinen Hash gebunden.

Die Domain-Seite enthaelt eine Schritt-fuer-Schritt-Anleitung fuer DNS,
Hosting-Panel und Zertifikat samt Fehlersuche.
2026-08-03 18:11:40 +02:00

91 lines
4.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<?php
/**
* @var array<string,mixed>|null $domain
* @var array{base_url:string,label:string,is_default:string} $values
* @var array<string,string> $errors
* @var App\Security\Csrf $csrf
*/
$isEdit = $domain !== null;
$action = $isEdit
? $url('/admin/domains/' . (int) $domain['id'] . '/edit')
: $url('/admin/domains/new');
$isDefault = $isEdit && (int) $domain['is_default'] === 1;
?>
<div class="page-head">
<div>
<h1><?= $isEdit ? 'Domain bearbeiten' : 'Neue Domain' ?></h1>
<?php if ($isEdit): ?>
<p class="muted mono"><?= $e($domain['host']) ?></p>
<?php else: ?>
<p class="muted">Eine weitere Domain, unter der Kurzlinks ausgeliefert werden.</p>
<?php endif; ?>
</div>
<a href="<?= $e($url('/admin/domains')) ?>" class="btn btn--ghost">Zurück zur Liste</a>
</div>
<div class="card card--form">
<form method="post" action="<?= $e($action) ?>" class="form">
<?= $csrf->field() ?>
<div class="field <?= isset($errors['base_url']) ? 'field--error' : '' ?>">
<label for="base_url">Domain <span class="req">*</span></label>
<input type="text" id="base_url" name="base_url" value="<?= $e($values['base_url']) ?>"
placeholder="qr.example.de" required autofocus spellcheck="false" autocapitalize="off">
<p class="field__hint">
Genau so eintragen, wie die Domain im Browser aufgerufen wird. Ohne Schema wird
<code>https://</code> ergänzt – solange noch kein Zertifikat eingerichtet ist,
bitte <code>http://</code> voranstellen. Ein Unterverzeichnis ist erlaubt
(<code>example.de/kurz</code>), ein Port ebenfalls (<code>localhost:8088</code>).
Jede Domain darf nur einmal vorkommen.
</p>
<?php if (isset($errors['base_url'])): ?>
<p class="field__error"><?= $e($errors['base_url']) ?></p>
<?php endif; ?>
</div>
<div class="field">
<label for="label">Bezeichnung (optional)</label>
<input type="text" id="label" name="label" value="<?= $e($values['label']) ?>" maxlength="255"
placeholder="z. B. QR-Codes für Print">
<p class="field__hint">Nur zur eigenen Orientierung in der Auswahlliste.</p>
</div>
<div class="field field--check">
<label class="check">
<input type="checkbox" name="is_default" value="1"
<?= $values['is_default'] === '1' ? 'checked' : '' ?>
<?= $isDefault ? 'disabled' : '' ?>>
<span>Als Standarddomain verwenden</span>
</label>
<?php if ($isDefault): ?>
<input type="hidden" name="is_default" value="1">
<p class="field__hint">Dies ist bereits die Standarddomain.</p>
<?php else: ?>
<p class="field__hint">Die Standarddomain ist im Formular vorausgewählt und fängt Aufrufe
über unbekannte Hostnamen ab.</p>
<?php endif; ?>
</div>
<?php if ($isEdit): ?>
<div class="alert alert--warn">
Wird der Hostname geändert, sind bereits verteilte Links und gedruckte QR-Codes
dieser Domain nicht mehr erreichbar.
</div>
<?php else: ?>
<p class="field__hint">
Damit die Domain auch wirklich hier ankommt, sind noch Einstellungen bei Domain-Anbieter
und Hoster nötig – die
<a href="<?= $e($url('/admin/domains#anleitung')) ?>">Schritt-für-Schritt-Anleitung</a>
steht auf der Domain-Übersicht.
</p>
<?php endif; ?>
<div class="form__actions">
<button type="submit" class="btn btn--primary"><?= $isEdit ? 'Änderungen speichern' : 'Domain anlegen' ?></button>
<a href="<?= $e($url('/admin/domains')) ?>" class="btn btn--ghost">Abbrechen</a>
</div>
</form>
</div>