Moodle AutoAttendance

Автоматически отмечает посещяемость в одноимённом элементе Moodle.

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         Moodle AutoAttendance
// @namespace    https://t.me/johannmosin
// @version      1.0.0
// @description  Автоматически отмечает посещяемость в одноимённом элементе Moodle.
// @author       Johann Mosin
// @match        https://edu.vsu.ru/mod/attendance/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    var intervalId = setInterval(function() {
        var submitButton = document.querySelector('input[type="submit"][value="Сохранить"].btn.btn-primary');

        if (submitButton) {
            var radioInput = document.querySelector('input[type="radio"].form-check-input[name="status"]');
            if (radioInput) {
                radioInput.click();
                submitButton.click();
                clearInterval(intervalId);
            }
        } else {
            var attendanceTd = Array.from(document.querySelectorAll('td')).find(td => td.textContent.includes("Отметить свое присутствие"));

            if (attendanceTd) {
                var attendanceLink = attendanceTd.querySelector('a');
                if (attendanceLink) {
                    window.location.href = attendanceLink.href;
                    clearInterval(intervalId);
                }
            } else {
                setTimeout(() => {
                    location.reload();
                }, 10000);
            }
        }
    }, 1000);
})();