В качестве продолжения, вот как я представляю наилучшее удовлетворение ваших потребностей с помощью стандартных функций Discourse. Это может быть не в точности то, что вы имеете в виду, но я считаю, что это стоит рассмотреть как отправную точку для обсуждения.
Сначала я делаю некоторые предположения, которые могут быть верными, а могут и нет. Пожалуйста, дайте знать, если я ошибаюсь:
- Будет много курсов (десятки, возможно, сотни)
- Настройка курсов будет происходить периодически, крупными партиями, в начале каждого семестра (2–4 раза в год)
- У курсов будет срок окончания
- Люди, управляющие курсами, должны иметь возможность настраивать их самостоятельно
- Люди, управляющие курсами, будут иметь ограниченный или нулевой опыт управления сайтом Discourse.
- Люди, управляющие курсами, действительно нуждаются только в просмотре своих собственных. Они могут иногда просматривать другие в качестве примеров, но не нуждаются в постоянном участии в них.
- ^ То же самое для студентов курсов
- Существует очень небольшая команда, управляющая системой в целом
- Курсам на самом деле не нужны подкатегории; использования тегов для организации контента внутри курсов будет достаточно
Если эти предположения близки к истине, вот что я предлагаю, сначала на высоком уровне:
- Создать небольшое количество категорий верхнего уровня: одну для «Текущих курсов», одну для «Прошедших курсов», одну для «Предстоящих курсов» и одну или несколько для общих вопросов, касающихся всей системы (например, как пользоваться сайтом)
- Установить стиль главной страницы как «блоки с категориями», чтобы они были хорошо заметны
- Использовать подкатегории для каждого курса
- Создавать их в «Предстоящих курсах»
- Перемещать их в «Текущие курсы» в начале семестра
- Когда курс завершается, перемещать его из «Текущих курсов» в «Прошедшие курсы»
- Контролировать доступ к курсам с помощью групп (более подробно ниже)
Контроль доступа:
- Для каждого курса создать набор следующих групп, например: foo_interested, foo_enrolled, foo_admin
- Создать две дополнительные группы: «browse_courses» и «browse_past_courses»
- Настроить категории в «Предстоящих курсах» и «Текущих курсах» так, чтобы они были доступны только людям из групп для конкретного курса и людям из группы «browse_courses».
- Настроить категории в «Прошедших курсах» так, чтобы они были доступны только людям из групп для конкретного курса и людям из группы «browse_past_courses».
Пользовательский опыт для групп и курсов
- Закрепить тему в категории верхнего уровня для «Предстоящих курсов», объясняющую, как просматривать курсы, с простым способом присоединения к группе «browse_courses».
- ^ То же самое для «Текущих курсов»
- ^ То же самое для «Прошедших курсов»
Для отдельных курсов закрепить тему в категории, объясняющую, как присоединиться к курсу:
- Присоединиться к группе «foo_interested» и/или «foo_enrolled»
- Добавить курс в боковую панель
Администрирование будет немного трудоемким вначале, так как для каждого нового курса кому-то с соответствующими привилегиями потребуется:
- Создать категорию
- Создать группы
- Создать закрепленную тему
- Добавить людей в группу _admins
- Предоставить им документацию, необходимую для управления своим курсом
Часть этого можно автоматизировать с помощью легковесных инструментов. В зависимости от того, кто входит в основную административную команду, может иметь смысл начать с внешнего решения, которое просто обращается к API. Или, возможно, вам понадобится что-то более ориентированное на интерфейс, встроенное в Discourse как компонент темы или плагин. Но я предлагаю начать с малого здесь, сосредоточившись сначала на определении рабочего процесса, а затем проектировать инструменты вокруг него.
Масштабирование категорий может стать проблемой. У Discourse есть некоторые проблемы с производительностью и пользовательским опытом, когда количество категорий становится слишком большим (сотни или тысячи). Пользователи с доступом к большему количеству категорий почувствуют это влияние, тогда как те, у кого доступ ограничен, — нет. Это одна из причин ограничения доступа к категориям, как я описал выше.
Очень интересно услышать любые и все отзывы или вопросы, которые у вас есть по вышеизложенному.