Getcourse scripts
May 11, 2023
Оформить модуль, в котором уроки недоступны + вывести дату выхода первого урока. JS код для списка тренингов в getcourse
/**
* Script Name: Добавить класс модулю, в котором уроки недоступны + вывести дату выхода первого урока. JS код для списка тренингов в getcourse
* Version: 1.0
* Author: Максим Калмыков
* Url: https://t.me/getcomponent
*/
$(function () {
// Название класса для модуля в котором недоступные уроки
const notReachedClassName = 'not_reached';
// Получить модули
const modules = $('.stream-table > tbody > tr');
if (modules.length === 0) return;
modules.each(function (_, tr) {
const link = $(tr).find('a').attr("href");
$.get(link, function (data) {
const pageDom = $('<div></div>').html(data);
const lessons = pageDom.find('.lesson-list li:not(.lesson-is-hidden)');
// Вывести дату первого урока
showFirstLessonStart(lessons, tr);
// Присвоить класс модулю, если нет доступных уроков внутри
checkLessonsNotReached(lessons, tr);
});
});
function checkLessonsNotReached(lessons, tr) {
if (lessons.length === 0) return;
let isNotReached = true;
for (let i = 0; i < lessons.length; i++) {
if (!$(lessons[i]).hasClass("user-state-not_reached")) {
isNotReached = false;
break;
}
}
if (isNotReached) {
$(tr).addClass(notReachedClassName)
}
}
function showFirstLessonStart(lessons, tr) {
const dateStartEl = lessons.eq(0).find('.has-start-at');
if (dateStartEl.length === 0) return;
$(tr).find('a').prepend(dateStartEl);
}
})*JS код вставлять в javascript блок или подключать через тему
*Данная версия скрипта(v 1.0) проверяет список уроков только на первом уровне вложенности (т.е. подмодули модуля скрипт не проверяет).
- Присвоился класс для модулей, в которых уроки недоступны
- Добавлена дата выхода первого урока в списке (ищется именно первый урок в списке и в нем элемент даты)
Можно использовать добавленный класс not_reached чтобы обратиться к этим модулям для стилизации
Простой пример CSS кода для списка модулей
.xdget-trainingList .stream-table,
.xdget-trainingList .stream-table tbody,
.xdget-trainingList .stream-table tr,
.xdget-trainingList .stream-table tr td {
display: block;
margin: 0;
}
.xdget-trainingList .stream-table tr {
margin-bottom: 10px;
border: 1px solid #cccccc;
border-radius: 10px;
}
.xdget-trainingList .stream-table tr.not_reached {
opacity: 0.6;
background-color: #f7f7f7;
}
.xdget-trainingList .stream-table tr td {
height: auto;
padding: 0;
}
.xdget-trainingList .stream-table tr td:hover {
background-color: transparent;
}
.xdget-trainingList .stream-table tr a {
padding: 10px 10px 10px 20px;
}
.xdget-trainingList .stream-table tr.not_reached a {
cursor: default;
}
.xdget-trainingList .stream-table tr .has-start-at {
font-size: 12px;
}
.xdget-trainingList .stream-table a>div>b {
display: none;
}Телеграм-канал: https://t.me/getcomponent