diff --git a/app.js b/app.js index 632edb58f8..f32d521677 100644 --- a/app.js +++ b/app.js @@ -168,6 +168,7 @@ app.use(helmet.contentSecurityPolicy({ '*.vimeo.com', '*.twitter.com', '*.rafflecopter.com', + '*.ghbtns.com' ].concat(trusted), reportOnly: false, // set to true if you only want to report errors setAllHeaders: false, // set to true if you want to set all headers @@ -255,10 +256,19 @@ app.post( passportConf.isAuthenticated, userController.updateProgress ); + +/** + * Challenge related routes + */ +app.get( + '/challenges/', + challengesController.returnNextChallenge +); app.get( '/challenges/:challengeNumber', challengesController.returnChallenge ); + app.all('/account', passportConf.isAuthenticated); app.get('/account/api', userController.getAccountAngular); diff --git a/controllers/challenges.js b/controllers/challenges.js index 9de4496a4c..a0d3f3f52f 100644 --- a/controllers/challenges.js +++ b/controllers/challenges.js @@ -9,7 +9,27 @@ var _ = require('lodash'), 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; if (challengeNumber > highestChallengeNumber) { req.flash('errors', { diff --git a/controllers/home.js b/controllers/home.js index 3105d1ea10..e2e752e423 100644 --- a/controllers/home.js +++ b/controllers/home.js @@ -5,20 +5,10 @@ exports.index = 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'); - } + res.redirect('/learn-to-code') } else { res.render('home', { - title: 'Learn to Code and Become a Software Engineer', - landingPage: true + title: 'Learn to Code and Become a Software Engineer' }); } }; diff --git a/controllers/resources.js b/controllers/resources.js index d0a5a458b9..84dc9913bf 100644 --- a/controllers/resources.js +++ b/controllers/resources.js @@ -102,48 +102,57 @@ module.exports = { var date2 = new Date(); var timeDiff = Math.abs(date2.getTime() - date1.getTime()); var daysRunning = Math.ceil(timeDiff / (1000 * 3600 * 24)); + 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://trello.com/1/boards/BA3xVpz9/cards?key=' + secrets.trello.key, function(trello, res2) { - client.get('https://www.googleapis.com/blogger/v3/blogs/2421288658305323950/posts?key=' + secrets.blogger.key, function(blogger, res3) { - var nonprofitProjects = (JSON.parse(trello)).length || 27; - var blog = JSON.parse(blogger); - User.count({'points': {'$gt': 2}}, function (err, c3) { - if (err) { - debug('User err: ', err); - next(err); - } - User.count({'points': {'$gt': 9}}, function (err, c10) { - if (err) { - debug('User err: ', err); - next(err); - } - User.count({'points': {'$gt': 29}}, function (err, c30) { + client.get('https://api.github.com/repos/freecodecamp/freecodecamp/pulls', githubHeaders, function(pulls, res3) { + client.get('https://api.github.com/repos/freecodecamp/freecodecamp/issues', githubHeaders, function(issues, res4) { + client.get('https://www.googleapis.com/blogger/v3/blogs/2421288658305323950/posts?key=' + secrets.blogger.key, function (blogger, res5) { + var nonprofitProjects = (JSON.parse(trello)).length || 27; + var pulls = pulls ? (JSON.parse(pulls)).length : 0; + var issues = issues ? (JSON.parse(issues)).length : 0; + var blog = JSON.parse(blogger); + User.count({'points': {'$gt': 2}}, function (err, c3) { if (err) { debug('User err: ', err); next(err); } - User.count({'points': {'$gt': 53}}, function (err, all) { + User.count({'points': {'$gt': 9}}, function (err, c10) { 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"] + User.count({'points': {'$gt': 29}}, function (err, c30) { + if (err) { + debug('User err: ', err); + 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, + pulls: pulls, + issues: issues, + 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"] + }); + }); }); }); }); diff --git a/public/css/lib/bootstrap/variables.less b/public/css/lib/bootstrap/variables.less index e6d916a76a..3de76507c7 100755 --- a/public/css/lib/bootstrap/variables.less +++ b/public/css/lib/bootstrap/variables.less @@ -717,9 +717,9 @@ @panel-success-border: @state-success-border; @panel-success-heading-bg: @state-success-bg; -@panel-info-text: @state-info-text; -@panel-info-border: @state-info-border; -@panel-info-heading-bg: @state-info-bg; +@panel-info-text: #eee; +@panel-info-border: darken(#4a2b0f, 5%); +@panel-info-heading-bg: #4a2b0f; @panel-warning-text: @state-warning-text; @panel-warning-border: @state-warning-border; diff --git a/public/css/main.less b/public/css/main.less index 50058c04f5..eef9b6b785 100644 --- a/public/css/main.less +++ b/public/css/main.less @@ -374,6 +374,11 @@ ul { display: block; } +.next-challenge-button { + max-width: 1500px; + margin:0 auto; +} + .btn-big { font-size: 30px; } @@ -690,6 +695,14 @@ iframe.iphone { font-size: 0px; } +.stats-text { + font-size: 26px; + line-height: 150%; +} + +.github-button-container { + padding-top: 5px; +} //uncomment this to see the dimensions of all elements outlined in red //* { diff --git a/seed_data/challenges.json b/seed_data/challenges.json index 84cad0c051..7286158d48 100644 --- a/seed_data/challenges.json +++ b/seed_data/challenges.json @@ -400,7 +400,7 @@ "Try an intelligent Google query that involves JavaScript and filters for this year (since JavaScript changes).", "Go to http://stackoverflow.com/ and view the recent questions.", "Go to http://webchat.freenode.net/ 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 https://gitter.im/FreeCodeCamp/Help. Keep this chat open while you work on the remaining challenges.", "Now you have several ways of getting help when you're stuck." ] diff --git a/seed_data/coursewares.json b/seed_data/coursewares.json index 21454b1d0a..130b89d9d8 100644 --- a/seed_data/coursewares.json +++ b/seed_data/coursewares.json @@ -419,6 +419,36 @@ "challengeType": 0 }, + { + "_id" : "bad87fee1348bd9aedf08811", + "name": "Use rgb Codes for Precise Colors", + "difficulty" : "0.17", + "description": [ + "Change the red-text class's color rgb value to be red.", + "Another way to represent color in CSS is with rgb, or red-green-blue notation.", + "For each of the three colors, you specify a value between 0 and 256.", + "For example, black is rgb(0, 0, 0), white is rgb(255, 255, 255), bright green is rgb(0, 255, 0). You can also get less intense colors by using values lower than 255. For example, light green is rgb(0, 123, 0).", + "If you think about it, this is just as precise as using hex code, because 16 times 16 is 256. In practice, most developers use hex code since it's faster to say out loud and to type.", + "We'll use 6-digit hex code in all our challenges going forward, but it's good to be aware of this rgb notation." + ], + "tests": [ + "expect($('h2')).to.have.css('color', 'rgb(255, 0, 0)');", + "expect($('h2')).to.have.class('red-text');" + ], + "challengeSeed": [ + "", + "", + "

hello world

", + "

cat photo app

", + "

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.

" + ], + "challengeType": 0 + }, + { "_id" : "bad87fee1348bd9aedf08810", "name": "Use Hex Codes for Precise Colors", @@ -478,7 +508,7 @@ { "_id" : "bad87fee1348bd9aedf08811", - "name": "Use rgb Codes for Precise Colors", + "name": "Set the Alpha of a Color with rgba", "difficulty" : "0.17", "description": [ "Change the red-text class's color rgb value to be red.", diff --git a/views/partials/about.jade b/views/partials/about.jade index 429e3a2850..33663d77f0 100644 --- a/views/partials/about.jade +++ b/views/partials/about.jade @@ -1,4 +1,4 @@ -.panel.panel-primary +.panel.panel-info .panel-heading.landing-panel-heading.text-center Our Team of Volunteer Camp Counselors .panel-body .landing-panel-body.text-center @@ -12,121 +12,121 @@ } }); #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 Ammar Shah h4.negative-10.text-nowrap Community Builder img.profile-image(src='https://s3.amazonaws.com/freecodecamp/ammar-shah.jpg' alt="Ammar Shah's picture") 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." - .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 h4.negative-10.text-nowrap Instructional Designer img.profile-image(src='https://s3.amazonaws.com/freecodecamp/branden-byers.jpg' alt="Branden Byers picture") 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!" - .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 h4.negative-10.text-nowrap Nonprofit Coordinator img.profile-image(src='https://s3.amazonaws.com/freecodecamp/michael-johnson.jpeg' alt="Michael Johnson's picture") 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." - .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 h4.negative-10.text-nowrap JavaScript Engineer img.profile-image(src='https://s3.amazonaws.com/freecodecamp/berkeley-martinez.jpg' alt="Berkeley Martinez's picture") h4.text-nowrap San Francisco, California 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 h4.negative-10.text-nowrap JavaScript Engineer img.profile-image(src='https://s3.amazonaws.com/freecodecamp/mychael-zuniga.jpg' alt="Mychael Zuniga's picture") 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." - .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 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") 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." - .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 h4.negative-10.text-nowrap Community Builder img.profile-image(src='https://s3.amazonaws.com/freecodecamp/darryl-dixon.jpg' alt="Darryl Dixon's picture") 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." - .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 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") 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." - .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 h4.negative-10.text-nowrap Visual Designer img.profile-image(src='https://s3.amazonaws.com/freecodecamp/ryan-malm.jpg' alt="Ryan Malm's picture") h4.text-nowrap Omaha, Nebraska 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 h4.negative-10.text-nowrap JavaScript Engineer img.profile-image(src='https://s3.amazonaws.com/freecodecamp/charles-watson.jpg' alt="Charles Watson's picture") 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." - .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 h4.negative-10.text-nowrap Instructional Designer img.profile-image(src='https://s3.amazonaws.com/freecodecamp/quincy-larson.jpg' alt="Quincy Larson's picture") 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." - .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 h4.negative-10.text-nowrap Digital Marketer img.profile-image(src='https://s3.amazonaws.com/freecodecamp/mark-howard.jpg' alt="Mark Howard's picture") h4.text-nowrap San Diego, California 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 h4.negative-10.text-nowrap JavaScript Engineer img.profile-image(src='https://s3.amazonaws.com/freecodecamp/nathan-leniz.jpg' alt="Nathan Leniz's picture") h4.text-nowrap Seoul, South Korea 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 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") 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." - .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 h4.negative-10.text-nowrap QA Engineer img.profile-image(src='https://s3.amazonaws.com/freecodecamp/christopher-nguyen.jpg' alt="Christopher Nguyen's picture") 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." - .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 h4.negative-10.text-nowrap Community Builder img.profile-image(src='https://s3.amazonaws.com/freecodecamp/dominic-jones.jpg' alt="Dominic Jones's picture") h4.text-nowrap York, Pennsylvania 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 h4.negative-10.text-nowrap JavaScript Engineer img.profile-image(src='https://s3.amazonaws.com/freecodecamp/james-mcshane.jpg' alt="James McShane's picture") 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." - .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 h4.negative-10.text-nowrap Visual Designer img.profile-image(src='https://s3.amazonaws.com/freecodecamp/ellie-adam.jpg' alt="Eliie Adam's picture") 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." - .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 h4.negative-10.text-nowrap JavaScript Engineer img.profile-image(src='https://s3.amazonaws.com/freecodecamp/kamal-sharif.jpg' alt="Kamal Sharif's picture") h4.text-nowrap Dhaka, Bangladesh 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 h4.negative-10.text-nowrap Community Builder img.profile-image(src='https://s3.amazonaws.com/freecodecamp/patrick-ly.jpg' alt="Patrick Ly's picture") diff --git a/views/partials/blog.jade b/views/partials/blog.jade index a8a47e2473..946a659966 100644 --- a/views/partials/blog.jade +++ b/views/partials/blog.jade @@ -1,20 +1,10 @@ -.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"); \ No newline at end of file +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 \ No newline at end of file diff --git a/views/partials/faq.jade b/views/partials/faq.jade index 569969a62e..6b55904968 100644 --- a/views/partials/faq.jade +++ b/views/partials/faq.jade @@ -1,4 +1,4 @@ -.panel.panel-primary +.panel.panel-info .panel-heading.landing-panel-heading.text-center Frequently Asked Questions .panel-body .landing-panel-body @@ -16,11 +16,12 @@ p.landing-p Then you'll learn computer science and the art of programming: ul 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 • 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: 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 • Git - a version control system for saving and sharing your projects li.landing-p • MongoDB - a popular non-relational database li.landing-p • Angular.js - a tool for making exciting web interfaces li.landing-p • Express.js - a powerful web development framework diff --git a/views/partials/stats.jade b/views/partials/stats.jade index a7ede7f9f8..7cebe88e30 100644 --- a/views/partials/stats.jade +++ b/views/partials/stats.jade @@ -1,46 +1,39 @@ -.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 \ No newline at end of file +h2.stats-text + .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= nonprofitProjects + |   + a(href="https://trello.com/b/BA3xVpz9/nonprofit-projects") (view) + .row + .col-xs-6.text-right Open Issues: + .col-xs-6.text-left= pulls + |   + a(href="https://github.com/freecodecamp/freecodecamp/issues") (view) + .row + .col-xs-6.text-right Pull Requests: + .col-xs-6.text-left= pulls + |   + a(href="https://github.com/freecodecamp/freecodecamp/pulls") (view) + .row + .col-xs-6.text-right Campers with at least... + .col-xs-4 + .row + .col-xs-6.text-right 3 Points: + .col-xs-6.text-left= c3 + .row + .col-xs-6.text-right 10 Points: + .col-xs-6.text-left= c10 + .row + .col-xs-6.text-right 30 Points: + .col-xs-6.text-left= c30 + .row + .col-xs-6.text-right All 54 Points: + .col-xs-6.text-left= all + .row + .col-xs-6.text-right Star our project here: + .col-xs-6.text-left.github-button-container + html. + \ No newline at end of file diff --git a/views/resources/learn-to-code.jade b/views/resources/learn-to-code.jade index 12c1d64b61..9b09218e92 100644 --- a/views/resources/learn-to-code.jade +++ b/views/resources/learn-to-code.jade @@ -1,8 +1,47 @@ -extends ../layout +extends ../layout-wide block content + img.img-responsive.img-center(src='https://s3.amazonaws.com/freecodecamp/wide-social-banner.png') + br + a.btn.btn-big.btn-block.btn-primary.next-challenge-button(href="/challenges/") Take me to my next challenge + br script. var challengeName = 'Learn to code' - include ../partials/stats - include ../partials/blog - include ../partials/about - include ../partials/faq \ No newline at end of file + .row + .col-xs-12.col-sm-12.col-md-6 + include ../partials/faq + .col-xs-12.col-sm-12.col-md-6 + .panel.panel-info + .panel-heading.landing-panel-heading.text-center Stats + .panel-body + .landing-panel-body + include ../partials/stats + .panel.panel-info + .panel-heading.landing-panel-heading.text-center Blog + .panel-body + .landing-panel-body.text-center + include ../partials/blog + .panel.panel-info + .panel-heading.landing-panel-heading.text-center Tweets + .panel-body + .landing-panel-body.text-center + 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"); + .text-center + html. + + Follow @FreeCodeCamp + + + include ../partials/about