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.