From 5440efc7290490d2cdede55e06a2bd92cc93b713 Mon Sep 17 00:00:00 2001 From: Nathan Leniz Date: Fri, 6 Mar 2015 08:11:18 +0900 Subject: [PATCH] Wire hot, recent, submit, and search views in app and controller, modified button navigation to fetch their routes --- app.js | 49 +++++++++++++++++++++++++++------- controllers/story.js | 39 ++++++++++++++++++++++++--- views/partials/navbar.jade | 2 +- views/stories/hot-stories.jade | 2 +- views/stories/index.jade | 2 +- views/stories/new-stories.jade | 47 ++++++++++++++++++++++++++++++++ views/stories/news-nav.jade | 24 ++++++++++------- 7 files changed, 140 insertions(+), 25 deletions(-) diff --git a/app.js b/app.js index 237cd1f65a..358578f0a7 100644 --- a/app.js +++ b/app.js @@ -281,17 +281,20 @@ app.post( * Main routes. */ app.get( - '/stories/', - storyController.index -); -app.get( - '/stories/index', - storyController.json + '/stories/hotStories', + storyController.hotJSON ); -app.post( - '/stories/comment/submit', - storyController.commentSubmit +app.get( + '/stories/recentStories', + storyController.recentJSON +); + +app.get( + '/stories/', + function(req, res) { + res.redirect(302, '/stories/hot'); + } ); app.get( @@ -299,15 +302,43 @@ app.get( storyController.comments ); +app.post( + '/stories/comment/submit', + storyController.commentSubmit +); + +app.get( + '/stories/submit', + storyController.submitNew +); + app.post( '/stories/submit', storyController.storySubmission ); + +app.get( + '/stories/hot', + storyController.hot +); + +app.get( + '/stories/recent', + storyController.recent +); + + +app.get( + '/stories/search', + storyController.search +); + app.get( '/stories/:storyName', storyController.returnIndividualStory ); + app.post( '/stories/upvote/', storyController.upvote diff --git a/controllers/story.js b/controllers/story.js index 8ea25044ca..485c2bcd10 100644 --- a/controllers/story.js +++ b/controllers/story.js @@ -6,7 +6,7 @@ var R = require('ramda'), moment = require('../public/js/lib/moment/moment.js'), resources = require('./resources'); -exports.json = function(req, res, next) { +exports.hotJSON = function(req, res, next) { var story = Story.find({}).sort({'rank': -1}); story.exec(function(err, stories) { if (err) { @@ -16,13 +16,44 @@ exports.json = function(req, res, next) { }); }; -exports.index = function(req, res, next) { - var story = Story.find({}).sort({'rank': -1}); +exports.recentJSON = function(req, res, next) { + var story = Story.find({}).sort({'timePosted': -1}); story.exec(function(err, stories) { if (err) { throw err; } - res.render('stories/index'); + res.json(stories); + }); +}; + +exports.hot = function(req, res, next) { + res.render('stories/index', { + page: 'hot' + }); +}; + +exports.submitNew = function(req,res, next) { + res.render('stories/submit-story', { + page: 'submit' + }); +}; + +exports.search = function(req, res, next) { + res.render('stories/search-stories', { + page: 'search' + }); +}; + +exports.recent = function(req, res, next) { + res.render('stories/index', { + page: 'recent' + }); +}; + +exports.specificView = function(req, res, next) { + var whichView = req.params.type; + res.render('stories/index', { + page: whichView }); }; diff --git a/views/partials/navbar.jade b/views/partials/navbar.jade index 9c19b96b52..16fd86ce30 100644 --- a/views/partials/navbar.jade +++ b/views/partials/navbar.jade @@ -16,7 +16,7 @@ li a(href='/chat') Chat li - a(href='/stories') News + a(href='/stories/hot') News li a(href='/bonfires') Bonfires if !user diff --git a/views/stories/hot-stories.jade b/views/stories/hot-stories.jade index c3dcc96caa..7fb206cb0d 100644 --- a/views/stories/hot-stories.jade +++ b/views/stories/hot-stories.jade @@ -7,7 +7,7 @@ h3 return name.toLowerCase().replace(/\s/g, '-'); } $.ajax({ - url: '/stories/index', + url: '/stories/hotStories', type: 'GET' }) .success( diff --git a/views/stories/index.jade b/views/stories/index.jade index 609cd7f32a..796ce74fa4 100644 --- a/views/stories/index.jade +++ b/views/stories/index.jade @@ -9,7 +9,7 @@ block content include ./news-nav if (page === 'hot') include ./hot-stories - if (page === 'new') + if (page === 'recent') include ./new-stories if (page === 'submit') include ./submit-story diff --git a/views/stories/new-stories.jade b/views/stories/new-stories.jade index e69de29bb2..6378303a5f 100644 --- a/views/stories/new-stories.jade +++ b/views/stories/new-stories.jade @@ -0,0 +1,47 @@ +h3 + ul#story-list.story-list + + script(src="https://cdn.jsdelivr.net/ramda/0.10.0/ramda.min.js") + script. + var getLinkedName = function getLinkedName(name) { + return name.toLowerCase().replace(/\s/g, '-'); + } + $.ajax({ + url: '/stories/recentStories', + type: 'GET' + }) + .success( + function(data) { + for (var i = 0; i < data.length; i++) { + var li = document.createElement('li'); + var linkedName = getLinkedName(data[i].storyLink); + var rank = data[i].rank; + + $(li).html("
" + + "
" + + "
" + + "" + rank + "" + + "
" + + "
" + + "
" + + "" + + "
" + + "
" + + "
" + + "" + + "
" + + "Posted " + + moment(data[i].timePosted).fromNow() + + " by @" + data[i].author.username + " " + + "
" + + "
" + + "
" + + "
" + + ""); + $(li).appendTo($('#story-list')); + } + }); \ No newline at end of file diff --git a/views/stories/news-nav.jade b/views/stories/news-nav.jade index 4307a16545..058fb406df 100644 --- a/views/stories/news-nav.jade +++ b/views/stories/news-nav.jade @@ -1,15 +1,21 @@ .col-xs-12 .btn-group.input-group.btn-group-justified(data-toggle='buttons') - label.btn.btn-primary.btn-big - input#option1(type='radio', name='options') + label.btn.btn-primary.btn-big(class="#{ page === 'hot' ? 'active' : '' }") + input#option1(href='/stories/hot', type='radio', name='options') | Hot - label.btn.btn-primary.active.btn-big - input#option2(type='radio', name='options') + label.btn.btn-primary.btn-big(class="#{ page === 'recent' ? 'active' : '' }") + input#option2(href='/stories/recent', type='radio', name='options') | New - label.btn.btn-primary.btn-big - input#option3(type='radio', name='options') + label.btn.btn-primary.btn-big(class="#{ page === 'submit' ? 'active' : '' }") + input#option3(href='/stories/submit', type='radio', name='options') | Submit - label.btn.btn-primary.btn-big - input#option3(type='radio', name='options') + label.btn.btn-primary.btn-big(class="#{ page === 'search' ? 'active' : '' }") + input#option4(href='/stories/search', type='radio', name='options') | Search - .spacer \ No newline at end of file + script. + $('label').on('click', function() { + console.log('clicked'); + window.location = ($(this).children('input').attr('href')); + }); + +.spacer \ No newline at end of file