asimut-user-variables
v1.0.0
Published
Скрипт для персоналізації курсів Articulate Rise даними користувача з LMS Collaborator через SCORM API.
Maintainers
Readme
User Variables
Я створив цей скрипт для персоналізації курсів Articulate Rise даними користувача з LMS Collaborator. Він підставляє значення в текстові маркери %user_...%, замінює фото та надає дані через window.UserVariables.data.
Перший npm-випуск готую під назвою asimut-user-variables, версія 1.0.0. Перед підключенням переконайтеся, що пакет опубліковано, а команда LMS Collaborator встановила й погодила його використання на вашому порталі.
Звідки надходять дані
LMS Collaborator передає інформацію про поточного користувача через cmi.core.student_info. Це описано в базі знань Collaborator. Для інших LMS сумісність потрібно перевіряти окремо.
Скрипт шукає об’єкт API або API_1484_11 у поточному вікні та доступних батьківських вікнах, а потім використовує LMSGetValue або GetValue. Він читає cmi.core.student_info, за відсутності даних — cmi.suspend_data, а далі використовує cmi.core.student_name як запасний варіант.
Набір полів залежить від реалізації LMS і вмісту отриманого об’єкта. Скрипт не створює відсутні email, стать чи ініціали. Наявність методу GetValue не гарантує сумісності всіх використаних назв полів із будь-якою LMS або версією SCORM. Це потрібно перевірити у провайдера.
Скрипт не виконує HTTP-запитів до API профілю. Під час підставляння фото браузер завантажує зображення з URL, отриманого від LMS, тому адресу зображення має дозволяти політика img-src. Поточна версія також виводить об’єкт даних користувача та URL фото в консоль браузера; цю поведінку початкового скрипту збережено, і провайдер має врахувати її під час перевірки. У самому npm-пакеті даних слухачів немає.
Встановлення та розміщення файлу провайдером
Після публікації пакета:
npm install --save-exact --ignore-scripts [email protected]Файл на диску:
node_modules/asimut-user-variables/selezen_v1.jsПровайдер має надати погоджений URL цього файлу для браузера. Саме встановлення через npm не налаштовує доступ до файлу через HTTP. Надавати доступ до всього node_modules не потрібно.
Підключення у SCORM
Якщо провайдер підтвердив доступність файлу на origin документа курсу за таким шляхом:
<script defer src="/node_modules/asimut-user-variables/selezen_v1.js"></script>Разом з окремим пакетом заміни тексту за статтю, після погодження обох файлів:
<script defer src="/node_modules/asimut-user-variables/selezen_v1.js"></script>
<script defer src="/node_modules/asimut-user-gender-replacer/selezen_v1.js"></script>Спочатку має завантажуватися User Variables. Зберігайте defer і порядок підключення; не додавайте async. Для заміни тексту за статтю також потрібна попередня конфігурація window.GenderReplacer.
Початковий / відраховується від origin документа курсу, зокрема всередині iframe, а не обов’язково від домену головної сторінки LMS. Використовуйте лише URL, підтверджені та перевірені в реальному SCORM-плеєрі. Доступ до SCORM API через батьківське вікно залежить від політики origin; нове посилання саме по собі не усуває обмежень iframe.
Старий і новий теги одного скрипту не повинні виконуватися одночасно.
Маркери в тексті
Наприклад, за наявності поля user_firstname або firstname маркер %user_firstname% замінюється його значенням. Для %user_email% потрібне user_email або email, для %user_gender% — user_gender або gender. Повна назва поля з префіксом user_ має пріоритет над короткою. Використовуйте маркери в нижньому регістрі.
Фото підставляється в img[alt="replace_user_img"] та підтримувані SVG-заглушки з першого доступного поля user_big_photo_thumb, big_photo_thumb, photo_thumb.
Скрипт відстежує зміни DOM, обробляє відкриті Shadow DOM і доступні iframe. Він призначений для браузера, використовує window, document і MutationObserver та не повинен виконуватися в Node.js/SSR. Додаткових залежностей npm і збирання немає.
Перевірка перед публікацією
npm run check
npm pack --dry-runДо npm-пакета включаю selezen_v1.js, package.json і README. Для публікації потрібні обліковий запис npm і права на назву пакета. Порядок переходу з jsDelivr описав у MIGRATION.md.
Умови використання
Окрему ліцензію до репозиторію поки не додав.
Автор: Oleh Selezen / Asimut.
