Pull some useful changes from aborted branch

This commit is contained in:
Michael Q Larson
2015-04-16 23:54:26 -07:00
parent d2fae63310
commit d10011acc3
4 changed files with 147 additions and 110 deletions

View File

@ -8,7 +8,7 @@ exports.index = function(req, res) {
res.redirect('/challenges/')
} else {
res.render('home', {
title: 'Learn to Code and Become a Software Engineer'
title: 'Learn to Code JavaScript and get a Coding Job by Helping Nonprofits'
});
}
};

View File

@ -18,7 +18,10 @@ var userSchema = new mongoose.Schema({
github: String,
linkedin: String,
tokens: Array,
progressTimestamps: [],
progressTimestamps: {
type: Array,
default: []
},
profile: {
username: {
type: String,
@ -28,7 +31,7 @@ var userSchema = new mongoose.Schema({
},
bio: {
type: String,
defaults: ''
default: ''
},
name: {
type: String,
@ -63,7 +66,6 @@ var userSchema = new mongoose.Schema({
default: ''
}
},
challengesHash: {},
portfolio: {
website1Link: {
type: String,

View File

@ -606,21 +606,45 @@
"tests": []
},
{
"_id": "bd7158d8c442eddfaeb5bdff",
"name": "Zipline: Integrate with Twitch's API",
"_id": "bd7158d8c442eddfaeb5bd1f",
"name": "Zipline: Use the Twitch.tv JSON API",
"difficulty": 1.01,
"challengeSeed": "123488494",
"description": [
"Go to CodePen <a href='http://codepen.io/FreeCodeCamp/pen/gbEmJr'>http://codepen.io/FreeCodeCamp/pen/gbEmJr</a> and click the \"fork\" button. This will create a \"fork\", or copy of the file, which you can then edit yourself.",
"Build a Twitch integration on CodePen.io using this as a reference: <a href='http://codepen.io/FreeCodeCamp/full/gbEmJr/' target='_blank'>http://codepen.io/FreeCodeCamp/full/gbEmJr/</a>.",
"Here are the rules: <ol><li>Don't look at the example's code. Figure it out for yourself.</li><li>You may use whichever libraries or APIs you need.</li><li>Reproduce the example project's functionality, and also feel free to personalize it.</li></ul>",
"Here's an example call to Twitch.tv's JSON API: <code>https://api.twitch.tv/kraken/streams/freecodecamp</code>.",
"The relevant documentation is here: <a href='https://github.com/justintv/Twitch-API/blob/master/v3_resources/streams.md#get-streamschannel' target='_blank'>https://github.com/justintv/Twitch-API/blob/master/v3_resources/streams.md#get-streamschannel</a>.",
"When you are finished, click the \"I've completed this challenge\" button and include a link to your Codepen. If you pair programmed, you should also include the Free Code Camp username of your pair. We will take a look at your code and eventually give you feedback. In the meantime, please move on to your next challenge."
],
"challengeType": 3,
"tests": []
},
{
"_id": "bd7158d8c442eddfaeb5bd10",
"name": "Zipline: Customize a Twitter Stream",
"difficulty": 1.06,
"challengeSeed": "123488494",
"description": [
"Start by forking this: <a href='http://codepen.io/FreeCodeCamp/pen/aOobVX'>http://codepen.io/FreeCodeCamp/pen/aOobVX</a>"
],
"challengeType": 3,
"tests": []
},
{
"_id": "bd7158d8c442eddfaeb5bd18",
"name": "Zipline: Integrate with a Weather API",
"difficulty": 1.02,
"challengeSeed": "123488494",
"description": [
],
"challengeType": 3,
"tests": []
},
{
"_id": "bd7158d8c442eddfaeb5bd0f",
"name": "Zipline: Integrate with Trello's API",
"difficulty": 1.02,
"difficulty": 1.05,
"challengeSeed": "123488494",
"description": [
"Go to CodePen <a href='http://codepen.io/FreeCodeCamp/pen/gbEmJr'>http://codepen.io/FreeCodeCamp/pen/gbEmJr</a> and click the \"fork\" button. This will create a \"fork\", or copy of the file, which you can then edit yourself.",
@ -636,13 +660,41 @@
"tests": []
},
{
"_id": "bd7158d8c442eddfaeb5bd1f",
"name": "Zipline: Integrate with a Weather API",
"difficulty": 1.03,
"_id": "bd7158d8c442eddfaeb5bd17",
"name": "Zipline: Build a Random Quote Generator",
"difficulty": 1.06,
"challengeSeed": "123488494",
"description": [
],
"challengeType": 3,
"tests": []
},
{
"_id": "bd7158d8c442eddfaeb5bd1c",
"name": "Zipline: Build a Camper News Viewer",
"difficulty": 1.06,
"challengeSeed": "123488494",
"description": [
],
"challengeType": 3,
"tests": []
},
{
"_id": "bd7158d8c442eddfaeb5bd1d",
"name": "Zipline: Build a JavaScript Calculator",
"difficulty": 1.06,
"challengeSeed": "123488494",
"description": [
],
"challengeType": 3,
"tests": []
},
{
"_id": "bd7158d8c442eddfaeb5bd1e",
"name": "Zipline: Create a Tic Tac Toe Game",
"difficulty": 1.06,
"challengeSeed": "123488494",
"description": [
"Go to CodePen <a href='http://codepen.io/FreeCodeCamp/pen/gbEmJr'>http://codepen.io/FreeCodeCamp/pen/gbEmJr</a> and click the \"fork\" button. This will create a \"fork\", or copy of the file, which you can then edit yourself.",
"When you are finished, click the \"I've completed this challenge\" button and include a link to your Codepen. If you pair programmed, you should also include the Free Code Camp username of your pair. We will take a look at your code and eventually give you feedback. In the meantime, please move on to your next challenge."
],
"challengeType": 3,
"tests": []

View File

@ -1,100 +1,83 @@
extends ../layout-wide
extends ../layout
block content
if (Math.random() > 0.98)
img.img-responsive.img-center(src='https://s3.amazonaws.com/freecodecamp/wide-social-banner-dino.png')
else
img.img-responsive.img-center(src='https://s3.amazonaws.com/freecodecamp/wide-social-banner.png')
br
.row.text-center
.col-xs-12.col-md-6.col-md-offset-3
if (user)
if (!user.sentSlackInvite)
a.btn.btn-cta.signup-btn.next-challenge-button.btn-block(href="/challenges") Take me to my next challenge
.spacer
a.btn.btn-primary.btn-cta.next-challenge-button.btn-block(href="/api/slack") Join our Slack Chat Room
else
a.btn.btn-cta.signup-btn.next-challenge-button.btn-block(href="/signin") Start learning to code (it's free)
br
.row
.col-xs-12.col-sm-12.col-md-4
.panel.panel-info
.panel-heading.landing-panel-heading.text-center Get Connected
.panel-body.text-center
img.img-responsive.img-center(src="https://s3.amazonaws.com/freecodecamp/about-chatroom.jpg" alt="A screen shot from Free Code Camp's main chat room")
h3 #{c3} campers are doing challenges.
h3 #{all} campers are coding for nonprofits.
.col-xs-12.col-sm-12.col-md-4
.panel.panel-info
.panel-heading.landing-panel-heading.text-center Learn JavaScript
.panel-body.text-center
img.img-responsive.img-center(src="https://s3.amazonaws.com/freecodecamp/about-github.jpg" alt="A screen shot of a GitHub commit graph showing a streak of 33 consecutive days of contributions")
include ../partials/github
.col-xs-12.col-sm-12.col-md-4
.panel.panel-info
.panel-heading.landing-panel-heading.text-center Help Nonprofits
.panel-body.text-center
img.img-responsive.img-center(src="https://s3.amazonaws.com/freecodecamp/about-trello.jpg" alt="a screen shot of Free Code Camp's nonprofit project Trello board showing several active projects")
h3 We launched #{daysRunning} days ago.
h3 We help 20 nonprofits. &nbsp;
a(href='https://trello.com/b/BA3xVpz9/nonprofit-projects') (view them)
br
script.
var challengeName = 'Learn to code'
.row
.col-xs-12
.panel.panel-info
.panel-heading.landing-panel-heading.text-center Announcements
.panel-body
.landing-panel-body.text-center
for announcement in announcements
h2
if (announcement.length > 1)
a(href=announcement[1])= announcement[0]
.col-xs-12.col-sm-12.col-md-12
.panel.panel-info
.panel-heading.text-center
h1 About Free Code Camp
.panel-body
.row.text-center
.col-xs-12
if (Math.random() > 0.99)
img.img-responsive.img-center(src='https://s3.amazonaws.com/freecodecamp/wide-social-banner-dino.png')
else
img.img-responsive.img-center(src='https://s3.amazonaws.com/freecodecamp/wide-social-banner.png')
.col-xs-12.col-md-8.col-md-offset-2
h2.text-center
span.text-primary #{c3} &thinsp;
| campers have joined our community since we launched &thinsp;
span.text-primary #{daysRunning} &thinsp;
| days ago.
.row.text-center
.col-xs-12.col-md-8.col-md-offset-2
if (user)
if (!user.sentSlackInvite)
a.btn.btn-cta.signup-btn.next-challenge-button.btn-block(href="/challenges") Take me to my next challenge
.spacer
a.btn.btn-primary.btn-cta.next-challenge-button.btn-block(href="/api/slack") Join our Slack Chat Room
else
= announcement[0]
a.twitter-timeline(data-dnt='true', href='https://twitter.com/FreeCodeCamp', data-widget-id='560847186548621312') Tweets by @FreeCodeCamp
a.btn.btn-cta.signup-btn.next-challenge-button.btn-block(href="/signin") Start learning to code (it's free)
br
script.
!function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https';
if (!d.getElementById(id)) {
js = d.createElement(s);
js.id = id;
js.src = p + "://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
}
}(document, "script", "twitter-wjs");
h3
.col-xs-12 Follow us on Twitter here:
.col-xs-12.github-and-twitter-button-text
html.
<a class="twitter-follow-button"
href="https://twitter.com/freecodecamp"
data-show-count="true"
data-lang="en">
Follow @FreeCodeCamp
</a>
<script>window.twttr=(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return;js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);t._e=[];t.ready=function(f){t._e.push(f);};return t;}(document,"script","twitter-wjs"));</script>
.col-xs-12.github-and-twitter-button-text Star us on GitHub here:
.col-xs-12.github-and-twitter-button-text
html.
<iframe src="http://ghbtns.com/github-btn.html?user=freecodecamp&repo=freecodecamp&type=watch&count=true&size=large" height="30" width="170" frameborder="0" scrolling="0" style="width:170px; height: 30px;" allowTransparency="true"></iframe>
#announcementModal.modal(tabindex='-1')
.modal-dialog
.modal-content
.modal-header.challenge-list-header Camp-wide Meeting on Saturday at Noon EST
a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
.modal-body
h3.text-left We'll live-stream some of Free Code Camp's new features, and campers will show what they're building. Live Saturday, March 28 at Noon EST on our &thinsp;
a(href='http://twitch.tv/freecodecamp', target='_blank') Twitch.tv channel
| .
a.btn.btn-lg.btn-info.btn-block(name='_csrf', value=_csrf, aria-hidden='true', href='http://twitch.tv/freecodecamp', target='_blank') Take me to Twitch so I can follow Free Code Camp
a.btn.btn-lg.btn-primary.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Thanks for the heads-up!
script.
$(document).ready(function() {
if (!localStorage || !localStorage.campWideMeeting) {
$('#announcementModal').modal('show');
localStorage.campWideMeeting = "true";
}
});
var challengeName = 'Learn to code'
.row
.col-xs-12.col-md-8.col-md-offset-2
for announcement in announcements
h2
if (announcement.length > 1)
a(href=announcement[1])= announcement[0]
else
= announcement[0]
a.twitter-timeline(data-dnt='true', href='https://twitter.com/FreeCodeCamp', data-widget-id='560847186548621312') Tweets by @FreeCodeCamp
script.
!function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https';
if (!d.getElementById(id)) {
js = d.createElement(s);
js.id = id;
js.src = p + "://platform.twitter.com/widgets.js";
fjs.parentNode.insertBefore(js, fjs);
}
}(document, "script", "twitter-wjs");
h3
.col-xs-12 Follow us on Twitter here:
.col-xs-12.github-and-twitter-button-text
html.
<a class="twitter-follow-button"
href="https://twitter.com/freecodecamp"
data-show-count="true"
data-lang="en">
Follow @FreeCodeCamp
</a>
<script>window.twttr=(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return;js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);t._e=[];t.ready=function(f){t._e.push(f);};return t;}(document,"script","twitter-wjs"));</script>
.col-xs-12.github-and-twitter-button-text Star us on GitHub here:
.col-xs-12.github-and-twitter-button-text
html.
<iframe src="http://ghbtns.com/github-btn.html?user=freecodecamp&repo=freecodecamp&type=watch&count=true&size=large" height="30" width="170" frameborder="0" scrolling="0" style="width:170px; height: 30px;" allowTransparency="true"></iframe>
#announcementModal.modal(tabindex='-1')
.modal-dialog
.modal-content
.modal-header.challenge-list-header Camp-wide Meeting on Saturday at Noon EST
a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
.modal-body
h3.text-left We'll live-stream some of Free Code Camp's new features, and campers will show what they're building. Live Saturday, March 28 at Noon EST on our &thinsp;
a(href='http://twitch.tv/freecodecamp', target='_blank') Twitch.tv channel
| .
a.btn.btn-lg.btn-info.btn-block(name='_csrf', value=_csrf, aria-hidden='true', href='http://twitch.tv/freecodecamp', target='_blank') Take me to Twitch so I can follow Free Code Camp
a.btn.btn-lg.btn-primary.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Thanks for the heads-up!
script.
$(document).ready(function () {
if (!localStorage || !localStorage.campWideMeeting) {
$('#announcementModal').modal('show');
localStorage.campWideMeeting = "true";
}
});