UnicoreCMS

Модуль «Команда проекта»

Страница состава, которая собирается из служебных ролей и привилегий

Модуль добавляет на сайт страницу /mod/team со списком тех, кто ведёт проект: администрация, модераторы, хелперы. Состав не заводится руками — он берётся из того, что уже есть в панели.

Откуда берутся люди

Два источника, и оба вы уже используете:

ИсточникГде отметитьКуда попадает человек
Роль сайтаОсновное → Роли, флажок «Служебная роль»В общий раздел — роль сайта не привязана к серверу
ПривилегияE-Commerce → Донат → Группы, флажок «Служебная роль»В раздел того сервера, где привилегия выдана

Дальше ничего делать не нужно: выдали человеку роль «Модератор» на сервере — он появился на странице, срок привилегии истёк — исчез. Один и тот же человек может стоять в нескольких разделах: например, разработчик в общем разделе и владелец на конкретном сервере.

Подпись под ником — это название роли или привилегии, а её цвет задаётся там же, где и сам флажок.

Что настраивается в модуле

Расширения → Команда проекта. Здесь только описание — строка под подписью, вроде «Отвечает за техчасть». Она переводится на другие языки как обычный контент.

Заголовок страницы, подзаголовок и название общего раздела лежат в настройках модуля на странице «Модули».

Установка

Модуль живёт в отдельном репозитории UnicoreCMS-modules и лежит там исходниками. Как собрать серверную часть, написано в README репозитория: клоны кладутся рядом, потому что контракт unicore-api в npm не публикуется.

pnpm --filter unicore-module-team run build

Дальше как с любым модулем: соберите архив из module.json, package.json, server, client, admin, locales, поставьте его через панель, включите и пересоберите фронты. Подробности — в Установке.

Что внутри — для разработчика

Модуль интересен как пример: почти всё он берёт у ядра и почти ничего не хранит.

  • состав приходит из фасада core().staff.members() — ядро само сводит роли сайта и выданные привилегии;
  • названия и иконки разделов — из core().servers.all();
  • своя таблица одна, mod_team_notes, и в ней только описание;
  • описание переводится через @Translatable('mod.team.note', ['text']), редактор в панели подключается одной строкой.

См. Контракт для модулей.

Содержание