Это экспериментальная версия JS API v0.1
JS API позволяет расширять функциональность кабинета учеников.
Размещать свой код можно в поле "Футер" в редакторе урока (в этом работать код будет только на странице урока) либо в футере курса (будет работать во всех уроках курса).
Обратите внимание: в футере размещается HTML, поэтому если у вас только JS код, его нужно обернуть в тег <script>.
Сам скрипт может быть написан в футере в <script></script> или загружен с вашего домена. Например, <script defer src="https://ваш.домен/путь/к/скрипту"></script>
Прежде чем использовать JS API, необходимо зарегистрировать плагин:
var api = cabinetAPI.registerPlugin();
api.on('ready', function() {
// данные ученика загружены и доступны через API
// информация о профиле и доступе
var profile = api.getStudentInfo();
console.log('E-mail ученика: ' + profile.email);
var access = api.getStudentAccess();
if(!access) {
// вы зашли как модератор
}
else {
console.log('Пройдено уроков: ' + access.confirmed)
}
});
api.on('lesson_passed', function(event) {
// ученик нажал кнопку "Урок пройден"
});
Объект api представляет собой коллекцию методов. Часть методов доступна сразу после выполнения функции registerPlugin, а часть — только после события "ready".
Методы в api:
getCurrentDate
[доступно: сразу]Возвращает метку серверного времени (в мс от 01.01.1970) на момент загрузки страницы учеником. Серверное время — UTC+3.
getCourseId
[доступно: сразу]Возвращает внутренний id курса.
getLessonId
[доступно: сразу]Возвращает внутренний id урока
getLessonNum
[доступно сразу]Возвращает порядковый номер урока (или 0, если текущая страница не является уроком)
getStudentId
[доступно сразу]Возвращает id ученика в системе
getStudentEmail
[доступно сразу]Возвращает email ученика
getCurrentDateLo
[доступно после события ready]Возвращает объект LoDate для текущей серверной даты (она же возвращается в getCurrentDate). Объект LoDate удобно использовать для вывода времени в московском часовом поясе независимо от того, какой часовой пояс у ученика.
Как использовать LoDate >>
getStudentAccess
[доступно после события ready] Возвращает объект с доступом ученика к текущему курсу.Содержит следующие поля:
- class: Number — номер потока (если используется в курсе)
- progress: Number — номер последнего пройденного урока по мнению ученика (только для пошаговых курсов)
- confirmed: Number — номер пройденного урока, подтвержденный модератором (только для пошаговых курсов с ручным открытием доступа)
- confirmedDate: Number — метка времени последнего подтвержденного урока (confirmed)
- cmpl: Boolean — флаг, пройден ли курс или нет.
- isOn: Boolean — есть ли доступ ученика к этому курсу
- fails: Number — количество прогулов (для марафона)
- score: Array — очки ученика за курс. Представляет собой массив чисел. Индекс — номер урока. Значение — 0 или null — неизвестно, -1 = прогул, 1 = требуется переделать задание, 5 = задание сдано, урока пройден.
- expires: Number — метка времени, когда доступ к курсу заканчивается
- frozen: Boolean — флаг, заморожен ли доступ к текущему курсу
- freezeDate: ISODate — дата включения заморозки
- freezeLen: Number — количество дней, на которое включена заморозка
- cert: String — id выданного сертификата, если выдан.
getStudentInfo
[доступно после события ready] Возвращает объект с информацией об ученике.Содержит следующие поля:
- username: String — имя пользователя
- email: String
- phone: String
- net_profiles: Array[String] — массив ссылок на профили соцсетей (заполняется учеником самостоятельно на странице Профиль)
- city: String — город, заполняется учеником на стр. Профиль
- timezone: String — часовой пояс ученика, заполняется учеником на стр. Профиль
- hash: String — секретный ключ ученика для различных действий в письмах (в частности, для автологина)
- last_access: ISODate — дата последнего посещения кабинета курсов.
- last_ip: String — последний IP-адрес ученика
- subscribedOnComments: Boolean — подписан ли на уведомления о новых комментариях
- subscribedOnAuthorMails: Boolean — подписан ли на рассылку автора (включая любую серию писем в курсах)
События
— on (подписка на события)
— emit (генерация события)
Использование:
api.on('myevent', function(event, data) {
// event = "myevent"
// data = { a: 1, b: 2 }
})
api.emit('myevent', { a: 1, b: 2 })
Доступные системные события:
- lesson_passed — когда ученик нажимает на кнопку "Урок пройден". Второй аргумент не передается.
LoDate
LoDate — инструмент для работы с датой, не зависящий от часового пояса.
Конструктор LoDate доступен непосредственно из api.
api.LoDate
Далее вместо api.LoDate будем писать просто LoDate.
Создание объект:
var d = new LoDate( src ) — создать на основе src,
где src может быть:
- new Date()
- строкой ISODate
- меткой времени (числом миллисекунд с 01.01.1970)
- объектом LoDate
- строкой в формате DD.MM.YYYY HH:mm:ss
Создание на основе человеко-читаемого представления:
var d = new LoDate();
d.human( "20.09.2017" )
или d.human("20.09.2017 17:43")
Форматирование:
human()
вывод в виде ДД.ММ.ГГГГ ЧЧ:мм:ссhumanDate()
вывод в виде ДД.ММ.ГГГГhumanTime()
вывод в виде ЧЧ:мм:ссformat(String)
вывод в заданном формате. D — день, M — месяц, Y — год, h — часы, m — минуты, s — секунды, ms — миллисекунды.
Например: LoDate().format("дата D.M.Y, время h:m")- year, month, day, hour, minute, second — функции для вывода отдельных компонент.