From 29568d45b8d87fff8cc7533cb2304251872231bb Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Fri, 3 Apr 2015 23:54:31 -0700 Subject: [PATCH 1/5] fix a typo related to challenge tweets --- views/challenges/show.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/challenges/show.jade b/views/challenges/show.jade index a0c81d2a7b..a03b095640 100644 --- a/views/challenges/show.jade +++ b/views/challenges/show.jade @@ -50,7 +50,7 @@ block content .success( function (data) { console.log(data); - url = "https://twitter.com/intent/tweet?text=I%20just%20#{verb}%20%40FreeCodeCamp%20Bonfire:%20#{name}&url=" + data + "&hashtags=LearnToCode, JavaScript"; + url = "https://twitter.com/intent/tweet?text=I%20just%20#{verb}%20%40FreeCodeCamp%20Challenge:%20#{name}&url=" + data + "&hashtags=LearnToCode, JavaScript"; $('.btn-twitter').attr('href', url); } ); \ No newline at end of file From 2c6a7818907decc742465fef428867d856701745 Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Tue, 7 Apr 2015 00:32:01 -0700 Subject: [PATCH 2/5] add inspectlet javascript --- views/partials/universal-head.jade | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/views/partials/universal-head.jade b/views/partials/universal-head.jade index 10308e0065..d0c6ec57f3 100644 --- a/views/partials/universal-head.jade +++ b/views/partials/universal-head.jade @@ -14,4 +14,20 @@ script. })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); ga('create', 'UA-55446531-1', 'auto'); ga('require', 'displayfeatures'); - ga('send', 'pageview'); \ No newline at end of file + ga('send', 'pageview'); +script#inspectletjs(type='text/javascript'). + window.__insp = window.__insp || []; + __insp.push(['wid', 561999918]); + (function() { + function __ldinsp() { + var insp = document.createElement('script'); + insp.type = 'text/javascript'; + insp.async = true; + insp.id = "inspsync"; + insp.src = ('https:' == document.location.protocol ? 'https' : 'http') + '://cdn.inspectlet.com/inspectlet.js'; + var x = document.getElementsByTagName('script')[0]; + x.parentNode.insertBefore(insp, x); + } + if (window.attachEvent) window.attachEvent('onload', __ldinsp); + else window.addEventListener('load', __ldinsp, false); + })(); \ No newline at end of file From e3acdb9ebb5e6c1e79f4083407a51d26c6f51c76 Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Wed, 8 Apr 2015 21:53:08 -0700 Subject: [PATCH 3/5] add slack key to secrets.js --- config/secrets.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/config/secrets.js b/config/secrets.js index 419b927792..7083405f7d 100644 --- a/config/secrets.js +++ b/config/secrets.js @@ -10,7 +10,11 @@ module.exports = { }, blogger: { - key: process.env.BLOGGER_KEY, + key: process.env.BLOGGER_KEY + }, + + slack: { + key: process.env.SLACK_KEY }, mandrill: { From 9145e959de2609a21aab0bf1d7b8271bc7b6324a Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Wed, 8 Apr 2015 22:42:40 -0700 Subject: [PATCH 4/5] able to use the api upon button click --- app.js | 57 +++++++++++++++++++++++++++++- controllers/resources.js | 5 +++ models/User.js | 1 + views/resources/learn-to-code.jade | 3 ++ 4 files changed, 65 insertions(+), 1 deletion(-) diff --git a/app.js b/app.js index 3c1ef9e70b..ed06fe116d 100644 --- a/app.js +++ b/app.js @@ -31,6 +31,7 @@ var express = require('express'), passport = require('passport'), expressValidator = require('express-validator'), connectAssets = require('connect-assets'), + request = require('request'), /** * Controllers (route handlers). @@ -46,7 +47,7 @@ var express = require('express'), /** * Stories */ - storyController = require('./controllers/story'); + storyController = require('./controllers/story'), /** * API keys and Passport configuration. @@ -292,6 +293,60 @@ app.post( userController.updateProgress ); +app.get('/api/slack', function(req, res) { + if (req.user) { + if (req.user.email) { + var invite = { + 'email': req.user.email, + 'token': process.env.SLACK_KEY, + 'set_active': true + }; + + var headers = { + 'User-Agent': 'Node Browser/0.0.1', + 'Content-Type': 'application/x-www-form-urlencoded' + }; + + var options = { + url: 'https://freecode.slack.com/api/users.admin.invite', + method: 'POST', + headers: headers, + form: invite + }; + + request(options, function (error, response, body) { + if (!error && response.statusCode === 200) { + req.flash('success', { + msg: "We've successfully requested an invite for you. Please check your email and follow the instructions from Slack." + }); + req.user.sentSlackInvite = true; + req.user.save(function(err, user) { + if (err) { + next(err); + } + return res.redirect('back'); + }); + } else { + req.flash('errors', { + msg: "The invitation email did not go through for some reason. Please try again or Date: Wed, 8 Apr 2015 22:52:14 -0700 Subject: [PATCH 5/5] finish up adding the slack functionality with a redirect on the chat navbar button --- controllers/resources.js | 11 +++++------ views/partials/navbar.jade | 2 +- views/resources/learn-to-code.jade | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/controllers/resources.js b/controllers/resources.js index b8f4f3e974..e8fbb0a6ee 100644 --- a/controllers/resources.js +++ b/controllers/resources.js @@ -74,14 +74,13 @@ module.exports = { }, chat: function chat(req, res) { - if (req.user) { - if (req.user.sentSlackInvite) { + if (req.user && req.user.sentSlackInvite) { res.redirect('https://freecode.slack.com/messages/general/'); - } + } else { + res.render('resources/chat', { + title: "Join our chat room" + }); } - res.render('resources/chat', { - title: "Enter Free Code Camp's Chat Rooms" - }); }, nonprofitProjectInstructions: function nonprofitProjectInstructions(req, res) { diff --git a/views/partials/navbar.jade b/views/partials/navbar.jade index f457302b67..2db9c5016e 100644 --- a/views/partials/navbar.jade +++ b/views/partials/navbar.jade @@ -14,7 +14,7 @@ li a(href='/challenges') Challenges li - a(href='/chat') Chat + a(href='/chat', target='_blank') Chat li a(href='/stories/hot') News li diff --git a/views/resources/learn-to-code.jade b/views/resources/learn-to-code.jade index 16624e20bf..18291a5f2e 100644 --- a/views/resources/learn-to-code.jade +++ b/views/resources/learn-to-code.jade @@ -5,7 +5,7 @@ block content .text-center if (user) if (!user.sentSlackInvite) - a.btn.btn-primary.signup-btn.next-challenge-button(href="/api/slack") Join our Slack Chat Room + a.btn.btn-primary.btn-cta.next-challenge-button(href="/api/slack") Join our Slack Chat Room .spacer a.btn.btn-cta.signup-btn.next-challenge-button(href="/challenges") Take me to my next challenge else