Added start of individual post view and post lists view, wired upvoting functionality for individual posts
parent
94bbb7a4a5
commit
4b84b49d07
|
@ -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
|
||||
}
|
||||
}
|
|
@ -23,3 +23,5 @@ node_modules
|
|||
.DS_Store
|
||||
Thumbs.db
|
||||
bower_components
|
||||
.eslintignore
|
||||
.eslintrc
|
||||
|
|
4
app.js
4
app.js
|
@ -292,6 +292,10 @@ app.get(
|
|||
'/stories/:storyName',
|
||||
storyController.returnIndividualStory
|
||||
);
|
||||
app.post(
|
||||
'/stories/upvote/:id',
|
||||
storyController.upvote
|
||||
);
|
||||
|
||||
/**
|
||||
* Challenge related routes
|
||||
|
|
|
@ -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,
|
||||
|
@ -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);
|
||||
});
|
||||
};
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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']);
|
||||
|
|
|
@ -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'));
|
||||
}
|
||||
});
|
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue