From cb39647ade2e424bcdf015228a7c1a09a92b5212 Mon Sep 17 00:00:00 2001
From: Benjamin Auder <benjamin.auder@somewhere>
Date: Mon, 19 Feb 2018 12:11:23 +0100
Subject: [PATCH] 'update'

---
 public/javascripts/components/statements.js |  6 +++---
 public/javascripts/course.js                | 23 ++-------------------
 public/javascripts/grade.js                 |  1 +
 routes/users.js                             | 12 +++++------
 views/course.pug                            | 10 ++++-----
 5 files changed, 17 insertions(+), 35 deletions(-)

diff --git a/public/javascripts/components/statements.js b/public/javascripts/components/statements.js
index 86138c0..6e12eb6 100644
--- a/public/javascripts/components/statements.js
+++ b/public/javascripts/components/statements.js
@@ -32,7 +32,7 @@ Vue.component("statements", {
 			displayStyle: "compact", //or "all": all on same page
 			parameters: 0, //TODO: DO NOT re-draw parameters for already answered questions
 		};
-	}
+	},
 	// Full questions tree is rendered, but some parts hidden depending on display settings
 	render(h) {
 		// Prepare questions groups, ordered
@@ -158,7 +158,7 @@ Vue.component("statements", {
 					{
 						"class": {
 							"question": true,
-							"depth" + depth: true,
+							["depth" + depth]: true,
 						},
 					},
 					questionContent
@@ -171,7 +171,7 @@ Vue.component("statements", {
 						"questionGroup": true,
 						"hide": this.display == "one" && this.iidx != i,
 					},
-				}
+				},
 				qgDom
 			);
 		});
diff --git a/public/javascripts/course.js b/public/javascripts/course.js
index 6320538..781424a 100644
--- a/public/javascripts/course.js
+++ b/public/javascripts/course.js
@@ -44,23 +44,8 @@ new Vue({
 		questionsText: "", //questions in an evaluation, in text format
 	},
 	mounted: function() {
-		
-		
-		
-		$('.modal').each( (i,elem) => {
-			if (elem.id != "evaluationEdit")
-				$(elem).modal();
-		});
-		$('ul.tabs').tabs(); //--> migrate to grade.js
-		
-		
-		
-		$('#evaluationEdit').modal({
-			complete: () => {
-				this.parseEvaluation();
-				Vue.nextTick(statementsLibsRefresh);
-			},
-		});
+		$('.modal').modal();
+		Materialize.updateTextFields(); //textareas, time field...
 	},
 	methods: {
 		// GENERAL:
@@ -145,10 +130,6 @@ new Vue({
 				}
 			);
 		},
-		materialOpenModal: function(id) {
-			$("#" + id).modal("open");
-			Materialize.updateTextFields(); //textareas, time field...
-		},
 		updateEvaluation: function() {
 			$.ajax("/evaluations", {
 				method: "PUT",
diff --git a/public/javascripts/grade.js b/public/javascripts/grade.js
index d0f04cf..74e4c04 100644
--- a/public/javascripts/grade.js
+++ b/public/javascripts/grade.js
@@ -14,6 +14,7 @@ new Vue({
 	},
 	mounted: function() {
 		// TODO
+		$('ul.tabs').tabs(); //--> migrate to grade.js
 	},
 	methods: {
 		// GRADES:
diff --git a/routes/users.js b/routes/users.js
index 993c15e..f56b4af 100644
--- a/routes/users.js
+++ b/routes/users.js
@@ -19,7 +19,7 @@ function setAndSendLoginToken(subject, to, res)
 				subject: subject,
 				body: "Hello " + to.initials + "!\n" +
 					"Access your account here: " +
-					params.siteURL + "/authenticate?token=" + token + "\\n" +
+					params.siteURL + "/authenticate/" + token + "\\n" +
 					"Token will expire in " + params.token.expire/(1000*60) + " minutes."
 			}, err => {
 				res.json(err || {});
@@ -30,8 +30,8 @@ function setAndSendLoginToken(subject, to, res)
 
 router.post('/register', access.ajax, access.unlogged, (req,res) => {
 	const newUser = {
-		email: req.body.email,
-		name: req.body.name,
+		email: decodeURIComponent(req.body.email),
+		name: decodeURIComponent(req.body.name),
 	};
 	let error = validator(newUser, "User");
 	if (error.length > 0)
@@ -52,7 +52,7 @@ router.post('/register', access.ajax, access.unlogged, (req,res) => {
 
 // Login:
 router.put('/sendtoken', access.ajax, access.unlogged, (req,res) => {
-	const email = req.body.email;
+	const email = decodeURIComponent(req.body.email);
 	let error = validator({email:email}, "User");
 	if (error.length > 0)
 		return res.json({errmsg:error});
@@ -65,7 +65,7 @@ router.put('/sendtoken', access.ajax, access.unlogged, (req,res) => {
 });
 
 // Authentication process, optionally with email changing:
-router.put('/authenticate/:token([a-z0-9]+)', access.unlogged, (req,res) => {
+router.get('/authenticate/:token([a-z0-9]+)', access.unlogged, (req,res) => {
 	const loginToken = req.params.token;
 	UserModel.getByLoginToken(loginToken, (err,user) => {
 		access.checkRequest(res, err, user, "Invalid token", () => {
@@ -96,7 +96,7 @@ router.put('/authenticate/:token([a-z0-9]+)', access.unlogged, (req,res) => {
 	});
 });
 
-router.put('/logout', access.logged, (req,res) => {
+router.get('/logout', access.logged, (req,res) => {
 	UserModel.removeToken(req.user._id, req.cookies.token, (err,ret) => {
 		access.checkRequest(res, err, ret, "Logout failed", () => {
 			res.clearCookie("initials");
diff --git a/views/course.pug b/views/course.pug
index 9d84018..cfe56a4 100644
--- a/views/course.pug
+++ b/views/course.pug
@@ -7,9 +7,9 @@ block append stylesheets
 block content
 	.container#course
 		if teacher
-			#newevaluation.modal
+			#newEvaluation.modal
 				.modal-content
-					form(@submit.prevent="addevaluation")
+					form(@submit.prevent="addEvaluation")
 						.input-field
 							input#evaluationName(type="text" v-model="newEvaluation.name" required)
 							label(for="evaluationName") Name
@@ -38,11 +38,11 @@ block content
 									td {{ student.group }}
 		.row
 			.col.s12.m10.offset-m1
-				h4.title(@click="toggleDisplay('evaluations')") evaluations
+				h4.title(@click="toggleDisplay('evaluations')") Evaluations
 				.card(v-show="display=='evaluations'")
 					if teacher
 						.center-align
-							a.on-left.waves-effect.waves-light.btn.modal-trigger(href="#newevaluation") New evaluation
+							a.on-left.waves-effect.waves-light.btn.modal-trigger(href="#newEvaluation") New evaluation
 							input#password(type="password" v-model="monitorPwd" @keyup.enter="setPassword"
 									placeholder="Password" title="Monitoring password")
 					table
@@ -53,7 +53,7 @@ block content
 								th #Questions
 						tbody
 							tr.evaluation(v-for="(evaluation,i) in evaluationArray" :class="{idle:!evaluation.active}"
-									@click.left="actionevaluation(i)" @contextmenu.prevent="deleteevaluation(evaluation)")
+									@click.left="actionEvaluation(i)" @contextmenu.prevent="deleteEvaluation(evaluation)")
 								td {{ evaluation.name }}
 								td {{ evaluation.mode }}
 								td {{ evaluation.questions.length }}
-- 
2.44.0