Discourse Umfragen

:discourse2: Zusammenfassung Das Plugin Discourse Surveys ermöglicht es Ihnen, Umfragen direkt in Ihren Discourse-Forum-Beiträgen mithilfe einfacher Markdown-Syntax zu erstellen.
:hammer_and_wrench: Repository-Link \u003chttps://github.com/discourse/discourse-surveys\u003e
:open_book: Installationsanleitung Plugins in Discourse installieren

Das Discourse Surveys Plugin ermöglicht es Ihnen, Umfragen direkt in Ihren Discourse-Forum-Beiträgen mithilfe einfacher Markdown-Syntax zu erstellen. Das Plugin unterstützt derzeit verschiedene Fragetypen wie Optionsfelder (Radio Buttons), Kontrollkästchen (Checkboxes), Dropdowns, Zahleneingaben, Textbereiche, Sternebewertungen und Daumen hoch/runter-Bewertungen.

Funktionen

  • 7 verschiedene Feldtypen: Optionsfelder, Kontrollkästchen, Dropdowns, Textbereiche, Zahlenauswahl, Sternebewertungen und Daumen hoch/runter

  • Erforderliche/Optionale Felder: Felder als erforderlich markieren, um die Vervollständigung sicherzustellen

  • Emoji-Unterstützung: Emojis in Ihren Umfrageoptionen verwenden

  • HTML-Unterstützung: Rich-Text-Formatierung in Fragen und Optionen

  • Benutzerauthentifizierung: Automatische Anmeldeaufforderungen für anonyme Benutzer

  • Antwortverfolgung: Verhindert doppelte Übermittlungen durch denselben Benutzer

  • Berechtigungsbewusst: Berücksichtigt Themen- und Kategorieberechtigungen

  • Mobil responsiv: Funktioniert nahtlos auf allen Geräten

Verwendung

Grundlegende Umfragestruktur

Alle Umfragen müssen in [survey] Tags eingeschlossen sein:


[survey name="my-survey" title="Kundenfeedback-Umfrage"]

<!-- Umfragefelder kommen hierher -->

[/survey]

Umfrage-Attribute

  • name: Eindeutige Kennung für die Umfrage (Standard ist „survey“)

  • title: Optionaler Titel, der oben in der Umfrage angezeigt wird

  • public: Sichtbarkeit festlegen (zukünftige Funktion)

  • status: Umfragestatus (zukünftige Funktion)

Feldtypen

1. Optionsfelder (Einzelne Auswahl)


[radio question="Was ist Ihre Lieblingsfarbe?"]

- Rot

- Blau

- Grün

- Gelb

[/radio]

2. Kontrollkästchen (Mehrfachauswahl)


[checkbox question="Welche Funktionen nutzen Sie? (Alle zutreffenden auswählen)"]

- E-Mail-Benachrichtigungen

- Mobile App

- Desktop-Benachrichtigungen

- API-Zugriff

[/checkbox]

3. Dropdown-Auswahl


[dropdown question="Zu welcher Altersgruppe gehören Sie?"]

- Unter 18

- 18-24

- 25-34

- 35-44

- 45-54

- 55+

[/dropdown]

4. Textbereich (Langform-Text)


[textarea question="Bitte geben Sie detailliertes Feedback an:" required="false"]

[/textarea]

5. Zahlenauswahl


[number question="Bewerten Sie diese Funktion von 1-10:" min="1" max="10"]

[/number]

6. Sternebewertung


[star question="Wie bewerten Sie Ihre Gesamterfahrung?"]

[/star]

7. Daumen hoch/runter


[thumbs question="Würden Sie dies weiterempfehlen?"]

[/thumbs]

Feldattribute

Alle Feldtypen unterstützen diese Attribute:

  • question: Der Fragetext (erforderlich)

  • required: Ob das Feld ausgefüllt werden muss (true/false, Standard ist true)

  • min: Minimalwert für Zahlenfelder

  • max: Maximalwert für Zahlenfelder

Vollständiges Beispiel

Grundlegendes Umfrage-Markdown

Hier ist ein grundlegendes Beispiel für Umfrage-Markdown, das alle verfügbaren Felder enthält:

[survey name="awesome-survey-thumbs" title="Tolle Umfrage"]

[radio question="Wählen Sie eine Option:"]
- Katze
- Hund
[/radio]

[checkbox question="Wählen Sie mehrere Optionen:"]
- rot
- blau
- grün
[/checkbox]

[dropdown question="Geschlecht:"]
- Männlich
- Weiblich
[/dropdown]

[number question="Bewerten Sie diese Umfrage von 1 bis 10:"]
[/number]

[textarea question="Was ist Ihr Feedback zu xyz?" required="false"]
[/textarea]

[star question="Wie bewerten Sie die Gesamterfahrung?"]
[/star]

[thumbs question="Waren Sie mit unseren Dienstleistungen zufrieden?"]
[/thumbs]

[/survey]

Umfrage-Darstellung

Unten sehen Sie ein Beispiel dafür, wie das obige Markdown in Discourse gerendert wird:

Erweiterte Nutzung

Verwendung von Emojis in Optionen


[radio question="Wählen Sie Ihr Lieblingstier:"]

- 🐈 Katze

- 🐶 Hund

- 🐦 Vogel

- 🐠 Fisch

[/radio]

HTML-Formatierung in Fragen


[radio question="Welche \u003cstrong\u003eProgrammiersprache\u003c/strong\u003e bevorzugen Sie?"]

- JavaScript

- Python

- Ruby

- Go

[/radio]

Gemischte erforderliche und optionale Felder


[survey name="mixed-survey"]

[radio question="Was ist Ihre Rolle?" required="true"]

- Entwickler

- Designer

- Manager

- Sonstiges

[/radio]

[textarea question="Weitere Gedanken?" required="false"]

[/textarea]

[/survey]

Umfrageergebnisse

Derzeit bietet dieses Plugin keine Backend-Benutzeroberfläche, um die Umfrageergebnisse direkt anzuzeigen. Stattdessen können Sie Data Explorer-Abfragen verwenden, um Umfrageantworten abzurufen und zu analysieren. Hier ist ein Beispiel für eine Abfrage:

-- [params]
-- text :survey_name = survey

SELECT
  s.id,
  s.name,
  s.post_id,
  sf.question,
  COALESCE(sr.value, sfo.html) AS value,
  sr.user_id,
  sr.created_at AS responded_at
FROM
  surveys s
  JOIN survey_fields sf ON sf.survey_id = s.id
  JOIN survey_responses sr ON sr.survey_field_id = sf.id
  LEFT JOIN survey_field_options sfo ON sfo.id = sr.survey_field_option_id
WHERE
  s.name = :survey_name
ORDER BY
  s.id DESC

Berechtigungen und Sicherheit

  • Anmeldung erforderlich: Anonyme Benutzer müssen sich anmelden, bevor sie Antworten übermitteln können

  • Eine Antwort pro Benutzer: Jeder Benutzer kann nur eine Antwort pro Umfrage einreichen

  • Themenberechtigungen: Benutzer müssen über Leseberechtigung für das Thema verfügen, um Umfragen anzuzeigen

  • Beitragsberechtigungen: Benutzer müssen über Beitragsberechtigungen im Thema verfügen, um Antworten zu übermitteln

  • Archivierte Themen: Umfragen in archivierten Themen können keine neuen Antworten annehmen

  • Gelöschte Beiträge: Umfragen in gelöschten Beiträgen sind nicht mehr zugänglich

Einschränkungen

  • Nur eine Umfrage pro Beitrag zulässig

  • Die Umfragestruktur kann nach Erhalt von Antworten nicht mehr geändert werden

  • Alle Fragen der Umfragefelder müssen innerhalb einer einzelnen Umfrage eindeutig sein

  • Fragen der Umfragefelder dürfen nicht leer sein

Technische Details

Datenbankschema

Das Plugin erstellt vier Haupttabellen in der Datenbank:

  • surveys: Hauptumfragedatensätze

  • survey_fields: Einzelne Felder innerhalb von Umfragen

  • survey_field_options: Optionen für Auswahlfelder

  • survey_responses: Benutzerantworten auf Umfragefelder

Styling

Das Plugin enthält responsives CSS, das sich an Ihr Theme anpasst. Benutzerdefinierte Stile können hinzugefügt werden, indem auf diese CSS-Klassen gezielt wird:

  • .survey - Haupt-Umfragecontainer

  • .survey-field - Wrapper für einzelne Felder

  • .field-[type] - Container für spezifische Feldtypen

  • .submit-response - Senden-Schaltfläche

32 „Gefällt mir“

Damit Benutzer keine Ergebnisse sehen können (es sei denn, sie haben die Berechtigung zur Abfrage) und dies ausschließlich für Administratoren/Hintergrundpersonal bestimmt ist?

3 „Gefällt mir“

Ja, das ist richtig.

7 „Gefällt mir“

Es fühlt sich nicht sehr praktisch an :cry:

3 „Gefällt mir“

Option zum Veröffentlichen von Umfrageergebnissen benötigt. Andernfalls besser mehrere Umfragen verwenden.

3 „Gefällt mir“

Hallo

Das Beispiel-Markdown wird wie unten in einem neuen Thema gerendert. Mein Discourse ist auf dem neuesten Stand.

Was könnte das Problem sein?

Mit freundlichen Grüßen

Hallo @ppcole,

Das oben ist das, was in der Composer-Vorschau angezeigt wird, wenn Sie die Umfrage erstellen. Sobald Sie das Thema erstellt haben, wird es wie erwartet korrekt gerendert.

Danke Arpit. Es hat funktioniert. Ich freue mich auf Verbesserungen.

1 „Gefällt mir“

Darf ich fragen, ob Sie daran arbeiten, aber nicht mit tatsächlicher Priorität?

Es w
erw
re toll, wenn dies weiterentwickelt w
erw
re - es hat enormes Potenzial.

Ich habe festgestellt, dass die obige SQL-Abfrage die Ergebnisse zwar extrahiert hat, aber nicht in einem einfach zu handhabenden Format. Im Grunde wäre eine Menge Transformation auf Tabellenblatt-Ebene erforderlich, um eine nützliche Analyse zu ermöglichen.

Mit etwas Hilfe von Gen AI konnte ich jedoch eine sehr gute Data Explorer-Abfrage erstellen. Aufgrund einiger Einschränkungen von Data Explorer ist es nicht möglich, diese dynamisch genug zu gestalten, um eine Vielzahl von Umfragen zu bewältigen; im Grunde benötigen Sie eine maßgeschneiderte Abfrage pro Umfrage.

Glücklicherweise kann Gen AI dies ziemlich einfach machen. Hier ist ein Beispiel-Prompt, der wahrscheinlich in den meisten Gen AI-Diensten funktioniert (wenn Sie das AI-Plugin nicht aktiviert haben) – fügen Sie einfach Ihr Umfrage-Markdown ein und Sie sollten loslegen können:

Gen AI Prompt zur Erstellung einer maßgeschneiderten SQL-Abfrage für eine bestimmte Umfrage

Ich habe eine Umfrage im Markdown-Format definiert und benötige eine SQL-Abfrage, um die Umfrageergebnisse aus einer Discourse-Datenbank mithilfe des Data Explorer Plugins zu extrahieren. Die Umfrage umfasst verschiedene Fragetypen wie Radio, Dropdown, Sterne, Kontrollkästchen, Textbereich, Daumen und Zahlen. Ich möchte, dass die Abfrage Ergebnisse ausgibt, bei denen jeder Benutzer eine einzelne Zeile hat und jede Frage eine eigene Spalte hat. Bei Kontrollkästchenfragen sollten mehrere Antworten zu einer einzigen Zeichenfolge verkettet werden.

Hier ist das Umfrage-Markdown:

Fügen Sie hier Ihr Umfrage-Markdown ein

Hier ist die ursprüngliche Abfrage zur Ermittlung der Umfrageergebnisse:

-- [params]
-- text :survey_name = survey

SELECT s.id, s.name, s.post_id, sf.question, COALESCE(sr.value, sfo.html) AS value, sr.user_id, sr.created_at as responded_at
FROM surveys s
JOIN survey_fields sf ON sf.survey_id = s.id
JOIN survey_responses sr ON sr.survey_field_id = sf.id
LEFT JOIN survey_field_options sfo ON sfo.id = sr.survey_field_option_id
WHERE s.name = :survey_name
ORDER BY s.id DESC

Bitte generieren Sie eine SQL-Abfrage, die:

  • Den Umfragennamen fest codiert.
  • Bedingte Aggregation verwendet, um die Daten zu pivotieren, wobei jede Frage eine Spalte darstellt.
  • STRING_AGG für Kontrollkästchenfragen verwendet, um mehrere Antworten zu verarbeiten.
  • Sicherstellt, dass die Ausgabe nach user_id gruppiert und nach user_id sortiert wird.
  • Zur besseren Lesbarkeit formatiert ist und Kommentare enthält, die die Logik erklären, wo nötig.

Zusätzliche Hinweise für das Data Explorer Plugin:

  • Die Abfrage muss mit dem Discourse Data Explorer Plugin kompatibel sein, was bedeutet, dass sie nicht mit einem Semikolon enden darf.
  • Verwenden Sie Spaltennamen wie user_id, um die automatischen Verknüpfungsfunktionen im Data Explorer zu nutzen.
  • Vermeiden Sie dynamische SQL, da das Plugin diese nicht unterstützt.
  • Stellen Sie sicher, dass die Abfrage effizient und für die Leistung optimiert ist, da sie möglicherweise auf großen Datensätzen ausgeführt wird.
8 „Gefällt mir“

Dies ist ein ausgezeichnetes kleines Plugin, das überraschend funktionsreich ist. Danke, dass Sie es gemacht haben.

@nathank tolle Arbeit an der Anleitung zum schnellen Erstellen von Ergebnisabfragen.

4 „Gefällt mir“

Ich habe dies auf meiner selbst gehosteten Website installiert, um sie auszuprobieren, und sie ist wirklich gut!

Mir ist bewusst, dass dies dem Diskurs widerspricht, aber es wäre hilfreich, wenn es möglich wäre, Umfragen zu erstellen, die anonym, ohne Anmeldung, abgeschlossen werden können. Oder zumindest die Ergebnisse zu anonymisieren, damit sie nicht mit bestimmten Benutzern verknüpft sind.

Und natürlich wäre die Möglichkeit, die Ergebnisse wie bei Umfragen einzusehen, ohne auf den Daten-Explorer zurückgreifen zu müssen, fantastisch.

5 „Gefällt mir“

Ja, ich hatte das gleiche Problem. Hoffentlich gibt es eine Lösung.

3 „Gefällt mir“