Sorryops

Skip the half of the fun!

目前為 2024-04-10 提交的版本,檢視 最新版本

// ==UserScript==
// @name         Sorryops
// @namespace    sorryops
// @version      20240410.2
// @description  Skip the half of the fun!
// @icon         https://orioks.miet.ru/favicon.ico
// @author       electromagneticcyclone & angelbeautifull
// @license      Unlicense
// @supportURL   https://git.disroot.org/electromagneticcyclone/sorryops
// @match        https://orioks.miet.ru/student/student/test*
// @grant        GM_getValue
// @grant        GM_setValue
// @run-at       document-start
// ==/UserScript==

window.addEventListener('load', actionFunction);

// https://stackoverflow.com/a/15710692
function hashCode(s) {
  return s.split("").reduce(function(a, b) {
    a = ((a << 5) - a) + b.charCodeAt(0);
    return a & a;
  }, 0);
}

function actionFunction() {
    var i;
    var objects = new Object();
    var boxes = document.getElementsByTagName('input');
    var form = document.getElementById('testform-answer');
    for (i = 0; i < boxes.length; i++) {
        if (boxes[i].type === 'checkbox' | boxes[i].type === 'radio') {
            var span = document.createElement('span');
            span.innerHTML =
              boxes[i].type === 'radio' && boxes[i].value == "1"
                ? "<b>" + boxes[i].value + ")</b> "
                : boxes[i].value + ") ";
            boxes[i].parentNode.insertBefore(span, boxes[i]);
            objects[boxes[i].value] = boxes[i].parentNode;
        }
    }
    const sorted_objects = Object.keys(objects).sort().reduce(
        (obj, key) => {
            obj[key] = objects[key];
            return obj;
        }, {}
    );
    for (var key in sorted_objects) {
        sorted_objects[key].remove();
        form.appendChild(sorted_objects[key]);
    }
    var variant = document.getElementById('w0').parentNode.textContent;
    variant = variant.slice(variant.indexOf("Вопрос:"));
    var pboxes = document.getElementsByTagName('p');
    for (i = 0; i < pboxes.length; i++) {
        var pbox = pboxes[i];
        if (pbox.textContent == "Вопрос:") {
            pbox.innerHTML = "<i>(Вариант " + hashCode(variant) + ")</i><br>" + pbox.textContent;
            break;
        }
    }
}