From eeeb40d7defbc9ef39b50c2a6a196af933f0cdd7 Mon Sep 17 00:00:00 2001 From: Bryan Ngo Date: Sat, 7 Jul 2018 18:33:52 -0700 Subject: [PATCH] added anime_edit page --- bin/www | 2 +- public/css/blog.css | 6 +- routes/anime_queries.js | 100 ++++++++++++++++++++++++++++++++ routes/index.js | 70 +++++++++++++++++----- views/admin/anime_edit.jade | 37 ++++++++++++ views/blog.jade | 4 +- views/blogposts/coursehero.jade | 8 --- views/error.jade | 4 +- 8 files changed, 201 insertions(+), 30 deletions(-) create mode 100644 routes/anime_queries.js diff --git a/bin/www b/bin/www index a1f59bb..49f22f9 100755 --- a/bin/www +++ b/bin/www @@ -5,7 +5,7 @@ */ var app = require('../app'); -var debug = require('debug')('blackhawk:server'); +var debug = require('debug')('lightning:server'); var http = require('http'); /** diff --git a/public/css/blog.css b/public/css/blog.css index 8f123cb..ae3d007 100644 --- a/public/css/blog.css +++ b/public/css/blog.css @@ -255,9 +255,9 @@ margin-left: 0; } - .\31 2u\24 + *, - .\31 1u\24 + *, - .\31 0u\24 + *, + .\31\ 2u\24 + *, + .\31\ 1u\24 + *, + .\31\ 0u\24 + *, .\39 u\24 + *, .\38 u\24 + *, .\37 u\24 + *, diff --git a/routes/anime_queries.js b/routes/anime_queries.js new file mode 100644 index 0000000..46c05e7 --- /dev/null +++ b/routes/anime_queries.js @@ -0,0 +1,100 @@ +var fs = require('fs'); +var util = require('util'); +var mongodb = require('mongodb'); + +var MongoClient = require('mongodb').MongoClient; +assert = require('assert'); + +// Connection url +var url = 'mongodb://localhost'; + +/* ---- Anime insertion ---- */ +// Inserts many anime +var insertAnime = function(info, db, callback) { + + var collection = db.collection('anime'); + + // Insert some documents + collection.insertMany([ + info + ], function(err, result) { + assert.equal(err, null); + assert.equal(1, result.result.n); + assert.equal(1, result.ops.length); + callback(result); + }); +}; + +// Wrapper function to insert data externally +var insertAnimeWrapper = function(info) { + MongoClient.connect(url, function(err, client) { + + var db = client.db('Lightning'); + + assert.equal(null, err); + insertAnime(info, db, function() { + client.close(); + }); + }); +}; + +/* ---- Anime Filter ---- */ +// Select anime(s) with the given condition +var filterAnime = function(condition, db, callback) { + + var collection = db.collection('anime'); + + // Find some documents + collection.find(condition).toArray(function(err, docs) { + assert.equal(err, null); + callback(docs); + }); +}; + + +// Wrapper function returns a single key +var filterAnimeWrapper = function(condition, callback) { + MongoClient.connect(url, function(err, client) { + + var db = client.db('Lightning'); + + assert.equal(null, err); + filterAnime(condition, db, function(result) { + client.close(); + if (callback){ + callback(result); + } + }); + }); +}; + + +var findAllAnime = function(db, callback) { + + var collection = db.collection('anime'); + + collection.find({}).toArray(function(err, docs) { + assert.equal(err, null); + callback(docs); + }); +}; + +var findAllAnimeWrapper = function(callback) { + MongoClient.connect(url, function(err, client) { + + var db = client.db('Lightning'); + + assert.equal(null, err); + findAllAnime(db, function(results) { + client.close(); + if(callback) + callback(results); + }); + }); +}; + + +// so we can externally call these function +exports.insertAnime = insertAnimeWrapper; +exports.filterAnime = filterAnimeWrapper; +exports.findAllAnime = findAllAnimeWrapper; \ No newline at end of file diff --git a/routes/index.js b/routes/index.js index 0ef65ff..8ba14f6 100644 --- a/routes/index.js +++ b/routes/index.js @@ -10,8 +10,11 @@ const Account = require('../models/account'); // import query file(s) var keyqueries = require('./keyqueries'); var wallpostqueries = require('./wallpostqueries'); +var animequeries = require('./anime_queries'); -/* GET home page. */ +/** + * @route: / + */ router.get('/', function(req, res, next) { if(req.user) @@ -31,26 +34,28 @@ router.get('/', function(req, res, next) { }); }); -/* GET blog page. */ +/** + * @route: /blog + */ router.get('/blog', function(req, res, next) { res.render('blog', { - title: 'Blog', - stylesheet: 'css/blog.css' - }); + title: 'Blog'}); }); -/* GET blog/coursehero */ +/** + * @route: /coursehero + */ router.get('/coursehero', function(req, res, next) { res.render('blogposts/coursehero', { - title: 'Course Hero', - stylesheet: 'css/blog_single.css' - }); + title: 'Course Hero'}); }); -/* GET registration page */ +/** + * @route: /register + */ router.get('/register', function(req, res) { res.render('register', { }); }); @@ -72,7 +77,9 @@ router.post('/register', (req, res, next) => { }); }); -/* GET login page */ +/** + * @route: /login + */ router.get('/login', (req, res) => { res.render('login', { user : req.user, error : req.flash('error')}); }); @@ -86,7 +93,9 @@ router.post('/login', passport.authenticate('local', { failureRedirect: '/login' }); }); -/* GET logout page */ +/** + * @route: /logout + */ router.get('/logout', (req, res, next) => { req.logout(); req.session.save((err) => { @@ -97,6 +106,34 @@ router.get('/logout', (req, res, next) => { }); }); +/** + * @route: /anime_edit + * @requires: permissions: 1 + */ +router.get('/anime_edit', (req, res, next) => { + + if(!req.user || req.user.permission !== 1) { + res.render('error', { + title: "uh oh.", + reason: "You don't have permission to view this page!" + }); + } else { + + animequeries.findAllAnime(function(animes) { + res.render('index', { + title: 'Anime Edit', + animes: animes, + user: req.user + }); + }); + } +}); + +router.post('/animesubmit', function(req, res) { + + res.end("Anime successfully posted into database."); +}); + /* For submitting a message from the home page */ router.post('/wallsubmit', function(req, res) { @@ -110,10 +147,17 @@ router.post('/wallsubmit', function(req, res) { wallpostqueries.findAllWallPosts(); - res.end("Wall post successfully submitted into database") + res.end("Wall post successfully submitted into database."); }); /// TODO: email myself wall posts for review +/* catches all error pages */ +router.get('*', (req, res, next) => { + res.render('error', { + title: "uh oh.", + reason: "Something went wrong, and I don't know why!" + }); +}); // Export to make this externally visible module.exports = router; diff --git a/views/admin/anime_edit.jade b/views/admin/anime_edit.jade index e69de29..fbbbb46 100644 --- a/views/admin/anime_edit.jade +++ b/views/admin/anime_edit.jade @@ -0,0 +1,37 @@ +doctype html +// + Story by HTML5 UP + html5up.net | @ajlkn + Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) +html + head + title #{title} + meta(charset='utf-8') + meta(name='viewport', content='width=device-width, initial-scale=1') + link(rel='stylesheet', href='css/main.css') + body + // Seven + section.wrapper.style1.align-center + .inner.medium + h2 Anime Post + form + .field.half.first + label(for='name') Anime Title + input#name(type='text', name='name', value='') + .field.half + label(for='rating') Rating + input#rating(type='text', name='rating', value='') + .field.half.first + label(for='fav_char') Favorite Character + input#fav_char(type='text', name='rating', value='') + .field + label(for='review') Review + p#charcount + textarea#review(name='review') + ul.actions + li + button#submit(type='submit', onclick="animesubmit()", value='Post') Post + + + + diff --git a/views/blog.jade b/views/blog.jade index 47e16a4..6bf7d22 100644 --- a/views/blog.jade +++ b/views/blog.jade @@ -168,10 +168,10 @@ html section.blurb h2 About p - | Hey there! If you didn't know already, my name is Bryan. I'm + | Hey there! My name is Bryan. I'm | currently a third year undergrad @ UCD studying Computer Science | and Engineering. I also like snowboarding, photographing, and - | hiking! Check out my links at the bottom of this pae + | hiking! Check out my links at the bottom of this page. include blog_footer diff --git a/views/blogposts/coursehero.jade b/views/blogposts/coursehero.jade index 3ffe7b6..940312d 100644 --- a/views/blogposts/coursehero.jade +++ b/views/blogposts/coursehero.jade @@ -20,30 +20,22 @@ html .title h2 a(href='#') Magna sed adipiscing - | p Lorem ipsum dolor amet nullam consequat etiam feugiat - | .meta time.published(datetime='2015-11-01') November 1, 2015 - | a.author(href='#') span.name Jane Doe img(src='images/avatar.jpg', alt='') - | span.image.featured img(src='images/pic01.jpg', alt='') - | p | Mauris neque quam, fermentum ut nisl vitae, convallis maximus nisl. Sed mattis nunc id lorem euismod placerat. Vivamus porttitor magna enim, ac accumsan tortor cursus at. Phasellus sed ultricies mi non congue ullam corper. Praesent tincidunt sed tellus ut rutrum. Sed vitae justo condimentum, porta lectus vitae, ultricies congue gravida diam non fringilla. - | p | Nunc quis dui scelerisque, scelerisque urna ut, dapibus orci. Sed vitae condimentum lectus, ut imperdiet quam. Maecenas in justo ut nulla aliquam sodales vel at ligula. Sed blandit diam odio, sed fringilla lectus molestie sit amet. Praesent eu tortor viverra lorem mattis pulvinar feugiat in turpis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Fusce ullamcorper tellus sit amet mattis dignissim. Phasellus ut metus ligula. Curabitur nec leo turpis. Ut gravida purus quis erat pretium, sed pellentesque massa elementum. Fusce vestibulum porta augue, at mattis justo. Integer sed sapien fringilla, dapibus risus id, faucibus ante. Pellentesque mattis nunc sit amet tortor pellentesque, non placerat neque viverra. - | footer ul.stats li a(href='#') General - | li a.icon.fa-heart(href='#') 28 li diff --git a/views/error.jade b/views/error.jade index 51ec12c..66ec7ec 100644 --- a/views/error.jade +++ b/views/error.jade @@ -1,6 +1,4 @@ extends layout block content - h1= message - h2= error.status - pre #{error.stack} + p #{title} #{reason}