La Copiada

Copiadas

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да инсталирате разширение, като например Tampermonkey .

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name        La Copiada
// @namespace   https://moodle.upm.es
// @description Copiadas
// @include     https://moodle.upm.es/*
// @version     2
// @grant       none
// ==/UserScript==


if (window.location.href.indexOf("https://moodle.upm.es/titulaciones/oficiales/mod/quiz/review.php") != -1)
{  
  var shareIt = [];

  for (var i = 1; i <= 10; i++) {
    try {
       
    var question = document.getElementById("q" + i);
    var text = question.getElementsByClassName("qtext")[0].textContent;
    var answer = question.getElementsByClassName("correct");
    
    if (answer.length === 0) {
      answer = question.getElementsByClassName("incorrect")[0].classList[0];
      
      if (answer == 'r0') {
        answer = 'r1';        
      } else {
        answer = 'r0';
      }
    }
    

    var o = {};
    o.text = text;
    o.answer = answer;

    shareIt.push(o);
    }
    catch (ex)
    {
      console.log(ex);
      
      //var debug = document.getElementById("q" + i).getElementsByClassName("correct");
      //alert(ex + ' -> ' + i + ' == ' + debug.length + ' <> ' + debug[0]);
    }
  }  
  
  
  var div = document.createElement("div");
  div.setAttribute("style", ";margin-top: 50px;");
  div.innerHTML = "Copia y pega:<br/><br/>";
  div.innerHTML += "<textarea autofocus style='width:80%;height=100%;'>" + btoa(JSON.stringify(shareIt)) + "</textarea>";
  document.body.insertBefore(div,document.body.firstChild);
  
}
else if (window.location.href.indexOf("https://moodle.upm.es/titulaciones/oficiales/mod/quiz/attempt.php") != -1)
{
  var div = document.createElement("div");
  div.setAttribute("style", ";margin-top: 50px;padding-left:10px;");
  div.innerHTML = "Pegar aqui:<br/><br/>";
  div.innerHTML += "<textarea id='copypasta-tastes-good' style='width:80%;height=100%;'></textarea><br/>";
  
  var button = document.createElement("input");
  button.type = "button";
  button.value = "Evaluar";
  button.onclick = addSolution;
  
  div.appendChild(button);
  
  document.body.insertBefore(div,document.body.firstChild);
}

function recheckSolutions(solutions)
{
    var counter = 0;
    for (var i = 0; i < solutions.length; i++) {
      counter += applySolution(solutions[i].text, solutions[i].answer);
    }
  
  alert('Aplicando ' + counter + ' respuestas!');
  counter = 0;
}

function applySolution(text, solution)
{
  for (var i = 1; i <= 10; i++) {
    var question = document.getElementById("q" + i);
    var txt = question.getElementsByClassName("qtext")[0].textContent;

    if (txt != text) continue;
    
    var node = question.getElementsByClassName(solution);
    
    if (node.length > 0) {
      node[0].firstChild.setAttribute("checked", "true");
      return 1;
    }
    return 0;    
  }
  
  return 0;
}


function addSolution()
{
  var area = document.getElementById("copypasta-tastes-good");
  var list = JSON.parse(atob(area.value)); 
  
  recheckSolutions(list);
  
  area.value = "";
}