Skip to content

Instantly share code, notes, and snippets.

@fabiomadge
Last active August 28, 2016 21:04
Show Gist options
  • Save fabiomadge/57bca97dd5f13b2db590 to your computer and use it in GitHub Desktop.
Save fabiomadge/57bca97dd5f13b2db590 to your computer and use it in GitHub Desktop.
Automatically sign up for a TUMonline course. There is another version, but this seams to be the good one. I don't remember.
function startSignup(){
//extract necessary data from dom
if(document.getElementById("autoSignupFrame") != null){
alert("The script is already running. Please reload and try again to change something.");
return;
}
var firstGroup = document.getElementsByClassName("list")[0].getElementsByClassName("z1")[0].getElementsByTagName("td")[0].getElementsByTagName("a")[0].innerHTML;
var gruppe = window.prompt("Gruppe", firstGroup);
function sameName(elem){
return elem.innerHTML.toLowerCase().trim() == gruppe.toLowerCase().trim();
}
var gTag = Array.prototype.slice.call(document.getElementsByTagName("a")).filter(sameName)[0];
if (gTag == undefined){
alert("This doesn't look like a vaild name");
return;
}
var tr = gTag.parentNode.parentNode;
//later needed to fill out the form
function isGrpNr(elem){
return elem.name == "cststudnr";
}
var pLVGrpNr = Array.prototype.slice.call(tr.getElementsByTagName("input")).filter(isGrpNr)[0].value.split("/")[0];
function isStartingTime(elem){
return (elem.getAttribute("headers") == "hdrANM hdrANMVON");
}
var startingString = Array.prototype.slice.call(tr.getElementsByClassName("C")).filter(isStartingTime)[0].innerHTML;
var splitString = startingString.split(',');
var timeFragments = splitString[1].split(':').map(function(a){return parseInt(a);});
var dateFragments = splitString[0].split('.').map(function(a){return parseInt(a);});
var startingTime = new Date(2000 + dateFragments[2], dateFragments[1] - 1, dateFragments[0], timeFragments[0], timeFragments[1]);
//draw time ui
if(startingTime < new Date()){
alert("Sorry, but this script can't make you travel back in time. Yet...");
return;
}
var div = document.createElement('div');
document.body.appendChild(div);
div.id = "autoSignupFrame";
div.style.width = "240px";
div.style.height = "78px";
div.style.padding = "30px";
div.style.border = "2px solid #a1a1a1";
div.style.borderRadius = "20px";
div.style.backgroundColor = "white";
div.style.fontSize = "20px";
div.style.color = "black";
div.style.top = "0";
div.style.bottom = "0";
div.style.left = "0";
div.style.right = "0";
div.style.margin = "auto";
div.style.position = "absolute";
div.style.textAlign = "center"
div.style.fontFamily = ["Helvetica Neue", "Helvetica", "Arial"];
div.innerText = "Milliseconds to start time:";
var timeleft = document.createElement('div');
div.appendChild(timeleft);
timeleft.style.marginTop = "10px"
timeleft.style.fontSize = "40px";
timeleft.style.color = "#a1a1a1";
timeleft.innerText = "4000";
timeLoop();
//actual form sending
function done(){
with (document.forms[0]){
//??
pLVGrpProfNr.value = "";
pPHOrgNr.value = "";
pPHOrgName.value = "";
pPHOrgKennung.value = "";
cgrpnr.value=pLVGrpNr;
csave.value="J";
submit();
};
}
function timeLoop(){
var now = new Date();
if (now > startingTime) return done();
timeleft.innerText = (startingTime - now).toString();
now = new Date();
window.setTimeout(timeLoop, 1000 - now.getMilliseconds());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment