Le impostazioni dei plugin dipendenti sono... INCREIBILI!

Oh … questo è davvero :chefs_kiss:

Lasciate che ve lo illustri.

Ecco un selettore nell’ultima versione di Chatbot, notate che è in stato “disattivato”:

Ora cambiamo questa selezione:

e si rivelano, come per :sparkles:, impostazioni da considerare solo quando tale valore è selezionato.

Questo è un modo davvero fantastico per ridurre il disordine inutile nelle impostazioni dei plugin e semplificare la configurazione, riducendo il carico cognitivo :tada:

Daniel Labelle's Fast Cleaning Challenge

12 Mi Piace

la mascella mi cade Aspettavo qualcosa del genere da un tempo davvero lunghissimo. corre a controllare il repository Ci sono documenti al riguardo?

1 Mi Piace

Sentitevi liberi di usare l’uso del Chatbot come esempio utile di come utilizzarlo:

e sono sicuro che ormai ci siano un sacco di utilizzi nel core …

2 Mi Piace

Esiste una documentazione, ma al momento è frammentata piuttosto che presentata come una guida per sviluppatori autonoma.

I riferimenti principali autorevoli sono:

  • Documentazione dello schema in config/site_settings.yml:52, che copre depends_on, depends_on_values, depends_behavior e dependent_setting_display.

  • Indicazioni ed esempi più dettagliati in .skills/discourse-site-settings/SKILL.md:203.

  • Specifiche del comportamento backend in spec/lib/site_setting_extension_spec.rb:706.

  • Risoluzione delle dipendenze frontend in frontend/discourse/admin/services/admin-site-setting-store.js:41.

  • Esempi di interfaccia utente in frontend/discourse/tests/acceptance/admin-site-settings-test.js:142.

La sintassi di base è:

child_setting:
  default: ""
  depends_on:
     - parent_setting
  depends_behavior: "hidden"

Per genitori di tipo enum o stringa:

 child_setting:
    default: ""
    depends_on:
      - parent_setting
    depends_on_values:
      parent_setting:
        - enabled_mode
        - another_mode
    depends_behavior: "hidden"
    dependent_setting_display: "inline"

Una limitazione importante: le dipendenze possono contenere più genitori diretti, ma la risoluzione delle dipendenze non è transitiva. Una catena annidata come A → B → C non fa sì che C valuti automaticamente se B sia nascosto da A; C valuta solo il valore memorizzato di B.

4 Mi Piace