Nascondi determinate impostazioni di gruppo se il nome del gruppo include un nome specifico

Capisco e accetto che devo creare queste funzioni da solo, non è come Jinja2 con utili cose integrate per farlo.

Ma dove creo queste funzioni handlebars nel mio plugin? Vedo parecchi esempi qui: Repository search results · GitHub

Ma non vedo davvero uno schema in questa struttura di cartelle. Ho creato la mia funzione in discourse-group-custom-fields/assets/javascripts/discourse/app/helpers/contains.js, ma quando provo a usarla in discourse-group-custom-fields/assets/javascripts/discourse/connectors/group-edit/field-container.hbs ottengo l’errore Uncaught Error: Attempted to resolve "contains", which was expected to be a component, but nothing was found.. Quindi, ovviamente, questo non è un percorso in cui Discourse sta cercando, o sto facendo qualcosa di sbagliato.

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);
});

L’argomento sottostante suggerisce che potrebbe trovarsi nella directory degli initializers e avere l’estensione .es6.

Quindi ho spostato il mio contains.js in quella directory e ho aggiunto .es6 come estensione e ho ottenuto lo stesso errore. Qualsiasi aiuto o documentazione sarebbe molto apprezzato :slight_smile: