diff --git a/eastereggs.json b/eastereggs.json new file mode 100644 index 0000000..75f241a --- /dev/null +++ b/eastereggs.json @@ -0,0 +1,68 @@ +[ + { + "easter" : "eekhoorn", + "name" : "Femke Heeling", + "type" : "student" + }, + { + "easter" : "chocoladebeer", + "name" : "Jerom Maat", + "text" : "Beer, malleman, \"420 blaze it\", geliefde en Albert Heijn medewerker", + "type" : "RIP" + }, + { + "easter" : "nietzsche", + "name" : "hTig", + "real_name" : "Harm Tiggelaar", + "text" : "Docent, groot filosoof en voorbeeld in haarstijl", + "type" : "RIP" + }, + { + "easter" : "kaas", + "name" : "Steven Smits", + "text" : "Mellow als kaas, gitarist en levensfilosoof", + "type" : "RIP" + }, + { + "easter" : "stoeptegel", + "name" : "Femke Hoornstra", + "text" : "Klein, schattig en schrijfster", + "type" : "RIP" + }, + { + "easter" : "die jongen met het coole haar", + "name" : "Jules Stenneker", + "type" : "student" + }, + { + "easter" : "god", + "name" : "David Francois", + "type" : "student" + }, + { + "easter" : "wobbes", + "name" : "Natascha Wobbes", + "type" : "RIP" + }, + { + "easter" : "huis tuin en keuken neger", + "name" : "Fimme Neeleman", + "text" : "Goeie huisman, vriend, gamer, geliefde en malleman", + "type" : "RIP" + }, + { + "easter" : "hahanna", + "name" : "Hanna van Rheenen", + "type" : "student" + }, + { + "easter" : "lala", + "name" : 21297, + "type" : "easter" + }, + { + "easter" : "aardappel", + "name" : "Sjors Mulder", + "type" : "student" + } +] diff --git a/lookup.js b/lookup.js index 239709b..48df397 100644 --- a/lookup.js +++ b/lookup.js @@ -1,6 +1,7 @@ //lookup.js var http = require('http'); var config = require('./configuration'); +var fs = require('fs'); var database = require('mongoskin').db('mongodb://' + config().database); var school_id = config().school_id; @@ -8,7 +9,11 @@ var school_id = config().school_id; //Function for looking through the database and finding entries related to the searchterm. function lookup(req, res, next, search) { var index = database.collection('index'); + easter(search) ? req.easter = easter(search) : null; + easter(search) ? search = easter(search).name : null; //Check if there are any eastereggs matching the search query. search = new RegExp(search, 'i'); //Make regular exeption for ignoring the case (Bram vs BRAM) should return the same. + + index.find({$or : [{id : search}, {name : search}, {first_name : search}, {last_name : search}]}).toArray(function (err, database_entry) { if (err) console.warn(err); @@ -22,6 +27,7 @@ function lookup(req, res, next, search) { } else { res.send('Multiple hits were found in the database.'); + console.log(database_entry); } }); } @@ -53,4 +59,21 @@ function make_url(req, database_entry) { return url; } +//Function for checking the given search query for eatereggs. +//TODO: add a way to supply a template file for eastereggs. +function easter(search) { + var list = JSON.parse(fs.readFileSync(__dirname + '/eastereggs.json')); + + for (entry of list) { + if (entry.easter == search.toLowerCase()) return entry; + } + + return null; +} + module.exports = lookup; + +//Testing function, if test is passed in the command line will execute a test. +if (process.argv[2] == "test") { + console.log(easter('aardappel')); +} diff --git a/resources/jade/header.jade b/resources/jade/header.jade index 2964c8f..5f77f64 100644 --- a/resources/jade/header.jade +++ b/resources/jade/header.jade @@ -1,9 +1,14 @@ html - head + head(profile="http://a9.com/-/spec/opensearch/1.1/") title Werkmanrooster + meta(name='viewport', content='width=device-width, user-scalable=no') + meta(name="Description", content="De beste roostersite voor de leerlingen van Werkman Stadslyceum!") + + link(rel="search" type="application/opensearchdescription+xml" href="/resources/opensearch.xml" title="Rooster zoeken") link(rel="stylesheet", href="/css/skeleton.css", type="text/css") link(rel="stylesheet", href="/css/style.css", type="text/css") - meta(name='viewport', content='width=device-width, user-scalable=no') + + script(type="text/javascript", src="http://code.jquery.com/jquery-1.11.3.min.js") script(type="text/javascript", src="/js/script.js") script(type="text/javascript"). diff --git a/resources/jade/schedule.jade b/resources/jade/schedule.jade index abd3429..0b097b2 100644 --- a/resources/jade/schedule.jade +++ b/resources/jade/schedule.jade @@ -3,33 +3,39 @@ include header include search -- var days = ['Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag', 'Zondag']; -div#wrapper - div.schedule - ul - each type in match.json.types - li - span=type.letter - a(href='?tab=' + type.tab)=type.value - each day in match.json - div.day - div.hour.title - span= days[match.json.indexOf(day)] - each hour in day - if hour.teacher != 'vrij' - div.hour(class=hour.changed == 'true' ? 'changed' : '') - each subhour in hour.teacher - span.teacher(class='sub_' + hour.teacher.length) - a(href=hour.teacher[hour.teacher.indexOf(subhour)])= hour.teacher[hour.teacher.indexOf(subhour)] - span.chamber(class='sub_' + hour.teacher.length) - a(href=hour.chamber[hour.teacher.indexOf(subhour)])= hour.chamber[hour.teacher.indexOf(subhour)] - span.course(class='sub_' + hour.teacher.length)= hour.course[hour.teacher.indexOf(subhour)] - - if match.json.indexOf(day) == 0 - span.time= times[match.json[0].indexOf(hour)] - - else - div.hour.changed - span.free Vrij - +if !easter || easter.type != "RIP" + - var days = ['Maandag', 'Dinsdag', 'Woensdag', 'Donderdag', 'Vrijdag', 'Zaterdag', 'Zondag']; + #wrapper + .schedule + ul + each type in match.json.types + li + span=type.letter + a(href='?tab=' + type.tab)=type.value + each day in match.json + .day + .hour.title + span= days[match.json.indexOf(day)] + each hour in day + if hour.teacher != 'vrij' + .hour(class=hour.changed == 'true' ? 'changed' : '') + each subhour in hour.teacher + span.teacher(class='sub_' + hour.teacher.length) + a(href=hour.teacher[hour.teacher.indexOf(subhour)])= hour.teacher[hour.teacher.indexOf(subhour)] + span.chamber(class='sub_' + hour.teacher.length) + a(href=hour.chamber[hour.teacher.indexOf(subhour)])= hour.chamber[hour.teacher.indexOf(subhour)] + span.course(class='sub_' + hour.teacher.length)= hour.course[hour.teacher.indexOf(subhour)] + + if match.json.indexOf(day) == 0 + span.time= times[match.json[0].indexOf(hour)] + + else + .hour.changed + span.free Vrij +else + .schedule.rip + h1 R.I.P + p="Hier ligt " + (easter.real_name || easter.name) + p=easter.text + p Voor altijd in ons hart include links diff --git a/resources/js/script.js b/resources/js/script.js index 109f348..026594e 100644 --- a/resources/js/script.js +++ b/resources/js/script.js @@ -13,7 +13,7 @@ $(document).ready(function () { function go() { - var searchterm = $('.search').val().trim(); + var searchterm = $('.search').val().trim().replace(/\'s Rooster/gi, ''); if (!!searchterm) { document.location.pathname = '/rooster/' + searchterm; } diff --git a/resources/less/mobile.less b/resources/less/mobile.less index 75d6011..55846a8 100644 --- a/resources/less/mobile.less +++ b/resources/less/mobile.less @@ -1,13 +1,12 @@ //mobile.less -/* Larger than mobile */ -/* Larger than phablet */ -@media (max-width: 550px) {} - -/* Larger than tablet */ @media (max-width: 755px) { #title { font-size: 40px !important; + + span { + display: none !important; + } } input, button { diff --git a/resources/less/style.less b/resources/less/style.less index 4c556b9..788bb60 100644 --- a/resources/less/style.less +++ b/resources/less/style.less @@ -58,6 +58,11 @@ div.schedule { border: solid 1px #e1e1e1; font-family: Open Sans; + &.rip { + text-align: center; + border: none; + } + ul { margin: 0; padding: 0; diff --git a/resources/other/opensearch.xml b/resources/other/opensearch.xml new file mode 100644 index 0000000..ff9ac01 --- /dev/null +++ b/resources/other/opensearch.xml @@ -0,0 +1,20 @@ + + + rooster + rooster zoeken + De beste roostersite voor leerlingen van Werkman Stadslyceum + UTF-8 + UTF-8 + false + nl-NL + Bram van der Veen + werkmanrooster@gmail.com + De beste roostersite voor leerlingen van Werkman Stadslyceum + werkman rooster werkmanrooster leerlingen groningen stadslyceum bram van der veen + Werkmanrooster zoeken op, http://werkmanrooster.nl/ + open + + diff --git a/web.js b/web.js index 19087f5..ab0626f 100644 --- a/web.js +++ b/web.js @@ -12,6 +12,7 @@ app.disable('view cache'); app.set('views', __dirname + '/resources/jade'); app.use('/css', less(__dirname + '/resources/less')); app.use('/js', express.static(__dirname + '/resources/js')); +app.use('/other', express.static(__dirname + '/resources/other')); app.get('/', function (req, res) { req.links = config().links;