Hallo,
ich arbeite an einem Plugin, das alle Themen basierend darauf filtert, wo das Thema gepostet wurde und in welcher Gruppe der Nutzer, der das Thema ansieht, Mitglied ist. Der Anwendungsfall besteht darin, dass ein Support-Team in verschiedenen Ländern Anfragen aus ihren jeweiligen Regionen bearbeitet.
Ich bin ein Anfänger bei der Erstellung von Discourse-Plugins und lerne noch, wie das geht. Die Themenstandorte werden über das Locations-Plugin hier geregelt: Locations Plugin 🌍
Die Benutzer, die diese gefilterte Ansicht benötigen, füge ich einer Gruppe hinzu, die etwa NA_queue oder EU_queue heißt.
Das Plugin prüft, ob der Nutzer eingeloggt ist und ob eine Primärgruppe festgelegt ist. Wenn ja, werden alle Themen so gefiltert, dass sie der Warteschlange entsprechen, zu der der aktuelle Nutzer gehört.
Ich denke, das könnte mit etwas Ähnlichem wie dem folgenden Code umgesetzt werden:
after_initialize do
require_dependency ‘topic_query’
# Wenn eingeloggt und Primärgruppe festgelegt
# Primärgruppe des Benutzers ermitteln
# Themenstandort ermitteln
TopicQuery.add_custom_filter(:location) do |results, topic_query|
filter = "EINIGE SQL-ABFRAGE HIER"
results = results.joins("{filter}")
results
end
Ist das ein guter Ansatz für mein Problem?
Außerdem: Hat jemand Vorschläge, wie die SQL-Abfrage aussehen könnte oder wie man die beiden kommentierten Informationen erhält?