Beispiel für ein Plugin mit einem Formular, das eine POST-Anfrage sendet

Hallo zusammen!

Wir arbeiten daran, die Entwicklung eines Plugins, das wir hier unter Error "Unable to configure link to 'Auto Send Messages'. Ensure ad-blockers are disabled and try reloading the page." durchführen, voranzubringen.

Und wir könnten wirklich ein funktionierendes Beispiel für ein Plugin gebrauchen, das eine Formularübermittlungsaktion beinhaltet. Unser Plugin hat auf hoher Ebene zwei Dinge:

  • Einige Konfigurationselemente
  • Ein Formular, in das ein Benutzer Text eingeben und dann zur Verarbeitung auf „Senden“ klicken kann.

Wenn also jemand ein Plugin kennt, das diese beiden Arten von Funktionen hat, würden wir uns sehr über einen Link freuen, damit wir sehen können, wie es funktioniert.

Danke!

Können Sie mehr darüber sagen, was Sie tun? Was ändern Sie am Formular? Kann dies eine Themenkomponente sein? Reichen Sie das, was Sie einreichen, an einen vorhandenen Endpunkt oder an einen, den Sie hinzufügen, weiter?

Siehe Discourse toolkit to render forms

Dann können Sie GitHub - discourse/all-the-plugins abrufen und nach „<Form“ greppen, aber Sie können auch Code search results · GitHub wie in Discourse toolkit to render forms - #20 by david beschrieben (obwohl diese alle im Kern und nicht in Plugins sind)

Vielleicht siehe discourse-data-explorer/assets/javascripts/discourse/components/param-input-form.gjs at main · discourse/discourse-data-explorer · GitHub

2 „Gefällt mir“

FormKit ist ziemlich neu.

Ich habe das Locations-Plugin noch nicht einmal aktualisiert, um es zu verwenden.

(Aber es ist definitiv das Richtige, wenn man neu anfängt :+1:)

1 „Gefällt mir“

[Zitat=“Robert, Beitrag:3, Thema:351930, Benutzername:merefield”]
FormKit ist ziemlich neu.
[/Zitat]

Das ist so wahr. Es ist immer noch das, was ich empfehlen würde, wenn jemand neuen Code schreibt.

[Zitat=“Robert, Beitrag:3, Thema:351930, Benutzername:merefield”]
Ich habe es noch nicht mal aktualisiert, um den Locations-Plugin dafür zu verwenden.
[/Zitat]

Ich habe es für etwas Neues verwendet, an dem ich arbeite. (Und du kannst mich oft darüber meckern hören im entsprechenden Thema!)

2 „Gefällt mir“

@pfaffman Wir möchten ein einfaches Formular erstellen, das den Benutzer nach vier Dingen fragt:

  1. Absender
  2. Empfänger
  3. Betreff
  4. Nachrichtentext

Der Benutzer füllt diese Felder aus und klickt dann auf eine Schaltfläche, um einen Endpunkt auszulösen, der die E-Mail sendet.

Insbesondere enthält das Formular die vier Elemente, und sobald auf die Schaltfläche „Senden“ geklickt wird, wird der Endpunkt aufgerufen, um die Nachricht zu senden.

Ich bin mir nicht sicher, ob das genau das ist, wonach Sie suchen, aber das Hauptziel ist es, einem Administratorbenutzer zu ermöglichen, Text (den E-Mail-Betreff und -Nachrichtentext) einzugeben und auf eine Schaltfläche zu klicken, um ihn an einen Benutzer in Discourse zu senden.

In Zukunft möchten wir dies erweitern, sodass der Benutzer mehrere Nachrichten von einem Absender an mehrere Empfänger auslösen kann. Wir möchten Parameter wie die Gesamtzahl der Nachrichten und die Verzögerung zwischen jeder Nachricht manipulieren, um zu steuern, wie viele Nachrichten gesendet werden und wie sie verteilt sind.

Vielleicht einen Schritt zurückgehen und das eigentliche Problem beschreiben, das Sie lösen möchten.

Meinen Sie, dass Sie eine direkte E-Mail senden möchten (damit die Nachricht nicht in Discourse existiert) oder dass Sie eine PM senden möchten, die an den Benutzer geht (was in den meisten Fällen eine E-Mail-Benachrichtigung generiert)?

Möchten Sie ändern, wer der Absender der PM ist? Das scheint das Einzige zu sein, was in der bestehenden PM-Oberfläche fehlt, richtig?

1 „Gefällt mir“

Danke für die Klarstellung! Um etwas mehr Kontext zu geben: Wir arbeiten mit einer großen Nutzerbasis und möchten Nutzer, die eine Weile nicht mit unserer App interagiert haben, wieder ansprechen. Das Ziel ist es, eine private Nachricht (PN) an eine große Anzahl von Nutzern von einem bestimmten Absender zu senden, mit Kontrolle über mehrere Parameter:

  1. Absender: Der Administrator gibt den Benutzernamen des Absenders direkt im Formular an.
  2. Betreff & Nachricht: Der Administrator kann sowohl den Betreff als auch den Text der PN anpassen.
  3. Kontrolle des Volumens: Wir möchten steuern, wie viele Nachrichten gleichzeitig gesendet werden, um Spam zu vermeiden.
  4. Timing: Das Hauptanliegen ist sicherzustellen, dass wir kontrollieren können, wie schnell die Nachrichten gesendet werden, um unser E-Mail-Domain nicht zu überlasten und nicht als Spam markiert zu werden. Wir müssen in der Lage sein, die Nachrichten durch das Setzen von Verzögerungen zwischen jeder Nachricht (und der entsprechenden E-Mail) zu timen, um Spam-Filter zu umgehen.

Das ultimative Ziel ist es, die Nutzer dazu zu bringen, die private Nachricht zu öffnen (was auch eine E-Mail-Benachrichtigung auslöst) und sie dazu zu ermutigen, zu unserer App zurückzukehren.

Wir haben bereits ein einfaches Ruby-Skript, das diese Aufgabe vollständig ausführen kann. Derzeit lösen wir es manuell aus, indem wir über SSH auf die VM zugreifen, was etwas umständlich ist. Was wir jetzt möchten, ist dieses Skript so anzupassen, dass es ein Plugin wird, damit ein Admin es leicht über die Benutzeroberfläche auslösen kann, mit der Möglichkeit, die Einstellungen (Absender, Betreff, Nachricht, Anzahl der Nachrichten, Verzögerung usw.) direkt im Admin-Interface einzugeben.

Wir möchten dies über eine Plugin-Oberfläche realisieren, die dem Admin ermöglicht, diese Einstellungen einfach einzugeben, den Vorgang zu starten und den Fortschritt der gesendeten Nachrichten zu überwachen.

1 „Gefällt mir“

Das sind viele Teile.

Ich würde wahrscheinlich so etwas tun, wie die Benutzer in einer Gruppe zu haben und zu planen, an alle Benutzer in der Gruppe zu senden. Wenn eine Nachricht gesendet wurde, würden Sie einen Wert in einem user_custom_field festlegen und ein vorhandenes Thema als Text und Absender der Nachricht verwenden. Ein Job würde in regelmäßigen Abständen laufen und so viele Nachrichten senden, wie Sie möchten. Ich würde die Gruppe und den benutzerdefinierten Feldwert in die Einstellungen aufnehmen.

Dann bräuchten Sie keine Benutzeroberfläche und müssten keine neue Route erstellen; Sie könnten einfach bestehende Einstellungen verwenden. Und Sie könnten sehen, was passiert ist, indem Sie den Daten-Explorer verwenden, sodass Sie keine Benutzeroberfläche für beides entwickeln müssten.

Aber wenn Sie einige Felder erstellen möchten, die Leute in der Benutzeroberfläche eingeben, sollten Sie sich das \u003cForm\u003e-Ding ansehen, das ich bereits erwähnt habe.

1 „Gefällt mir“