From be0c922fccdaba96cb7dab391f03208745dc01d9 Mon Sep 17 00:00:00 2001 From: Benjamin Kiessling Date: Thu, 17 Nov 2011 23:52:43 +0100 Subject: Refactor code, update files dynamically, reading event file --- frontend.js | 80 ++++++++++++++++++++++++++++++++++--------------------------- 1 file changed, 45 insertions(+), 35 deletions(-) (limited to 'frontend.js') diff --git a/frontend.js b/frontend.js index 5b2d486..0dba5b4 100644 --- a/frontend.js +++ b/frontend.js @@ -1,10 +1,6 @@ -var Connect = require('connect'); -var http = require('http'); -var url = require('url'); var path = require('path'); var fs = require('fs'); -var configuration; var model; exports.setModel = function(m) { @@ -12,37 +8,51 @@ exports.setModel = function(m) { }; exports.start = function(config) { - configuration = config; - Connect.createServer( - Connect.logger(), // Log responses to the terminal using Common Log Format. - Connect.responseTime(), // Add a special header with timing information. - Connect.staticCache(), - Connect.static(path.join(__dirname, configuration.dir)), - function(req, res) { - var purl = url.parse(req.url, true); - var slideset = 'default'; - if(purl['query'].hasOwnProperty('slides')) { - slideset = purl['query']['slides']; - } - model.getSlides(slideset, function(slides) { - fs.readFile(path.join(__dirname, configuration.dir, slides['template']) , function(err,data) { - if(err) { res.end(body); } - var body = data.toString(); - var slideStr = ''; - for(var slide in slides['slides']) { - if(!slides['slides'].hasOwnProperty(slide)) { continue; } - if(slides['slides'][slide]['type'] === 'image') { - slideStr = slideStr +'
  • '; - } - if(slides['slides'][slide]['text'].length > 0) { - slideStr = slideStr+'

    '+slides['slides'][slide]['head']+' - '+slides['slides'][slide]['text']+'

  • '; - } + config.app.get('/slides/:id', function(req, res) { + var slideset; + slideset = req.params.id; + model.getSlides(slideset, function(err, slides) { + if(err) { throw err; } + fs.readFile(path.join(__dirname, config.dir, slides['template']) , function(err,data) { + if(err) { res.end(body); } + var body = data.toString(); + var slideStr = ''; + for(var slide in slides['slides']) { + if(!slides['slides'].hasOwnProperty(slide)) { continue; } + if(slides['slides'][slide]['type'] === 'image') { + slideStr = slideStr +'
  • '; + } + if(slides['slides'][slide]['text'].length > 0) { + slideStr = slideStr+'

    '+slides['slides'][slide]['head']+' - '+slides['slides'][slide]['text']+'

  • '; } - body = body.replace("$IMAGES", slideStr); - res.setHeader('Content-Length', body.length); - res.end(body); - }); + } + var eventStr = ''; + for(var date in slides['events']) { + if(!slides['events'].hasOwnProperty(date)) { continue; } + eventStr = eventStr + '

    '+slides['events'][date]['date']+'


    '; + } + body = body.replace("$IMAGES", slideStr); + body = body.replace("$EVENTS", eventStr); + res.setHeader('Content-Length', body.length); + res.end(body); }); - } - ).listen(8080); + }); + }); + config.app.get('*', function(req, res){ + model.getAllSlides(function(slidesets) { + var body = '

    Slideshows:

    '; + for(var slideset in slidesets) { + if(!slidesets.hasOwnProperty(slideset)) { continue; } + body = body + ''+slidesets[slideset]+'
    '; + } + res.setHeader('Content-Length', body.length); + res.end(body); + }); + }); + config.app.listen(8080); }; -- cgit v1.2.1