Заметки технаря GetCourse
Ниже расположены готовые наработки для настройки платформы GetCourse, которые можно использовать в своих целях (если немного "допилить" под конкретную задачу).
Важно! Авторы наработок - разные люди (в том числе и я).
С уважением, Сергей
Содержание:
Что если нужно выполнить действие с пользователем на отдельной странице и перенаправить его по определенной ссылке?
Чтобы применить:
После блоков, в конце страницы вставить JS-код:
const refParam = url.match(/ref=([^&]+)/);
if (refParam && refParam[1] === 'link1') {
window.location.href = 'https://example.com/page1';
}
if (refParam && refParam[1] === 'link2') {
window.location.href = 'https://example.com/page2';
}
if (refParam && refParam[1] === 'link3') {
window.location.href = 'https://example.com/page3';
}
Если адресовать пользователя на эту страницу по ссылке вида:
https://example.com?ref=link3,
то после попадания на страницу, произойдет переадресация на адрес
https://example.com/page3
Т.к. мы перехватили метку, то вместо window.location.href мы можем использовать любое другое действие (например, передать в скрытое поле на странице), но это уже совсем другая история.
Может пригодиться, если в тренинге/подтренинге много стоп-уроков или пользователю нужно подсказать, на каком уроке он остановился.
Чтобы применить:
1) В настройках вида страницы занести код CSS:
display: block;
background: #fff;
color: #000;
font-weight: 400;
}
.current_lesson:before {
content: "\f28b";
font-family: 'FontAwesome';
position: relative;
margin-right: 8px;
}
a.current_lesson:focus, a.current_lesson:hover {
opacity: 0.8;
text-decoration: none;
}
2) В настройках вида страницы занести код JS:
var rows = $('.stream-table > tbody > tr:not(.noaccess-mode-show)');
var i = 0;
var checkRow = function () {
var row = rows.eq(i);
var link = row.find('a').attr('href');
$.get(link, function (data) {
var pageDom = $('
var lesson_for_target = pageDom.find('.lesson-list li.user-state-need_accomplish').first().find('.link.title');
if (lesson_for_target.length == 0) {
lesson_for_target = pageDom.find('.lesson-list li.user-state-has_mission:last-child').find('.link.title');
}
if (lesson_for_target.length > 0) {
var lesson_name = lesson_for_target.text().replace(/просмотрено/g, '').trim();
var chapter_name = row.find('.stream-title').text();
$('.my_lesson_last .current_lesson').attr('href', lesson_for_target.attr('href'));
$('.my_lesson_last .current_lesson_chapter').html('"' + chapter_name + '"');
$('.my_lesson_last .current_lesson_name').html('"' + lesson_name + '"');
return;
} else {
$('.my_lesson_last').hide();
return;
}
i++;
if (i < rows.length) {
checkRow();
}
});
}
checkRow();
});
По этой ссылке находится файл скрипта с комментариями.
3) В настройках вида страницы добавить блок "HTML" и добавить ему класс html-элемента my_lesson_last. Содержание блока HTML:
Может пригодиться, если в уроке не подразумевается задание, но нужно отметить действие пользователя в уроке, как будто он выполнил задание.
Чтобы применить:
В режиме редактирования урока, занести JS-код:
const link = window.location.href;
// Проверка на нахождение внутри урока
if (link.indexOf("teach/control/lesson/") === -1) return;
// Проверка на наличие блока с заданием (если находимся в веб-браузере)
if (link.indexOf("teach/control/lesson/view") !== -1 && $("#LessonAnswer_answer_text").length == 0) return;
// Проверка на наличие блока с вкладкой "Задание" (если находимся в приложении)
if (link.indexOf("teach/control/lesson/webview") !== -1 && $("nav.mode-selector a[data-mode='mission']").length == 0) return;
// ... если проверки пройдены
// Формируем параметры запроса
const dataPost = { "LessonAnswer[answer_text]": answerText, "send-answer": "" };
// Делаем запрос (Отправка ДЗ)
$.post(link, dataPost);
}
В режиме редактирования урока, на нужный элемент добавить произвольное действие в обработчике формы. Выбрать JS и добавить код: