Merge branch 'master' into ramda-fire
This commit is contained in:
26
app.js
26
app.js
@ -64,6 +64,7 @@ mongoose.connection.on('error', function () {
|
|||||||
* Express configuration.
|
* Express configuration.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
app.set('port', process.env.PORT || 3000);
|
app.set('port', process.env.PORT || 3000);
|
||||||
app.set('views', path.join(__dirname, 'views'));
|
app.set('views', path.join(__dirname, 'views'));
|
||||||
app.set('view engine', 'jade');
|
app.set('view engine', 'jade');
|
||||||
@ -106,6 +107,11 @@ app.disable('x-powered-by');
|
|||||||
app.use(helmet.xssFilter());
|
app.use(helmet.xssFilter());
|
||||||
app.use(helmet.noSniff());
|
app.use(helmet.noSniff());
|
||||||
app.use(helmet.xframe());
|
app.use(helmet.xframe());
|
||||||
|
app.use(function(req, res, next) {
|
||||||
|
res.header("Access-Control-Allow-Origin", "*");
|
||||||
|
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
|
||||||
|
next();
|
||||||
|
});
|
||||||
|
|
||||||
var trusted = [
|
var trusted = [
|
||||||
"'self'",
|
"'self'",
|
||||||
@ -169,6 +175,7 @@ app.use(helmet.contentSecurityPolicy({
|
|||||||
'*.vimeo.com',
|
'*.vimeo.com',
|
||||||
'*.twitter.com',
|
'*.twitter.com',
|
||||||
'*.rafflecopter.com',
|
'*.rafflecopter.com',
|
||||||
|
'*.ghbtns.com'
|
||||||
].concat(trusted),
|
].concat(trusted),
|
||||||
reportOnly: false, // set to true if you only want to report errors
|
reportOnly: false, // set to true if you only want to report errors
|
||||||
setAllHeaders: false, // set to true if you want to set all headers
|
setAllHeaders: false, // set to true if you want to set all headers
|
||||||
@ -202,7 +209,9 @@ app.use(
|
|||||||
app.get('/', homeController.index);
|
app.get('/', homeController.index);
|
||||||
app.get('/privacy', resourcesController.privacy);
|
app.get('/privacy', resourcesController.privacy);
|
||||||
app.get('/jquery-exercises', resourcesController.jqueryExercises);
|
app.get('/jquery-exercises', resourcesController.jqueryExercises);
|
||||||
|
app.get('/chat', resourcesController.chat);
|
||||||
app.get('/live-pair-programming', resourcesController.livePairProgramming);
|
app.get('/live-pair-programming', resourcesController.livePairProgramming);
|
||||||
|
app.get('/install-screenhero', resourcesController.installScreenHero);
|
||||||
app.get('/javascript-in-your-inbox', resourcesController.javaScriptInYourInbox);
|
app.get('/javascript-in-your-inbox', resourcesController.javaScriptInYourInbox);
|
||||||
app.get('/chromebook', resourcesController.chromebook);
|
app.get('/chromebook', resourcesController.chromebook);
|
||||||
app.get('/deploy-a-website', resourcesController.deployAWebsite);
|
app.get('/deploy-a-website', resourcesController.deployAWebsite);
|
||||||
@ -256,13 +265,30 @@ app.post(
|
|||||||
passportConf.isAuthenticated,
|
passportConf.isAuthenticated,
|
||||||
userController.updateProgress
|
userController.updateProgress
|
||||||
);
|
);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Challenge related routes
|
||||||
|
*/
|
||||||
|
app.get(
|
||||||
|
'/challenges/',
|
||||||
|
challengesController.returnNextChallenge
|
||||||
|
);
|
||||||
app.get(
|
app.get(
|
||||||
'/challenges/:challengeNumber',
|
'/challenges/:challengeNumber',
|
||||||
challengesController.returnChallenge
|
challengesController.returnChallenge
|
||||||
);
|
);
|
||||||
|
|
||||||
app.all('/account', passportConf.isAuthenticated);
|
app.all('/account', passportConf.isAuthenticated);
|
||||||
app.get('/account/api', userController.getAccountAngular);
|
app.get('/account/api', userController.getAccountAngular);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API routes
|
||||||
|
*/
|
||||||
|
|
||||||
|
app.get('/api/github', resourcesController.githubCalls);
|
||||||
|
app.get('/api/blogger', resourcesController.bloggerCalls);
|
||||||
|
app.get('/api/trello', resourcesController.trelloCalls);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bonfire related routes
|
* Bonfire related routes
|
||||||
*/
|
*/
|
||||||
|
@ -9,7 +9,27 @@ var _ = require('lodash'),
|
|||||||
|
|
||||||
var highestChallengeNumber = 53;
|
var highestChallengeNumber = 53;
|
||||||
|
|
||||||
exports.returnChallenge = function(req, res, next) {
|
|
||||||
|
exports.returnNextChallenge = function(req, res) {
|
||||||
|
if (req.user) {
|
||||||
|
ch = req.user.challengesHash;
|
||||||
|
if (req.user.challengesHash[0] > 0) {
|
||||||
|
var max = Object.keys(ch).reduce(function(max, key) {
|
||||||
|
return (max === undefined || ch[key] > ch[max]) ? +key : max;
|
||||||
|
});
|
||||||
|
nextChallenge = max + 1;
|
||||||
|
res.redirect('challenges/' + nextChallenge);
|
||||||
|
} else {
|
||||||
|
res.redirect('challenges/0');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
res.render('home', {
|
||||||
|
title: 'Learn to Code and Become a Software Engineer',
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
exports.returnChallenge = function(req, res) {
|
||||||
var challengeNumber = parseInt(req.params.challengeNumber) || 0;
|
var challengeNumber = parseInt(req.params.challengeNumber) || 0;
|
||||||
if (challengeNumber > highestChallengeNumber) {
|
if (challengeNumber > highestChallengeNumber) {
|
||||||
req.flash('errors', {
|
req.flash('errors', {
|
||||||
|
@ -5,20 +5,10 @@
|
|||||||
|
|
||||||
exports.index = function(req, res) {
|
exports.index = function(req, res) {
|
||||||
if (req.user) {
|
if (req.user) {
|
||||||
ch = req.user.challengesHash;
|
res.redirect('/learn-to-code')
|
||||||
if (req.user.challengesHash[0] > 0) {
|
|
||||||
var max = Object.keys(ch).reduce(function(max, key) {
|
|
||||||
return (max === undefined || ch[key] > ch[max]) ? +key : max;
|
|
||||||
});
|
|
||||||
nextChallenge = max + 1;
|
|
||||||
res.redirect('challenges/' + nextChallenge);
|
|
||||||
} else {
|
|
||||||
res.redirect('challenges/0');
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
res.render('home', {
|
res.render('home', {
|
||||||
title: 'Learn to Code and Become a Software Engineer',
|
title: 'Learn to Code and Become a Software Engineer'
|
||||||
landingPage: true
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -55,6 +55,12 @@ module.exports = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
chat: function chat(req, res) {
|
||||||
|
res.render('resources/chat', {
|
||||||
|
title: "Enter Free Code Camp's Chat Rooms"
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
nonprofitProjectInstructions: function nonprofitProjectInstructions(req, res) {
|
nonprofitProjectInstructions: function nonprofitProjectInstructions(req, res) {
|
||||||
res.render('resources/nonprofit-project-instructions', {
|
res.render('resources/nonprofit-project-instructions', {
|
||||||
title: 'Nonprofit Project Instructions'
|
title: 'Nonprofit Project Instructions'
|
||||||
@ -91,63 +97,73 @@ module.exports = {
|
|||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
installScreenHero: function(req, res) {
|
||||||
|
res.render('resources/install-screenhero', {
|
||||||
|
title: 'Install ScreenHero'
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
javaScriptInYourInbox: function(req, res) {
|
javaScriptInYourInbox: function(req, res) {
|
||||||
res.render('resources/javascript-in-your-inbox', {
|
res.render('resources/javascript-in-your-inbox', {
|
||||||
title: 'JavaScript in your Inbox'
|
title: 'JavaScript in your Inbox'
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
githubCalls: function(req, res) {
|
||||||
|
var githubHeaders = {headers: {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/29.0.1521.3 Safari/537.36'}, port:80 };
|
||||||
|
client.get('https://api.github.com/repos/freecodecamp/freecodecamp/pulls?client_id=' + secrets.github.clientID + '&client_secret=' + secrets.github.clientSecret, githubHeaders, function(pulls, res3) {
|
||||||
|
pulls = pulls ? Object.keys(JSON.parse(pulls)).length : "Can't connect to github";
|
||||||
|
client.get('https://api.github.com/repos/freecodecamp/freecodecamp/issues?client_id=' + secrets.github.clientID + '&client_secret=' + secrets.github.clientSecret, githubHeaders, function (issues, res4) {
|
||||||
|
issues = ((pulls === parseInt(pulls)) && issues) ? Object.keys(JSON.parse(issues)).length - pulls : "Can't connect to GitHub";
|
||||||
|
res.send({"issues": issues, "pulls" : pulls});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
trelloCalls: function(req, res) {
|
||||||
|
client.get('https://trello.com/1/boards/BA3xVpz9/cards?key=' + secrets.trello.key, function(trello, res2) {
|
||||||
|
trello = trello ? (JSON.parse(trello)).length : "Can't connect to to Trello";
|
||||||
|
res.send({"trello": trello});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
bloggerCalls: function(req, res) {
|
||||||
|
client.get('https://www.googleapis.com/blogger/v3/blogs/2421288658305323950/posts?key=' + secrets.blogger.key, function (blog, res5) {
|
||||||
|
var blog = blog.length > 100 ? JSON.parse(blog) : "";
|
||||||
|
res.send({
|
||||||
|
blog1Title: blog ? blog["items"][0]["title"] : "Can't connect to Blogger",
|
||||||
|
blog1Link: blog ? blog["items"][0]["url"] : "http://blog.freecodecamp.com",
|
||||||
|
blog2Title: blog ? blog["items"][1]["title"] : "Can't connect to Blogger",
|
||||||
|
blog2Link: blog ? blog["items"][1]["url"] : "http://blog.freecodecamp.com",
|
||||||
|
blog3Title: blog ? blog["items"][2]["title"] : "Can't connect to Blogger",
|
||||||
|
blog3Link: blog ? blog["items"][2]["url"] : "http://blog.freecodecamp.com",
|
||||||
|
blog4Title: blog ? blog["items"][3]["title"] : "Can't connect to Blogger",
|
||||||
|
blog4Link: blog ? blog["items"][3]["url"] : "http://blog.freecodecamp.com",
|
||||||
|
blog5Title: blog ? blog["items"][4]["title"] : "Can't connect to Blogger",
|
||||||
|
blog5Link: blog ? blog["items"][4]["url"] : "http://blog.freecodecamp.com"
|
||||||
|
});
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
about: function(req, res) {
|
about: function(req, res) {
|
||||||
var date1 = new Date("10/15/2014");
|
var date1 = new Date("10/15/2014");
|
||||||
var date2 = new Date();
|
var date2 = new Date();
|
||||||
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
|
var timeDiff = Math.abs(date2.getTime() - date1.getTime());
|
||||||
var daysRunning = Math.ceil(timeDiff / (1000 * 3600 * 24));
|
var daysRunning = Math.ceil(timeDiff / (1000 * 3600 * 24));
|
||||||
client.get('https://trello.com/1/boards/BA3xVpz9/cards?key=' + secrets.trello.key, function(trello, res2) {
|
var announcements = resources.announcements;
|
||||||
client.get('https://www.googleapis.com/blogger/v3/blogs/2421288658305323950/posts?key=' + secrets.blogger.key, function(blogger, res3) {
|
User.count({}, function (err, c3) {
|
||||||
var nonprofitProjects = (JSON.parse(trello)).length || 27;
|
if (err) {
|
||||||
var blog = JSON.parse(blogger);
|
debug('User err: ', err);
|
||||||
User.count({'points': {'$gt': 2}}, function (err, c3) {
|
next(err);
|
||||||
if (err) {
|
}
|
||||||
debug('User err: ', err);
|
User.count({'points': {'$gt': 53}}, function (err, all) {
|
||||||
next(err);
|
if (err) {
|
||||||
}
|
debug('User err: ', err);
|
||||||
User.count({'points': {'$gt': 9}}, function (err, c10) {
|
next(err);
|
||||||
if (err) {
|
}
|
||||||
debug('User err: ', err);
|
res.render('resources/learn-to-code', {
|
||||||
next(err);
|
title: 'About Free Code Camp and Our Team of Volunteers',
|
||||||
}
|
daysRunning: daysRunning,
|
||||||
User.count({'points': {'$gt': 29}}, function (err, c30) {
|
c3: c3,
|
||||||
if (err) {
|
all: all,
|
||||||
debug('User err: ', err);
|
announcements: announcements
|
||||||
next(err);
|
|
||||||
}
|
|
||||||
User.count({'points': {'$gt': 53}}, function (err, all) {
|
|
||||||
if (err) {
|
|
||||||
debug('User err: ', err);
|
|
||||||
next(err);
|
|
||||||
}
|
|
||||||
res.render('resources/learn-to-code', {
|
|
||||||
title: 'About Free Code Camp and Our Team of Volunteers',
|
|
||||||
daysRunning: daysRunning,
|
|
||||||
nonprofitProjects: nonprofitProjects,
|
|
||||||
c3: c3,
|
|
||||||
c10: c10,
|
|
||||||
c30: c30,
|
|
||||||
all: all,
|
|
||||||
blog1Title: blog["items"][0]["title"],
|
|
||||||
blog1Link: blog["items"][0]["url"],
|
|
||||||
blog2Title: blog["items"][1]["title"],
|
|
||||||
blog2Link: blog["items"][1]["url"],
|
|
||||||
blog3Title: blog["items"][2]["title"],
|
|
||||||
blog3Link: blog["items"][2]["url"],
|
|
||||||
blog4Title: blog["items"][3]["title"],
|
|
||||||
blog4Link: blog["items"][3]["url"],
|
|
||||||
blog5Title: blog["items"][4]["title"],
|
|
||||||
blog5Link: blog["items"][4]["url"]
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -1,4 +1,9 @@
|
|||||||
{
|
{
|
||||||
|
"announcements": [
|
||||||
|
["Screen Hero is now free on Windows and Mac! Follow these special instructions to install it.", "http://freecodecamp.com/install-screenhero"],
|
||||||
|
["Bonfire is now live with 30+ challenges! If you haven't started CoderByte, do these instead.", "http://freecodecamp.com/bonfires"],
|
||||||
|
["Once you finish all the challenges, we welcome you to attend our Nonprofit Project Office Hours every Monday and Thursday Night at 9 pm EST.", "https://gitter.im/FreeCodeCamp/NonprofitProjects"]
|
||||||
|
],
|
||||||
"questions": [{
|
"questions": [{
|
||||||
"question": "Time Complexity of Accessing Array Index (int a = ARR[5];)",
|
"question": "Time Complexity of Accessing Array Index (int a = ARR[5];)",
|
||||||
"answer": "O(1)"
|
"answer": "O(1)"
|
||||||
|
@ -717,9 +717,9 @@
|
|||||||
@panel-success-border: @state-success-border;
|
@panel-success-border: @state-success-border;
|
||||||
@panel-success-heading-bg: @state-success-bg;
|
@panel-success-heading-bg: @state-success-bg;
|
||||||
|
|
||||||
@panel-info-text: @state-info-text;
|
@panel-info-text: #eee;
|
||||||
@panel-info-border: @state-info-border;
|
@panel-info-border: darken(#4a2b0f, 5%);
|
||||||
@panel-info-heading-bg: @state-info-bg;
|
@panel-info-heading-bg: #4a2b0f;
|
||||||
|
|
||||||
@panel-warning-text: @state-warning-text;
|
@panel-warning-text: @state-warning-text;
|
||||||
@panel-warning-border: @state-warning-border;
|
@panel-warning-border: @state-warning-border;
|
||||||
|
@ -374,6 +374,11 @@ ul {
|
|||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.next-challenge-button {
|
||||||
|
max-width: 1500px;
|
||||||
|
margin:0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
.btn-big {
|
.btn-big {
|
||||||
font-size: 30px;
|
font-size: 30px;
|
||||||
}
|
}
|
||||||
@ -690,6 +695,19 @@ iframe.iphone {
|
|||||||
font-size: 0px;
|
font-size: 0px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.stats-text {
|
||||||
|
font-size: 26px;
|
||||||
|
line-height: 150%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.github-and-twitter-button-text {
|
||||||
|
padding-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.gitter-imbed {
|
||||||
|
height: 100%;
|
||||||
|
margin-bottom: 50px;
|
||||||
|
}
|
||||||
|
|
||||||
//uncomment this to see the dimensions of all elements outlined in red
|
//uncomment this to see the dimensions of all elements outlined in red
|
||||||
//* {
|
//* {
|
||||||
|
@ -546,7 +546,7 @@
|
|||||||
"expect(drawer(19.50, 20.00, [['PENNY', 0.01], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]])).to.be.a('string');",
|
"expect(drawer(19.50, 20.00, [['PENNY', 0.01], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]])).to.be.a('string');",
|
||||||
"expect(drawer(19.50, 20.00, [['PENNY', 0.50], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]])).to.be.a('string');",
|
"expect(drawer(19.50, 20.00, [['PENNY', 0.50], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]])).to.be.a('string');",
|
||||||
"assert.deepEqual(drawer(19.50, 20.00, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.10], ['QUARTER', 4.25], ['ONE', 90.00], ['FIVE', 55.00], ['TEN', 20.00], ['TWENTY', 60.00], ['ONE HUNDRED', 100.00]]), [['QUARTER', 0.50]], 'return correct change');",
|
"assert.deepEqual(drawer(19.50, 20.00, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.10], ['QUARTER', 4.25], ['ONE', 90.00], ['FIVE', 55.00], ['TEN', 20.00], ['TWENTY', 60.00], ['ONE HUNDRED', 100.00]]), [['QUARTER', 0.50]], 'return correct change');",
|
||||||
"assert.deepEqual(drawer(3.26, 100.00, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.10], ['QUARTER', 4.25], ['ONE', 90.00], ['FIVE', 55.00], ['TEN', 20.00], ['TWENTY', 60.00], ['ONE HUNDRED', 100.00]]), [['TWENTY', 80.00], ['TEN', 10.00], ['FIVE', 5], ['ONE', 1], ['QUARTER', 0.50], ['DIME', 0.20], ['PENNY', 0.04] ], 'return correct change with multiple coins and bills');",
|
"assert.deepEqual(drawer(3.26, 100.00, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.10], ['QUARTER', 4.25], ['ONE', 90.00], ['FIVE', 55.00], ['TEN', 20.00], ['TWENTY', 60.00], ['ONE HUNDRED', 100.00]]), [['TWENTY', 60.00], ['TEN', 20.00], ['FIVE', 15], ['ONE', 1], ['QUARTER', 0.50], ['DIME', 0.20], ['PENNY', 0.04] ], 'return correct change with multiple coins and bills');",
|
||||||
"assert.deepEqual(drawer(19.50, 20.00, [['PENNY', 0.01], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]]), 'Insufficient Funds', 'insufficient funds');",
|
"assert.deepEqual(drawer(19.50, 20.00, [['PENNY', 0.01], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]]), 'Insufficient Funds', 'insufficient funds');",
|
||||||
"assert.deepEqual(drawer(19.50, 20.00, [['PENNY', 0.50], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]]), \"Closed\", 'cash-in-drawer equals change');"
|
"assert.deepEqual(drawer(19.50, 20.00, [['PENNY', 0.50], ['NICKEL', 0], ['DIME', 0], ['QUARTER', 0], ['ONE', 0], ['FIVE', 0], ['TEN', 0], ['TWENTY', 0], ['ONE HUNDRED', 0]]), \"Closed\", 'cash-in-drawer equals change');"
|
||||||
]
|
]
|
||||||
@ -558,14 +558,14 @@
|
|||||||
"description": [
|
"description": [
|
||||||
"Compare and update inventory stored in a 2d array against a second 2d array of a fresh delivery. Update current inventory item quantity, and if an item cannot be found, add the new item and quantity into the inventory array in alphabetical order."
|
"Compare and update inventory stored in a 2d array against a second 2d array of a fresh delivery. Update current inventory item quantity, and if an item cannot be found, add the new item and quantity into the inventory array in alphabetical order."
|
||||||
],
|
],
|
||||||
"challengeSeed": "function inventory(arr1, arr2) {\n // All inventory must be accounted for or you're fired!\r\n return arr1;\r\n}\n\n// Example inventory lists\r\nvar curInv = [\r\n [21, 'Bowling Ball'],\r\n [2, 'Dirty Sock'],\r\n [1, 'Hair pin'],\r\n [5, 'Microphone']\r\n];\r\n\r\nvar newInv = [\r\n [2, 'Hair Pin'],\r\n [3, 'Half-Eaten Apple'],\r\n [67, 'Bowling Ball'],\r\n [7, 'Toothpaste']\r\n];\r\n\r\ninventory(curInv, newInv);",
|
"challengeSeed": "function inventory(arr1, arr2) {\n // All inventory must be accounted for or you're fired!\r\n return arr1;\r\n}\n\n// Example inventory lists\r\nvar curInv = [\r\n [21, 'Bowling Ball'],\r\n [2, 'Dirty Sock'],\r\n [1, 'Hair Pin'],\r\n [5, 'Microphone']\r\n];\r\n\r\nvar newInv = [\r\n [2, 'Hair Pin'],\r\n [3, 'Half-Eaten Apple'],\r\n [67, 'Bowling Ball'],\r\n [7, 'Toothpaste']\r\n];\r\n\r\ninventory(curInv, newInv);",
|
||||||
"tests": [
|
"tests": [
|
||||||
"expect(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair pin'], [5, 'Microphone']], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']])).to.be.a('array');",
|
"expect(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone']], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']])).to.be.a('array');",
|
||||||
"assert.equal(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair pin'], [5, 'Microphone']], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']]).length, 6);",
|
"assert.equal(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone']], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']]).length, 6);",
|
||||||
"assert.deepEqual(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair pin'], [5, 'Microphone']], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']]), [[88, 'Bowling Ball'], [2, 'Dirty Sock'], [3, 'Hair pin'], [3, 'Half-Eaten Apple'], [5, 'Microphone'], [7, 'Toothpaste']]);",
|
"assert.deepEqual(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone']], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']]), [[88, 'Bowling Ball'], [2, 'Dirty Sock'], [3, 'Hair Pin'], [3, 'Half-Eaten Apple'], [5, 'Microphone'], [7, 'Toothpaste']]);",
|
||||||
"assert.deepEqual(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair pin'], [5, 'Microphone']], []), [[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair pin'], [5, 'Microphone']]);",
|
"assert.deepEqual(inventory([[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone']], []), [[21, 'Bowling Ball'], [2, 'Dirty Sock'], [1, 'Hair Pin'], [5, 'Microphone']]);",
|
||||||
"assert.deepEqual(inventory([], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']]), [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']]);",
|
"assert.deepEqual(inventory([], [[2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [67, 'Bowling Ball'], [7, 'Toothpaste']]), [[67, 'Bowling Ball'], [2, 'Hair Pin'], [3, 'Half-Eaten Apple'], [7, 'Toothpaste']]);",
|
||||||
"assert.deepEqual(inventory([[0, 'Bowling Ball'], [0, 'Dirty Sock'], [0, 'Hair pin'], [0, 'Microphone']], [[1, 'Hair Pin'], [1, 'Half-Eaten Apple'], [1, 'Bowling Ball'], [1, 'Toothpaste']]), [[1, 'Bowling Ball'], [1, 'Dirty Sock'], [1, 'Hair pin'], [1, 'Half-Eaten Apple'], [1, 'Microphone'], [1, 'Toothpaste']]);"
|
"assert.deepEqual(inventory([[0, 'Bowling Ball'], [0, 'Dirty Sock'], [0, 'Hair Pin'], [0, 'Microphone']], [[1, 'Hair Pin'], [1, 'Half-Eaten Apple'], [1, 'Bowling Ball'], [1, 'Toothpaste']]), [[1, 'Bowling Ball'], [0, 'Dirty Sock'], [1, 'Hair Pin'], [1, 'Half-Eaten Apple'], [0, 'Microphone'], [1, 'Toothpaste']]);"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -400,7 +400,7 @@
|
|||||||
"Try an intelligent Google query that involves JavaScript and filters for this year (since JavaScript changes).",
|
"Try an intelligent Google query that involves JavaScript and filters for this year (since JavaScript changes).",
|
||||||
"Go to <a href='http://stackoverflow.com/' target='_blank'>http://stackoverflow.com/</a> and view the recent questions.",
|
"Go to <a href='http://stackoverflow.com/' target='_blank'>http://stackoverflow.com/</a> and view the recent questions.",
|
||||||
"Go to <a href='http://webchat.freenode.net/' target='_blank'>http://webchat.freenode.net/</a> and create an IRC account.",
|
"Go to <a href='http://webchat.freenode.net/' target='_blank'>http://webchat.freenode.net/</a> and create an IRC account.",
|
||||||
"Join the #JavaScript chat room and introduce yourself as a Free Code Camp student.",
|
"Join the #LearnJavaScript chat room and introduce yourself as a Free Code Camp student.",
|
||||||
"Finally, we have a special chat room specifically for getting help with tools you learn through Free Code Camp Challenges. Go to <a href='https://gitter.im/FreeCodeCamp/Help' target='_blank'>https://gitter.im/FreeCodeCamp/Help</a>. Keep this chat open while you work on the remaining challenges.",
|
"Finally, we have a special chat room specifically for getting help with tools you learn through Free Code Camp Challenges. Go to <a href='https://gitter.im/FreeCodeCamp/Help' target='_blank'>https://gitter.im/FreeCodeCamp/Help</a>. Keep this chat open while you work on the remaining challenges.",
|
||||||
"Now you have several ways of getting help when you're stuck."
|
"Now you have several ways of getting help when you're stuck."
|
||||||
]
|
]
|
||||||
|
@ -1,45 +1,5 @@
|
|||||||
[
|
[
|
||||||
{
|
|
||||||
"_id" : "bd7123d8c441eddfaeb5bdef",
|
|
||||||
"name": "Learn how Free Code Camp Works",
|
|
||||||
"difficulty": 9.99,
|
|
||||||
"description": [
|
|
||||||
"Watch this 90 second video, or simply read this summary:",
|
|
||||||
"Welcome to Free Code Camp. We're a community of busy people learning to code.",
|
|
||||||
"We built this community because learning to code is hard. But anyone who can stay motivated can learn to code. And the best way to stay motivated is to code with friends.",
|
|
||||||
"To maximize accessibility, all our challenges are self-paced, browser-based, and free.",
|
|
||||||
"All of us start with the same 100 hours of interactive coding challenges. These cover Computer Science and databases. They also cover in-demand JavaScript tools like jQuery, Node.js and MongoDB.",
|
|
||||||
"Once we have a basic understanding of web development, we'll spend another 900 hours putting that theory into practice. We'll build full stack solutions for nonprofits.",
|
|
||||||
"By the end of this process, we'll be good at coding. We'll have a portfolio of apps with happy users to prove it. We'll also have an alumni network of fellow coders and nonprofits ready to serve as references.",
|
|
||||||
"If you make it through Free Code Camp, you will be able to get a coding job. There are far more job openings out there than there are qualified coders to fill them.",
|
|
||||||
"Also, for every pure coding job, there are at least 5 additional jobs that require some coding skills. So even if you decide not to pursue coding as a career, you'll still walk away with a valuable job skill.",
|
|
||||||
"There are 3 keys to succeeding in our community: do the challenges, make friends, and find a routine.",
|
|
||||||
"Now it's time to join our chatroom. Click the \"Go to my next challenge\" button to move on to your next challenge."
|
|
||||||
],
|
|
||||||
"tests": [
|
|
||||||
""
|
|
||||||
],
|
|
||||||
"challengeSeed": [
|
|
||||||
"114486344"
|
|
||||||
],
|
|
||||||
"challengeType" : 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"_id": "bd7123c8c441eddfaeb5bdef",
|
|
||||||
"name": "Meet Booleans",
|
|
||||||
"difficulty": "9.999",
|
|
||||||
"description": [
|
|
||||||
"Return true"
|
|
||||||
],
|
|
||||||
"tests": [
|
|
||||||
"expect(welcomeToBooleans()).to.be.a(\"boolean\");",
|
|
||||||
"expect(welcomeToBooleans()).to.be.true;"
|
|
||||||
],
|
|
||||||
"challengeSeed": [
|
|
||||||
"function welcomeToBooleans() {\n // Good luck!\n return false;\n}\n\nwelcomeToBooleans();"
|
|
||||||
],
|
|
||||||
"challengeType": 1
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"_id" : "bd7123c8c441eddfaeb5bdef",
|
"_id" : "bd7123c8c441eddfaeb5bdef",
|
||||||
"name": "Start our Challenges",
|
"name": "Start our Challenges",
|
||||||
@ -419,6 +379,36 @@
|
|||||||
"challengeType": 0
|
"challengeType": 0
|
||||||
},
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"_id" : "bad87fee1348bd9aedf08811",
|
||||||
|
"name": "Use rgb Codes for Precise Colors",
|
||||||
|
"difficulty" : "0.17",
|
||||||
|
"description": [
|
||||||
|
"Change the <code>red-text</code> class's color <code>rgb</code> value to be red.",
|
||||||
|
"Another way to represent color in CSS is with <code>rgb</code>, or red-green-blue notation.",
|
||||||
|
"For each of the three colors, you specify a value between 0 and 256.",
|
||||||
|
"For example, black is <code>rgb(0, 0, 0)</code>, white is <code>rgb(255, 255, 255)</code>, bright green is <code>rgb(0, 255, 0)</code>. You can also get less intense colors by using values lower than 255. For example, light green is <code>rgb(0, 123, 0).",
|
||||||
|
"If you think about it, this is just as precise as using <code>hex code</code>, because 16 times 16 is 256. In practice, most developers use <code>hex code</code> since it's faster to say out loud and to type.",
|
||||||
|
"We'll use 6-digit <code>hex code</code> in all our challenges going forward, but it's good to be aware of this <code>rgb</code> notation."
|
||||||
|
],
|
||||||
|
"tests": [
|
||||||
|
"expect($('h2')).to.have.css('color', 'rgb(255, 0, 0)');",
|
||||||
|
"expect($('h2')).to.have.class('red-text');"
|
||||||
|
],
|
||||||
|
"challengeSeed": [
|
||||||
|
"<style>",
|
||||||
|
" .red-text {",
|
||||||
|
" color: rgb(0, 255, 0);",
|
||||||
|
" }",
|
||||||
|
"</style>",
|
||||||
|
"",
|
||||||
|
"<h1>hello world</h1>",
|
||||||
|
"<h2 class=\"red-text\">cat photo app</h2>",
|
||||||
|
"<p>lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</p>"
|
||||||
|
],
|
||||||
|
"challengeType": 0
|
||||||
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"_id" : "bad87fee1348bd9aedf08810",
|
"_id" : "bad87fee1348bd9aedf08810",
|
||||||
"name": "Use Hex Codes for Precise Colors",
|
"name": "Use Hex Codes for Precise Colors",
|
||||||
@ -478,7 +468,7 @@
|
|||||||
|
|
||||||
{
|
{
|
||||||
"_id" : "bad87fee1348bd9aedf08811",
|
"_id" : "bad87fee1348bd9aedf08811",
|
||||||
"name": "Use rgb Codes for Precise Colors",
|
"name": "Set the Alpha of a Color with rgba",
|
||||||
"difficulty" : "0.17",
|
"difficulty" : "0.17",
|
||||||
"description": [
|
"description": [
|
||||||
"Change the <code>red-text</code> class's color <code>rgb</code> value to be red.",
|
"Change the <code>red-text</code> class's color <code>rgb</code> value to be red.",
|
||||||
@ -1293,7 +1283,7 @@
|
|||||||
},
|
},
|
||||||
|
|
||||||
{
|
{
|
||||||
"_id" : "bad87fee1348cd8acef08812",
|
"_id" : "bae87fee1348cd8acef08812",
|
||||||
"name": "Color a Bootstrap Button with Button Primary",
|
"name": "Color a Bootstrap Button with Button Primary",
|
||||||
"difficulty" : "0.38",
|
"difficulty" : "0.38",
|
||||||
"description": [
|
"description": [
|
||||||
@ -1302,7 +1292,8 @@
|
|||||||
"Note that these buttons still need the <code>btn</code> class."
|
"Note that these buttons still need the <code>btn</code> class."
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"expect($('.btn-block').length).to.eql(2);"
|
"expect($('.btn-block').length).to.eql(2);",
|
||||||
|
"expect($('.btn-primary').length).to.eql(2);"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<style>",
|
"<style>",
|
||||||
@ -2587,5 +2578,46 @@
|
|||||||
"<h1>hello world</h1>"
|
"<h1>hello world</h1>"
|
||||||
],
|
],
|
||||||
"challengeType": 0
|
"challengeType": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id" : "bd7123d8c441eddfaeb5bdef",
|
||||||
|
"name": "Learn how Free Code Camp Works",
|
||||||
|
"difficulty": 9.99,
|
||||||
|
"description": [
|
||||||
|
"Watch this 90 second video, or simply read this summary:",
|
||||||
|
"Welcome to Free Code Camp. We're a community of busy people learning to code.",
|
||||||
|
"We built this community because learning to code is hard. But anyone who can stay motivated can learn to code. And the best way to stay motivated is to code with friends.",
|
||||||
|
"To maximize accessibility, all our challenges are self-paced, browser-based, and free.",
|
||||||
|
"All of us start with the same 100 hours of interactive coding challenges. These cover Computer Science and databases. They also cover in-demand JavaScript tools like jQuery, Node.js and MongoDB.",
|
||||||
|
"Once we have a basic understanding of web development, we'll spend another 900 hours putting that theory into practice. We'll build full stack solutions for nonprofits.",
|
||||||
|
"By the end of this process, we'll be good at coding. We'll have a portfolio of apps with happy users to prove it. We'll also have an alumni network of fellow coders and nonprofits ready to serve as references.",
|
||||||
|
"If you make it through Free Code Camp, you will be able to get a coding job. There are far more job openings out there than there are qualified coders to fill them.",
|
||||||
|
"Also, for every pure coding job, there are at least 5 additional jobs that require some coding skills. So even if you decide not to pursue coding as a career, you'll still walk away with a valuable job skill.",
|
||||||
|
"There are 3 keys to succeeding in our community: do the challenges, make friends, and find a routine.",
|
||||||
|
"Now it's time to join our chatroom. Click the \"Go to my next challenge\" button to move on to your next challenge."
|
||||||
|
],
|
||||||
|
"tests": [
|
||||||
|
""
|
||||||
|
],
|
||||||
|
"challengeSeed": [
|
||||||
|
"114486344"
|
||||||
|
],
|
||||||
|
"challengeType" : 2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_id": "bd7123c8c441eddfaeb5bdef",
|
||||||
|
"name": "Meet Booleans",
|
||||||
|
"difficulty": "9.98",
|
||||||
|
"description": [
|
||||||
|
"Return true"
|
||||||
|
],
|
||||||
|
"tests": [
|
||||||
|
"expect(welcomeToBooleans()).to.be.a(\"boolean\");",
|
||||||
|
"expect(welcomeToBooleans()).to.be.true;"
|
||||||
|
],
|
||||||
|
"challengeSeed": [
|
||||||
|
"function welcomeToBooleans() {\n // Good luck!\n return false;\n}\n\nwelcomeToBooleans();"
|
||||||
|
],
|
||||||
|
"challengeType": 1
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
@ -2,8 +2,8 @@ extends ../layout
|
|||||||
block content
|
block content
|
||||||
script.
|
script.
|
||||||
var challengeName = 'Account View'
|
var challengeName = 'Account View'
|
||||||
.panel.panel-primary.min-height-1000(ng-controller="profileValidationController")
|
.panel.panel-info.min-height-1000(ng-controller="profileValidationController")
|
||||||
.panel-heading.text-center Update your profile here:
|
.panel-heading.text-center Update your portfolio here:
|
||||||
.panel-body
|
.panel-body
|
||||||
.container.text-center
|
.container.text-center
|
||||||
form.form-horizontal(action='/account/profile', method='POST', novalidate='novalidate', name='profileForm' ng-show="asyncComplete")
|
form.form-horizontal(action='/account/profile', method='POST', novalidate='novalidate', name='profileForm' ng-show="asyncComplete")
|
||||||
@ -268,75 +268,65 @@ block content
|
|||||||
span.ion-edit
|
span.ion-edit
|
||||||
| Update my Portfolio
|
| Update my Portfolio
|
||||||
br
|
br
|
||||||
.panel.panel-primary
|
|
||||||
.panel-heading.text-center Actions
|
|
||||||
.panel-body
|
|
||||||
.col-xs-12
|
|
||||||
if (user.profile.username)
|
|
||||||
a.btn.btn-lg.btn-block.btn-info.btn-link-social(href='/#{user.profile.username}') Check out my Public Profile
|
|
||||||
a.btn.btn-lg.btn-block.btn-primary.btn-link-social(href='/') Take me to my current challenge
|
|
||||||
a.btn.btn-lg.btn-block.btn-warning.btn-link-social(href='/logout') Sign out
|
|
||||||
br
|
|
||||||
- if (!user.google || !user.facebook || /*!user.github ||*/ !user.linkedin || !user.twitter)
|
- if (!user.google || !user.facebook || /*!user.github ||*/ !user.linkedin || !user.twitter)
|
||||||
.panel.panel-primary
|
.panel.panel-info
|
||||||
.panel-heading.text-center Link other services to your account:
|
.panel-heading.text-center Manage your account here:
|
||||||
.panel-body
|
.panel-body
|
||||||
- if (!user.google)
|
- if (!user.google)
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
a.btn.btn-lg.btn-block.btn-google-plus.btn-link-social(href='/auth/google')
|
a.btn.btn-lg.btn-block.btn-google-plus.btn-link-social(href='/auth/google')
|
||||||
i.fa.fa-google-plus
|
i.fa.fa-google-plus
|
||||||
| Link Google with your account
|
| Link Google with my account
|
||||||
- if (!user.facebook)
|
- if (!user.facebook)
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
a.btn.btn-lg.btn-block.btn-facebook.btn-link-social(href='/auth/facebook')
|
a.btn.btn-lg.btn-block.btn-facebook.btn-link-social(href='/auth/facebook')
|
||||||
i.fa.fa-facebook
|
i.fa.fa-facebook
|
||||||
| Link Facebook with your account
|
| Link Facebook with my account
|
||||||
//- if (!user.github)
|
//- if (!user.github)
|
||||||
// .col-xs-12
|
// .col-xs-12
|
||||||
// a.btn.btn-lg.btn-block.btn-github.btn-link-social(href='/auth/github')
|
// a.btn.btn-lg.btn-block.btn-github.btn-link-social(href='/auth/github')
|
||||||
// i.fa.fa-github
|
// i.fa.fa-github
|
||||||
// | Link GitHub with your account
|
// | Link GitHub with my account
|
||||||
- if (!user.linkedin)
|
- if (!user.linkedin)
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
a.btn.btn-lg.btn-block.btn-linkedin.btn-link-social(href='/auth/linkedin')
|
a.btn.btn-lg.btn-block.btn-linkedin.btn-link-social(href='/auth/linkedin')
|
||||||
i.fa.fa-linkedin
|
i.fa.fa-linkedin
|
||||||
| Link LinkedIn with your account
|
| Link LinkedIn with my account
|
||||||
- if (!user.twitter)
|
- if (!user.twitter)
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
a.btn.btn-lg.btn-block.btn-twitter.btn-link-social(href='/auth/twitter')
|
a.btn.btn-lg.btn-block.btn-twitter.btn-link-social(href='/auth/twitter')
|
||||||
i.fa.fa-twitter
|
i.fa.fa-twitter
|
||||||
| Link Twitter with your account
|
| Link Twitter with my account
|
||||||
|
.col-xs-12
|
||||||
.panel.panel-danger
|
a.btn.btn-lg.btn-block.btn-warning.btn-link-social(href='/logout')
|
||||||
.panel-heading.text-center Danger Zone:
|
span.ion-android-exit
|
||||||
.panel-body
|
| Sign me out of Free Code Camp
|
||||||
.col-xs-12.text-center
|
.col-xs-12
|
||||||
button.btn.btn-danger.btn-small.confirm-deletion
|
a.btn.btn-lg.btn-block.btn-danger.confirm-deletion.btn-link-social
|
||||||
span.ion-trash-b
|
span.ion-trash-b
|
||||||
| I want to delete my account
|
| Delete my Free Code Camp account
|
||||||
br
|
script.
|
||||||
br
|
$('.confirm-deletion').on("click", function() {
|
||||||
script.
|
$('#modal-dialog').modal('show');
|
||||||
$('.confirm-deletion').on("click", function() {
|
});
|
||||||
$('#modal-dialog').modal('show');
|
#modal-dialog.modal.animated.wobble
|
||||||
});
|
.modal-dialog
|
||||||
#modal-dialog.modal.animated.wobble
|
.modal-content
|
||||||
.modal-dialog
|
.modal-header
|
||||||
.modal-content
|
a.close(href='#', data-dismiss='modal', aria-hidden='true') ×
|
||||||
.modal-header
|
h3 Are you really leaving us?
|
||||||
a.close(href='#', data-dismiss='modal', aria-hidden='true') ×
|
.modal-body
|
||||||
h3 Are you really leaving us?
|
p Pro Tip: If you tweet feedback to
|
||||||
.modal-body
|
a(href="https://twitter.com/intent/tweet?text=Hey%20@freecodecamp") @FreeCodeCamp
|
||||||
p Pro Tip: If you tweet feedback to
|
| , we'll act quickly on it!
|
||||||
a(href="https://twitter.com/intent/tweet?text=Hey%20@freecodecamp") @FreeCodeCamp
|
.modal-footer
|
||||||
| , we'll act quickly on it!
|
a.btn.btn-success.btn-block(href='#', data-dismiss='modal', aria-hidden='true')
|
||||||
.modal-footer
|
span.ion-happy
|
||||||
a.btn.btn-success.btn-block(href='#', data-dismiss='modal', aria-hidden='true')
|
| Nevermind, I'll stick around
|
||||||
span.ion-happy
|
br
|
||||||
| Nevermind, I'll stick around
|
form(action='/account/delete', method='POST')
|
||||||
br
|
input(type='hidden', name='_csrf', value=_csrf)
|
||||||
form(action='/account/delete', method='POST')
|
button.btn.btn-danger.btn-block(type='submit')
|
||||||
input(type='hidden', name='_csrf', value=_csrf)
|
span.ion-trash-b
|
||||||
button.btn.btn-danger.btn-block(type='submit')
|
| Yes, Delete my account
|
||||||
span.ion-trash-b
|
|
||||||
| Yes, Delete my account
|
|
||||||
|
@ -1,10 +1,15 @@
|
|||||||
extends ../layout
|
extends ../layout
|
||||||
block content
|
block content
|
||||||
.col-xs-12.col-sm-12.col-md-12
|
.col-xs-12.col-sm-12.col-md-12
|
||||||
.panel.panel-primary
|
.panel.panel-info
|
||||||
.panel-heading.text-center
|
.panel-heading.text-center
|
||||||
h1 #{username}'s portfolio
|
h1 #{username}'s portfolio
|
||||||
.panel-body
|
.panel-body
|
||||||
|
if (user && user.profile.username === username)
|
||||||
|
.col-xs-12
|
||||||
|
.text-center
|
||||||
|
a.btn.btn-big.btn-primary(href="/account") Update my public portfolio
|
||||||
|
br
|
||||||
.row
|
.row
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
.col-xs-12.col-sm-12.col-md-5
|
.col-xs-12.col-sm-12.col-md-5
|
||||||
@ -35,9 +40,6 @@ block content
|
|||||||
h3.flat-top.bolded.wrappable= location
|
h3.flat-top.bolded.wrappable= location
|
||||||
h4.flat-top.wrappable= bio
|
h4.flat-top.wrappable= bio
|
||||||
.col-xs-12.col-sm-12.col-md-3.text-center
|
.col-xs-12.col-sm-12.col-md-3.text-center
|
||||||
if (user && user.profile.username === username)
|
|
||||||
a.btn.btn-warning(href="/account") Edit my Profile
|
|
||||||
|
|
||||||
.background-svg.img-center
|
.background-svg.img-center
|
||||||
.points-on-top
|
.points-on-top
|
||||||
= "[ " + points + " ]"
|
= "[ " + points + " ]"
|
||||||
|
@ -22,43 +22,44 @@ block content
|
|||||||
.col-xs-12.col-sm-12.col-md-4.bonfire-top
|
.col-xs-12.col-sm-12.col-md-4.bonfire-top
|
||||||
#testCreatePanel
|
#testCreatePanel
|
||||||
h1.text-center= name
|
h1.text-center= name
|
||||||
h2.text-center.bonfire-flames
|
h2.text-center
|
||||||
if (difficulty == "0")
|
.bonfire-flames Difficulty:
|
||||||
i.ion-ios-flame-outline
|
if (difficulty == "0")
|
||||||
i.ion-ios-flame-outline
|
i.ion-ios-flame-outline
|
||||||
i.ion-ios-flame-outline
|
i.ion-ios-flame-outline
|
||||||
i.ion-ios-flame-outline
|
i.ion-ios-flame-outline
|
||||||
i.ion-ios-flame-outline
|
i.ion-ios-flame-outline
|
||||||
if (difficulty == "1")
|
i.ion-ios-flame-outline
|
||||||
i.ion-ios-flame
|
if (difficulty == "1")
|
||||||
i.ion-ios-flame-outline
|
i.ion-ios-flame
|
||||||
i.ion-ios-flame-outline
|
i.ion-ios-flame-outline
|
||||||
i.ion-ios-flame-outline
|
i.ion-ios-flame-outline
|
||||||
i.ion-ios-flame-outline
|
i.ion-ios-flame-outline
|
||||||
if (difficulty == "2")
|
i.ion-ios-flame-outline
|
||||||
i.ion-ios-flame
|
if (difficulty == "2")
|
||||||
i.ion-ios-flame
|
i.ion-ios-flame
|
||||||
i.ion-ios-flame-outline
|
i.ion-ios-flame
|
||||||
i.ion-ios-flame-outline
|
i.ion-ios-flame-outline
|
||||||
i.ion-ios-flame-outline
|
i.ion-ios-flame-outline
|
||||||
if (difficulty == "3")
|
i.ion-ios-flame-outline
|
||||||
i.ion-ios-flame
|
if (difficulty == "3")
|
||||||
i.ion-ios-flame
|
i.ion-ios-flame
|
||||||
i.ion-ios-flame
|
i.ion-ios-flame
|
||||||
i.ion-ios-flame-outline
|
i.ion-ios-flame
|
||||||
i.ion-ios-flame-outline
|
i.ion-ios-flame-outline
|
||||||
if (difficulty == "4")
|
i.ion-ios-flame-outline
|
||||||
i.ion-ios-flame
|
if (difficulty == "4")
|
||||||
i.ion-ios-flame
|
i.ion-ios-flame
|
||||||
i.ion-ios-flame
|
i.ion-ios-flame
|
||||||
i.ion-ios-flame
|
i.ion-ios-flame
|
||||||
i.ion-ios-flame-outline
|
i.ion-ios-flame
|
||||||
if (difficulty == "5")
|
i.ion-ios-flame-outline
|
||||||
i.ion-ios-flame
|
if (difficulty == "5")
|
||||||
i.ion-ios-flame
|
i.ion-ios-flame
|
||||||
i.ion-ios-flame
|
i.ion-ios-flame
|
||||||
i.ion-ios-flame
|
i.ion-ios-flame
|
||||||
i.ion-ios-flame
|
i.ion-ios-flame
|
||||||
|
i.ion-ios-flame
|
||||||
.well
|
.well
|
||||||
.row
|
.row
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
.panel.panel-primary
|
.panel.panel-info
|
||||||
.panel-heading.landing-panel-heading.text-center Our Team of Volunteer Camp Counselors
|
.panel-heading.landing-panel-heading.text-center Our Team of Volunteer Camp Counselors
|
||||||
.panel-body
|
.panel-body
|
||||||
.landing-panel-body.text-center
|
.landing-panel-body.text-center
|
||||||
@ -12,121 +12,127 @@
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
#shuffle
|
#shuffle
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
|
h3.negative-10.text-nowrap Angelica Ferdinand
|
||||||
|
h4.negative-10.text-nowrap Community Builder
|
||||||
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/angelica-ferdinand.jpg' alt="Angelica Ferdinand's picture")
|
||||||
|
h4.text-nowrap Oakland, California
|
||||||
|
p.negative-10 "Computers have always lit my fire. I took a detour, but it's never too late to realize your dreams. If you love it, live it!"
|
||||||
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Ammar Shah
|
h3.negative-10.text-nowrap Ammar Shah
|
||||||
h4.negative-10.text-nowrap Community Builder
|
h4.negative-10.text-nowrap Community Builder
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/ammar-shah.jpg' alt="Ammar Shah's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/ammar-shah.jpg' alt="Ammar Shah's picture")
|
||||||
h4.text-nowrap Karachi, Pakistan
|
h4.text-nowrap Karachi, Pakistan
|
||||||
p.negative-10 "I code whenever I'm not sleeping or in school. Making computers obey me is a dream come true."
|
p.negative-10 "I code whenever I'm not sleeping or in school. Making computers obey me is a dream come true."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Branden Byers
|
h3.negative-10.text-nowrap Branden Byers
|
||||||
h4.negative-10.text-nowrap Instructional Designer
|
h4.negative-10.text-nowrap Instructional Designer
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/branden-byers.jpg' alt="Branden Byers picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/branden-byers.jpg' alt="Branden Byers picture")
|
||||||
h4.text-nowrap Madison, Wisconsin
|
h4.text-nowrap Madison, Wisconsin
|
||||||
p.negative-10 "Cookbook author and stay-at-home-dad. Started coding as a kid, got distracted, but now I'm back in full JavaScript force!"
|
p.negative-10 "Cookbook author and stay-at-home-dad. Started coding as a kid, got distracted, but now I'm back in full JavaScript force!"
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Michael Johnson
|
h3.negative-10.text-nowrap Michael Johnson
|
||||||
h4.negative-10.text-nowrap Nonprofit Coordinator
|
h4.negative-10.text-nowrap Nonprofit Coordinator
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/michael-johnson.jpeg' alt="Michael Johnson's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/michael-johnson.jpeg' alt="Michael Johnson's picture")
|
||||||
h4.text-nowrap Washington, D.C.
|
h4.text-nowrap Washington, D.C.
|
||||||
p.negative-10 "I’m a recent Harvard University graduate who took a pass on Wall Street to code for a cause, and help others do the same."
|
p.negative-10 "I’m a recent Harvard University graduate who took a pass on Wall Street to code for a cause, and help others do the same."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Berkeley Martinez
|
h3.negative-10.text-nowrap Berkeley Martinez
|
||||||
h4.negative-10.text-nowrap JavaScript Engineer
|
h4.negative-10.text-nowrap JavaScript Engineer
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/berkeley-martinez.jpg' alt="Berkeley Martinez's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/berkeley-martinez.jpg' alt="Berkeley Martinez's picture")
|
||||||
h4.text-nowrap San Francisco, California
|
h4.text-nowrap San Francisco, California
|
||||||
p.negative-10 "Former mechanical engineer. Coding is pure creation. I can fly, but only once."
|
p.negative-10 "Former mechanical engineer. Coding is pure creation. I can fly, but only once."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Mychael Zuniga
|
h3.negative-10.text-nowrap Mychael Zuniga
|
||||||
h4.negative-10.text-nowrap JavaScript Engineer
|
h4.negative-10.text-nowrap JavaScript Engineer
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/mychael-zuniga.jpg' alt="Mychael Zuniga's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/mychael-zuniga.jpg' alt="Mychael Zuniga's picture")
|
||||||
h4.text-nowrap San Diego, California
|
h4.text-nowrap San Diego, California
|
||||||
p.negative-10 "I'm a college student who turned to code as an avenue for creative expression. I love political science and economics."
|
p.negative-10 "I'm a college student who turned to code as an avenue for creative expression. I love political science and economics."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Jeanette Casteñeta
|
h3.negative-10.text-nowrap Jeanette Casteñeta
|
||||||
h4.negative-10.text-nowrap Product Manager
|
h4.negative-10.text-nowrap Product Manager
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/jeanette-casteneta.jpg' alt="Jeanette Casteñeta's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/jeanette-casteneta.jpg' alt="Jeanette Casteñeta's picture")
|
||||||
h4.text-nowrap San Francisco, California
|
h4.text-nowrap San Francisco, California
|
||||||
p.negative-10 "Home-ec diva. I can envision a dress, then stitch it together. Now I'm learning how to do the same thing with code."
|
p.negative-10 "Home-ec diva. I can envision a dress, then stitch it together. Now I'm learning how to do the same thing with code."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Darryl Dixon
|
h3.negative-10.text-nowrap Darryl Dixon
|
||||||
h4.negative-10.text-nowrap Community Builder
|
h4.negative-10.text-nowrap Community Builder
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/darryl-dixon.jpg' alt="Darryl Dixon's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/darryl-dixon.jpg' alt="Darryl Dixon's picture")
|
||||||
h4.text-nowrap Newport News, Virginia
|
h4.text-nowrap Newport News, Virginia
|
||||||
p.negative-10 "I'm a self-taught graphic designer. I'm learning web development here and want you to learn with me."
|
p.negative-10 "I'm a self-taught graphic designer. I'm learning web development here and want you to learn with me."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Kathy O'Driscoll
|
h3.negative-10.text-nowrap Kathy O'Driscoll
|
||||||
h4.negative-10.text-nowrap Community Builder
|
h4.negative-10.text-nowrap Community Builder
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/kathy-odriscoll.jpg' alt="Kathy O'Driscoll's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/kathy-odriscoll.jpg' alt="Kathy O'Driscoll's picture")
|
||||||
h4.text-nowrap Los Angeles, California
|
h4.text-nowrap Los Angeles, California
|
||||||
p.negative-10 "Mother and grandmother. All my life I've dabbled in getting machines to do my bidding. Now it's becoming my career."
|
p.negative-10 "Mother and grandmother. All my life I've dabbled in getting machines to do my bidding. Now it's becoming my career."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Ryan Malm
|
h3.negative-10.text-nowrap Ryan Malm
|
||||||
h4.negative-10.text-nowrap Visual Designer
|
h4.negative-10.text-nowrap Visual Designer
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/ryan-malm.jpg' alt="Ryan Malm's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/ryan-malm.jpg' alt="Ryan Malm's picture")
|
||||||
h4.text-nowrap Omaha, Nebraska
|
h4.text-nowrap Omaha, Nebraska
|
||||||
p.negative-10 "I love origami, piano, and playing minecraft with my kids. My JavaScript grows stronger every day."
|
p.negative-10 "I love origami, piano, and playing minecraft with my kids. My JavaScript grows stronger every day."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Charles Watson
|
h3.negative-10.text-nowrap Charles Watson
|
||||||
h4.negative-10.text-nowrap JavaScript Engineer
|
h4.negative-10.text-nowrap JavaScript Engineer
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/charles-watson.jpg' alt="Charles Watson's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/charles-watson.jpg' alt="Charles Watson's picture")
|
||||||
h4.text-nowrap Minneapolis, Minnesota
|
h4.text-nowrap Minneapolis, Minnesota
|
||||||
p.negative-10 "I skipped college. I build iOS apps. I love the obstacles and puzzles that coding presents me."
|
p.negative-10 "I skipped college. I build iOS apps. I love the obstacles and puzzles that coding presents me."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Quincy Larson
|
h3.negative-10.text-nowrap Quincy Larson
|
||||||
h4.negative-10.text-nowrap Instructional Designer
|
h4.negative-10.text-nowrap Instructional Designer
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/quincy-larson.jpg' alt="Quincy Larson's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/quincy-larson.jpg' alt="Quincy Larson's picture")
|
||||||
h4.text-nowrap San Francisco, California
|
h4.text-nowrap San Francisco, California
|
||||||
p.negative-10 "I worked as a school director in China before learning to code. It's clear that everyone can - and should - learn to code."
|
p.negative-10 "I worked as a school director in China before learning to code. It's clear that everyone can - and should - learn to code."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Mark Howard
|
h3.negative-10.text-nowrap Mark Howard
|
||||||
h4.negative-10.text-nowrap Digital Marketer
|
h4.negative-10.text-nowrap Digital Marketer
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/mark-howard.jpg' alt="Mark Howard's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/mark-howard.jpg' alt="Mark Howard's picture")
|
||||||
h4.text-nowrap San Diego, California
|
h4.text-nowrap San Diego, California
|
||||||
p.negative-10 "I enjoy helping people, at scale. Code is the best way to do that."
|
p.negative-10 "I enjoy helping people, at scale. Code is the best way to do that."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Nathan Leniz
|
h3.negative-10.text-nowrap Nathan Leniz
|
||||||
h4.negative-10.text-nowrap JavaScript Engineer
|
h4.negative-10.text-nowrap JavaScript Engineer
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/nathan-leniz.jpg' alt="Nathan Leniz's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/nathan-leniz.jpg' alt="Nathan Leniz's picture")
|
||||||
h4.text-nowrap Seoul, South Korea
|
h4.text-nowrap Seoul, South Korea
|
||||||
p.negative-10 "I learned to code for the games, and stayed for the algorithms."
|
p.negative-10 "I learned to code for the games, and stayed for the algorithms."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Jason Rueckert
|
h3.negative-10.text-nowrap Jason Rueckert
|
||||||
h4.negative-10.text-nowrap Live Content Manager
|
h4.negative-10.text-nowrap Live Content Manager
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/jason-rueckert.jpg' alt="Jason Rueckert's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/jason-rueckert.jpg' alt="Jason Rueckert's picture")
|
||||||
h4.text-nowrap Seattle, Washington
|
h4.text-nowrap Seattle, Washington
|
||||||
p.negative-10 "My high school job was testing basketball shoes for Nike. I learned code to work smarter, not harder. I have no thyroid."
|
p.negative-10 "My high school job was testing basketball shoes for Nike. I learned code to work smarter, not harder. I have no thyroid."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Christopher Nguyen
|
h3.negative-10.text-nowrap Christopher Nguyen
|
||||||
h4.negative-10.text-nowrap QA Engineer
|
h4.negative-10.text-nowrap QA Engineer
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/christopher-nguyen.jpg' alt="Christopher Nguyen's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/christopher-nguyen.jpg' alt="Christopher Nguyen's picture")
|
||||||
h4.text-nowrap Seattle, Washington
|
h4.text-nowrap Seattle, Washington
|
||||||
p.negative-10 "Morning Owl. Code is an equalizer. Barriers exist everywhere, but if you can say 'hello world', the world will say hello back."
|
p.negative-10 "Morning Owl. Code is an equalizer. Barriers exist everywhere, but if you can say 'hello world', the world will say hello back."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Dominic Jones
|
h3.negative-10.text-nowrap Dominic Jones
|
||||||
h4.negative-10.text-nowrap Community Builder
|
h4.negative-10.text-nowrap Community Builder
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/dominic-jones.jpg' alt="Dominic Jones's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/dominic-jones.jpg' alt="Dominic Jones's picture")
|
||||||
h4.text-nowrap York, Pennsylvania
|
h4.text-nowrap York, Pennsylvania
|
||||||
p.negative-10 "Born with Sickle Cell Anemia. Professional writer, working on becoming a professional code writer."
|
p.negative-10 "Born with Sickle Cell Anemia. Professional writer, working on becoming a professional code writer."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap James McShane
|
h3.negative-10.text-nowrap James McShane
|
||||||
h4.negative-10.text-nowrap JavaScript Engineer
|
h4.negative-10.text-nowrap JavaScript Engineer
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/james-mcshane.jpg' alt="James McShane's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/james-mcshane.jpg' alt="James McShane's picture")
|
||||||
h4.text-nowrap Minneapolis, Minnesota
|
h4.text-nowrap Minneapolis, Minnesota
|
||||||
p.negative-10 "I just bought our first house, ending a 10 year streak of moving each year. I've used code to solve problems since I was a child."
|
p.negative-10 "I just bought our first house, ending a 10 year streak of moving each year. I've used code to solve problems since I was a child."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Ellie Adam
|
h3.negative-10.text-nowrap Ellie Adam
|
||||||
h4.negative-10.text-nowrap Visual Designer
|
h4.negative-10.text-nowrap Visual Designer
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/ellie-adam.jpg' alt="Eliie Adam's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/ellie-adam.jpg' alt="Eliie Adam's picture")
|
||||||
h4.text-nowrap Seattle, Washington
|
h4.text-nowrap Seattle, Washington
|
||||||
p.negative-10 "I photograph birds and flowers. I'm a designer who recently decided to learn coding and front end web developement."
|
p.negative-10 "I photograph birds and flowers. I'm a designer who recently decided to learn coding and front end web developement."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Kamal Sharif
|
h3.negative-10.text-nowrap Kamal Sharif
|
||||||
h4.negative-10.text-nowrap JavaScript Engineer
|
h4.negative-10.text-nowrap JavaScript Engineer
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/kamal-sharif.jpg' alt="Kamal Sharif's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/kamal-sharif.jpg' alt="Kamal Sharif's picture")
|
||||||
h4.text-nowrap Dhaka, Bangladesh
|
h4.text-nowrap Dhaka, Bangladesh
|
||||||
p.negative-10 "I build applications that help other people improve their own lives."
|
p.negative-10 "I build applications that help other people improve their own lives."
|
||||||
.col-xs-12.col-sm-4.col-md-3.team-member
|
.col-xs-12.col-sm-12.col-md-12.col-lg-6.team-member
|
||||||
h3.negative-10.text-nowrap Patrick Ly
|
h3.negative-10.text-nowrap Patrick Ly
|
||||||
h4.negative-10.text-nowrap Community Builder
|
h4.negative-10.text-nowrap Community Builder
|
||||||
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/patrick-ly.jpg' alt="Patrick Ly's picture")
|
img.profile-image(src='https://s3.amazonaws.com/freecodecamp/patrick-ly.jpg' alt="Patrick Ly's picture")
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
.panel.panel-primary
|
|
||||||
.panel-heading.landing-panel-heading.text-center Our Blog and Tweets
|
|
||||||
.panel-body
|
|
||||||
.landing-panel-body.text-center
|
|
||||||
.row
|
|
||||||
.col-xs-12.col-sm-12.col-md-6
|
|
||||||
h2
|
|
||||||
a(href=blog1Link)= blog1Title
|
|
||||||
h2
|
|
||||||
a(href=blog2Link)= blog2Title
|
|
||||||
h2
|
|
||||||
a(href=blog3Link)= blog3Title
|
|
||||||
h2
|
|
||||||
a(href=blog4Link)= blog4Title
|
|
||||||
h2
|
|
||||||
a(href=blog5Link)= blog5Title
|
|
||||||
.col-xs-12.col-sm-12.col-md-6
|
|
||||||
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");
|
|
16
views/partials/blogger.jade
Normal file
16
views/partials/blogger.jade
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#blog
|
||||||
|
script.
|
||||||
|
(function() {
|
||||||
|
$.ajax({
|
||||||
|
url: '/api/blogger',
|
||||||
|
type: 'GET'
|
||||||
|
}).done(
|
||||||
|
function(data) {
|
||||||
|
var props = Object.keys(data);
|
||||||
|
for (var i = 0; i < props.length; i+=2) {
|
||||||
|
var blogger = document.createElement('div');
|
||||||
|
$(blogger).html('<h2><a href=' + data[props[i+1]] + '>' + data[props[i]] + '</a></h2></div>').prependTo($('#blog'))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
})();
|
@ -1,4 +1,4 @@
|
|||||||
.panel.panel-primary
|
.panel.panel-info
|
||||||
.panel-heading.landing-panel-heading.text-center Frequently Asked Questions
|
.panel-heading.landing-panel-heading.text-center Frequently Asked Questions
|
||||||
.panel-body
|
.panel-body
|
||||||
.landing-panel-body
|
.landing-panel-body
|
||||||
@ -16,11 +16,12 @@
|
|||||||
p.landing-p Then you'll learn computer science and the art of programming:
|
p.landing-p Then you'll learn computer science and the art of programming:
|
||||||
ul
|
ul
|
||||||
li.landing-p • JavaScript - the one programming language that all web browsers use
|
li.landing-p • JavaScript - the one programming language that all web browsers use
|
||||||
li.landing-p • Git - a version control system for saving and sharing your projects
|
|
||||||
li.landing-p • Algorithms - step-by-step recipes for getting things done
|
li.landing-p • Algorithms - step-by-step recipes for getting things done
|
||||||
|
li.landing-p • Automated Testing - write tests to test the limits of your code
|
||||||
p.landing-p You'll spend the last half of Free Code Camp using Agile Methodologies and Full Stack JavaScript to build projects for nonprofits:
|
p.landing-p You'll spend the last half of Free Code Camp using Agile Methodologies and Full Stack JavaScript to build projects for nonprofits:
|
||||||
ul
|
ul
|
||||||
li.landing-p • Agile - a set of software development principles that focus the design and production of a project on the needs of its users
|
li.landing-p • Agile - a set of software development principles that focus the design and production of a project on the needs of its users
|
||||||
|
li.landing-p • Git - a version control system for saving and sharing your projects
|
||||||
li.landing-p • MongoDB - a popular non-relational database
|
li.landing-p • MongoDB - a popular non-relational database
|
||||||
li.landing-p • Angular.js - a tool for making exciting web interfaces
|
li.landing-p • Angular.js - a tool for making exciting web interfaces
|
||||||
li.landing-p • Express.js - a powerful web development framework
|
li.landing-p • Express.js - a powerful web development framework
|
||||||
@ -35,23 +36,23 @@
|
|||||||
table.table
|
table.table
|
||||||
thead
|
thead
|
||||||
th Time budgeted
|
th Time budgeted
|
||||||
th Hours per week
|
th.hidden-xs Hours per week
|
||||||
th Weeks to complete
|
th Weeks to complete
|
||||||
tr.info
|
tr.info
|
||||||
td Weekends
|
td Weekends
|
||||||
td 10 hours/week
|
td.hidden-xs 10 hours/week
|
||||||
td 100 weeks (2 years)
|
td 100 weeks (2 years)
|
||||||
tr.success
|
tr.success
|
||||||
td Nights and Weekends
|
td Nights and Weekends
|
||||||
td 20 hours/week
|
td.hidden-xs 20 hours/week
|
||||||
td 50 weeks (1 year)
|
td 50 weeks (1 year)
|
||||||
tr.warning
|
tr.warning
|
||||||
td Full time
|
td Full time
|
||||||
td 40 hours/week
|
td.hidden-xs 40 hours/week
|
||||||
td 25 weeks (6 months)
|
td 25 weeks (6 months)
|
||||||
tr.danger
|
tr.danger
|
||||||
td Traditional Bootcamp Pacing
|
td Traditional Bootcamp Pacing
|
||||||
td 80 hours/week
|
td.hidden-xs 80 hours/week
|
||||||
td 12 weeks (3 months)
|
td 12 weeks (3 months)
|
||||||
h2 Why does Free Code Camp use JavaScript instead of Ruby or Python?
|
h2 Why does Free Code Camp use JavaScript instead of Ruby or Python?
|
||||||
ul
|
ul
|
||||||
|
@ -1,20 +1,24 @@
|
|||||||
.fcc-footer
|
.fcc-footer
|
||||||
.col-xs-12
|
.col-xs-12.hidden-xs.hidden-sm
|
||||||
a.ion-speakerphone(href='http://blog.freecodecamp.com', target='_blank')
|
a.ion-speakerphone(href='http://blog.freecodecamp.com', target='_blank') Blog
|
||||||
span.sr-only Free Code Camp's Blog
|
a.ion-social-twitch-outline(href="http://www.twitch.tv/freecodecamp", target='_blank') Twitch
|
||||||
a.ion-social-twitch-outline(href="http://www.twitch.tv/freecodecamp", target='_blank')
|
a.ion-social-github(href="http://github.com/freecodecamp", target='_blank') Github
|
||||||
span.sr-only Free Code Camp Live Pair Programming on Twitch.tv
|
a.ion-social-twitter(href="http://twitter.com/freecodecamp", target='_blank') Twitter
|
||||||
a.ion-social-github(href="http://github.com/freecodecamp", target='_blank')
|
a.ion-social-facebook(href="http://facebook.com/freecodecamp", target='_blank') Facebook
|
||||||
span.sr-only Free Code Camp on GitHub
|
a.ion-information-circled(href="/learn-to-code") About
|
||||||
a.ion-social-twitter(href="http://twitter.com/freecodecamp", target='_blank')
|
a.ion-locked(href="/privacy") Privacy
|
||||||
span.sr-only Free Code Camp on Twitter
|
.col-xs-12.visible-xs.visible-sm
|
||||||
a.ion-social-facebook(href="http://facebook.com/freecodecamp", target='_blank')
|
a.ion-speakerphone(href='http://blog.freecodecamp.com', target='_blank')
|
||||||
span.sr-only Free Code Camp on Facebook
|
span.sr-only Free Code Camp's Blog
|
||||||
a.ion-social-linkedin(href="http://linkedin.com/company/4831032?free-code-camp", target='_blank')
|
a.ion-social-twitch-outline(href="http://www.twitch.tv/freecodecamp", target='_blank')
|
||||||
span.sr-only Free Code Camp on LinkedIn
|
span.sr-only Free Code Camp Live Pair Programming on Twitch.tv
|
||||||
a.ion-information-circled(href="/learn-to-code")
|
a.ion-social-github(href="http://github.com/freecodecamp", target='_blank')
|
||||||
span.sr-only About Free Code Camp
|
span.sr-only Free Code Camp on GitHub
|
||||||
a.ion-locked(href="/privacy")
|
a.ion-social-twitter(href="http://twitter.com/freecodecamp", target='_blank')
|
||||||
span.sr-only Free Code Camp's Privacy Policy
|
span.sr-only Free Code Camp on Twitter
|
||||||
a.ion-code-working(href="/playground")
|
a.ion-social-facebook(href="http://facebook.com/freecodecamp", target='_blank')
|
||||||
span.sr-only Code Editor Playground
|
span.sr-only Free Code Camp on Facebook
|
||||||
|
a.ion-information-circled(href="/learn-to-code")
|
||||||
|
span.sr-only About Free Code Camp
|
||||||
|
a.ion-locked(href="/privacy")
|
||||||
|
span.sr-only Free Code Camp's Privacy Policy
|
13
views/partials/github.jade
Normal file
13
views/partials/github.jade
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#github
|
||||||
|
script.
|
||||||
|
(function() {
|
||||||
|
$.ajax({
|
||||||
|
url: '/api/github',
|
||||||
|
type: 'GET'
|
||||||
|
}).done(
|
||||||
|
function(data) {
|
||||||
|
var github = document.createElement('div');
|
||||||
|
$(github).html('<div class="row"><div class="col-xs-6 text-right">Open GitHub Issues:</div><div class="col-xs-6 text-left">' + data.issues + ' <a href="https://github.com/freecodecamp/freecodecamp/issues">(create one)</a></div></div><div class="row"><div class="col-xs-6 text-right">Open Pull Requests:</div><div class="col-xs-6 text-left">' + data.pulls + ' <a href="https://github.com/freecodecamp/freecodecamp/pulls">(create one)</a></div></div>').prependTo($('#github'))
|
||||||
|
}
|
||||||
|
);
|
||||||
|
})();
|
@ -8,24 +8,12 @@
|
|||||||
img.img-responsive.nav-logo(src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt='learn to code javascript at Free Code Camp logo')
|
img.img-responsive.nav-logo(src='https://s3.amazonaws.com/freecodecamp/freecodecamp_logo.svg', alt='learn to code javascript at Free Code Camp logo')
|
||||||
.collapse.navbar-collapse
|
.collapse.navbar-collapse
|
||||||
ul.nav.navbar-nav.navbar-right.hamburger-dropdown
|
ul.nav.navbar-nav.navbar-right.hamburger-dropdown
|
||||||
- if (!cc)
|
li
|
||||||
li
|
a(href='/challenges') Challenges
|
||||||
a(href='/challenges/0') Challenges
|
li
|
||||||
- else
|
a(href='/chat') Chat
|
||||||
li
|
li
|
||||||
a(href='/') Challenges
|
a(href='http://forum.freecodecamp.com' target='_blank') Forum
|
||||||
- if (!cc || (cc && cc[1] < 1))
|
|
||||||
li
|
|
||||||
a(href='/challenges/1') Chat
|
|
||||||
- else
|
|
||||||
li
|
|
||||||
a(href='http://chat.freecodecamp.com' target='_blank') Chat
|
|
||||||
- if (!cc || (cc && cc[2] < 1))
|
|
||||||
li
|
|
||||||
a(href='/challenges/2') Forum
|
|
||||||
- else
|
|
||||||
li
|
|
||||||
a(href='http://forum.freecodecamp.com' target='_blank') Forum
|
|
||||||
li
|
li
|
||||||
a(href='/bonfires') Bonfires
|
a(href='/bonfires') Bonfires
|
||||||
if !user
|
if !user
|
||||||
@ -34,7 +22,10 @@
|
|||||||
a.btn.signup-btn.signup-btn-nav(href='/login') Sign in
|
a.btn.signup-btn.signup-btn-nav(href='/login') Sign in
|
||||||
else
|
else
|
||||||
li
|
li
|
||||||
a(href='/account') [ #{user.points} ]
|
if (user.profile.username)
|
||||||
|
a(href='/' + user.profile.username) [ #{user.points} ]
|
||||||
|
else
|
||||||
|
a(href='/account') [ #{user.points} ]
|
||||||
.hidden-xs
|
.hidden-xs
|
||||||
if user.profile.picture
|
if user.profile.picture
|
||||||
if (user.profile.username)
|
if (user.profile.username)
|
||||||
|
@ -1,46 +0,0 @@
|
|||||||
.panel.panel-primary
|
|
||||||
.panel-heading.landing-panel-heading.text-center Free Code Camp Stats
|
|
||||||
.panel-body
|
|
||||||
.landing-panel-body.text-center
|
|
||||||
.row
|
|
||||||
.col-xs-6.text-right
|
|
||||||
h2 Days since we Launched:
|
|
||||||
.col-xs-6.text-left
|
|
||||||
h2
|
|
||||||
= daysRunning
|
|
||||||
.row
|
|
||||||
.col-xs-6.text-right
|
|
||||||
h2 Nonprofit Projects:
|
|
||||||
.col-xs-6.text-left
|
|
||||||
h2
|
|
||||||
=nonprofitProjects
|
|
||||||
|  
|
|
||||||
a(href="https://trello.com/b/BA3xVpz9/nonprofit-projects") (view)
|
|
||||||
.row
|
|
||||||
.col-xs-6.text-right
|
|
||||||
h2 Campers with at least...
|
|
||||||
.col-xs-6
|
|
||||||
.row
|
|
||||||
.col-xs-6.text-right
|
|
||||||
h2 3 Points:
|
|
||||||
.col-xs-6.text-left
|
|
||||||
h2
|
|
||||||
= c3
|
|
||||||
.row
|
|
||||||
.col-xs-6.text-right
|
|
||||||
h2 10 Points:
|
|
||||||
.col-xs-6.text-left
|
|
||||||
h2
|
|
||||||
= c10
|
|
||||||
.row
|
|
||||||
.col-xs-6.text-right
|
|
||||||
h2 30 Points:
|
|
||||||
.col-xs-6.text-left
|
|
||||||
h2
|
|
||||||
= c30
|
|
||||||
.row
|
|
||||||
.col-xs-6.text-right
|
|
||||||
h2 All 54 Points:
|
|
||||||
.col-xs-6.text-left
|
|
||||||
h2
|
|
||||||
= all
|
|
13
views/partials/trello.jade
Normal file
13
views/partials/trello.jade
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#trello
|
||||||
|
script.
|
||||||
|
(function() {
|
||||||
|
$.ajax({
|
||||||
|
url: '/api/trello',
|
||||||
|
type: 'GET'
|
||||||
|
}).done(
|
||||||
|
function(data) {
|
||||||
|
var trello = document.createElement('div');
|
||||||
|
$(trello).html(data.trello + ' <a href="https://trello.com/b/BA3xVpz9/nonprofit-projects">(view them)</a></h2></div>').prependTo($('#trello'))
|
||||||
|
}
|
||||||
|
);
|
||||||
|
})();
|
22
views/resources/chat.jade
Normal file
22
views/resources/chat.jade
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
extends ../layout-wide
|
||||||
|
block content
|
||||||
|
h3
|
||||||
|
ol.col-md-offset-2
|
||||||
|
li Create a GitHub Account
|
||||||
|
a(href="http://github.com/join", target='_blank') here
|
||||||
|
| .
|
||||||
|
li Download the chat room app on
|
||||||
|
a(href="https://update.gitter.im/osx/latest") Windows
|
||||||
|
| ,
|
||||||
|
a(href="https://update.gitter.im/win/latest") Mac
|
||||||
|
| ,
|
||||||
|
a(href="http://appstore.com/gitter") iPhone
|
||||||
|
| , or
|
||||||
|
a(href="https://play.google.com/store/apps/details?id=im.gitter.gitter&hl=en_GB") Android
|
||||||
|
| , or go
|
||||||
|
a(href="http://chat.freecodecamp.com") here
|
||||||
|
| .
|
||||||
|
li Keep the chat room open while you code so that you can meet friends and ask for help.
|
||||||
|
.col-xs-12
|
||||||
|
.embed-responsive.embed-responsive-16by9.gitter-imbed
|
||||||
|
iframe(src='http://www.gitter.im/freecodecamp/freecodecamp', frameborder='0', scrolling='no')
|
13
views/resources/install-screenhero.jade
Normal file
13
views/resources/install-screenhero.jade
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
extends ../layout
|
||||||
|
block content
|
||||||
|
.jumbotron.text-center
|
||||||
|
h1.hug-top Install ScreenHero
|
||||||
|
h2
|
||||||
|
a(href="http://links.screenhero.com/e/c/eyJlbWFpbF9pZCI6Ik1qQTNNem9XQkNJQ1pBQUNjd0FYQVZrVEdnRkxNamtfX0JWZEdGVEpSZkVCWlRwbFpXRTBNamM0WVMxaE56SmlMVEV4WlRRdE9HUXpZUzFpWXpVNE1HRTJNalkxTldNNk1UUTJNVEEyQUE9PSIsInBvc2l0aW9uIjowLCJocmVmIjoiaHR0cDovL2RsLnNjcmVlbmhlcm8uY29tL3NtYXJ0ZG93bmxvYWQvZklYQU1UUUJBTEtQQkhQTC9TY3JlZW5oZXJvLnppcD9zb3VyY2U9d2ViIn0=") Download for Mac
|
||||||
|
h2
|
||||||
|
a(href="http://links.screenhero.com/e/c/eyJlbWFpbF9pZCI6Ik1qQTNNem9XQkNJQ1pBQUNjd0FYQVZrVEdnRkxNamtfX0JWZEdGVEpSZkVCWlRwbFpXRTBNamM0WVMxaE56SmlMVEV4WlRRdE9HUXpZUzFpWXpVNE1HRTJNalkxTldNNk1UUTJNVEEyQUE9PSIsInBvc2l0aW9uIjoxLCJocmVmIjoiaHR0cDovL2RsLnNjcmVlbmhlcm8uY29tL3NtYXJ0ZG93bmxvYWQvZklYQU1UUUJBTEtQQkhQTC9TY3JlZW5oZXJvLXNldHVwLmV4ZSJ9") Download for Windows
|
||||||
|
p You can learn more about using Screen Hero by taking
|
||||||
|
a(href="http://www.freecodecamp.com/challenges/34") Challenge 34.
|
||||||
|
p Screen Hero was recently acquired by a collaboration tool called Slack. It's still available and free, but will go away in the indefinite future. Discuss alternatives on our
|
||||||
|
a(href="http://forum.freecodecamp.com/t/replacing-screen-hero/992") Screen Hero replacement thread
|
||||||
|
| .
|
@ -1,8 +1,86 @@
|
|||||||
extends ../layout
|
extends ../layout-wide
|
||||||
block content
|
block content
|
||||||
|
img.img-responsive.img-center(src='https://s3.amazonaws.com/freecodecamp/wide-social-banner.png')
|
||||||
|
br
|
||||||
|
.text-center
|
||||||
|
a.btn.btn-cta.signup-btn.next-challenge-button(href="/challenges") Take me to my next challenge
|
||||||
|
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
|
||||||
|
img.img-responsive.img-center(src="https://s3.amazonaws.com/freecodecamp/about-chatroom.jpg")
|
||||||
|
h3
|
||||||
|
.row
|
||||||
|
.col-xs-9.text-right Campers doing challenges:
|
||||||
|
.col-xs-3.text-left= c3
|
||||||
|
.row
|
||||||
|
.col-xs-9.text-right Campers coding for nonprofits:
|
||||||
|
.col-xs-3.text-left= all
|
||||||
|
.col-xs-12.col-sm-12.col-md-4
|
||||||
|
.panel.panel-info
|
||||||
|
.panel-heading.landing-panel-heading.text-center Learn JavaScript
|
||||||
|
.panel-body
|
||||||
|
img.img-responsive.img-center(src="https://s3.amazonaws.com/freecodecamp/about-github.jpg")
|
||||||
|
h3
|
||||||
|
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
|
||||||
|
img.img-responsive.img-center(src="https://s3.amazonaws.com/freecodecamp/about-trello.jpg")
|
||||||
|
h3
|
||||||
|
.row
|
||||||
|
.col-xs-6.text-right Days since we launched:
|
||||||
|
.col-xs-6.text-left= daysRunning
|
||||||
|
.row
|
||||||
|
.col-xs-6.text-right Nonprofit Projects:
|
||||||
|
.col-xs-6.text-left
|
||||||
|
include ../partials/trello
|
||||||
|
|
||||||
|
br
|
||||||
script.
|
script.
|
||||||
var challengeName = 'Learn to code'
|
var challengeName = 'Learn to code'
|
||||||
include ../partials/stats
|
.row
|
||||||
include ../partials/blog
|
.col-xs-12.col-sm-12.col-md-6
|
||||||
include ../partials/about
|
.panel.panel-info
|
||||||
include ../partials/faq
|
.panel-heading.landing-panel-heading.text-center News
|
||||||
|
.panel-body
|
||||||
|
.landing-panel-body.text-center
|
||||||
|
for announcement in announcements
|
||||||
|
h2
|
||||||
|
if (announcement.length > 1)
|
||||||
|
a(href=announcement[1])= announcement[0]
|
||||||
|
else
|
||||||
|
= announcement[0]
|
||||||
|
include ../partials/blogger
|
||||||
|
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>
|
||||||
|
include ../partials/about
|
||||||
|
.col-xs-12.col-sm-12.col-md-6
|
||||||
|
include ../partials/faq
|
Reference in New Issue
Block a user