Wire hot, recent, submit, and search views in app and controller, modified button navigation to fetch their routes

This commit is contained in:
Nathan Leniz
2015-03-06 08:11:18 +09:00
parent f1f3258fe3
commit 5440efc729
7 changed files with 140 additions and 25 deletions

49
app.js
View File

@ -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

View File

@ -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
});
};

View File

@ -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

View File

@ -7,7 +7,7 @@ h3
return name.toLowerCase().replace(/\s/g, '-');
}
$.ajax({
url: '/stories/index',
url: '/stories/hotStories',
type: 'GET'
})
.success(

View File

@ -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

View File

@ -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("<div class='row text-left'>" +
"<div class='col-xs-3 col-sm-1'>" +
"<div class='story-up-votes'>" +
"<span>" + rank + "</span>" +
"</div>" +
"</div>" +
"<div class='col-xs-2 col-sm-1'>" +
"<img src='" + data[i].author.picture + "' class='img-responsive'/>" +
"</div>" +
"<div class='col-xs-7 col-sm-10'>" +
"<div class='row'>" +
"<div class='col-xs-12'>" +
"<a href='/stories/" + linkedName + "'>"
+ data[i].storyLink +
"</a>" +
"</div>" +
"<div class='col-xs-12'>" +
"<span>Posted " +
moment(data[i].timePosted).fromNow() +
" by <a href='/" + data[i].author.username + "'>@" + data[i].author.username + "</a> " +
"</div>" +
"</div>" +
"</div>" +
"</div>" +
"</li>");
$(li).appendTo($('#story-list'));
}
});

View File

@ -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
script.
$('label').on('click', function() {
console.log('clicked');
window.location = ($(this).children('input').attr('href'));
});
.spacer