From 6b673bcb11c01dec2406080d8fe2cba2f3a4ff5f Mon Sep 17 00:00:00 2001 From: Nathanael Sensfelder Date: Fri, 27 May 2016 07:01:48 -0700 Subject: Adds website side stuff. --- calendar.css | 62 ++++++++++++++++ calendar.js | 226 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ get.php | 74 +++++++++++++++++++ index.ssi | 134 +++++++++++++++++++++++++++++++++++ 4 files changed, 496 insertions(+) create mode 100644 calendar.css create mode 100644 calendar.js create mode 100644 get.php create mode 100644 index.ssi diff --git a/calendar.css b/calendar.css new file mode 100644 index 0000000..9d21d49 --- /dev/null +++ b/calendar.css @@ -0,0 +1,62 @@ +#classes td +{ + padding-right: 1.5em; +/* text-align:center; */ +} + +#classes .class_id +{ + font-weight:bold; +} +.message a, +.message a:visited +.message a:hover +{ + color: #066; +} + +.message table +{ + margin-bottom: 1em; +} + +.message hr +{ + margin-top: 1.2em; + margin-top: 1.2em; +} + +.message h3 +{ + margin-top: 1em; +} + +.message h2 +{ + margin-top: 0.5em; + margin-bottom: 0.5em; + font-size: 1.3em; + margin-left: -1.3em; +} + +span.positive +{ + color: #070; +} + +span.negative +{ + color: #700; +} + +.message h1.important +{ + color: #B72929; + margin-bottom: 1em; +} + +#url_sources +{ + margin-top: 1em; + margin-bottom: 1EM; +} diff --git a/calendar.js b/calendar.js new file mode 100644 index 0000000..7945900 --- /dev/null +++ b/calendar.js @@ -0,0 +1,226 @@ +var mas = mas || new Object(); +mas.calendar = new Object(); +mas.calendar.private = new Object(); +mas.calendar.private.curriculum_groups_file = new Array(); +mas.calendar.private.curriculum_classes_file = new Array(); +mas.calendar.private.groups_url_sources = null; + +mas.calendar.curriculums = null; +mas.calendar.groups = null; +mas.calendar.classes = null; +mas.calendar.output_url = null; +mas.calendar.qrcode = null; +mas.calendar.url_sources = null; + +mas.calendar.private.add_curriculum = +function (id, fullname, groups, classes) +{ + var entry; + + if (fullname == "") + { + return; + } + + entry = ""; + + mas.calendar.curriculums.innerHTML = entry + mas.calendar.curriculums.innerHTML; + + mas.calendar.private.curriculum_groups_file[id] = groups; + mas.calendar.private.curriculum_classes_file[id] = classes; +}; + +mas.calendar.private.add_group = +function (data) +{ + var entry, i, url_sources; + + if (data[0] == "") + { + return; + } + + url_sources = new Array(); + + for (i = 3; i < data.length; i += 2) + { + url_sources.push(data[i]); + } + + mas.calendar.private.groups_url_sources[data[1]] = url_sources; + + entry = ""; + + mas.calendar.groups.innerHTML = entry + mas.calendar.groups.innerHTML; +}; + +mas.calendar.private.add_class = +function (fullname, id) +{ + var entry; + + if (fullname == "") + { + return; + } + + entry = + ( + "" + + id + + "" + + fullname + + "" + ); + + mas.calendar.classes.innerHTML = entry + mas.calendar.classes.innerHTML; +}; + +mas.calendar.private.load_curriculums = +function () +{ + var lines, i, val; + + lines = this.responseText.split('\n'); + + for (i = lines.length; i --> 0;) + { + val = lines[i].split("::"); + mas.calendar.private.add_curriculum(i, val[0], val[1], val[2]); + } + + mas.calendar.select_curriculum(); +}; + +mas.calendar.private.load_groups = +function () +{ + var lines, i, j, val; + + mas.calendar.groups.innerHTML = ""; + mas.calendar.private.groups_url_sources = new Array(); + + lines = this.responseText.split('\n'); + + for (i = lines.length; i --> 0;) + { + val = lines[i].split("::"); + mas.calendar.private.add_group(val); + } + + mas.calendar.select_group(); +}; + +mas.calendar.private.load_classes = +function () +{ + var lines, i, val; + + mas.calendar.classes.innerHTML = ""; + + lines = this.responseText.split('\n'); + + for (i = lines.length; i --> 0;) + { + val = lines[i].split("::"); + mas.calendar.private.add_class(val[0], val[2]); + } + + mas.calendar.generate_url(); +}; + +mas.calendar.private.get_file = +function (file, fun) +{ + var req + req = new XMLHttpRequest(); + + req.onload = fun; + + req.open("get", file, true); + req.send(); +}; + +mas.calendar.select_curriculum = +function () +{ + var fullname; + + fullname = mas.calendar.curriculums.value; + + mas.calendar.private.get_file + ( + ("data/" + mas.calendar.private.curriculum_groups_file[fullname]), + mas.calendar.private.load_groups + ); + + mas.calendar.private.get_file + ( + ("data/" + mas.calendar.private.curriculum_classes_file[fullname]), + mas.calendar.private.load_classes + ); +}; + +mas.calendar.select_group = +function () +{ + var data, i, result; + + mas.calendar.url_sources.innerHTML = ""; + + data = mas.calendar.private.groups_url_sources[mas.calendar.groups.value]; + result = ""; + + for (i = 0; i < data.length; ++i) + { + result += "
  • " + data[i] + "
  • "; + } + + mas.calendar.url_sources.innerHTML = result; +}; + +mas.calendar.populate = +function () +{ + mas.calendar.curriculums = document.getElementById("curriculums"); + mas.calendar.groups = document.getElementById("groups"); + mas.calendar.classes = document.getElementById("classes"); + mas.calendar.output_url = document.getElementById("output_url"); + mas.calendar.qrcode = document.getElementById("qrcode"); + mas.calendar.url_sources = document.getElementById("url_sources"); + + mas.calendar.private.get_file + ( + "data/CURRICULUMS", + mas.calendar.private.load_curriculums + ); +}; + +mas.calendar.generate_url = +function () +{ + var url, loc, i, classes; + + url = document.location.href.toString(); + loc = url.substring(0, (url.lastIndexOf("/") + 1)); + loc = loc + "get.php?g=" + mas.calendar.groups.value + "&m=unknown,"; + + classes = document.getElementsByName("classes"); + + for (i = classes.length; i --> 0;) + { + if (classes[i].checked) + { + loc = loc + classes[i].value + ","; + } + } + + loc = loc.substring(0, (loc.length - 1)); + + mas.calendar.qrcode.innerHTML= ""; + mas.calendar.output_url.setAttribute("value", loc); + jQuery('#qrcode').qrcode(loc); +}; diff --git a/get.php b/get.php new file mode 100644 index 0000000..d816573 --- /dev/null +++ b/get.php @@ -0,0 +1,74 @@ + diff --git a/index.ssi b/index.ssi new file mode 100644 index 0000000..2435328 --- /dev/null +++ b/index.ssi @@ -0,0 +1,134 @@ + + Calendar @ Multi-Agent Systems (.org) + + + + + + + +
    +
    +

    Warning

    +
    + This service is no longer available.
    + Feel free to download its + source code (available under the + "New BSD License") + and setup your own. +
    +
    +
    +
    +

    Personalized ICS Calendar

    + Version 1.7 (Last build on 2015/11/06): +
    +

    Step 1: Select a Curriculum

    + +

    Step 2: Select a Group

    + +

    Step 3: Select Class(es)

    + +
    +

    Result:

    + +
    +
    +
    +
    +
    +
    +

    Important

    +
    + Here is the list of URLs that are currently used to get information + for this group, please make sure it is complete: + + If you think an URL is missing, please + contact me. +
    + Also note that it might be because + an class you take belongs to another curriculum (i.e. this is not the + main curriculum for this class) that is also handled by this program, + you will have to get its events from the main curriculum + (e.g. those from M2RIT RIBDM who want the FAI class need + to also generate an URL for the M2IM curriculum, because + FAI events officially belong to the M2IM calendar). +
    + +
    +
    +

    Additional Information

    +
    + +
    + +
    +
    +

    Last log(s)

    +
    +
    +
    +
    +
    + + -- cgit v1.2.3-70-g09d2