Einführung experimenteller Formularvorlagen

Hallo, Discourse Meta Community!

Wir freuen uns, eine neue experimentelle Funktion vorzustellen: Formularvorlagen. Damit können Sie ein strukturiertes Formular mit Datenvalidierung als Teil des Themensetzungsprozesses erzwingen.

multiple_form_templates

Aktivieren der Funktion

Die Funktion ist hinter einem experimentellen Flag für die gesamte Website verborgen. Um sie zu aktivieren, schalten Sie einfach die Website-Einstellung experimental_form_templates unter :wrench: Admin ▸ Einstellungen ein.

Verwalten der Vorlagen

Die Formularvorlagen können unter :wrench: Admin ▸ Anpassen ▸ Vorlagen (/admin/customize/form-templates/) erstellt, bearbeitet und gelöscht werden.

Dort sehen Sie eine Tabelle mit einer Liste der Vorlagen, die im Forum vorhanden sind. Sie können jede vorhandene Vorlage bearbeiten, löschen und in der Vorschau anzeigen oder neue erstellen. Die Tabelle zeigt auch die Kategorien an, in denen jede Vorlage derzeit aktiv ist.

Vorlagen werden in einer YAML-Struktur definiert. Sie können diese manuell eingeben oder die Schaltflächen “Hinzufügen” oben verwenden, die ein Beispiel-YAML-Code am Ende anhängen, das einen bestimmten Eingabetyp definiert.

Hier ist ein vollständiges YAML-Beispiel mit allen Feldtypen:

- type: input
  id: name
  attributes:
    label: "Vollständiger Name"
    placeholder: "z.B. Max Mustermann"
    description: "Wie lautet Ihr vollständiger Name?"
  validations:
    required: true
    minimum: 2
    maximum: 100
- type: textarea
  id: introduction
  attributes:
    label: "Einleitung"
    placeholder: "Eine kurze Einleitung"
    description: "Schreiben Sie eine kurze Einleitung über sich selbst"
  validations:
    required: true
    minimum: 10
    maximum: 500
- type: dropdown
  id: fav-animal
  attributes:
    label: "Lieblingstier"
    description: "Wählen Sie Ihr Lieblingstier aus"
    none_label: "Wählen Sie eine Option"
  choices:
    - "Hund"
    - "Katze"
    - "Andere"
  validations:
    required: true
- type: multi-select
  id: comm-channel
  attributes:
    label: "Kommunikationskanäle:"
    description: "Wählen Sie Ihre bevorzugten Kommunikationskanäle aus:"
    none_label: "Wählen Sie eine Option"
  choices:
    - "E-Mail"
    - "Telefon"
    - "Messenger"
- type: upload
  id: cat-photo
  attributes:
    label: "Katzenfoto"
    description: "Senden Sie ein Foto Ihrer Katze (oder einer beliebigen Katze)"
    file_types: ".jpg, .png"
    allow_multiple: false
- type: checkbox
  id: accept-terms
  attributes:
    label: "Ich habe die Bedingungen gelesen und stimme ihnen zu"
    description: "Sie müssen die Bedingungen akzeptieren, um fortzufahren"
  validations:
    required: true

Validierungen

Für jedes Feld können Sie Validierungsoptionen hinzufügen, die erfüllt sein müssen, bevor das Formular erstellt werden kann. Eine Liste der verfügbaren Validierungen finden Sie, indem Sie auf die Schaltfläche Validierungen über dem Code-Editor klicken. Dort wird die Syntax für jede Validierungsoption angezeigt und ihre beabsichtigte Verwendung beschrieben.

Validierungsoptionen

Schlüssel Typ Beschreibung
required boolean Erfordert, dass das Feld ausgefüllt wird, um das Formular abzuschicken
minimum integer Bei Textfeldern gibt die minimale Anzahl erlaubter Zeichen an
maximum integer Bei Textfeldern gibt die maximale Anzahl erlaubter Zeichen an
pattern regex string Bei Textfeldern ein regulärer Ausdruck, der die erlaubte Eingabe angibt
type string Bei Eingabefeldern können Sie den erwarteten Eingabetyp angeben (text|email|date|number|url|tel|color)

Anwenden einer Vorlage auf eine Kategorie

Sobald Sie eine Formularvorlage erstellt haben, möchten Sie sie auf eine Kategorie anwenden. Gehen Sie dazu zu den Einstellungen der Kategorie, auf die Sie die Vorlage anwenden möchten.

Wählen Sie das Menü Vorlage und verwenden Sie dann auf der rechten Seite den Schalter, um Formularvorlagen zu aktivieren. Sobald dies aktiviert ist, können Sie die Dropdown-Liste verwenden, um eine oder mehrere Vorlagen zu einer Kategorie hinzuzufügen.

Ausfüllen des Formulars

Sobald eine Vorlage auf eine Kategorie angewendet wurde, wird das Formular der Vorlage automatisch angezeigt, wenn Sie ein Thema erstellen und die Kategorie auswählen, für die die Vorlage gilt. Wenn der Kategorie mehr als eine Vorlage zugewiesen ist, sehen Sie auch eine Auswahl, um zwischen den verfügbaren Vorlagen zu wechseln.

Beim Ausfüllen des Formulars werden alle in der Formularvorlagendefinition angegebenen Validierungen berücksichtigt. Erst nachdem alles gültig ist, können Sie auf :heavy_plus_sign: Thema erstellen klicken, und der Themeninhalt wird aus allen eingegebenen Feldern generiert.

Nach dem Absenden besteht der Themeninhalt aus allen ausgefüllten Feldern:

Vorbelegung von Formularwerten

Sie können Formularwerte auch vorbelegen, indem Sie /new-topic mit Parametern aufrufen, die mit den Feld-IDs übereinstimmen, die in der Formularvorlage definiert sind. Zum Beispiel für die zuvor als Beispiel verwendete Vorlage:

/new-topic?name=Max%20Mustermann&favorite-animal=Katze

Roadmap

  • Speichern der JSON-Ausgabe in den Themendaten, wenn ein Thema erstellt wird
  • Umschalten, um den Freiform-Composer weiterhin auswählen und verwenden zu können in Kategorien mit Formularvorlagen

Wie Sie uns helfen können

Wir würden uns freuen, Ihr Feedback zu dieser neuen Funktion zu hören. Wenn Sie Administrator sind und sie auf Ihrem Forum ausprobieren möchten, können Sie die Einstellung experimental_form_templates aktivieren und sie sofort verwenden!

Bitte erstellen Sie neue Themen mit dem Tag form-templates, um Ihre Erfahrungen zu teilen, Fehler zu melden oder Vorschläge zu machen.

Vielen Dank, dass Sie uns helfen, Discourse zu verbessern!

84 „Gefällt mir“

Das sieht sehr nützlich aus und ich werde es auf jeden Fall aktivieren, um damit zu experimentieren.

Eine Sache, die ich nützlich fände, wäre die Möglichkeit, ein Vorlagenfeld mit einem benutzerdefinierten Feld des Benutzers zu verknüpfen. Zum Beispiel werden in einer Support-Kategorie die ersten beiden Fragen, die die Support-Mitarbeiter normalerweise stellen, nach dem „Modell der Ausrüstung“ und der zugehörigen „Webseiten-URL“ gefragt. Mit dieser Vorlagenfunktion kann ich nun darum bitten, diese Informationen bei der Erstellung jedes neuen Themas zu erhalten :smiley:

Diese beiden Informationen sind auch für andere Benutzer von allgemeinem Interesse, daher sind sie als benutzerdefinierte Benutzerfelder definiert – die manchmal ausgefüllt werden. Wenn Vorlagenfelder aus einem verknüpften benutzerdefinierten Benutzerfeld (falls es einen Wert enthält) ausgefüllt werden könnten, dann können Vielreisende ihre Benutzerfelder ausfüllen und müssen die Vorlagenfelder nicht jedes Mal ausfüllen. Gelegentliche Reisende können die Vorlagenfelder einfach nach Bedarf ausfüllen, wenn sie Unterstützung benötigen.

Als weiterer Vorschlag wäre das Sahnehäubchen, wenn die Verknüpfung umgekehrt funktionieren würde. Wenn jemand Daten in die Vorlage eingibt, die nicht im verknüpften benutzerdefinierten Feld vorhanden sind, dann wird das benutzerdefinierte Feld beim Posten des Themas aktualisiert.

13 „Gefällt mir“

Hallo :wave:

Das ist eine der besten Verbesserungen. Es bietet so viele Möglichkeiten. :heart_eyes:

Einige Anmerkungen:

  1. Es scheint, dass form_templates.errors.valueMissing.number eine fehlende Zeichenkette ist.

  2. Es scheint, dass die tel-Validierung nicht funktioniert.

  3. Auf Mobilgeräten ist die Formularvorlage im Composer nicht scrollbar.

  4. Auf Mobilgeräten, wenn die Formularvorlage verfügbar ist, tun die Fußzeilentasten nichts. Ich denke, es wäre gut, diese auszublenden.
    Screenshot 2023-10-17 at 8.04.50

+ Es wäre nützlich, eine Validierung hinzuzufügen, um negative Zahlen für den Typ number zu verhindern. Anwendungsfall (Preis) :slightly_smiling_face:

+ Es wäre auch nützlich, eine dynamische Funktion für bedingte Felder hinzuzufügen.


Danke :slight_smile:

15 „Gefällt mir“

Wie bereits erwähnt, wird dies im Support-Kontext sehr nützlich sein, und mir gefallen besonders die Vorschläge von @packman bezüglich benutzerdefinierter Benutzerfelder.

Stehen Formularvorlagen für Gruppen auch auf der Roadmap (oder könnten sie dort landen)? Wo die Nachrichtenübermittlung an eine Gruppe für privaten Support verwendet wird, ist dies besonders nützlich, um Fragen vorzuladen, bevor ein Mitarbeiter eintrifft.


Abhängig von der Sichtbarkeit des benutzerdefinierten Feldes kann dies Auswirkungen auf die Privatsphäre haben. Zum Beispiel könnte der Benutzer entscheiden, die Informationen über eine Formularvorlage in einer privaten Kategorie zu teilen, aber diese Informationen nicht über sein Profil mit der breiteren Gemeinschaft teilen zu wollen.

Je nach Art der Informationen könnte es auch einen Wert geben, der für sein Profil und/oder die meisten Formulare geeignet ist, aber er möchte möglicherweise in einem bestimmten Fall einen anderen Wert angeben.

Mir gefällt die Idee, das Formular aus diesen Feldern auszufüllen und die Felder aktualisieren zu können, wenn die eingegebenen Werte abweichen, aber vielleicht sollte dies eine Aufforderung sein. Dies ist ein wirklich schneller und grober Mock-up, aber vielleicht etwas in dieser Art nach dem Erstellen des Themas (nur wenn ein Wert abweicht und möglicherweise nur, wenn er nicht leer ist):

8 „Gefällt mir“

Meine Funktionsanfrage für diese großartige neue Funktion ist, glaube ich, in Foren für Software-Support üblich.

Leute versäumen es, ihre Softwareversion anzugeben. Das ist alles. Einfach, aber es ist die Ursache für viele, viele nutzlose Hin-und-Her-Beiträge, die für die Leute, die vielen Menschen helfen, ermüdend sind (und wir wollen die wichtigsten Leute in der Community nicht ermüden).

Daher möchte ich ein Formular, das fragt:

  • Ihre FabulousApp-Version ist… (Dropdown mit Optionen)
  • Ihre PHP-Version ist… (Dropdown mit Optionen)

Nun nehmen wir an, jemand postet häufig in den Foren. Diese Informationen ändern sich nicht häufig, obwohl sie sich vielleicht einmal im Monat ändern.

Das Formular sollte die Werte beibehalten, die derselbe Benutzer in seinem vorherigen Beitrag ausgewählt hat, als Standardwerte. Das ist meine Funktionsanfrage. Was meinen Sie?

5 „Gefällt mir“

Ich denke, dass ein vorausgefülltes Feld in einigen Fällen dazu führen kann, dass Benutzer es übersehen und den Wert nicht ändern, wenn es notwendig ist. :thinking:

Spekuliere aber nur.

10 „Gefällt mir“

Diese beiden kombiniert ist es, was ich für meinen Anwendungsfall sehen möchte. Mit mehreren Apps möchte ich, dass der Benutzer seine App auswählen kann, dann seine Version aus einer Liste auswählen kann, die dieser App entspricht.

Dies ist sicherlich meine Erfahrung mit Auswahlmöglichkeiten. Bei einem Standardwert für ein E-Mail-Kontaktformular haben die überwiegende Mehrheit der Einreichungen diesen Standardwert, unabhängig davon, welche App oder Version sie tatsächlich verwenden.

3 „Gefällt mir“

Das stimmt wahrscheinlich für Standardwerte, aber in dem, was ich mir vorgestellt habe, wären die Feldwerte diejenigen, die der Benutzer zuvor in seinen benutzerdefinierten Feldern eingegeben hat. Diese könnten alt/veraltet sein, aber ich denke, in meinem Anwendungsfall gäbe es weitaus weniger falsche Werte als derzeit keine Werte.

2 „Gefällt mir“

Absolut. Meiner Meinung nach sind dies hauptsächlich zwei verschiedene Informationskategorien: Zustand zu einem bestimmten Zeitpunkt und Benutzereinstellung/Identität/usw. Worauf ich mich mit meiner Erfahrung von Standardwerten bezog, war eher auf ersteres.

2 „Gefällt mir“

Zwei Anfragen!

  1. Ein Codefeld, das den Inhalt automatisch mit ``` umschließt
    • Es könnte ein Sprachmenü mit einer Standardeinstellung haben.
  2. Ein Attribut, das es Benutzern ermöglicht, ein Feld zu duplizieren (ich stelle mir einen +-Button unter diesem Feld vor).
    • Stellen Sie sich vor, ein Benutzer möchte zwei Codeblöcke oder mehrere Bilder posten. Er kann einen eingeben, auf das + klicken und einen weiteren hinzufügen.
16 „Gefällt mir“

Dies ist eine großartige neue Funktion und möglicherweise gut getimt für ein Projekt, an dem ich arbeite.

Nachdem ich mich kurz damit beschäftigt habe, habe ich zwei Fragen:

  1. Derzeit wird beim Bearbeiten eines von einem Benutzer erstellten Beitrags über eine Formularvorlage nur der Standard-Beitragseditor angezeigt.
    Gibt es Pläne, beim Bearbeiten eines Beitrags auch den Formularvorlagen-Editor anzuzeigen?

  2. Wird es eine Option geben, benutzerdefinierte Eingabetypen hinzuzufügen?
    Ich denke an eine Karte, auf der ein Benutzer seinen Standort durch Setzen einer Stecknadel auf der Karte auswählen kann. Es wäre also gut, die Möglichkeit zu haben, solche benutzerdefinierten Feldtypen zu definieren.

4 „Gefällt mir“

Das ist der perfekte Zeitpunkt für meinen Anwendungsfall! Ich frage mich, ob es Pläne gibt, die Darstellung einer Formularvorlage in einem Thema irgendwann anpassen zu können.

z. B. Im folgenden Bild wird der Feldtyp checkbox als Text on gerendert:

Wäre es irgendwann möglich, die Formularfeldtypen benutzerdefinierten Ausgaben zuzuordnen?

z. B. In meinem Fall möchte ich, dass eine angekreuzte/on-Checkbox der Checkbox-Formatierung [x] und das Fehlen eines angekreuzten/ausgeschalteten Zustands [] zugeordnet wird.

Ich muss vielleicht anfangen, Ruby zu lernen und an diesem Projekt herumzubasteln. Dieses Formularupdate hat mir viele nette Ideen gegeben. Danke für die tolle Arbeit, Leute!

3 „Gefällt mir“

Das ist absolut großartig, um ein bestimmtes Verhalten in einer bestimmten Kategorie zu erzwingen (mein Schmerzpunkt war die Stellenausschreibung, bei der jeder postete, wie er Lust hatte :smiley: )!

Ein paar zusätzliche Funktionen wären schön:

  • die Möglichkeit, „zu keiner Vorlage wechseln“ (optional). Dies könnte auf Benutzer, Level, Gruppen usw. beschränkt werden; Eine Art „Vertrau mir, ich weiß, was ich tue!“
  • mehrere Felder in derselben Zeile (denken Sie an Vorname + Nachname). Eine gut genuge Lösung wäre, Administratoren zu erlauben, einen Klassennamen für die Formularvorlage festzulegen.
  • ein Repeater (d. h. eine Gruppe von Feldern und Benutzern erlauben, mehr davon hinzuzufügen);
7 „Gefällt mir“

Es wäre gut, die Möglichkeit zu haben:

  • Inhalte in ein Upload-Feld einzufügen[1].
  • Zusätzlich zum Textbereich einen Composer hinzuzufügen, in dem Benutzer auf die üblichen Funktionen zugreifen können.[2]

  1. Die Upload-Funktionalität in Discourse-Posts ist großartig. Diese hier ist schwieriger zu verwenden, da Bilder beispielsweise bereits auf der Festplatte gespeichert sein müssen. ↩︎

  2. Wenn ich möchte, dass ein Benutzer zusätzlich zu einem Beitrag ein Dropdown-Menü auswählt, verringere ich mit dem aktuellen Ansatz (ein Textbereich) seine Fähigkeit, seinen Beitrag normal zu erstellen, dramatisch; keine Bilder einfügen, keine Bearbeitungsleiste usw. ↩︎

9 „Gefällt mir“

Ich habe das Formular hier ausprobiert, um einen Fehler bezüglich des Themas zu melden. Hier ist mein Feedback:

  • Das Formular selbst ist eine großartige Idee :+1:
  • Kein Formatierungswerkzeug ist ein großer Nachteil.
    • Selbst wenn die Markdown-Syntax einfach ist, ist die Auswahl und Verwendung der Werkzeugleiste oft einfacher/schneller. Es hilft dabei, eine lesbare Nachricht zu erstellen.
    • Dies kann funktionieren, wenn der Bericht einfach, aber fortgeschritten ist; Sie müssen möglicherweise Details ausblenden oder eine Tabelle einfügen.
  • Kein Inline-Upload ist nicht praktisch.
    • Zeigen Sie z. B. ein Problem Schritt für Schritt, Vorher/Nachher-Ergebnisse usw.
    • Bei mehreren Screenshots müssen Sie erklären, welche Screenshots Sie sich ansehen sollten.
  • Wie Thomas wäre das Einfügen eines Bildes willkommen. Es hat einige Zeit gedauert, bis ich herausgefunden habe, wo meine Screenshots gespeichert wurden. :smile:
  • Bedingtes Eingabefeld – wenn „andere“ ausgewählt wird, wäre es schön, wenn dafür ein Eingabefeld erscheint.

Insgesamt wirklich gut! Ich freue mich darauf, wie es verbessert wird. :slight_smile:

9 „Gefällt mir“

Wenn Sie mehrere Formulare für eine einzelne Kategorie aktiviert haben, ist es nicht intuitiv, dass es ein Dropdown-Menü zur Auswahl eines Formulars gibt. Wenn Sie ein neues Thema erstellen, wird automatisch die erste Formularvorlage ausgefüllt, die, wenn Sie nicht wissen, was Sie sehen, Sie nicht erkennen würden, dass es andere Formulare geben könnte.

Wenn Sie das Formular abwählen, sehen Sie den Text „Formularvorlagen auswählen“, der mir klar macht, dass es eine Liste von Formularen gibt, aus denen ich auswählen kann. Der Composer zeigt immer noch das Formular an, obwohl keines ausgewählt ist. Hier würde ich @iamntz zustimmen, was die Option betrifft, zu keiner Vorlage zu wechseln.

6 „Gefällt mir“

Ich möchte nur auf meine vorherige Antwort eingehen und etwas mehr Kontext zu unserem spezifischen Anwendungsfall geben. Wir möchten dies in unserer Kategorie „Site Feedback“ implementieren. Idealerweise möchten wir Formularvorlagen für Dinge wie das Anfordern von Tags und den Standard-Composer (keine Vorlagenoption) beibehalten, wenn das Formular nicht existiert oder die Aufgabe nicht richtig erfüllt.

Was wir uns also vorstellen, wäre, ein neues Thema in der Kategorie zu erstellen und Folgendes zu sehen:

Von dort aus sehen Sie „Formularvorlagen auswählen“, wo Sie entweder normal verfassen oder sehen können, dass Formulare in dieser Kategorie für standardisierte Anfragen/Feedback vorhanden sind. :slight_smile:

Ich kann das Argument verstehen, dass einige Benutzer die Formularvorlage nicht sehen oder verwenden werden, wenn sie verfassen können, aber ich habe versucht, mich an das aktuelle Styling zu halten, mit dem Platzhaltertext innerhalb des Feldes anstelle einer Beschriftung außerhalb des Feldes. Aber deshalb könnte es eine optionale Funktion sein, die Administratoren aktivieren/deaktivieren können. :upside_down_face:

4 „Gefällt mir“

Wenn die Auswahl-Schaltfläche deutlich hervorgehoben wäre, wäre es viel einfacher, Benutzer zum Klicken zu ermutigen, ähnlich wie bei Ihrer Schaltfläche „Thema erstellen“.

3 „Gefällt mir“

Nachdem wir uns mehr mit den Formularen beschäftigt haben, haben wir eine Lösung für die Option „keine Vorlage“ gefunden: die Erstellung eines einfachen Formulars für „Freitextantworten“, das als keine Vorlage dienen kann (wie im Screenshot unten zu sehen ist).

Aufbauend auf dieser Idee: Wenn wir die Farbe nicht ändern möchten, um das Dropdown hervorzuheben, denke ich, dass das Hinzufügen eines Pfeils nach unten eine hilfreiche Anzeige dafür wäre, dass es eine Dropdown-Auswahl gibt, genau wie beim Dropdown für Kategorien.

Wir haben festgestellt, dass die Formulare alphabetisch geordnet sind. Es wäre großartig, die Möglichkeit zu haben, die Formulare neu anzuordnen oder das Standardformular auszuwählen, das beim Erstellen eines neuen Themas angezeigt werden soll.

Unnötig zu erwähnen, dass uns gefällt, was diese Funktion zu bieten hat, und wir uns über solche Verbesserungen freuen würden. :slight_smile:

6 „Gefällt mir“

Vielleicht habe ich es übersehen, aber gibt es eine Möglichkeit, einen Hyperlink in einem Formular zu haben? Angenommen, wir hätten zum Beispiel eine Checkbox für die Allgemeinen Geschäftsbedingungen. In der description wäre es nützlich, einen Hyperlink zu den tatsächlichen Allgemeinen Geschäftsbedingungen zu haben.

Ist dies bereits möglich?

Gibt es auch eine Möglichkeit, das Titelfeld automatisch zu befüllen, wenn der Benutzer einen neuen Beitrag erstellt, z. B. mit seinem Benutzernamen oder sogar nur einem Standardtitel?

8 „Gefällt mir“