Bedingte Benutzerfelder

Anwendungsfall

Wir arbeiten daran, das Onboarding-Erlebnis unserer Community zu verbessern. Natürlich möchten wir Informationen, die wir über den Benutzer wissen, verwenden, um bestimmte Dinge basierend auf den von ihnen bereitgestellten Informationen zu tun/anzuzeigen.

Heute beginnen unsere Benutzer mit der Erstellung ihres Kontos über unsere OIDC-Integration, indem sie ein Konto bei unserem Unternehmen erstellen. Sie geben E-Mail, Name und Benutzername an OIDC weiter, bevor es sie zurück zu Discourse weiterleitet.

Das Problem

Wir möchten ihnen nun zusätzliche Benutzerfelder zur Verfügung stellen, die sie ausfüllen können – was großartig ist, da Discourse dies anbietet! Leider können wir Felder nicht basierend auf den Antworten auf vorherige Felder anzeigen. Wir möchten zum Beispiel fragen: „Welche Rolle beschreibt Sie am besten?“ mit den Optionen Entwickler, Administrator und Analyst.

  • Wenn sie Entwickler wählen, möchte ich sie natürlich nach ihren bevorzugten Programmiersprachen fragen. Ich werde sie auch später zur Benutzergruppe der Entwickler hinzufügen.
  • Wenn sie Analyst wählen, möchte ich ihnen eine andere Reihe von Fragen stellen und sie zu einer anderen Benutzergruppe hinzufügen.

Lösungsvorschlag

Viele Formularoptionen im Web bieten heute bedingte Formularfelder (z. B. „Woher haben Sie von uns erfahren?“ – wenn „andere“ ausgewählt wird, erscheint ein zusätzliches Feld, um zu sagen, warum.). Es wäre großartig, wenn Sie einen ähnlichen (wenn auch robusteren) Weg einschlagen würden, wie Sie es mit Vorlagen für neue Themen getan haben, jedoch mit der zusätzlichen Anforderung, dass die Möglichkeit besteht, von einer anderen Feld-ID und insbesondere der Eingabe dieses Feldes abhängig zu sein. Als Beispiel könnte es ungefähr so aussehen:

- type: dropdown
  id: user-type
  choices:
    - "Entwickler"
    - "Anwendungsadministrator"
    - "Analyst"
  attributes:
    none_label: "Wählen Sie Ihre Rolle..."
    label: "Welche Option beschreibt Ihre Tätigkeit am besten"
  validations:
    required: true
- type: dropdown
  id: developer-type-programming-language
  depends: user-type
    choices:
      - "Entwickler"
  choices:
    - "Entwickler"
    - "Anwendungsadministrator"
    - "Analyst"
  attributes:
    none_label: "Bevorzugte Programmiersprache..."
    label: "Was ist die primäre Programmiersprache, die in Ihrer Rolle verwendet wird?"
  validations:
    required: true

In diesem Beispiel würden alle Benutzer die erste Frage gestellt bekommen. Wenn der Benutzer „Entwickler“ aus der Dropdown-Liste auswählt, erscheint eine zweite Frage auf dem Formular, die nach seiner bevorzugten Programmiersprache fragt.

Diese Verbesserung der bedingten Felder könnte sowohl im Benutzer-Onboarding-Prozess als auch am ursprünglich vorgesehenen Ort für neue Themen verwendet werden.

5 „Gefällt mir“

Sie können sich GitHub - discourse/discourse-authentication-validations ansehen, das genau das tut, außer nur für die Benutzerregistrierungsseite. Es scheint nicht trivial zu sein, es auf die Seite mit den Benutzereinstellungen zu übertragen, auf der diese Felder bearbeitet werden.

Aber Sie fragen nach einer Funktion und suchen nicht nach einer Lösung für Ihr unmittelbares Problem.

6 „Gefällt mir“

Klingt vielversprechend – ich würde gerne mehr Dokumentation dazu sehen.

Weitere Informationen finden Sie unter: url to meta topic

Sieht so aus, als wäre die Absicht vorhanden gewesen.

1 „Gefällt mir“

Das ist alles, was es gibt, fürchte ich.

Das ist Boilerplate von GitHub - discourse/discourse-plugin-skeleton: Template for Discourse plugins

2 „Gefällt mir“

Das Plugin ist eigentlich ziemlich intuitiv.

Die untere Checkbox fügt die Authentifizierungsoption hinzu.

Füllen Sie dann die Trigger-Antworten aus, die die nächsten benutzerdefinierten Felder des Benutzers aktivieren. In meinem Fall ist es die Anzahl der Headsets größer als Keine.

Sobald diese ausgefüllt sind, zielen Sie auf die benutzerdefinierten Benutzerfelder, die Sie anzeigen möchten. In meinem Beispiel, wenn 1-6+, wird der Benutzer aufgefordert, primäre und sekundäre HMDs einzugeben.

Dies wäre großartig, wenn es auf die experimentellen Formularvorlagen erweitert würde.

5 „Gefällt mir“

Es stand schon eine Weile auf meiner To-do-Liste… Ich werde es diese Woche auf jeden Fall hinzufügen :slight_smile:

3 „Gefällt mir“

Ich dachte, ich hätte das schon aufgeschrieben.. :sweat_smile:

Ich werde das Repo mit dem Meta-Link aktualisieren.

1 „Gefällt mir“

Mist! Tut mir leid, das hatte ich auch vergessen.

Wäre es möglich, diese Bedingungen im Benutzerprofil statt nur auf der Seite „Konto erstellen“ zu haben? (Ich bin ziemlich sicher, dass ich verstehe, dass es nur auf der Kontoerstellungsseite funktioniert – ich habe jemanden, der möchte, dass Leute zurückgehen und Dinge eingeben und diese Regeln durchsetzen lassen.)

1 „Gefällt mir“

Ja, dies ist derzeit der einzige Ort, der von diesem Plugin betroffen ist.

Lassen Sie mich sicherstellen, dass wir auf dem gleichen Stand sind:

Möchten Sie die Möglichkeit haben, öffentliche benutzerdefinierte Benutzerfelder über /preferences/profile zu aktualisieren, und wenden wir die gleiche bedingte Ein-/Ausblendlogik an, wie wir sie im Modal „Konto erstellen“ verwenden?

So etwas wie, wenn der Wert von benutzerdefiniertes Feld 1 benutzerdefiniertes Feld 2 anzeigen ist, dann zeige das zweite benutzerdefinierte Feld an?

2 „Gefällt mir“

Ja. Ich möchte, dass für alle custom_user_fields, die als Nach der Registrierung bearbeitbar (Editable after signup) gekennzeichnet sind, dieselben Regeln auf der Seite /preferences/profile angewendet werden.

Ich glaube, das ist richtig. Dieselben Regeln, die im Modal zum Erstellen eines Kontos gelten, würden auch auf der Profilseite gelten.

3 „Gefällt mir“

Ich denke, das wäre eine großartige Ergänzung. Die Verschiebung der bedingten Feldlogik auf die Profilseite sollte ziemlich einfach sein.

Dies wäre ein guter Kandidat für pr-welcome, aber ich kann auch versuchen, es in den nächsten Monaten anzusehen.

4 „Gefällt mir“

Nun, für dich vielleicht! Ich habe es versucht und mich schnell verirrt. Es schien fast so einfach zu sein wie das Kopieren von Dingen auf die Einstellungsseite, aber welche Dinge genau, war mehr, als ich schnell verstehen konnte.

Das wäre großartig!

4 „Gefällt mir“