Une documentation existe, mais elle est actuellement, à ma connaissance, fragmentée plutôt que présentée sous la forme d’un guide développeur autonome.
Les références principales et autorisées sont :
-
La documentation du schéma dans config/site_settings.yml:52, couvrant depends_on, depends_on_values, depends_behavior et dependent_setting_display.
-
Des directives et exemples plus détaillés dans .skills/discourse-site-settings/SKILL.md:203.
-
Les spécifications du comportement backend dans spec/lib/site_setting_extension_spec.rb:706.
-
La résolution des dépendances frontend dans frontend/discourse/admin/services/admin-site-setting-store.js:41.
-
Des exemples d’interface utilisateur dans frontend/discourse/tests/acceptance/admin-site-settings-test.js:142.
La syntaxe de base est :
child_setting:
default: ""
depends_on:
- parent_setting
depends_behavior: "hidden"
Pour les parents de type enum ou string :
child_setting:
default: ""
depends_on:
- parent_setting
depends_on_values:
parent_setting:
- enabled_mode
- another_mode
depends_behavior: "hidden"
dependent_setting_display: "inline"
Une limitation importante : les dépendances peuvent contenir plusieurs parents directs, mais la résolution des dépendances n’est pas transitive. Une chaîne imbriquée telle que A → B → C ne conduit pas automatiquement C à prendre en compte le fait que B est lui-même masqué par A ; C évalue uniquement la valeur stockée de B.