{% extends 'admin/shell.html.twig' %} {% set nav = 'forms' %} {# Die Vorschau zeichnet den Absendeknopf mit dem Standardbutton der Website - dafuer braucht die Seite dessen Stylesheet, genau wie die Designseite. #} {% block styles %}{% endblock %} {% block scripts %}{% endblock %} {% block title %}Formulare{% endblock %} {% block heading %}Formulare{% endblock %} {% block lead %}Felder, Empfänger, Einwilligungstext und Aussehen werden hier gepflegt. Auf einer Seite steht nur ein Formularblock mit der Adresse – so kann ein gespeicherter Seiteninhalt niemals ändern, wohin eine Anfrage geht.{% endblock %} {% block actions %}Neues Formular{% endblock %} {# Eine Feldkarte. Der Index steht in den Feldnamen; die Vorlage fuer neue Felder traegt an seiner Stelle den Platzhalter __n__, den das Skript beim Einfuegen ersetzt. #} {% macro field(f, n, row, types) %} {% set id = 'f' ~ f ~ '-' ~ n %}
  • Kleinbuchstaben, Ziffern, Unterstrich. Steht in der E-Mail vor der Antwort.

    Durch Komma trennen, mindestens zwei.

    Eine Zeile je Option: Option = Kennung aus der Mediathek. Sobald eine Option ein Bild hat, wird die Auswahl auf der Website zur Bildauswahl – anklickbare Karten statt Kästchen.

    Technischer Name eines Auswahlfeldes weiter oben, Werte durch Komma. Bei einem Schritt gilt die Bedingung für alle seine Felder. Leer: das Feld gilt immer.

  • {% endmacro %} {% block content %} {% import _self as karte %}
    {% for form in forms|merge([null]) %} {% set new = form is null %} {% set f = loop.index %} {% set rows = new ? [] : form.fields %} {% set settings = new ? {} : form.settings %} {% if new %}
    Neues Formular anlegen {% else %}
    {% endif %}
    {% if new %} {# Die Zusammenfassung des Details ist keine Ueberschrift; ohne diese springt die Gliederung von der Seitenueberschrift direkt zu den Abschnittstiteln. #}

    Neues Formular

    {% else %}

    {{ form.name }} {{ form.fields|length }} {{ form.fields|length == 1 ? 'Feld' : 'Felder' }}

    Im Editor als Formularblock mit der Adresse {{ form.slug }}
    {% endif %}

    Zustellung

    {% if new %}

    Wird im Formularblock eingetragen. Kleinbuchstaben, Ziffern, Bindestrich.

    {% endif %}

    Leer: die Empfängeradresse. Viele Anbieter stellen nur zu, was von einer Adresse der eigenen Domain kommt.

    Technischer Name eines E-Mail-Feldes. Dann lässt sich direkt antworten.

    Wirkt bei Formularen mit Schritten: der letzte Schritt zeigt alle Angaben mit „Ändern“. Ohne Skript im Browser steht das Formular als Ganzes auf der Seite.

    Felder

      {% for row in rows %}{{ karte.field(f, loop.index0, row, types) }}{% endfor %} {{ karte.field(f, rows|length, {name: '', type: 'text', label: '', required: false, help: '', options: []}, types) }}

    Ein Feld ohne Beschriftung wird nicht gespeichert – so lässt sich ein Feld auch ohne Skript entfernen. Ein Einwilligungsfeld ist immer ein Pflichtfeld; der Zeitpunkt der Einwilligung wird mitgespeichert. Ein Feld vom Typ „Neuer Schritt“ eröffnet einen Abschnitt: seine Beschriftung ist der Titel, sein Hilfetext die Einleitung; alle Felder bis zum nächsten Schritt gehören dazu. Ein Feld oder ein Schritt kann von einer früheren Auswahl abhängen – dann verlangt der Server es nur, wenn die Bedingung zutrifft.

    Aussehen

    {% for key, label in {fieldBorderColor: 'Rahmen der Felder', fieldBackgroundColor: 'Hintergrund der Felder', buttonColor: 'Button', buttonInk: 'Buttonschrift'} %}
    {% endfor %}

    Leer heißt: wie die Website. Sonst eine Farbe aus der Palette oder ein Wert wie #1a2b3c. Form und Größe des Buttons kommen aus dem Design.

    {# Die Vorschau: dieselben Felder, dieselben Farben, der Standardbutton der Website. Ohne Skript steht sie mit den gespeicherten Feldern da; mit Skript folgt sie jeder Eingabe. #}
    {% if not new %}Änderungen gelten sofort auf jeder Seite, die dieses Formular zeigt.{% endif %}
    {% if new %}
    {% else %} {% endif %} {% endfor %}

    Einsendungen {{ submissions.total }}

    Neueste zuerst.
    {% if submissions.items is empty %}

    Noch keine Einsendungen.

    Hier erscheinen eingegangene Nachrichten, auch wenn der E-Mail-Versand fehlschlägt.

    {% else %}
    {% for entry in submissions.items %}

    {{ entry.form }}

    {{ entry.createdAt|date('d.m.Y H:i') }} UTC{% if entry.consentAt %} · Einwilligung {{ entry.consentAt|date('d.m.Y H:i') }}{% endif %}

    {% for key, value in entry.data %}
    {{ key }}
    {{ value }}
    {% endfor %}
    {{ entry.delivered ? 'Versendet' : 'Nicht versendet' }}
    {% endfor %}
    {% endif %} {% include 'admin/pager.html.twig' with {result: submissions, route: 'admin_forms', label: 'Seiten der Einsendungen'} only %}

    KantSites · Arbeitsstand

    {% endblock %}