Рынок насыщен разными программами для разработки электронных курсов — авторскими средствами (authoring tools). Есть продукты на любой вкус: хочешь прогу, чтобы просто конвертировать электронные презентации в HTML5? Да пожалуйста! Хочешь делать одностраничники в редакторе вроде Тильды? Держи! Хочешь создать игрушку в стиле Interactive Fiction? Да кто же тебе запретит, родной? Любой каприз, как говориться.
Каждое авторское средство склоняет на свою сторону простотой использования. Разработчик без какого-либо технического бекграунда может особо не напрягаясь склеить электронный курс и опубликовать его в LMS.
Но всё ли так гладко на самом деле? Что делать, когда кажущаяся простота разворачивается и стреляет вам в колено?
Давайте препарируем несколько популярных инструментов и посмотрим, какие неприятные сюрпризы поджидают наивных Instructional Designer-ов. Сеанс чёрной магии с последующим её разоблачением, так сказать.
Эта статья посвящается Articulate Rise.
Что это такое? Облачный сервис для разработки лонгридов. Вроде Тильды, только ориентированный на e-learning. Берёте контент, берёте готовые компоненты и в визуальном редакторе создаете веб-страницу. Добавляете электронные тесты и экспортируете в нужном вам формате (по нужному стандарту). Просто, быстро, интуитивно понятно. Изюм. Вот пример.
И в чем проблема, спросите вы?
Что ж, господа. Присаживайтесь…
Начнём с простого. Вот, поставьте себя на место пользователя. Идёте вы по LMS, нашли в каталоге курс, посмотрели, полюбовались картинкой на баннере, почитали описание. Поняли: хочу! Жмёте «Начать». И вместо того, чтобы сразу получить всё самое вкусное, вам предлагают ещё раз посмотреть на баннер, почитать описание и нажать «Начать». Неприятно? Меня, вот, бесит. Причём, создатели тулзы не догадались сделать в интерфейсе разработчика чекбокс «убрать титульную страницу».
Ситуация. Подписка закончилась, исходники не расшарены, а уже экспортированный курс срочно нужно исправить. Бывает такое? Иногда, увы, бывает.
Райз позволяет встроить в курс фрейм и показывать в нем веб-страницы. Проблема в том, что это может быть либо курс собранный в Storyline (другое авторское средство от той же компании), либо сайт, доступный по абсолютному URL. А вот возможность положить веб-страницу в пакет с курсом и сослаться на неё относительно index.html нет. Более того, если вы попытаетесь прописать абсолютную ссылку, экспортировать курс, а затем поменять её на относительную, как описано выше, ничего не выйдет. Райз проверит URL перед рендерингом страницы и если в нем не будет подстроки «://» просто тихонько загнётся.
Когда я впервые с этим столкнулся, я начал курить. Создатели Райза почему-то решили, что пользователь будет в восторге, если к ссылкам начинающимся на mailto без спроса добавлять сабжект с названием курса. Естественно, опции, которая это запрещает в интерфейсе нет.
Да, я до сих пор работаю по SCORM 2004 4th edition. Более того, мне нравится этот стандарт. Но мне не нравится, как его трактуют создатели некоторых авторских средств. Райз, например, отправляет в LMS жалкую кучку переменных, причем делает это исключительно перед разрывом сессии (один единственный Commit() перед Terminate(), для тех кто понимает).
Например, я хочу, чтобы курс по ходу пьесы сохранял сведения о прогрессе пользователя в LMS, чтобы выводить это значение в интерфейс LMS, а не только на счетчик на сайдбаре внутри самого курса.
Надеюсь, материал вам пригодится, и вы сможете сделать свои курсы красивее и удобнее.
В следующий раз мы будем издеваться над iSpring.
Каждое авторское средство склоняет на свою сторону простотой использования. Разработчик без какого-либо технического бекграунда может особо не напрягаясь склеить электронный курс и опубликовать его в LMS.
Но всё ли так гладко на самом деле? Что делать, когда кажущаяся простота разворачивается и стреляет вам в колено?
Давайте препарируем несколько популярных инструментов и посмотрим, какие неприятные сюрпризы поджидают наивных Instructional Designer-ов. Сеанс чёрной магии с последующим её разоблачением, так сказать.
Эта статья посвящается Articulate Rise.
Что это такое? Облачный сервис для разработки лонгридов. Вроде Тильды, только ориентированный на e-learning. Берёте контент, берёте готовые компоненты и в визуальном редакторе создаете веб-страницу. Добавляете электронные тесты и экспортируете в нужном вам формате (по нужному стандарту). Просто, быстро, интуитивно понятно. Изюм. Вот пример.
И в чем проблема, спросите вы?
Что ж, господа. Присаживайтесь…
Как убить титульную страницу
Начнём с простого. Вот, поставьте себя на место пользователя. Идёте вы по LMS, нашли в каталоге курс, посмотрели, полюбовались картинкой на баннере, почитали описание. Поняли: хочу! Жмёте «Начать». И вместо того, чтобы сразу получить всё самое вкусное, вам предлагают ещё раз посмотреть на баннер, почитать описание и нажать «Начать». Неприятно? Меня, вот, бесит. Причём, создатели тулзы не догадались сделать в интерфейсе разработчика чекбокс «убрать титульную страницу».
Итак, первый костыль
- Экспортируем курс.
- Открываем файл scormdriver/indexAPI.html
- Находим переменную strContentLocation. Это URL первой страницы, которая будет показана пользователю. По дефолту значение
scormcontent/index.html#/preview/
Чтобы пользователь переходил сразу к «вкусному», после хеша нужно прописать идентификатор урока.
Как его узнать? Просто открываем scormcontent/index.html в браузере переходим к первому уроку и копируем значение из урла. Всё что после хеша. Должно получиться что-то типа:
scormcontent/index.html#/lessons/rri34kKfn2348234
Как исправить контент в курсе без доступа авторскому средству
Ситуация. Подписка закончилась, исходники не расшарены, а уже экспортированный курс срочно нужно исправить. Бывает такое? Иногда, увы, бывает.
Костыль
- Экспортируем курс
- Открываем scormcontent/index.html, находим переменную courseData. Она содержит все данные курса в base64.
- Декодируем (например с помощью notepad++) и получаем уже читаемый и редактируемый JSON. С ним можно делать всякие упражнения. Я например сшивал несколько райзовских курсов в один, просто добавляя значения в массив lessons.
- Перед сохранением кодируем строку courseData назад в base64.
- Справедливости ради стоит заметить, что исправить можно не все данные. Так, например, перед рендерингом страницы Райз проверяет и изменяет гиперссылки. Об этом мы поговорим ниже.
Встраиваем веб-страницы
Райз позволяет встроить в курс фрейм и показывать в нем веб-страницы. Проблема в том, что это может быть либо курс собранный в Storyline (другое авторское средство от той же компании), либо сайт, доступный по абсолютному URL. А вот возможность положить веб-страницу в пакет с курсом и сослаться на неё относительно index.html нет. Более того, если вы попытаетесь прописать абсолютную ссылку, экспортировать курс, а затем поменять её на относительную, как описано выше, ничего не выйдет. Райз проверит URL перед рендерингом страницы и если в нем не будет подстроки «://» просто тихонько загнётся.
Костыль
- Добавляем на страницу объект из Storyline
- Узнаем его id. Либо методом научного тыка, либо через courseData.
- Экспортируем курс. Находим в scormcontent/assets папку с соответствующим id.
- Заменяем содержимое папки. Свою страницу сохраняем как story.html
Удаляем название курса из темы письма при переходе по ссылке mailto
Когда я впервые с этим столкнулся, я начал курить. Создатели Райза почему-то решили, что пользователь будет в восторге, если к ссылкам начинающимся на mailto без спроса добавлять сабжект с названием курса. Естественно, опции, которая это запрещает в интерфейсе нет.
Костыль
- Экспортируем курс. Открываем scormcontent/lib/main.bundle.js.
- Находим во всем этом месиве подстроку
(w="mailto:".concat(E,"?subject=")).call(w,o)
- Меняем на
(w="mailto:".concat(E,"")).call(w,"")
Заставляем Райз отдавать в LMS больше скормовых данных и делать это лучше
Да, я до сих пор работаю по SCORM 2004 4th edition. Более того, мне нравится этот стандарт. Но мне не нравится, как его трактуют создатели некоторых авторских средств. Райз, например, отправляет в LMS жалкую кучку переменных, причем делает это исключительно перед разрывом сессии (один единственный Commit() перед Terminate(), для тех кто понимает).
Например, я хочу, чтобы курс по ходу пьесы сохранял сведения о прогрессе пользователя в LMS, чтобы выводить это значение в интерфейс LMS, а не только на счетчик на сайдбаре внутри самого курса.
Костыль
- Экспортируем курс
- Открываем scormcontent/index.html
- Добавляем в массив stuffToPick значения:
stuffToPick = [ ..., "CommitData", "GetProgressPeasure", "SetProgressMeasure" ]
- Объект root.Runtime дополняем методами:
root.Runtime= { ... commitData: LMSProxy.CommitData, getProgressMeasure: LMSProxy.GetProgressMeasure, setProgressMeasure: LMSProxy.SetProgressMeasure }
- Дописываем функцию setCourseProgress:
setCourseProgress(courseProgress) { … var lastProgress = root.Runtime.getProgressMeasure(); if (lastProgress < progress.p/100) { root.Runtime.setProgressMeasure(progress.p/100); root.Runtime.commitData(); } }
- В качестве бонуса, можно заставить курс коммитить почаще для профилактики «застревания» данных при разрыве сессии. Для этого добавляем root.Runtime.commitData(); в конфе функций completeOut, и reportAnswer.
Надеюсь, материал вам пригодится, и вы сможете сделать свои курсы красивее и удобнее.
В следующий раз мы будем издеваться над iSpring.