diff --git a/test/app.js b/test/app.js index 24f2028..f1efbb9 100644 --- a/test/app.js +++ b/test/app.js @@ -50,7 +50,7 @@ app.configure('production', function(){ require('./routes/index')(app); require('./routes/users')(app); require('./routes/session')(app); -require('./routes/articles')(app); +require('./routes/workouts')(app); http.createServer(app).listen(app.get("port"), function(){ console.log ("Server listening on port " + app.get("port")); diff --git a/test/data/models/article.js b/test/data/models/article.js deleted file mode 100644 index 36701ab..0000000 --- a/test/data/models/article.js +++ /dev/null @@ -1,6 +0,0 @@ -var mongoose = require('mongoose'); -var ArticleSchema = require('../schemas/article'); - -var Article = mongoose.model('Article', ArticleSchema); - -module.exports = Article; \ No newline at end of file diff --git a/test/data/models/workout.js b/test/data/models/workout.js new file mode 100644 index 0000000..72884d1 --- /dev/null +++ b/test/data/models/workout.js @@ -0,0 +1,6 @@ +var mongoose = require('mongoose'); +var workoutSchema = require('../schemas/workout'); + +var workout = mongoose.model('workout', workoutSchema); + +module.exports = workout; \ No newline at end of file diff --git a/test/data/schemas/article.js b/test/data/schemas/article.js deleted file mode 100644 index 7809a9a..0000000 --- a/test/data/schemas/article.js +++ /dev/null @@ -1,19 +0,0 @@ -var Schema = require('mongoose').Schema; - -var ArticleSchema = new Schema({ - title: { - type: String - }, - body: String, - author: { - type: Schema.ObjectId, - ref: 'User', - required: true - }, - created_at: { - type: Date, - 'default': Date.now - } -}); - -module.exports = ArticleSchema; \ No newline at end of file diff --git a/test/data/schemas/user.js b/test/data/schemas/user.js index 1af4b5c..311938e 100644 --- a/test/data/schemas/user.js +++ b/test/data/schemas/user.js @@ -7,8 +7,8 @@ var UserSchema = new mongoose.Schema({ is_admin: {type: Boolean, 'default': false } }); -UserSchema.methods.recentArticles = function(callback) { -return this.model('Article') +UserSchema.methods.recentworkouts = function(callback) { +return this.model('workout') .find({author: this._id}) //.sort('created_at', 1) .limit(5) diff --git a/test/data/schemas/workout.js b/test/data/schemas/workout.js index 9337b03..c83cb13 100644 --- a/test/data/schemas/workout.js +++ b/test/data/schemas/workout.js @@ -1,30 +1,19 @@ var Schema = require('mongoose').Schema; - -var Split = new Schema({ - reps: { type: String}, - weight: { type: String}, - dropset: { type: Boolean } +var workoutSchema = new Schema({ + title: { + type: String + }, + body: String, + author: { + type: Schema.ObjectId, + ref: 'User', + required: true + }, + created_at: { + type: Date, + 'default': Date.now + } }); - -var Element = new Schema({ - ExerciseID: { type: Schema.ObjectId, ref: 'exercise'}, - splits: [Split] -}); - - -var ArticleSchema = new Schema({ - -userID: { type: Schema.ObjectId, ref: 'User', required: true }, -workoutDate: { type: Date, 'default': Date.now }, -workoutTime: { type: Date, 'default': Date.now }, -privacySetting: { type: Number}, -Notes: { type: String}, -templateID: { type: Schema.ObjectId, ref: 'Template'}, -circuits: [Number], -elements: [Element] - -}); - -module.exports = ArticleSchema; \ No newline at end of file +module.exports = workoutSchema; \ No newline at end of file diff --git a/test/data/schemas/workout_new.js b/test/data/schemas/workout_new.js new file mode 100644 index 0000000..535977e --- /dev/null +++ b/test/data/schemas/workout_new.js @@ -0,0 +1,30 @@ +var Schema = require('mongoose').Schema; + + +var Split = new Schema({ + reps: { type: String}, + weight: { type: String}, + dropset: { type: Boolean } +}); + + +var Element = new Schema({ + ExerciseID: { type: Schema.ObjectId, ref: 'exercise'}, + splits: [Split] +}); + + +var workoutSchema = new Schema({ + +userID: { type: Schema.ObjectId, ref: 'User', required: true }, +workoutDate: { type: Date, 'default': Date.now }, +workoutTime: { type: Date, 'default': Date.now }, +privacySetting: { type: Number}, +Notes: { type: String}, +templateID: { type: Schema.ObjectId, ref: 'Template'}, +circuits: [Number], +elements: [Element] + +}); + +module.exports = workoutSchema; \ No newline at end of file diff --git a/test/routes/middleware/is_admin.js b/test/routes/middleware/is_admin.js index 105f655..3f0224d 100644 --- a/test/routes/middleware/is_admin.js +++ b/test/routes/middleware/is_admin.js @@ -1,7 +1,9 @@ function isAdmin(req, res, next) { if (req.session.user.is_admin === false) { + console.log("not an admin - sending to profile"); res.redirect('/users/' + req.session.user.username); } else { + console.log("Admin detected"); next(); } } diff --git a/test/routes/middleware/load_article.js b/test/routes/middleware/load_article.js deleted file mode 100644 index 631039b..0000000 --- a/test/routes/middleware/load_article.js +++ /dev/null @@ -1,18 +0,0 @@ -var Article = require('../../data/models/article'); - -function loadArticle(req, res, next) { - Article.findOne({title: req.params.title}) - .populate('author') - .exec(function(err, article) { - if (err) { - return next(err); - } - if (! article) { - return res.send('Not found', 404); - } - req.article = article; - next(); - }); -} - -module.exports = loadArticle; \ No newline at end of file diff --git a/test/routes/middleware/load_workout.js b/test/routes/middleware/load_workout.js new file mode 100644 index 0000000..2e9d8b0 --- /dev/null +++ b/test/routes/middleware/load_workout.js @@ -0,0 +1,18 @@ +var workout = require('../../data/models/workout'); + +function loadworkout(req, res, next) { + workout.findOne({title: req.params.title}) + .populate('author') + .exec(function(err, workout) { + if (err) { + return next(err); + } + if (! workout) { + return res.send('Not found', 404); + } + req.workout = workout; + next(); + }); +} + +module.exports = loadworkout; \ No newline at end of file diff --git a/test/routes/middleware/logged_in.js b/test/routes/middleware/logged_in.js index d09a700..b63365f 100644 --- a/test/routes/middleware/logged_in.js +++ b/test/routes/middleware/logged_in.js @@ -1,8 +1,9 @@ function loggedIn(req, res, next) { if (! req.session.user) { - //res.send('Forbidden. Please log in first.', 403); + console.log("not logged in - redirecting to login"); res.redirect('/session/new'); } else { + console.log("user logged in"); next(); } } diff --git a/test/routes/session.js b/test/routes/session.js index e34bd79..2681a5c 100644 --- a/test/routes/session.js +++ b/test/routes/session.js @@ -17,7 +17,6 @@ module.exports = function(app) { } if (user) { req.session.user = user; - console.log("req.session.user= " + JSON.stringify(req.session.user)); res.redirect('/users/' + req.session.user.username); } else { res.redirect('/session/new'); diff --git a/test/routes/users.js b/test/routes/users.js index ffd3da0..bb55f71 100644 --- a/test/routes/users.js +++ b/test/routes/users.js @@ -44,7 +44,7 @@ module.exports = function(app) { }); app.get('/users/:name', loadUser, function(req, res, next){ - req.user.recentArticles(function(err, articles) { + req.user.recentworkouts(function(err, workouts) { if (err) { return next(err); } @@ -52,7 +52,7 @@ module.exports = function(app) { title: 'User profile', user: req.user, requested: req.params.name, - recentArticles: articles + recentworkouts: workouts }); }); }); diff --git a/test/routes/articles.js b/test/routes/workouts.js similarity index 51% rename from test/routes/articles.js rename to test/routes/workouts.js index b78b2e8..db5bfe0 100644 --- a/test/routes/articles.js +++ b/test/routes/workouts.js @@ -1,31 +1,31 @@ /* - * Article Routes + * workout Routes */ var async = require('async'); -var Article = require('../data/models/article'); +var workout = require('../data/models/workout'); var notLoggedIn = require('./middleware/not_logged_in'); -var loadArticle = require('./middleware/load_article'); +var loadworkout = require('./middleware/load_workout'); var loggedIn = require('./middleware/logged_in'); var qs = require('querystring'); -var maxArticlesPerPage = 5; +var maxworkoutsPerPage = 5; module.exports = function(app) { - app.get('/articles', loggedIn, function(req, res, next){ + app.get('/workouts', loggedIn, function(req, res, next){ var page = req.query.page && parseInt(req.query.page, 10) || 0; async.parallel([ function(next) { - Article.count(next); + workout.count(next); }, function(next) { - Article.find({}) + workout.find({}) //.sort('title', 1) - .skip(page * maxArticlesPerPage) - .limit(maxArticlesPerPage) + .skip(page * maxworkoutsPerPage) + .limit(maxworkoutsPerPage) .exec(next); } ], @@ -38,13 +38,13 @@ module.exports = function(app) { } var count = results[0]; - var articles = results[1]; + var workouts = results[1]; - var lastPage = (page + 1) * maxArticlesPerPage >= count; + var lastPage = (page + 1) * maxworkoutsPerPage >= count; - res.render('articles/index', { - title: 'Articles', - articles: articles, + res.render('workouts/index', { + title: 'workouts', + workouts: workouts, page: page, lastPage: lastPage }); @@ -53,20 +53,20 @@ module.exports = function(app) { ); }); - app.get('/articles/new', loggedIn, function(req, res) { - res.render('articles/new', {title: "New Article"}); + app.get('/workouts/new', loggedIn, function(req, res) { + res.render('workouts/new', {title: "New workout"}); }); - app.get('/articles/:_id', loadArticle, function(req, res, next){ - res.render('articles/article', {title: req.article.title, - article: req.article}); + app.get('/workouts/:_id', loadworkout, function(req, res, next){ + res.render('workouts/workout', {title: req.workout.title, + workout: req.workout}); }); - app.post('/articles', loggedIn, function(req, res, next) { + app.post('/workouts', loggedIn, function(req, res, next) { console.log("/nreq.body" + JSON.stringify(req.body)); - var article = req.body; - article.author = req.session.user._id; - Article.create(article, function(err) { + var workout = req.body; + workout.author = req.session.user._id; + workout.create(workout, function(err) { if (err) { if (err.code === 11000) { res.send('Conflict', 409); @@ -81,14 +81,14 @@ module.exports = function(app) { } return; } - res.redirect('/articles'); + res.redirect('/workouts'); }); }); - app.del('/articles/:title', loggedIn, loadArticle, function(req, res, next) { - req.article.remove(function(err) { + app.del('/workouts/:title', loggedIn, loadworkout, function(req, res, next) { + req.workout.remove(function(err) { if (err) { return next(err); } - res.redirect('/articles'); + res.redirect('/workouts'); }); }); diff --git a/test/views/articles/article.jade b/test/views/articles/article.jade deleted file mode 100644 index fe4c96b..0000000 --- a/test/views/articles/article.jade +++ /dev/null @@ -1,12 +0,0 @@ -extends ../layout -block content - h1= article.title - - div!= article.body - - hr - - p - span Author: -   - a(href="/users/" + encodeURIComponent(article.author.name))= article.author.name diff --git a/test/views/articles/list.jade b/test/views/articles/list.jade deleted file mode 100644 index ead5ec7..0000000 --- a/test/views/articles/list.jade +++ /dev/null @@ -1,5 +0,0 @@ -ul - - articles.forEach(function(article) { - li - a(href="/articles/" + encodeURIComponent(article._id))= article.title - - }); \ No newline at end of file diff --git a/test/views/index.jade b/test/views/index.jade index 8c44bf1..d7094c4 100644 --- a/test/views/index.jade +++ b/test/views/index.jade @@ -1,10 +1,10 @@ extends ./layout block content - h1= title + h1= #{title} p Welcome to #{title} p a(href="/users") List Users p - a(href="/articles") List Articles + a(href="/workouts") List workouts diff --git a/test/views/users/index.jade b/test/views/users/index.jade index 5ef46a2..1c33ce5 100644 --- a/test/views/users/index.jade +++ b/test/views/users/index.jade @@ -6,12 +6,12 @@ block content p a(href="/users/new") Create new profile p - a(href="/articles/new") Create new article + a(href="/workouts/new") Create new workout p a(href="/users") List Users p - a(href="/articles") List Articles + a(href="/workouts") List workouts ul diff --git a/test/views/users/profile.jade b/test/views/users/profile.jade index d6a3416..ee7e917 100644 --- a/test/views/users/profile.jade +++ b/test/views/users/profile.jade @@ -10,9 +10,12 @@ block content - else h1 Public View - h2 Recent Articles: + h2 Recent workouts: ul - - recentArticles.forEach(function(article) { + - recentworkouts.forEach(function(workout) { li - a(href="/articles/" + encodeURIComponent(article._id))= article.title + a(href="/workouts/" + encodeURIComponent(workout._id))= workout.title - }); + + - if (session.user.is_admin === true) + a(href="/users/") Goto Admin Page diff --git a/test/views/articles/index.jade b/test/views/workouts/index.jade similarity index 71% rename from test/views/articles/index.jade rename to test/views/workouts/index.jade index f0120fd..ba7d4e2 100644 --- a/test/views/articles/index.jade +++ b/test/views/workouts/index.jade @@ -1,14 +1,14 @@ extends ../layout block content - h1 Articles + h1 workouts p - a(href="/articles/new") Create new article + a(href="/workouts/new") Create new workout p a(href="/users") List Users p - a(href="/articles") List Articles + a(href="/workouts") List workouts include list diff --git a/test/views/workouts/list.jade b/test/views/workouts/list.jade new file mode 100644 index 0000000..1ddd394 --- /dev/null +++ b/test/views/workouts/list.jade @@ -0,0 +1,5 @@ +ul + - workouts.forEach(function(workout) { + li + a(href="/workouts/" + encodeURIComponent(workout._id))= workout.title + - }); \ No newline at end of file diff --git a/test/views/articles/new.jade b/test/views/workouts/new.jade similarity index 96% rename from test/views/articles/new.jade rename to test/views/workouts/new.jade index e9c19a4..57d8a16 100644 --- a/test/views/articles/new.jade +++ b/test/views/workouts/new.jade @@ -1,9 +1,9 @@ extends ../layout block content - h1 New Article + h1 New workout - form(method="POST", action="/articles") + form(method="POST", action="/workouts") p label(for="title") UserID
input#title(name="User_ID") diff --git a/test/views/workouts/workout.jade b/test/views/workouts/workout.jade new file mode 100644 index 0000000..f179029 --- /dev/null +++ b/test/views/workouts/workout.jade @@ -0,0 +1,12 @@ +extends ../layout +block content + h1= workout.title + + div!= workout.body + + hr + + p + span Author: +   + a(href="/users/" + encodeURIComponent(workout.author.name))= workout.author.name