From 0634926af0228412b4da7bd9a89ad0a4251fa274 Mon Sep 17 00:00:00 2001 From: Quincy Larson Date: Sun, 27 Sep 2015 01:44:09 -0700 Subject: [PATCH 1/3] add t-shirts to view --- server/views/challengeMap/show.jade | 32 ++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/server/views/challengeMap/show.jade b/server/views/challengeMap/show.jade index 05d591b010..72e358261f 100644 --- a/server/views/challengeMap/show.jade +++ b/server/views/challengeMap/show.jade @@ -17,7 +17,37 @@ block content | since we launched   span.text-primary #{daysRunning}   | days ago. - a.btn.btn-lg.signup-btn.btn-block(href="https://www.facebook.com/sharer/sharer.php?u=http://freecodecamp.com" target='_blank') Share our open source community on Facebook and help us grow. + .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 .row .col-xs-12.col-sm-8.col-sm-offset-2 h3 800 Hours of Practice: From ccf5504537dafb84bf6195282fd80db552edb7cb Mon Sep 17 00:00:00 2001 From: Quincy Larson Date: Sun, 27 Sep 2015 10:49:44 -0700 Subject: [PATCH 2/3] 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: From a64a46cff1e6e93500aea987f6226a9d56020450 Mon Sep 17 00:00:00 2001 From: Quincy Larson Date: Sun, 27 Sep 2015 11:05:44 -0700 Subject: [PATCH 3/3] don't show tshirt voting to brand new users --- server/views/challengeMap/show.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/views/challengeMap/show.jade b/server/views/challengeMap/show.jade index 8ac788c2bf..35ec5886c5 100644 --- a/server/views/challengeMap/show.jade +++ b/server/views/challengeMap/show.jade @@ -18,7 +18,7 @@ block content span.text-primary #{daysRunning}   | days ago. .spacer - if (user && !user.tshirtVote) + if (user && !user.tshirtVote && user.progressTimestamps.length > 5) 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