UNPKG

quizzer

Version:

Quizzer is a webserver for collaborative writing lab support. Based on a _fail early, fail often? approach to written language, the tool is particularly suited to second-language learners. The workflow (essay - error - quiz - exam) treats mistakes as an o

50 lines (49 loc) 2.35 kB
(function () { var cogClass = function () {}; cogClass.prototype.exec = function (params, request, response) { var oops = this.utils.apiError; var page = this.page; var classID = params.classid; var quizNumber = params.quizno; var sys = this.sys; var sql = 'SELECT name,quizNumber,examName ' + 'FROM classes ' + 'NATURAL JOIN quizzes ' + 'WHERE classes.classID=? AND quizNumber=?'; sys.db.get(sql,[classID,quizNumber],function(err,row){ if (err) {return oops(response,err,'quiz(1)')}; if (!row) { sys.db.run('INSERT INTO quizzes VALUES (NULL,?,?,0,NULL,NULL)',[classID,quizNumber],function(err){ if (err) {return oops(response,err,'quiz(2)')}; var sql = 'SELECT name,quizNumber ' + 'FROM classes ' + 'NATURAL JOIN quizzes ' + 'WHERE classes.classID=? AND quizNumber=?'; sys.db.get(sql,[classID,quizNumber],function(err,row){ if (err||!row) {return oops(response,err,'quiz(3)')}; var myPage = page.toString().replace(/@@CLASS@@/g, row.name); if (row.examName) { myPage = myPage.replace(/@@QUIZ_LABEL@@/g, row.examName); } else { var quizLabel = 'Quiz ' + row.quizNumber; myPage = myPage.replace(/@@QUIZ_LABEL@@/g, quizLabel); } response.writeHead(200, {'Content-Type': 'text/html'}); response.end(myPage); }); }); } else { var myPage = page.toString().replace(/@@CLASS@@/g, row.name); if (row.examName) { myPage = myPage.replace(/@@QUIZ_LABEL@@/g, row.examName); } else { var quizLabel = 'Quiz ' + row.quizNumber; myPage = myPage.replace(/@@QUIZ_LABEL@@/g, quizLabel); } response.writeHead(200, {'Content-Type': 'text/html'}); response.end(myPage); } }); } exports.cogClass = cogClass; })();