Как стать автором
Обновить

E-learning на костылях. Исправляем курсы из Articulate Rise

Время на прочтение4 мин
Количество просмотров4.5K
Рынок насыщен разными программами для разработки электронных курсов — авторскими средствами (authoring tools). Есть продукты на любой вкус: хочешь прогу, чтобы просто конвертировать электронные презентации в HTML5? Да пожалуйста! Хочешь делать одностраничники в редакторе вроде Тильды? Держи! Хочешь создать игрушку в стиле Interactive Fiction? Да кто же тебе запретит, родной? Любой каприз, как говориться.

Каждое авторское средство склоняет на свою сторону простотой использования. Разработчик без какого-либо технического бекграунда может особо не напрягаясь склеить электронный курс и опубликовать его в LMS.

Но всё ли так гладко на самом деле? Что делать, когда кажущаяся простота разворачивается и стреляет вам в колено?

Давайте препарируем несколько популярных инструментов и посмотрим, какие неприятные сюрпризы поджидают наивных Instructional Designer-ов. Сеанс чёрной магии с последующим её разоблачением, так сказать.

Эта статья посвящается Articulate Rise.

Что это такое? Облачный сервис для разработки лонгридов. Вроде Тильды, только ориентированный на e-learning. Берёте контент, берёте готовые компоненты и в визуальном редакторе создаете веб-страницу. Добавляете электронные тесты и экспортируете в нужном вам формате (по нужному стандарту). Просто, быстро, интуитивно понятно. Изюм. Вот пример.

И в чем проблема, спросите вы?

Что ж, господа. Присаживайтесь…

Как убить титульную страницу


Начнём с простого. Вот, поставьте себя на место пользователя. Идёте вы по LMS, нашли в каталоге курс, посмотрели, полюбовались картинкой на баннере, почитали описание. Поняли: хочу! Жмёте «Начать». И вместо того, чтобы сразу получить всё самое вкусное, вам предлагают ещё раз посмотреть на баннер, почитать описание и нажать «Начать». Неприятно? Меня, вот, бесит. Причём, создатели тулзы не догадались сделать в интерфейсе разработчика чекбокс «убрать титульную страницу».

Итак, первый костыль


  1. Экспортируем курс.
  2. Открываем файл scormdriver/indexAPI.html
  3. Находим переменную strContentLocation. Это URL первой страницы, которая будет показана пользователю. По дефолту значение

    scormcontent/index.html#/preview/

    Чтобы пользователь переходил сразу к «вкусному», после хеша нужно прописать идентификатор урока.

    Как его узнать? Просто открываем scormcontent/index.html в браузере переходим к первому уроку и копируем значение из урла. Всё что после хеша. Должно получиться что-то типа:

    scormcontent/index.html#/lessons/rri34kKfn2348234

Как исправить контент в курсе без доступа авторскому средству


Ситуация. Подписка закончилась, исходники не расшарены, а уже экспортированный курс срочно нужно исправить. Бывает такое? Иногда, увы, бывает.

Костыль


  1. Экспортируем курс
  2. Открываем scormcontent/index.html, находим переменную courseData. Она содержит все данные курса в base64.
  3. Декодируем (например с помощью notepad++) и получаем уже читаемый и редактируемый JSON. С ним можно делать всякие упражнения. Я например сшивал несколько райзовских курсов в один, просто добавляя значения в массив lessons.
  4. Перед сохранением кодируем строку courseData назад в base64.
  5. Справедливости ради стоит заметить, что исправить можно не все данные. Так, например, перед рендерингом страницы Райз проверяет и изменяет гиперссылки. Об этом мы поговорим ниже.

Встраиваем веб-страницы


Райз позволяет встроить в курс фрейм и показывать в нем веб-страницы. Проблема в том, что это может быть либо курс собранный в Storyline (другое авторское средство от той же компании), либо сайт, доступный по абсолютному URL. А вот возможность положить веб-страницу в пакет с курсом и сослаться на неё относительно index.html нет. Более того, если вы попытаетесь прописать абсолютную ссылку, экспортировать курс, а затем поменять её на относительную, как описано выше, ничего не выйдет. Райз проверит URL перед рендерингом страницы и если в нем не будет подстроки «://» просто тихонько загнётся.

Костыль


  1. Добавляем на страницу объект из Storyline
  2. Узнаем его id. Либо методом научного тыка, либо через courseData.
  3. Экспортируем курс. Находим в scormcontent/assets папку с соответствующим id.
  4. Заменяем содержимое папки. Свою страницу сохраняем как story.html

Удаляем название курса из темы письма при переходе по ссылке mailto


Когда я впервые с этим столкнулся, я начал курить. Создатели Райза почему-то решили, что пользователь будет в восторге, если к ссылкам начинающимся на mailto без спроса добавлять сабжект с названием курса. Естественно, опции, которая это запрещает в интерфейсе нет.

Костыль


  1. Экспортируем курс. Открываем scormcontent/lib/main.bundle.js.
  2. Находим во всем этом месиве подстроку

    (w="mailto:".concat(E,"?subject=")).call(w,o)
  3. Меняем на

    (w="mailto:".concat(E,"")).call(w,"")

Заставляем Райз отдавать в LMS больше скормовых данных и делать это лучше


Да, я до сих пор работаю по SCORM 2004 4th edition. Более того, мне нравится этот стандарт. Но мне не нравится, как его трактуют создатели некоторых авторских средств. Райз, например, отправляет в LMS жалкую кучку переменных, причем делает это исключительно перед разрывом сессии (один-единственный Commit() перед Terminate(), для тех кто понимает).

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

Костыль


  1. Экспортируем курс
  2. Открываем scormcontent/index.html
  3. Добавляем в массив stuffToPick значения:

    
    stuffToPick = [
        ...,
        "CommitData",
        "GetProgressMeasure",
        "SetProgressMeasure"
    ]
  4. Дописываем функцию setCourseProgress:

    
    setCourseProgress(courseProgress) {
    …
        var lastProgress = LMSProxy.GetProgressMeasure();
        if (lastProgress < progress.p/100) {
            LMSProxy.SetProgressMeasure(progress.p/100);	
            LMSProxy.CommitData();
        }
    }
    

  5. В качестве бонуса, можно заставить курс коммитить почаще для профилактики «застревания» данных при разрыве сессии. Для этого добавляем LMSProxy.CommitData(); в конфе функций completeOut, и reportAnswer.

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

В следующий раз мы будем издеваться над iSpring.
Теги:
Хабы:
Всего голосов 5: ↑4 и ↓1+8
Комментарии0

Публикации

Истории

Работа

Веб дизайнер
25 вакансий
React разработчик
57 вакансий

Ближайшие события

7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань