Discourse as an LMS / Discourse integration with an LMS

Как и многие из вас в этой ветке, я искал лёгкий способ использовать Discourse в качестве LMS нативно. Специализированные LMS-платформы кажутся мне слишком раздутыми, но стандартная функция Discourse «затухание уведомлений» (когда старые темы перестают отображаться как «непрочитанные» для новых пользователей) затрудняет отслеживание прогресса обучения.

Чтобы решить эту проблему для себя, я создал простое решение, сочетающее настройки категорий, небольшой плагин для бэкенда и компонент темы.

Вот как я это настроил, а также код с открытым исходным кодом, который вы можете использовать для повторения!

Основная концепция: Discourse в качестве LMS

Чтобы это работало, я использую стандартные функции Discourse в сочетании с официальным плагином Discourse Doc Categories:

  • Курс = Категория: Каждый курс получает свою собственную категорию.
  • Урок = Тема: Каждый урок — это тема внутри этой категории.
  • Права доступа: Участники могут отвечать на уроки (задавать вопросы), но создавать новые темы могут только сотрудники.
  • Порядок: Порядок уроков определяется датой создания. (Совет: это требует некоторого предварительного планирования при публикации уроков, либо вы можете использовать консоль Rails, чтобы быстро изменить время создания тем на более раннее, чтобы обеспечить правильный порядок сортировки).
  • Силлабус: Я использую плагин Discourse Doc Categories, чтобы назначить «Тему-индекс». Эта тема служит силлабусом/трекером курса и отображает красивый оглавление в боковой панели, когда пользователи заходят в курс.

Недостающий элемент: настоящее отслеживание прогресса

Проблема описанной выше настройки заключается в том, что когда присоединяется новый студент, старые темы уроков не отображаются как «непрочитанные», поэтому у него нет возможности визуально отслеживать свой прогресс.

Чтобы решить это, я создал плагин для бэкенда, который напрямую запрашивает таблицу базы данных TopicUser для получения реального статуса прочтения за всю историю, и компонент темы для фронтенда, который преобразует стандартную боковую панель Discourse в трекер прогресса LMS в реальном времени.

1. Значки прогресса в основной боковой панели

Компонент темы заменяет стандартные синие точки уведомлений на индикаторы прогресса [ прочитано / всего ] для ваших категорий курсов.

2. Галочки завершения уроков

Когда пользователь заходит в курс, плагин Docs отображает силлабус. Мой компонент темы добавляет галочки успеха (fa-check) рядом с конкретными уроками, которые пользователь уже прочитал.

3. Завершение курса

Как только пользователь прочитает каждую тему в категории, значок прогресса в боковой панели автоматически превращается в приятную галочку завершения!

Как установить

Поскольку это требует обхода стандартного кэша уведомлений Discourse, вы должны установить как плагин для бэкенда, так и компонент темы для фронтенда.

Шаг 1: Установка предварительного требования
Убедитесь, что у вас установлен и активен официальный плагин Discourse Doc Categories. Мой плагин нацелен исключительно на категории, для которых настроена Тема-индекс.

Шаг 2: Установка API-плагина для бэкенда
Добавьте это в ваш app.yml ниже docker_manager и пересоберите контейнер. Это обеспечит сверхбыструю конечную точку API для статусов прочтения.
:hammer_and_wrench: Ссылка на репозиторий: https://github.com/zsviczian/discourse-course-progress

hooks:
  after_code:
    - exec:
        cd: $home/plugins
        cmd:
          - git clone https://github.com/discourse/docker_manager.git
          - git clone https://github.com/zsviczian/discourse-course-progress.git

Шаг 3: Установка компонента темы для интерфейса
Установите его напрямую через веб-браузер в разделе Администрирование > Настройка > Темы > Установка > Из репозитория Git.
:hammer_and_wrench: Ссылка на репозиторий: https://github.com/zsviczian/discourse-course-progress-theme

Надеюсь, это поможет другим, кто пытается создавать курсы, управляемые сообществом, без раздувания отдельной LMS-платформой! Дайте знать, если в итоге вы решите его использовать.

3 лайка