From 32523cdcd9eaa4ad9363d79ebe82d5de4b852676 Mon Sep 17 00:00:00 2001 From: tomsmeding Date: Wed, 22 Nov 2017 21:23:14 +0100 Subject: Add module 'zelfoverhoor' Beta stage --- modules/zelfoverhoor/zelfoverhoor.js | 189 +++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 modules/zelfoverhoor/zelfoverhoor.js (limited to 'modules/zelfoverhoor/zelfoverhoor.js') diff --git a/modules/zelfoverhoor/zelfoverhoor.js b/modules/zelfoverhoor/zelfoverhoor.js new file mode 100644 index 0000000..c55f0e0 --- /dev/null +++ b/modules/zelfoverhoor/zelfoverhoor.js @@ -0,0 +1,189 @@ +var cmn=require("../$common.js"), + fs=require("fs"); + +var moddir; + +var accounts=require("./accounts.json"); + +// {: {q: "question", a: "answer"}} +var questiondb={}; +// {: {id, name, description, questions: []}} +var questionsets={}; +// {: []} +var userlists={}; + +function uniqidstr(validp){ + for(var len=6;;len++){ + var str=""; + for(var i=0;i0;i--){ + j=Math.floor(Math.random()*(i+1)); + v=a[i]; a[i]=a[j]; a[j]=v; + } +} + +module.exports=function(app,io,_moddir){ + moddir=_moddir; + + try { + questiondb=JSON.parse(fs.readFileSync(moddir+"/questiondb.json")); + questionsets=JSON.parse(fs.readFileSync(moddir+"/questionsets.json")); + userlists=JSON.parse(fs.readFileSync(moddir+"/userlists.json")); + } catch(e){ + console.log("error on reading zelfoverhoor db"); + questiondb={}; + questionsets={}; + userlists={}; + persistDB(); + } + + app.get("/zelfoverhoor",function(req,res){ + res.sendFile(moddir+"/index.html"); + }); + + app.get("/zelfoverhoor/qs/:id",function(req,res){ + var qset=questionsets[req.params.id]; + if(qset==null){ + res.status(404).sendFile(moddir+"/notfound.html"); + return; + } + var list=[]; + for(var i=0;i",req.params.id) + .replace("/*###QUESTIONSET###*/",JSON.stringify(resset))); + }); + }); + + app.use(["/zelfoverhoor/docent","/zelfoverhoor/docent/*"],cmn.authgen(accounts)); + app.get("/zelfoverhoor/docent",function(req,res){ + fs.readFile(moddir+"/docent.html",function(err,data){ + if(err)throw err; + res.send(String(data) + .replace(//g,req.authuser)); + }); + }); + app.get("/zelfoverhoor/docent/sets",function(req,res){ + if(userlists[req.authuser]==null){ + userlists[req.authuser]=[]; + } + var ul=userlists[req.authuser]; + var list=[]; + for(var i=0;i