// ==UserScript== // @name NZ HELP // @namespace http://tampermonkey.net/ // @version 1.3.3 // @description Additional functional for NZ // @author Danylo Tkachuk // @updateURL https://raw.githubusercontent.com/derogit/nz-help/main/script.user.js // @downloadUR https://raw.githubusercontent.com/derogit/nz-help/main/script.user.js // @match https://nz.ua/* // @icon https://www.google.com/s2/favicons?sz=64&domain=nz.ua // @grant none // @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js // ==/UserScript== (function () { "use strict"; $.noConflict(); // Preloader $("body").append( '
' ); // Styles $(".sidebar").width(40).addClass("collapsed"); $(".sidebar .logo").after(''); $(document).on("click", "#toggle_sidebar", function () { if ($(".sidebar").hasClass("collapsed")) { $(".sidebar").width(160).removeClass("collapsed"); } else { $(".sidebar").width(40).addClass("collapsed"); } }); $(".homework-row--header .homework__item:nth-child(3)").text("№"); $(".homework-row--header .homework__item:nth-child(4)").text("Дз"); $("head").append( ` ` ); function getUrlParameter(name) { // Створюємо регулярний вираз для пошуку параметра в URL name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]"); var regex = new RegExp("[\\?&]" + name + "=([^]*)"); // Виконуємо пошук у поточному URL var results = regex.exec(window.location.search); // Якщо параметр знайдено, повертаємо його значення, інакше - null return results === null ? null : decodeURIComponent(results[1].replace(/\+/g, " ")); } // Функція для роботи з кукі function setCookie(name, value, days) { var expires = ""; if (days) { var date = new Date(); date.setTime(date.getTime() + days * 24 * 60 * 60 * 1000); expires = "; expires=" + date.toUTCString(); } document.cookie = name + "=" + (value || "") + expires + "; path=/"; } function getCookie(name) { var nameEQ = name + "="; var ca = document.cookie.split(";"); for (var i = 0; i < ca.length; i++) { var c = ca[i]; while (c.charAt(0) == " ") c = c.substring(1, c.length); if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length); } return null; } const csrf_token = $('meta[name="csrf-token"]').attr("content"); const curren_journal_id = $('input[name="journal"]').val(); $(document).ready(function () { // Додаємо чекбокси в кожен елемент td, вибраний селектором if (getUrlParameter("journal") && !getUrlParameter("schedule")) { $("#journalList thead td.pt-point").each(function () { // Отримуємо поточне значення lesson-id із посилання всередині td var lessonId = $(this).find("a").attr("href").split("schedule=")[1]; // Створюємо чекбокс і додаємо його перед посиланням var checkbox = ``; $(this).prepend(checkbox); }); } // Додаємо кнопку-посилання "Видалити відмічені" в .journal-scores-panel__box $(".journal-scores-panel__box").append('X Видалити відзначені'); // Обробник кліка на кнопку-посилання "Видалити відмічені" $("#delete-selected").on("click", function (e) { e.preventDefault(); // запобігаємо переходу за посиланням // Збираємо всі відмічені чекбокси var selectedCheckboxes = $(".lesson-checkbox:checked"); if (selectedCheckboxes.length === 0) { alert("Будь ласка, виберіть хоча б один урок для видалення."); return; } // Показ прелоадера $("#preloader").show(); // Для кожного вибраного чекбокса відправляємо POST запит var totalRequests = selectedCheckboxes.length; var completedRequests = 0; selectedCheckboxes.each(function () { var scheduleId = $(this).data("schedule-id"); $.post("https://nz.ua/journal/delete-lesson", { schedule_id: scheduleId }) .done(function (response) { // Індикація успішного виконання completedRequests++; checkCompletion(); }) .fail(function (error) { // Індикація помилки alert("Помилка при видаленні уроку з ID " + scheduleId); completedRequests++; checkCompletion(); }); }); // Функція перевірки завершення всіх запитів function checkCompletion() { if (completedRequests === totalRequests) { // Приховуємо прелоадер $("#preloader").hide(); alert("Усі запити оброблено."); location.reload(); // Перезавантаження сторінки для оновлення даних } } }); }); // Додаємо кнопку в body if (getUrlParameter("journal") && getUrlParameter("schedule") == null) { $("body").append(''); } $("head").append(` `); let journalName = $(".journal-scores__title a").text(); $("#openScheduler").on("click", function () { // Завантажуємо дані для селектів (уроки та кабінети) через AJAX $.get(`https://nz.ua/journal/add-edit-lesson?journal=${curren_journal_id}`, function (data) { const buzzerOptions = $(data).find("#osvitaschedulereal-buzzer_id option"); const roomOptions = $(data).find("#osvitaschedulereal-room_id option"); // Створюємо форму з динамічно підвантаженими селектами $("body").append(`| Понеділок | |
| Вівторок | |
| Середа | |
| Четвер | |
| Пʼятниця |