Les paramètres des plugins dépendants sont... INCROYABLES !

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.

4 « J'aime »