asimut-user-gender-replacer
v1.0.1
Published
Скрипт для заміни слів і фраз у курсах Articulate Rise в LMS Collaborator з урахуванням статі користувача.
Maintainers
Readme
User Gender Replacer
Я створив цей скрипт для адаптації тексту курсів Articulate Rise у LMS Collaborator з урахуванням статі користувача. Він замінює задані слова й фрази, знаходить блоки в DOM і відкритих Shadow DOM та обробляє текст, який додається динамічно.
Опублікував пакет [email protected]. Підключення через LMS Collaborator погоджую окремо: спочатку команда перевіряє та встановлює пакет, а після підтвердження адреси файлу я оновлюю курс. Для інших LMS сумісність потрібно перевіряти окремо.
Що робить скрипт
- Отримує вже доступні в поточному вікні дані з
window.UserVariables.data,window.UserVariables2.dataабоwindow.userData. - Визначає стать за полями
gender,sex,user_gender,userGender; за відсутності відповідного значення використовує евристики за ім’ям і текстом сторінки. - Якщо результат —
female, замінює налаштовані слова у вказаних блоках. За інших результатів заміни не виконуються. - Надає API у
window.GenderReplacer.
Скрипт не отримує профіль через API LMS, не витягує email чи ініціали й не надсилає дані мережевими запитами. Завантаження даних користувача забезпечує окрема інтеграція. Її має дозволяти політика LMS, і вона повинна надавати дані в тому самому вікні, де виконується скрипт.
Для отримання даних із LMS Collaborator використовую свій User Variables, який також опублікував у npm як [email protected]. Спочатку підключаю User Variables, потім Gender Replacer. Зберігаю defer без async і попередню конфігурацію замін.
Евристики визначення статі можуть помилятися; для передбачуваного результату інтеграція має передавати явно задане поле статі. Пакування в npm не змінює наявної поведінки.
Встановлення для провайдера LMS
Для встановлення опублікованої версії передаю команді Collaborator таку команду:
npm install --save-exact --ignore-scripts [email protected]Браузерний файл встановлюється до:
node_modules/asimut-user-gender-replacer/selezen_v1.jsЦе шлях на диску сервера. Провайдер має налаштувати доступ до цього файлу за дозволеним HTTPS URL і повідомити остаточний URL клієнтам. Саме встановлення npm-пакета не робить файл доступним у браузері. Надавати доступ до всього каталогу node_modules не потрібно.
Підключення у SCORM
Після підтвердження командою Collaborator саме цього URL на origin документа курсу використовую таке підключення:
<script defer src="/node_modules/asimut-user-gender-replacer/selezen_v1.js"></script>Початковий / означає корінь origin документа, у якому міститься цей тег. Якщо курс відкрито в iframe на іншому домені, шлях також визначається відносно цього домену. Тому адресу перевіряю всередині реального SCORM-плеєра.
Приклад конфігурації для нової інтеграції:
window.GenderReplacer = {
debug: false,
targetBlocks: ['YOUR_BLOCK_ID'],
genderReplacements: {
female: {
'готовий': 'готова',
'пройшов': 'пройшла'
}
}
};Конфігурацію задаю до запуску selezen_v1.js способом, дозволеним LMS; дозвіл на зовнішній файл не означає дозволу на довільний inline JavaScript. У наявному курсі зберігаю поточну конфігурацію та завантажувач даних користувача.
Скрипт призначений для браузера та використовує window, document, MutationObserver. Його не слід виконувати на сервері через Node.js або SSR. Збирання та додаткові залежності npm не потрібні.
Перевірка та публікація
Перед кожним випуском перевіряю синтаксис і склад npm-архіву:
npm run check
npm pack --dry-runДо npm-пакета включаю selezen_v1.js, package.json і цей README.
Публікація потребує входу в npm і прав на назву пакета. Порядок переходу з jsDelivr, погодження шляху з командою LMS Collaborator та оновлення курсів описав у MIGRATION.md.
Умови використання
Окрему ліцензію до репозиторію поки не додав.
Автор: Oleh Selezen / Asimut.
