aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app.js3
-rw-r--r--routes/admin.js65
-rw-r--r--routes/index.js88
-rw-r--r--routes/user.js1
4 files changed, 101 insertions, 56 deletions
diff --git a/app.js b/app.js
index a96a932..9e96a9f 100644
--- a/app.js
+++ b/app.js
@@ -13,6 +13,7 @@ var flash = require('connect-flash');
var routes = require('./routes/index');
var userRoutes = require('./routes/user');
+var adminRoutes = require('./routes/admin');
var app = express();
// Templating engine, we are using handlebars
@@ -40,7 +41,6 @@ require('./config/passport'); // simply need to load it
/*LOADS ALL STATIC FILES FROM THE DIRECTORY __dirname*/
app.use(express.static(__dirname));
-
// Needed to style the header based on the whether the user is signed in or not
// Gives errors for admin - need to figure out
app.use(function(req, res, next) {
@@ -50,6 +50,7 @@ app.use(function(req, res, next) {
// Allows us to customize express routing
// in a separate file.
+app.use('/admin', adminRoutes);
app.use('/user', userRoutes);
app.use('/', routes);
diff --git a/routes/admin.js b/routes/admin.js
new file mode 100644
index 0000000..c5cbcb4
--- /dev/null
+++ b/routes/admin.js
@@ -0,0 +1,65 @@
+var express = require('express');
+var router = express.Router();
+var csrf = require('csurf'); // Cross-Site Request Forgery prevention
+var passport = require('passport');
+
+var csrfProtection = csrf();
+router.use(csrfProtection); // router is protected
+
+router.get('/', function(req,res){
+ res.render('admin', {csrfToken: req.csrfToken()});
+});
+
+/* Adds exam from front-end */
+router.post('/update/exam', function(req,res){
+ var course_code = req.body.course_code,
+ year = req.body.year,
+ type = req.body.type,
+ term = req.body.term,
+ instructors = parseStringArray(req.body.instructors),
+ page_count = req.body.page_count,
+ questions_count = req.body.questions_count,
+ questions_list = parseStringArray(req.body.questions_list),
+ upload_date = req.body.upload_date,
+ uploaded_by = req.body.uploaded_by;
+
+ var fields = [
+ course_code, // String
+ year, // Int
+ type, // String; Needs to be added to database code
+ term, // String
+ instructors, // Array of strings
+ page_count, // Int
+ questions_count, // Int
+ upload_date, // String
+ uploaded_by]; // String
+
+ dbFile.add_exam(fields, questions_list, function(examAdded, statusMessage){
+ if(examAdded){
+ console.log("Success!");
+ }else{
+ console.log("Failed!");
+ }
+ console.log(statusMessage);
+ });
+ res.redirect('/');
+});
+
+/* Adds course from front-end */
+router.post('/update/course', function(req,res){
+ var course_code = req.body.course_code,
+ title = req.body.title;
+
+ dbFile.add_course(course_code, title, function(courseAdded, statusMessage){
+ if(courseAdded){
+ console.log("Success!");
+ }else{
+ console.log("Failure!");
+ }
+ console.log("Status message: " + statusMessage)
+ });
+ res.redirect('/');
+});
+
+module.exports = router;
+
diff --git a/routes/index.js b/routes/index.js
index a0a66d0..30189da 100644
--- a/routes/index.js
+++ b/routes/index.js
@@ -24,60 +24,6 @@ router.get('/questions', function(req, res, next) {
res.render('questions');
});
-router.get('/admin', function(req,res){
- res.render('admin', {csrfToken: req.csrfToken()});
-});
-
-/* Adds exam from front-end */
-router.post('/admin/update/exam', function(req,res){
- var course_code = req.body.course_code,
- year = req.body.year,
- type = req.body.type,
- term = req.body.term,
- instructors = parseStringArray(req.body.instructors),
- page_count = req.body.page_count,
- questions_count = req.body.questions_count,
- questions_list = parseStringArray(req.body.questions_list),
- upload_date = req.body.upload_date,
- uploaded_by = req.body.uploaded_by;
-
- var fields = [
- course_code, // String
- year, // Int
- type, // String; Needs to be added to database code
- term, // String
- instructors, // Array of strings
- page_count, // Int
- questions_count, // Int
- upload_date, // String
- uploaded_by]; // String
-
- dbFile.add_exam(fields, questions_list, function(examAdded, statusMessage){
- if(examAdded){
- console.log("Success!");
- }else{
- console.log("Failed!");
- }
- console.log(statusMessage);
- });
- res.redirect('/admin');
-});
-
-/* Adds course from front-end */
-router.post('/admin/update/course', function(req,res){
- var course_code = req.body.course_code,
- title = req.body.title;
-
- dbFile.add_course(course_code, title, function(courseAdded, statusMessage){
- if(courseAdded){
- console.log("Success!");
- }else{
- console.log("Failure!");
- }
- console.log("Status message: " + statusMessage)
- });
- res.redirect('/admin');
-});
//EXAMPLE EXPECTED DATA GIVEN BELOW:
/*[ {courseCode: 'CSC240',
@@ -145,7 +91,41 @@ router.get('/questions/:exam_id', function (req,res) {
});
});
+/*GET the solutions for a given exam given the question number and the exam_id*/
+/*EXPECTED DATA GIVEN BELOW:
+array of solutions:
+* solutions = [ {
+ * _id: "354ff71ed078933079d6467e"
+ * exam_id: "578a44ff71ed097fc3079d6e"
+ * q_id: 1 (int)
+ * text: "answer"
+ * votes: 1 (int)
+ * comments: [{}.{}] (just going to be string for now i think)
+ * }
+ * {
+ * _id: ...
+ * exam_id: ..
+ * q_id: ...
+ * text: ..
+ * votes: ..
+ * comments: ..
+ *
+ * }
+ * ]*/
+router.get('/solutions/:exam_id/:q_num', function (req, res) {
+ dbFile.get_all_solutions(req.params.exam_id,req.params.q_num,function (solutions) {
+ res.render('solutions', {query: solutions});
+ console.log(solutions);
+ });
+});
+router.get('/add_solution',function (req, res) {
+ redirect('/add_solutions_page');
+});
+
+router.post('/add_solutions/submit', function (req, res) {
+ //TODO: get the form information for the solutions
+});
/**** Helpers ****/
diff --git a/routes/user.js b/routes/user.js
index ccc4f87..698c4f8 100644
--- a/routes/user.js
+++ b/routes/user.js
@@ -89,7 +89,6 @@ router.post('/signin', loggedOut, function(req, res, next) {
})(req, res);
}
- //res.redirect('/signup');
});