Добавление новых столбцов в списки пользователей в группах

Возможно ли добавить дополнительные столбцы в списки пользователей в группах? У меня есть плагин, в который я пытаюсь добавить функционал: столбец в списке пользователей групп, показывающий, активен ли пользователь, приостановлен, заглушен или деактивирован. Похоже, что мне нужно работать с шаблоном Handlebars group-index и контроллером group-index, но там нет точки расширения для плагинов. Поэтому я спрашиваю, какой правильный способ добавить новый столбец, если это вообще возможно. Я новичок в разработке для Discourse, возможно, я что-то упускаю, но буду очень благодарен за любые советы. Я прочитал эти руководства по разработке — отличные ресурсы, но сейчас я застрял.

Привет, добро пожаловать в Meta :wave:

Вы можете использовать выходы group-index-table-header-after-username и group-index-table-row-after-username, чтобы вставить заголовок или строку рядом с колонкой имени пользователя.

Например:

Для заголовка можно использовать компонент TableHeaderToggle.
Для строки, например, можно использовать <div class="directory-table__cell directory-table__cell--status">{{this.args.member}}</div> — данные можно получить через {{this.args.member}}.

Вам также потребуется скорректировать CSS для сетки, чтобы добавить новую колонку.

.group-members--can-manage {
    grid-template-columns: 3fr repeat(5, minmax(min-content, 1fr)) 3em;
                                      ^
}

Если вы хотите переместить колонку, позиционирование может быть немного сложным из-за display: contents; однако использование свойства order может помочь.

Кстати, у вас могут возникнуть проблемы с получением статуса пользователя. В моих тестах данные не отображались в member, если пользователь был отстранён или замолчан (silencedTillDate или suspendedTillDate не определены). Не уверен, есть ли здесь ошибка. Пока я не углублялся в это дальше!

Надеюсь, это поможет.

Отлично, спасибо! Это очень помогает. Я только сейчас понял, что не видел выходы group-index-table-header-after-username и group-index-table-row-after-username, потому что сайт использует устаревшую версию Discourse (2.7).

Пожалуйста! 2.7! Действительно, довольно старая версия. :smile:

Кстати, я настоятельно рекомендую вам использовать этот компонент: (deprecated) Plugin outlet locations theme component. Очень полезно! :+1: