From ccf5504537dafb84bf6195282fd80db552edb7cb Mon Sep 17 00:00:00 2001 From: Quincy Larson Date: Sun, 27 Sep 2015 10:49:44 -0700 Subject: [PATCH] add tshirt voting mechanism --- common/models/user.json | 3 ++ server/boot/user.js | 34 ++++++++++++++++++ server/views/challengeMap/show.jade | 55 +++++++++++++---------------- 3 files changed, 62 insertions(+), 30 deletions(-) diff --git a/common/models/user.json b/common/models/user.json index d0d8bed6e8..647a64836d 100644 --- a/common/models/user.json +++ b/common/models/user.json @@ -157,6 +157,9 @@ "rand": { "type": "number", "index": true + }, + "tshirtVote": { + "type": "number" } }, "validations": [], diff --git a/server/boot/user.js b/server/boot/user.js index 33a80c5c62..881928f9fb 100644 --- a/server/boot/user.js +++ b/server/boot/user.js @@ -76,6 +76,8 @@ module.exports = function(app) { ); router.get('/account/unlink/:provider', getOauthUnlink); router.get('/account', getAccount); + router.get('/vote1', vote1); + router.get('/vote2', vote1); // Ensure this is the last route! router.get('/:username', returnUser); @@ -332,4 +334,36 @@ module.exports = function(app) { }); }); } + + function vote1(req, res) { + if (req.user) { + req.user.tshirtVote = 1; + req.user.save(function (err) { + if (err) { + return next(err); + } + req.flash('success', {msg: 'Thanks for voting!'}); + res.redirect('/map'); + }); + } else { + req.flash('error', {msg: 'You must be signed in to vote.'}); + res.redirect('/map'); + } + } + + function vote2(req, res) { + if (req.user) { + req.user.tshirtVote = 2; + req.user.save(function (err) { + if (err) { + return next(err); + } + req.flash('success', {msg: 'Thanks for voting!'}); + res.redirect('/map'); + }); + } else { + req.flash('error', {msg: 'You must be signed in to vote.'}); + res.redirect('/map'); + } + } }; diff --git a/server/views/challengeMap/show.jade b/server/views/challengeMap/show.jade index 72e358261f..8ac788c2bf 100644 --- a/server/views/challengeMap/show.jade +++ b/server/views/challengeMap/show.jade @@ -18,36 +18,31 @@ block content span.text-primary #{daysRunning}   | days ago. .spacer - h3.text-center Vote for the T-shirt design you like the most. - h4.text-center We'll announce the winning design on Saturday's Summit on Twitch.tv, and it will become our community's first official t-shirt. - .row - .col-xs-6.thumbnail - a(href="http://i.imgur.com/LlXGa5y.png" data-lightbox="img-enlarge") - img.img-responsive(src='http://i.imgur.com/LlXGa5y.png' alt="t-shirt option 1 women's") - .caption - p.text-center Design 1 Women's - .col-xs-6.thumbnail - a(href="http://i.imgur.com/aefwnnv.png" data-lightbox="img-enlarge") - img.img-responsive(src='http://i.imgur.com/aefwnnv.png' alt="t-shirt option 2 women's") - .caption - p.text-center Design 2 Women's - .row - .col-xs-6.thumbnail - a(href="http://i.imgur.com/aYH0aqf.png" data-lightbox="img-enlarge") - img.img-responsive(src='http://i.imgur.com/aYH0aqf.png' alt="t-shirt option 1 men's") - .caption - p.text-center Design 1 Men's - .col-xs-6.thumbnail - a(href="http://i.imgur.com/v9KlV4g.png" data-lightbox="img-enlarge") - img.img-responsive(src='http://i.imgur.com/v9KlV4g.png' alt="t-shirt option 2 men's") - .caption - p.text-center Design 2 Men's - .row - .col-xs-6 - .button.btn.btn-block.btn-primary Vote for Design 1 - .col-xs-6 - .button.btn.btn-block.btn-primary Vote for Design 2 - .spacer + if (user && !user.tshirtVote) + h3.text-center Vote for the T-shirt design you like the most. + h4.text-center We'll announce the winning design on Saturday's Summit on Twitch.tv, and it will become our community's first official t-shirt. + .row + .col-xs-6 + a(href="http://i.imgur.com/LlXGa5y.png" data-lightbox="img-enlarge") + img.img-responsive(src='http://i.imgur.com/LlXGa5y.png' alt="t-shirt option 1 women's") + .col-xs-6 + a(href="http://i.imgur.com/aefwnnv.png" data-lightbox="img-enlarge") + img.img-responsive(src='http://i.imgur.com/aefwnnv.png' alt="t-shirt option 2 women's") + .button-spacer + .row + .col-xs-6 + a(href="http://i.imgur.com/aYH0aqf.png" data-lightbox="img-enlarge") + img.img-responsive(src='http://i.imgur.com/aYH0aqf.png' alt="t-shirt option 1 men's") + .col-xs-6 + a(href="http://i.imgur.com/v9KlV4g.png" data-lightbox="img-enlarge") + img.img-responsive(src='http://i.imgur.com/v9KlV4g.png' alt="t-shirt option 2 men's") + .button-spacer + .row + .col-xs-6 + a.button.btn.btn-block.btn-primary(href='/vote1') Vote for Design 1 + .col-xs-6 + a.button.btn.btn-block.btn-primary(href='/vote2') Vote for Design 2 + .spacer .row .col-xs-12.col-sm-8.col-sm-offset-2 h3 800 Hours of Practice: