Ich habe ein benutzerdefiniertes Plugin erstellt, um zusätzliche Felder für Gruppen einzufügen. Diese gelten jedoch nur für Gruppen mit dem Namen „chapter“ darin. Daher ist es nicht sinnvoll, sie für andere Zwecke in Gruppen zu haben. Gibt es eine Möglichkeit, eine Bedingung zu erstellen, die z. B. prüft: if chapter in group.name; then chapter = true?
Ich habe Folgendes:
Ich möchte die Steuerungsgruppe oben ausblenden, wenn der Gruppenname nicht das Wort „chapter“ enthält. Ich scheine bereits Jinja2-Elemente aus dem Beispiel zu verwenden, das ich verwendet habe. Wenn das mit anderem Jinja2 vergleichbar ist, kann ich dort sicherlich eine solche Bedingung erstellen. Aber dann muss ich ein paar Dinge wissen.
Wenn Jinja2 (vollständig) verfügbar ist, wie kann ich auf die Gruppenvariablenvariable zugreifen, um die Bedingung zu erstellen?
Wenn Jinja2 nicht (vollständig) verfügbar ist, wie kann ich diese Bedingung dann erstellen? Wahrscheinlich sollte etwas anderes JavaScript einen booleschen Wert festlegen, nehme ich an. Aber die Struktur dieser Gruppenvariablen und JavaScript-Logik ist mir nicht bekannt, Beispiele wären großartig!
Oh warte… Ich sehe jetzt plötzlich einige Methoden zum Testen. Wenn Jinja2 hier funktioniert, dann ist tatsächlich in g.json der Gruppenname sichtbar und kann für eine Bedingung verwendet werden…
Und nein, das funktioniert nicht. Und es ist nicht Jinja2, es sind Handlebars-spezifische Dinge (aber ich nehme an, contains ist keine native Funktion?).
Aber das funktioniert nicht, ich bekomme eine Menge Fehler. Ich verwende wahrscheinlich nicht die richtige Variablen-Suche. Obwohl das Ersetzen von group.name durch einfach "chapter_netherlands" ebenfalls fehlschlägt.
Es ist ein Fehler aufgetreten:
- Beim Rendern von:
-top-level
application
discourse-root
group
group.manage
group.manage.profile
groups-form-profile-fields
plugin-outlet
plugin-connector
Uncaught Error: Attempted to resolve `contains`, which was expected to be a component, but nothing was found.
Ich verstehe und begreife, dass ich diese Funktionen selbst erstellen muss, es ist nicht wie bei Jinja2 mit nützlichen integrierten Dingen dafür.
Aber wo erstelle ich diese Handlebars-Funktionen in meinem Plugin? Ich sehe hier eine ganze Menge Beispiele: Repository search results · GitHub
Aber ich sehe kein wirkliches Muster in dieser Ordnerstruktur. Ich habe meine eigene Funktion in discourse-group-custom-fields/assets/javascripts/discourse/app/helpers/contains.js erstellt, aber wenn ich versuche, sie in discourse-group-custom-fields/assets/javascripts/discourse/connectors/group-edit/field-container.hbs zu verwenden, erhalte ich den Fehler Uncaught Error: Attempted to resolve "contains", which was expected to be a component, but nothing was found.. Das ist offensichtlich kein Pfad, nach dem Discourse sucht, oder ich mache etwas falsch.
Das folgende Thema legt nahe, dass es im Initializer-Verzeichnis liegen und die .es6-Erweiterung haben könnte.
Also habe ich meine contains.js in dieses Verzeichnis verschoben und .e6 als Erweiterung hinzugefügt und den gleichen Fehler erhalten. Etwas Hilfe oder Dokumentation wäre großartig