Ho creato un plugin personalizzato per includere alcuni campi aggiuntivi per i gruppi. Ma si applicano solo ai gruppi con il nome “chapter” al loro interno. Quindi non ha senso averli nei gruppi per altri scopi. C’è un modo per creare una condizione che controlli, ad esempio, if chapter in group.name; then chapter = true?
Ho il seguente:
Voglio nascondere il gruppo di controllo in alto se il nome del gruppo non contiene la parola chapter. Sembra che io stia già usando del Jinja2 dall’esempio che ho usato. Se è simile ad altri Jinja2, allora posso certamente creare una condizione lì. Ma poi ho bisogno di sapere alcune cose.
Se Jinja2 è completamente disponibile, come posso accedere alla variabile del nome del gruppo per creare la condizione?
Se Jinja2 non è (completamente) disponibile, come posso creare questa condizione allora? Probabilmente qualcos’altro in JavaScript dovrebbe impostare un booleano, suppongo. Ma la struttura di queste variabili di gruppo e la logica JavaScript non mi sono note, qualsiasi esempio sarebbe fantastico!
Oh aspetta… ora vedo improvvisamente alcuni metodi per testare. Se Jinja2 funziona qui, allora effettivamente in g.json il nome del gruppo è visibile e può essere utilizzato per una condizione…
E no, non funziona. E non è Jinja2, sono cose specifiche di Handlebars (ma suppongo che contains non sia una funzione nativa?).
Ma non funziona, ottengo un sacco di errori. Probabilmente non sto usando la corretta ricerca della variabile. Anche se sostituire group.name con semplicemente "chapter_netherlands" fallisce comunque.
Si è verificato un errore:
- Durante il rendering:
-top-level
application
discourse-root
group
group.manage
group.manage.profile
groups-form-profile-fields
plugin-outlet
plugin-connector
Errore irreversibile: Tentativo di risolvere `contains`, che ci si aspettava fosse un componente, ma non è stato trovato nulla.
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.
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