Skip to content

Commit

Permalink
Added start of individual post view and post lists view, wired upvoti…
Browse files Browse the repository at this point in the history
…ng functionality for individual posts
  • Loading branch information
terakilobyte committed Mar 3, 2015
1 parent 94bbb7a commit 4b84b49
Show file tree
Hide file tree
Showing 8 changed files with 307 additions and 26 deletions.
220 changes: 220 additions & 0 deletions .eslintrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
{
"ecmaFeatures": {
"jsx": true
},
"env": {
"browser": true,
"mocha": true,
"node": true
},
"globals": {
"window": true,
"$": true,
"ga": true,
"jQuery": true
},
"rules": {
"no-comma-dangle": 2,
"no-cond-assign": 2,
"no-console": 0,
"no-constant-condition": 2,
"no-control-regex": 2,
"no-debugger": 2,
"no-dupe-keys": 2,
"no-empty": 2,
"no-empty-class": 2,
"no-ex-assign": 2,
"no-extra-boolean-cast": 2,
"no-extra-parens": 0,
"no-extra-semi": 2,
"no-func-assign": 2,
"no-inner-declarations": 2,
"no-invalid-regexp": 2,
"no-irregular-whitespace": 2,
"no-negated-in-lhs": 2,
"no-obj-calls": 2,
"no-regex-spaces": 2,
"no-reserved-keys": 0,
"no-sparse-arrays": 2,
"no-unreachable": 2,
"use-isnan": 2,
"valid-jsdoc": 2,
"valid-typeof": 2,

"block-scoped-var": 2,
"complexity": 0,
"consistent-return": 2,
"curly": 2,
"default-case": 1,
"dot-notation": 0,
"eqeqeq": 1,
"guard-for-in": 1,
"no-alert": 1,
"no-caller": 2,
"no-div-regex": 2,
"no-else-return": 0,
"no-empty-label": 2,
"no-eq-null": 1,
"no-eval": 2,
"no-extend-native": 2,
"no-extra-bind": 2,
"no-fallthrough": 2,
"no-floating-decimal": 2,
"no-implied-eval": 2,
"no-iterator": 2,
"no-labels": 2,
"no-lone-blocks": 2,
"no-loop-func": 1,
"no-multi-spaces": 1,
"no-multi-str": 2,
"no-native-reassign": 2,
"no-new": 2,
"no-new-func": 2,
"no-new-wrappers": 2,
"no-octal": 2,
"no-octal-escape": 2,
"no-process-env": 0,
"no-proto": 2,
"no-redeclare": 1,
"no-return-assign": 2,
"no-script-url": 2,
"no-self-compare": 2,
"no-sequences": 2,
"no-unused-expressions": 2,
"no-void": 1,
"no-warning-comments": [
1,
{
"terms": [
"fixme"
],
"location": "start"
}
],
"no-with": 2,
"radix": 2,
"vars-on-top": 0,
"wrap-iife": [2, "any"],
"yoda": 0,

"strict": 0,

"no-catch-shadow": 2,
"no-delete-var": 2,
"no-label-var": 2,
"no-shadow": 0,
"no-shadow-restricted-names": 2,
"no-undef": 2,
"no-undef-init": 2,
"no-undefined": 1,
"no-unused-vars": 2,
"no-use-before-define": 0,

"handle-callback-err": 2,
"no-mixed-requires": 0,
"no-new-require": 2,
"no-path-concat": 2,
"no-process-exit": 2,
"no-restricted-modules": 0,
"no-sync": 0,

"brace-style": [
2,
"1tbs",
{ "allowSingleLine": true }
],
"camelcase": 1,
"comma-spacing": [
2,
{
"before": false,
"after": true
}
],
"comma-style": [
2, "last"
],
"consistent-this": 0,
"eol-last": 2,
"func-names": 0,
"func-style": 0,
"key-spacing": [
2,
{
"beforeColon": false,
"afterColon": true
}
],
"max-nested-callbacks": 0,
"new-cap": 0,
"new-parens": 2,
"no-array-constructor": 2,
"no-inline-comments": 1,
"no-lonely-if": 1,
"no-mixed-spaces-and-tabs": 2,
"no-multiple-empty-lines": [
1,
{ "max": 2 }
],
"no-nested-ternary": 2,
"no-new-object": 2,
"no-space-before-semi": 2,
"no-spaced-func": 2,
"no-ternary": 0,
"no-trailing-spaces": 1,
"no-underscore-dangle": 0,
"no-wrap-func": 2,
"one-var": 0,
"operator-assignment": 0,
"padded-blocks": 0,
"quote-props": 0,
"quotes": [
2,
"single",
"avoid-escape"
],
"semi": [
2,
"always"
],
"sort-vars": 0,
"space-after-keywords": [
2,
"always",
{ "checkFunctionKeyword": false }
],
"space-after-function-names": "never",
"space-before-blocks": [
2,
"always"
],
"space-in-brackets": 0,
"space-in-parens": 0,
"space-infix-ops": 2,
"space-return-throw-case": 2,
"space-unary-ops": [
1,
{
"words": true,
"nonwords": false
}
],
"spaced-line-comment": [
2,
"always",
{ "exceptions": ["-"] }
],
"wrap-regex": 1,

"max-depth": 0,
"max-len": [
1,
80,
2
],
"max-params": 0,
"max-statements": 0,
"no-bitwise": 1,
"no-plusplus": 0
}
}
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,3 +23,5 @@ node_modules
.DS_Store
Thumbs.db
bower_components
.eslintignore
.eslintrc
4 changes: 4 additions & 0 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,10 @@ app.get(
'/stories/:storyName',
storyController.returnIndividualStory
);
app.post(
'/stories/upvote/:id',
storyController.upvote
);

/**
* Challenge related routes
Expand Down
19 changes: 17 additions & 2 deletions controllers/story.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,9 +50,10 @@ exports.returnIndividualStory = function(req, res, next) {

story = story.pop();
var dashedNameFull = story.headline.toLowerCase().replace(/\s/g, '-');
if (dashedNameFull != dashedName) {
if (dashedNameFull !== dashedName) {
return res.redirect('../stories/' + dashedNameFull);
}
debug('Story id is', story._id);

res.render('post/show', {
title: story.headline,
Expand All @@ -61,7 +62,21 @@ exports.returnIndividualStory = function(req, res, next) {
body: story.body,
rank: story.rank,
upVotes: story.upVotes,
comments: story.comments
comments: story.comments,
id: story._id
});
});
};

exports.upvote = function(req, res, next) {
var data = req.params.id;
Story.find({'_id': data}, function(err, story) {
if (err) {
throw err;
}
story = story.pop();
story.rank++;
story.save();
return res.send(story);
});
};
4 changes: 4 additions & 0 deletions public/css/main.less
Original file line number Diff line number Diff line change
Expand Up @@ -744,6 +744,10 @@ iframe.iphone {
margin-bottom: -4px;
}

.story-list li {
padding-bottom: 5px;
}

//uncomment this to see the dimensions of all elements outlined in red
//* {
// border-color: red;
Expand Down
21 changes: 21 additions & 0 deletions public/js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,27 @@ $(document).ready(function() {
$('#brief-instructions').show();
$('#long-instructions').hide();
});

var upvoteHandler = function () {
var _id = storyId;

$.ajax({
type: 'POST',
url: '/stories/upvote/' + _id,
beforeSend: function() {
$('#upvote').unbind('click');
},
error: function(xhr, textStatus, errorThrown) {
console.log('got error');
$('#upvote').bind('click', upvoteHandler);
},
success: function (data, textStatus, xhr) {
console.log(data);
$('#storyRank').text(data.rank);
}
});
};
$('#upvote').on('click', upvoteHandler);
});

var profileValidation = angular.module('profileValidation',['ui.bootstrap']);
Expand Down
43 changes: 22 additions & 21 deletions views/post/posts.jade
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
h2
ul#story-list Top Stories
h3
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/index',
type: 'GET'
})
.success(
function(data) {
for (var i = 0; i < data.length; i++) {
var li = document.createElement('li');
var linkedName = getLinkedName(data[i].headline);
h3
ul#story-list.story-list

$(li).html("<a href='/stories/" + linkedName + "'>" + data[i].headline + "</a></li>");
$(li).appendTo($('#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/index',
type: 'GET'
})
.success(
function(data) {
for (var i = 0; i < data.length; i++) {
var li = document.createElement('li');
var linkedName = getLinkedName(data[i].headline);
var rank = data[i].rank;

$(li).html("<div class='row text-center'><div class='col-xs-3 text-right'><i class='ion-arrow-up-b'></i></div><div class='col-xs-6'><a href='/stories/" + linkedName + "'>" + data[i].headline + "</a></div><div class='col-xs-3'></div></div><div class='row text-center'><div class='col-xs-3 text-right'>" + rank + "</div><div class='col-xs-6'>" + data[i].author.username + "</div><div class='col-xs-3'></div></div></li>");
$(li).appendTo($('#story-list'));
}
});
20 changes: 17 additions & 3 deletions views/post/show.jade
Original file line number Diff line number Diff line change
@@ -1,8 +1,22 @@
extends ../layout
block content
h1= title
h3= body
h5= rank
script.
var challengeName = 'Story';
var storyId = !{JSON.stringify(id)};
.jumbotron
.row
.col-xs-2(style='position: relative; top: 50%; -webkit-transform: translateY(50%); -ms-transform: translateY(50%);transform: translateY(50%);')
h3#storyRank= rank
.col-xs-10.text-center
h1= title
.row
.col-xs-2
h3
a#upvote
i.ion-arrow-up-b
.col-xs-10.text-center
h3= body




Expand Down

0 comments on commit 4b84b49

Please sign in to comment.