Помимо темы, на которую дал ссылку @JammyDodger, было ещё несколько запросов на аналогичный функционал:
- Hierarchical group membership (groups inside groups)
- Parent groups and sub-groups
- https://meta.discourse.org/t/creating-subgroups/200812
Также поступали запросы на возможность отображения групп в иерархическом виде:
Я отмечаю это, чтобы убедиться, что добавление скрипта автоматизации — это лучший способ решить эту задачу, или же данный функционал должен быть реализован в основном коде групп Discourse.
Я немного поэкспериментировал с этим ради интереса. Это как-то связано с недавней работой, которую я выполнял с Zapier. Можете проигнорировать остальную часть этого сообщения.
Предполагая, что скрипт автоматизации — правильный подход, единственное препятствие заключается в том, что компонент group плагина автоматизации принимает только одну группу. Следовательно, либо компонент group нужно обновить, чтобы он принимал более одной группы, либо необходимо добавить новый компонент groups. Я добавил компонент groups в свою локальную ветку разработки для тестирования. С его помощью:
Добавить пользователя в родительскую группу, если он добавлен в любую из списка подгрупп:
Удалить пользователя из родительской группы, если он был удалён из всех перечисленных подгрупп:
Если это поможет, триггеры и скрипты находятся в плагине: automation-script-example/plugin.rb at main · scossar/automation-script-example · GitHub. Обратите внимание, что этот код предполагает, что компонент groups был добавлен в https://github.com/discourse/discourse-automation/tree/main/assets/javascripts/discourse/components/fields.

