From 7e79ecbb517877f0bcc67a4553a766f65fd73d52 Mon Sep 17 00:00:00 2001 From: HumairAK Date: Tue, 26 Jul 2016 21:59:20 -0400 Subject: split up script files, only serving relevant scripts for each page accordingly --- assets/js/script.js | 127 ----------------------------------------------- routes/admin.js | 2 +- routes/index.js | 2 +- routes/user.js | 2 +- views/layouts/layout.hbs | 10 ++++ 5 files changed, 13 insertions(+), 130 deletions(-) diff --git a/assets/js/script.js b/assets/js/script.js index ae49e32..44d7422 100644 --- a/assets/js/script.js +++ b/assets/js/script.js @@ -1,110 +1,4 @@ function main(){ - - // User-profile dynamic paging - var items = [ - $("#profile-general"), - $("#profile-follows"), - $("#profile-friends"), - $("#profile-inbox"), - $("#profile-comments"), - $('#profile-send-message')]; - - function hidePages(){ - items.forEach(function(item){ - item.hide(); - }); - } - - // Hide all pages at load - hidePages(); - - // Show General page - items[0].show(); - - $('.prf-page').bind('click', function(e){ - - e.preventDefault(); - hidePages(); - - /* Each case will need to be changed to call a handler for fetching data - * from server*/ - switch($(this).text()) { - case "General": - console.log("clicked general"); - $("#profile-general").show(); - break; - case "Following": - $("#profile-follows").show(); - break; - case "Friends": - $("#profile-friends").show(); - break; - case "Inbox": - $("#profile-inbox").show(); - break; - case "Comments": - $("#profile-comments").show(); - break; - case "Send Message": - $('#profile-send-message').show(); - break; - default: - console.log("Error: User page not found"); - } - }); - - // ********* Admin Panel Scripts *********** // - var adminOptions = [ - $("#cpnl-addExam"), - $("#cpnl-addCourse"), - $("#cpnl-addAdmin"), - $("#cpnl-removeExam"), - $("#cpnl-removeCourse"), - $("#cpnl-removeUser") - ]; - - function hideCpnlPages(){ - adminOptions.forEach(function(item){ - item.hide(); - }); - } - - hideCpnlPages(); - - // Show General page - adminOptions[0].show(); - $('.cpnl-page').bind('click', function(e){ - - e.preventDefault(); - hideCpnlPages(); - - /* Each case will need to be changed to call a handler for fetching data - * from server*/ - switch($(this).text()) { - case "Add Exam": - $("#cpnl-addExam").show(); - break; - case "Add Course": - $("#cpnl-addCourse").show(); - break; - case "Add Admin": - $("#cpnl-addAdmin").show(); - break; - case "Remove Exam": - $("#cpnl-removeExam").show(); - break; - case "Remove Course": - $("#cpnl-removeCourse").show(); - break; - case "Remove User": - $("#cpnl-removeUser").show(); - break; - default: - console.log("Error: User page not found"); - } - }); - - // --- nav scripts --- $("input").keyup( function(event) { if(event.keyCode == 13){ @@ -129,27 +23,6 @@ function main(){ $(this).parent('li').removeClass('active'); }); - $('.search-menu').bind('click', function(e) { - e.preventDefault(); - $("#search-drop-down").click(); - var type = $(this).text(); - - switch(type) { - case "Courses": - $("#search-field").attr("action","/search/courses"); - $("#user-input").attr("placeholder", "Enter coure code"); - $("#drop-down-value").text("Courses"); - break; - case "Users": - $("#search-field").attr("action","/search/users"); - $("#user-input").attr("placeholder", "Enter user info"); - $("#drop-down-value").text("Users"); - break; - default: - console.log("Error: Click not registered"); - } - }); - $('.table-row').trigger('create'); } $(document).ready(main); \ No newline at end of file diff --git a/routes/admin.js b/routes/admin.js index 565d2dd..aac7c70 100644 --- a/routes/admin.js +++ b/routes/admin.js @@ -35,7 +35,7 @@ app.use(express_validator({ router.get('/', isAdmin, function(req,res){ console.log(req.session.messages); - res.render('admin', {csrfToken: req.csrfToken(), success: req.session.success, errors: req.session.errors}); + res.render('admin', {adminPanel: true, csrfToken: req.csrfToken(), success: req.session.success, errors: req.session.errors}); req.session.errors = null; req.session.messages = null; }); diff --git a/routes/index.js b/routes/index.js index d631d7b..9b8dad9 100644 --- a/routes/index.js +++ b/routes/index.js @@ -11,7 +11,7 @@ var bcrypt = require('bcrypt-nodejs'); /* Render/GET homepage. */ router.get('/', function(req, res, next) { //addFirstAdmin(); - res.render('index', {csrfToken: req.csrfToken(), success: req.session.success, errors: req.session.errors}); + res.render('index', {homePage: true, csrfToken: req.csrfToken(), success: req.session.success, errors: req.session.errors}); req.session.errors = null; req.session.success = null; req.session.messages = null; diff --git a/routes/user.js b/routes/user.js index 74c5427..fc2827d 100644 --- a/routes/user.js +++ b/routes/user.js @@ -111,7 +111,7 @@ router.get('/user_profile', loggedIn, isUser, function(req, res, next) { getComments().then(getMail).then(function (data) { console.log('got here fere'); - res.render('user_profile_alt', {inbox: inbox, error: error, csrfToken: req.csrfToken()}); + res.render('user_profile_alt', {inbox: inbox, error: error, csrfToken: req.csrfToken(), userProfile: true}); }); //res.render('user_profile_alt', {comments : comments, inbox: inbox, csrfToken: req.csrfToken()}); diff --git a/views/layouts/layout.hbs b/views/layouts/layout.hbs index b9895a5..17e9b3d 100644 --- a/views/layouts/layout.hbs +++ b/views/layouts/layout.hbs @@ -25,7 +25,17 @@ + + {{# if userProfile}} + + {{/if}} + {{# if adminPanel}} + + {{/if}} + {{# if homePage }} + + {{/if}} -- cgit v1.2.3 From cf290e2308006e468121603f65cea2e08dedd3ff Mon Sep 17 00:00:00 2001 From: HumairAK Date: Tue, 26 Jul 2016 21:59:44 -0400 Subject: added relevant scripts --- assets/js/admin_panel.js | 53 ++++++++++++++++++++++++++++++++++++++++++++++ assets/js/home_page.js | 26 +++++++++++++++++++++++ assets/js/user_profile.js | 54 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 133 insertions(+) create mode 100644 assets/js/admin_panel.js create mode 100644 assets/js/home_page.js create mode 100644 assets/js/user_profile.js diff --git a/assets/js/admin_panel.js b/assets/js/admin_panel.js new file mode 100644 index 0000000..2d8757f --- /dev/null +++ b/assets/js/admin_panel.js @@ -0,0 +1,53 @@ +function main(){ + // ********* Admin Panel Scripts *********** // + var adminOptions = [ + $("#cpnl-addExam"), + $("#cpnl-addCourse"), + $("#cpnl-addAdmin"), + $("#cpnl-removeExam"), + $("#cpnl-removeCourse"), + $("#cpnl-removeUser") + ]; + + function hideCpnlPages(){ + adminOptions.forEach(function(item){ + item.hide(); + }); + } + + hideCpnlPages(); + + // Show General page + adminOptions[0].show(); + $('.cpnl-page').bind('click', function(e){ + + e.preventDefault(); + hideCpnlPages(); + + /* Each case will need to be changed to call a handler for fetching data + * from server*/ + switch($(this).text()) { + case "Add Exam": + $("#cpnl-addExam").show(); + break; + case "Add Course": + $("#cpnl-addCourse").show(); + break; + case "Add Admin": + $("#cpnl-addAdmin").show(); + break; + case "Remove Exam": + $("#cpnl-removeExam").show(); + break; + case "Remove Course": + $("#cpnl-removeCourse").show(); + break; + case "Remove User": + $("#cpnl-removeUser").show(); + break; + default: + console.log("Error: User page not found"); + } + }); +} +$(document).ready(main); \ No newline at end of file diff --git a/assets/js/home_page.js b/assets/js/home_page.js new file mode 100644 index 0000000..449461d --- /dev/null +++ b/assets/js/home_page.js @@ -0,0 +1,26 @@ +function main(){ + + // Search bar drop down scripting (some of it is shared with nav panel + // in script.js but this code in this file is exclusive to search bar + $('.search-menu').bind('click', function(e) { + e.preventDefault(); + $("#search-drop-down").click(); + var type = $(this).text(); + + switch(type) { + case "Courses": + $("#search-field").attr("action","/search/courses"); + $("#user-input").attr("placeholder", "Enter coure code"); + $("#drop-down-value").text("Courses"); + break; + case "Users": + $("#search-field").attr("action","/search/users"); + $("#user-input").attr("placeholder", "Enter user info"); + $("#drop-down-value").text("Users"); + break; + default: + console.log("Error: Click not registered"); + } + }); +} +$(document).ready(main); \ No newline at end of file diff --git a/assets/js/user_profile.js b/assets/js/user_profile.js new file mode 100644 index 0000000..fa7add4 --- /dev/null +++ b/assets/js/user_profile.js @@ -0,0 +1,54 @@ +function main(){ + // User-profile dynamic paging + var items = [ + $("#profile-general"), + $("#profile-follows"), + $("#profile-friends"), + $("#profile-inbox"), + $("#profile-comments"), + $('#profile-send-message')]; + + function hidePages(){ + items.forEach(function(item){ + item.hide(); + }); + } + + // Hide all pages at load + hidePages(); + + // Show General page + items[0].show(); + + $('.prf-page').bind('click', function(e){ + + e.preventDefault(); + hidePages(); + + /* Each case will need to be changed to call a handler for fetching data + * from server*/ + switch($(this).text()) { + case "General": + console.log("clicked general"); + $("#profile-general").show(); + break; + case "Following": + $("#profile-follows").show(); + break; + case "Friends": + $("#profile-friends").show(); + break; + case "Inbox": + $("#profile-inbox").show(); + break; + case "Comments": + $("#profile-comments").show(); + break; + case "Send Message": + $('#profile-send-message').show(); + break; + default: + console.log("Error: User page not found"); + } + });} +$(document).ready(main); \ No newline at end of file -- cgit v1.2.3 From a6f8527174c8677b29eb377e2a9f235b4989ab99 Mon Sep 17 00:00:00 2001 From: Waref Haque Date: Tue, 26 Jul 2016 22:39:53 -0400 Subject: follow exam --- routes/user.js | 34 ++++++++++++++++++++++++++++++++++ views/questions.hbs | 46 ++++++++++++++++++++++++++-------------------- 2 files changed, 60 insertions(+), 20 deletions(-) diff --git a/routes/user.js b/routes/user.js index fc2827d..ff2992b 100644 --- a/routes/user.js +++ b/routes/user.js @@ -355,6 +355,40 @@ router.post('/follow_exam/:examID',function (req, res) { } }); +router.post('/follow_exam/:examID',function (req, res) { + var examId = req.params.examID; + + if (req.isAuthenticated()){ + console.log("Exam Id follow exam: " + examId); + console.log("Username follow exam: " + req.user.user_name); + + dbFile.followExam(req.user.user_name,examId,function (success, message) { + console.log("ENTERED DBFILE!!!") + + if (success){ + console.log("SUCCESS!") + req.session.messages = {success : message}; + res.redirect('/questions/' + examId); + }else{ + console.log("FAIlURE!") + + req.session.messages = {error : message}; + res.redirect('/questions/' + examId); + } + + }); + + }else{ + var message = "Must be logged in to follow an exam!"; + console.log(message); + req.session.messages = {error : message}; + res.redirect('/questions/' + examId); + + } +}); + + + module.exports = router; diff --git a/views/questions.hbs b/views/questions.hbs index 1d62a2b..36d2a25 100644 --- a/views/questions.hbs +++ b/views/questions.hbs @@ -2,31 +2,23 @@ - - - - + {{#each query}} -- cgit v1.2.3 From f3ea052f6b27c7d9f62c0486177a5c1d513e36ed Mon Sep 17 00:00:00 2001 From: Waref Haque Date: Tue, 26 Jul 2016 23:07:46 -0400 Subject: user search validation --- routes/index.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/routes/index.js b/routes/index.js index 9b8dad9..75f93c0 100644 --- a/routes/index.js +++ b/routes/index.js @@ -111,6 +111,16 @@ router.get('/exams/:id', function(req, res, next) { } }); +router.get('/user/',function (req, res) { + req.checkParams('username','Please enter a username').notEmpty(); + var errors = req.validationErrors(); + if (errors){ + req.session.errors = errors; + req.session.success = false; + res.redirect('/'); + } +}); + /* Render user search page based on query */ router.get('/user/:query', function(req,res,next){ var query = req.params.query; -- cgit v1.2.3 From 96935191ed1741aa2185a88deb32a5de4b824219 Mon Sep 17 00:00:00 2001 From: HumairAK Date: Wed, 27 Jul 2016 00:35:09 -0400 Subject: made a few adjustments, removed all avatar occurrences, a few other images for optimization and performance speed, replace pngs with svgs etc. --- assets/css/creative.css | 5 +++-- assets/css/style.css | 10 +++++++++- routes/user.js | 3 ++- views/index.hbs | 10 +++++----- views/questions.hbs | 12 ++++-------- views/user_profile_alt.hbs | 16 ++++++++++------ views/user_solutions.hbs | 8 +++++--- 7 files changed, 38 insertions(+), 26 deletions(-) diff --git a/assets/css/creative.css b/assets/css/creative.css index 45f388b..17ee257 100644 --- a/assets/css/creative.css +++ b/assets/css/creative.css @@ -175,7 +175,6 @@ header { /*-moz-background-size: cover;*/ /*background-size: cover;*/ /*-o-background-size: cover;*/ - } header .header-spec { @@ -384,4 +383,6 @@ header .header-content .header-content-inner hr { } /********************************************/ - +.follow-exam-btn{ + margin: 15px; +} diff --git a/assets/css/style.css b/assets/css/style.css index eb683b1..19601e2 100644 --- a/assets/css/style.css +++ b/assets/css/style.css @@ -49,7 +49,6 @@ main .search h2{ .search input { text-align: center; box-sizing: border-box; - background: white url('../images/search_icon.png') no-repeat 9px 9px; background-size: 20px 20px; padding: 0; } @@ -155,6 +154,9 @@ main [id^="sol-"] img.user-image { main [id^="sol-"] p.username { vertical-align: middle; + padding-left: 10px; + font-weight: bolder; + } main [id^="sol-"] button.upvote, [id^="sol-"] button.downvote { @@ -337,6 +339,7 @@ p.solutions-time { .exam-info { margin-left: 5%; display: inline-block; + text-align: center; } img.exam-info { @@ -349,6 +352,7 @@ section.exam-info em { font-weight: bold; } + .questions-number{ font-size: large; color: #333333; @@ -366,6 +370,10 @@ section.exam-info em { .questions-sol-num { margin-left: 5%; } + +.questions-arrow{ + padding-top: 6px; +} /*** EXAM QUESTIONS PAGE END ***/ /*** USER PROFILE PAGE ***/ diff --git a/routes/user.js b/routes/user.js index bd13723..a2f7cc1 100644 --- a/routes/user.js +++ b/routes/user.js @@ -47,7 +47,8 @@ router.get('/user_profile', loggedIn, isUser, function(req, res, next) { resolve(1); } else if (object.length){ req.user.comments = object.length; - comments = object; + req.user.comment_list = comments = object; + resolve(1); } else { req.user.comments = object.length; diff --git a/views/index.hbs b/views/index.hbs index 214695b..8025281 100644 --- a/views/index.hbs +++ b/views/index.hbs @@ -67,11 +67,11 @@ name="search" placeholder="Enter course name"> - - - + + + diff --git a/views/questions.hbs b/views/questions.hbs index ac94f8b..ebbbcc5 100644 --- a/views/questions.hbs +++ b/views/questions.hbs @@ -16,11 +16,8 @@ {{/if}} {{/if}} -
- - -
+

{{examInfo.courseCode}}

{{examInfo.term}} {{examInfo.year}} {{examInfo.type}}

Instructor(s): {{examInfo.instructors}}

@@ -30,14 +27,13 @@

Question count: {{examInfo.questionCount}}

- -
- + {{#each query}} @@ -47,7 +43,7 @@

{{this.count}} solutions, {{this.comments}} comments

- +
diff --git a/views/user_profile_alt.hbs b/views/user_profile_alt.hbs index 72baa86..7a61366 100644 --- a/views/user_profile_alt.hbs +++ b/views/user_profile_alt.hbs @@ -20,7 +20,8 @@