Bestimmte Gruppeneinstellungen ausblenden, wenn der Gruppenname einen bestimmten Namen enthält

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.

import RawHandlebars from "discourse-common/lib/raw-handlebars";
import { htmlSafe } from "@ember/template";
import { rawConnectorsFor } from "discourse/lib/plugin-connectors";

//RawHandlebars.registerHelper("contains", function (args) {
//  const connectors = rawConnectorsFor(args.hash.name);
//  if (connectors.length) {
//    const output = connectors.map((c) => c.template({ context: this }));
//    return htmlSafe(output.join(""));
//  }
//});


Handlebars.registerHelper('contains', function(needle, haystack, options) {
     needle = Handlebars.escapeExpression(needle);
     haystack = Handlebars.escapeExpression(haystack);
     return (haystack.indexOf(needle) > -1) ? options.fn(this) : options.inverse(this);
});

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 :slight_smile: