Sorryops

Skip the half of the fun!

当前为 2024-04-10 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Sorryops
  3. // @namespace sorryops
  4. // @version 20240410.2
  5. // @description Skip the half of the fun!
  6. // @icon https://orioks.miet.ru/favicon.ico
  7. // @author electromagneticcyclone & angelbeautifull
  8. // @license Unlicense
  9. // @supportURL https://git.disroot.org/electromagneticcyclone/sorryops
  10. // @match https://orioks.miet.ru/student/student/test*
  11. // @grant GM_getValue
  12. // @grant GM_setValue
  13. // @run-at document-start
  14. // ==/UserScript==
  15.  
  16. window.addEventListener('load', actionFunction);
  17.  
  18. // https://stackoverflow.com/a/15710692
  19. function hashCode(s) {
  20. return s.split("").reduce(function(a, b) {
  21. a = ((a << 5) - a) + b.charCodeAt(0);
  22. return a & a;
  23. }, 0);
  24. }
  25.  
  26. function actionFunction() {
  27. var i;
  28. var objects = new Object();
  29. var boxes = document.getElementsByTagName('input');
  30. var form = document.getElementById('testform-answer');
  31. for (i = 0; i < boxes.length; i++) {
  32. if (boxes[i].type === 'checkbox' | boxes[i].type === 'radio') {
  33. var span = document.createElement('span');
  34. span.innerHTML =
  35. boxes[i].type === 'radio' && boxes[i].value == "1"
  36. ? "<b>" + boxes[i].value + ")</b> "
  37. : boxes[i].value + ") ";
  38. boxes[i].parentNode.insertBefore(span, boxes[i]);
  39. objects[boxes[i].value] = boxes[i].parentNode;
  40. }
  41. }
  42. const sorted_objects = Object.keys(objects).sort().reduce(
  43. (obj, key) => {
  44. obj[key] = objects[key];
  45. return obj;
  46. }, {}
  47. );
  48. for (var key in sorted_objects) {
  49. sorted_objects[key].remove();
  50. form.appendChild(sorted_objects[key]);
  51. }
  52. var variant = document.getElementById('w0').parentNode.textContent;
  53. variant = variant.slice(variant.indexOf("Вопрос:"));
  54. var pboxes = document.getElementsByTagName('p');
  55. for (i = 0; i < pboxes.length; i++) {
  56. var pbox = pboxes[i];
  57. if (pbox.textContent == "Вопрос:") {
  58. pbox.innerHTML = "<i>(Вариант " + hashCode(variant) + ")</i><br>" + pbox.textContent;
  59. break;
  60. }
  61. }
  62. }