From c8c396981a5cf7295e170d48a22e89285df961e8 Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Fri, 6 Mar 2015 00:13:58 -0800 Subject: [PATCH 1/4] update sitemap --- app.js | 2 +- controllers/resources.js | 42 ++++- public/sitemap.xml | 309 ----------------------------------- views/resources/sitemap.jade | 112 +++++++++++++ 4 files changed, 152 insertions(+), 313 deletions(-) delete mode 100644 public/sitemap.xml create mode 100644 views/resources/sitemap.jade diff --git a/app.js b/app.js index 74c920dcec..3f693f2a9a 100644 --- a/app.js +++ b/app.js @@ -334,7 +334,7 @@ app.post('/account/profile', userController.postUpdateProfile); app.post('/account/password', userController.postUpdatePassword); app.post('/account/delete', userController.postDeleteAccount); app.get('/account/unlink/:provider', userController.getOauthUnlink); - +app.get('/sitemap', resourcesController.sitemap); /** * API examples routes. diff --git a/controllers/resources.js b/controllers/resources.js index 54d566daf6..1ce4d9af82 100644 --- a/controllers/resources.js +++ b/controllers/resources.js @@ -1,11 +1,13 @@ var User = require('../models/User'), + Challenge = require('./../models/Challenge'), + Bonfire = require('./../models/Bonfire'), resources = require('./resources.json'), questions = resources.questions, steps = resources.steps, secrets = require('./../config/secrets'), - Challenge = require('./../models/Challenge'), - bonfires = require('../seed_data/bonfires.json'); - coursewares = require('../seed_data/coursewares.json'); + bonfires = require('../seed_data/bonfires.json'), + coursewares = require('../seed_data/coursewares.json'), + moment = require('moment'), Client = require('node-rest-client').Client, client = new Client(), debug = require('debug')('freecc:cntr:bonfires'); @@ -49,6 +51,40 @@ module.exports = { }); }, + sitemap: function sitemap(req, res, next) { + var appUrl = 'http://www.freecodecamp.com'; + var now = moment(new Date).format('YYYY-MM-DD'); + + errors = {}; + User.find({'profile.username': {'$ne': '' }}, function(err, users) { + if (err) { + debug('User err: ', err); + next(err); + } + console.log('user count', users.length); + Challenge.find({}, function (err, challenges) { + if (err) { + debug('User err: ', err); + next(err); + } + Bonfire.find({}, function (err, bonfires) { + if (err) { + debug('User err: ', err); + next(err); + } + res.header('Content-Type', 'application/xml'); + res.render('resources/sitemap', { + appUrl: appUrl, + now: now, + users: users, + challenges: challenges, + bonfires: bonfires + }); + }); + }); + }); + }, + deployAWebsite: function deployAWebsite(req, res) { res.render('resources/deploy-a-website', { title: 'Deploy a Dynamic Website in 7 Minutes' diff --git a/public/sitemap.xml b/public/sitemap.xml deleted file mode 100644 index 06ff6c5439..0000000000 --- a/public/sitemap.xml +++ /dev/null @@ -1,309 +0,0 @@ - - - - - - http://www.freecodecamp.com/ - daily - - - http://www.freecodecamp.com/challenges/0 - daily - - - http://www.freecodecamp.com/challenges/1 - daily - - - http://www.freecodecamp.com/challenges/2 - daily - - - http://www.freecodecamp.com/challenges/3 - daily - - - http://www.freecodecamp.com/challenges/4 - daily - - - http://www.freecodecamp.com/challenges/5 - daily - - - http://www.freecodecamp.com/challenges/6 - daily - - - http://www.freecodecamp.com/challenges/7 - daily - - - http://www.freecodecamp.com/challenges/8 - daily - - - http://www.freecodecamp.com/challenges/9 - daily - - - http://www.freecodecamp.com/challenges/10 - daily - - - http://www.freecodecamp.com/challenges/11 - daily - - - http://www.freecodecamp.com/challenges/12 - daily - - - http://www.freecodecamp.com/challenges/13 - daily - - - http://www.freecodecamp.com/challenges/14 - daily - - - http://www.freecodecamp.com/challenges/15 - daily - - - http://www.freecodecamp.com/challenges/16 - daily - - - http://www.freecodecamp.com/challenges/17 - daily - - - http://www.freecodecamp.com/challenges/18 - daily - - - http://www.freecodecamp.com/challenges/19 - daily - - - http://www.freecodecamp.com/challenges/20 - daily - - - http://www.freecodecamp.com/challenges/21 - daily - - - http://www.freecodecamp.com/challenges/22 - daily - - - http://www.freecodecamp.com/challenges/23 - daily - - - http://www.freecodecamp.com/challenges/24 - daily - - - http://www.freecodecamp.com/challenges/25 - daily - - - http://www.freecodecamp.com/challenges/26 - daily - - - http://www.freecodecamp.com/challenges/27 - daily - - - http://www.freecodecamp.com/challenges/28 - daily - - - http://www.freecodecamp.com/challenges/29 - daily - - - http://www.freecodecamp.com/challenges/30 - daily - - - http://www.freecodecamp.com/challenges/31 - daily - - - http://www.freecodecamp.com/challenges/32 - daily - - - http://www.freecodecamp.com/challenges/33 - daily - - - http://www.freecodecamp.com/challenges/34 - daily - - - http://www.freecodecamp.com/challenges/35 - daily - - - http://www.freecodecamp.com/challenges/36 - daily - - - http://www.freecodecamp.com/challenges/37 - daily - - - http://www.freecodecamp.com/challenges/38 - daily - - - http://www.freecodecamp.com/challenges/39 - daily - - - http://www.freecodecamp.com/challenges/40 - daily - - - http://www.freecodecamp.com/challenges/41 - daily - - - http://www.freecodecamp.com/challenges/42 - daily - - - http://www.freecodecamp.com/challenges/43 - daily - - - http://www.freecodecamp.com/challenges/44 - daily - - - http://www.freecodecamp.com/challenges/45 - daily - - - http://www.freecodecamp.com/challenges/46 - daily - - - http://www.freecodecamp.com/challenges/47 - daily - - - http://www.freecodecamp.com/challenges/48 - daily - - - http://www.freecodecamp.com/challenges/49 - daily - - - http://www.freecodecamp.com/challenges/50 - daily - - - http://www.freecodecamp.com/challenges/51 - daily - - - http://www.freecodecamp.com/challenges/52 - daily - - - http://www.freecodecamp.com/challenges/53 - daily - - - http://www.freecodecamp.com/challenges/54 - daily - - - http://www.freecodecamp.com/challenges/55 - daily - - - http://www.freecodecamp.com/challenges/56 - daily - - - http://www.freecodecamp.com/challenges/57 - daily - - - http://www.freecodecamp.com/challenges/58 - daily - - - http://www.freecodecamp.com/challenges/59 - daily - - - http://www.freecodecamp.com/ - daily - - - http://www.freecodecamp.com/stats - daily - - - http://www.freecodecamp.com/deploy-a-website - daily - - - http://www.freecodecamp.com/control-shortcuts - daily - - - http://www.freecodecamp.com/pair-program-with-team-viewer - daily - - - http://www.freecodecamp.com/login - daily - - - http://www.freecodecamp.com/nonprofits - daily - - - http://www.freecodecamp.com/learn-to-code - daily - - - http://www.freecodecamp.com/about - daily - - - http://www.freecodecamp.com/chromebook - daily - - - http://www.freecodecamp.com/live-pair-programming - daily - - - http://www.freecodecamp.com/privacy - daily - - - http://www.freecodecamp.com/jquery-exercises - daily - - - http://www.freecodecamp.com/javascript-in-your-inbox - daily - - \ No newline at end of file diff --git a/views/resources/sitemap.jade b/views/resources/sitemap.jade new file mode 100644 index 0000000000..b14b43694e --- /dev/null +++ b/views/resources/sitemap.jade @@ -0,0 +1,112 @@ +doctype xml +urlset(xmlns="http://www.sitemaps.org/schemas/sitemap/0.9") + + url + loc= http://www.freecodecamp.com/ + changefreq weekly + lastmod= now + priority= 0.5 + + url + loc= http://www.freecodecamp.com/install-screenhero + changefreq weekly + lastmod= now + priority= 0.5 + + url + loc= http://www.freecodecamp.com/deploy-a-website + changefreq weekly + lastmod= now + priority= 0.5 + + url + loc= http://www.freecodecamp.com/control-shortcuts + changefreq weekly + lastmod= now + priority= 0.5 + + url + loc= http://www.freecodecamp.com/pair-program-with-team-viewer + changefreq weekly + lastmod= now + priority= 0.5 + + url + loc= http://www.freecodecamp.com/login + changefreq weekly + lastmod= now + priority= 0.5 + + url + loc= http://www.freecodecamp.com/nonprofits + changefreq weekly + lastmod= now + priority= 0.5 + + url + loc= http://www.freecodecamp.com/learn-to-code + changefreq weekly + lastmod= now + priority= 0.5 + + url + loc= http://www.freecodecamp.com/chromebook + changefreq weekly + lastmod= now + priority= 0.5 + + url + loc= http://www.freecodecamp.com/live-pair-programming + changefreq weekly + lastmod= now + priority= 0.5 + + url + loc= http://www.freecodecamp.com/privacy + changefreq weekly + lastmod= now + priority= 0.5 + + url + loc= http://www.freecodecamp.com/jquery-exercises + changefreq weekly + lastmod= now + priority= 0.5 + + url + loc= http://www.freecodecamp.com/javascript-in-your-inbox + changefreq weekly + lastmod= now + priority= 0.5 + + + //- Home page + url + loc= appUrl + lastmod= now + changefreq daily + priority= 0.8 + + //- Users + each user in users + url + loc #{appUrl}/#{user.profile.username} + lastmod= now + changefreq daily + priority= 0.9 + + //- Products + each bonfire in bonfires + url + loc #{appUrl}/#{bonfire.name.replace(/\s/, '-')} + lastmod= now + changefreq weekly + priority= 0.5 + + //- Challenges + each challenge in challenges + url + loc #{appUrl}/#{challenge.challengeNumber} + lastmod= now + changefreq weekly + priority= 0.5 \ No newline at end of file From 1ee1ff40524eae52302adc452546f359dbc61809 Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Fri, 6 Mar 2015 00:20:39 -0800 Subject: [PATCH 2/4] sitemap now works and can be deployed --- app.js | 2 +- views/resources/sitemap.jade | 26 +++++++++++++------------- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/app.js b/app.js index 3f693f2a9a..5fad3f089a 100644 --- a/app.js +++ b/app.js @@ -334,7 +334,7 @@ app.post('/account/profile', userController.postUpdateProfile); app.post('/account/password', userController.postUpdatePassword); app.post('/account/delete', userController.postDeleteAccount); app.get('/account/unlink/:provider', userController.getOauthUnlink); -app.get('/sitemap', resourcesController.sitemap); +app.get('/sitemap.xml', resourcesController.sitemap); /** * API examples routes. diff --git a/views/resources/sitemap.jade b/views/resources/sitemap.jade index b14b43694e..84839975bc 100644 --- a/views/resources/sitemap.jade +++ b/views/resources/sitemap.jade @@ -2,79 +2,79 @@ doctype xml urlset(xmlns="http://www.sitemaps.org/schemas/sitemap/0.9") url - loc= http://www.freecodecamp.com/ + loc http://www.freecodecamp.com/ changefreq weekly lastmod= now priority= 0.5 url - loc= http://www.freecodecamp.com/install-screenhero + loc http://www.freecodecamp.com/install-screenhero changefreq weekly lastmod= now priority= 0.5 url - loc= http://www.freecodecamp.com/deploy-a-website + loc http://www.freecodecamp.com/deploy-a-website changefreq weekly lastmod= now priority= 0.5 url - loc= http://www.freecodecamp.com/control-shortcuts + loc http://www.freecodecamp.com/control-shortcuts changefreq weekly lastmod= now priority= 0.5 url - loc= http://www.freecodecamp.com/pair-program-with-team-viewer + loc http://www.freecodecamp.com/pair-program-with-team-viewer changefreq weekly lastmod= now priority= 0.5 url - loc= http://www.freecodecamp.com/login + loc http://www.freecodecamp.com/login changefreq weekly lastmod= now priority= 0.5 url - loc= http://www.freecodecamp.com/nonprofits + loc http://www.freecodecamp.com/nonprofits changefreq weekly lastmod= now priority= 0.5 url - loc= http://www.freecodecamp.com/learn-to-code + loc http://www.freecodecamp.com/learn-to-code changefreq weekly lastmod= now priority= 0.5 url - loc= http://www.freecodecamp.com/chromebook + loc http://www.freecodecamp.com/chromebook changefreq weekly lastmod= now priority= 0.5 url - loc= http://www.freecodecamp.com/live-pair-programming + loc http://www.freecodecamp.com/live-pair-programming changefreq weekly lastmod= now priority= 0.5 url - loc= http://www.freecodecamp.com/privacy + loc http://www.freecodecamp.com/privacy changefreq weekly lastmod= now priority= 0.5 url - loc= http://www.freecodecamp.com/jquery-exercises + loc http://www.freecodecamp.com/jquery-exercises changefreq weekly lastmod= now priority= 0.5 url - loc= http://www.freecodecamp.com/javascript-in-your-inbox + loc http://www.freecodecamp.com/javascript-in-your-inbox changefreq weekly lastmod= now priority= 0.5 From f39bf145a73898961f0b54c638ffe21581acf61d Mon Sep 17 00:00:00 2001 From: Nathan Date: Sat, 7 Mar 2015 07:09:38 +0900 Subject: [PATCH 3/4] Update README.md Closes issue #152 --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 7f8f7626d9..bfe254fae1 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,5 @@ +[![Throughput Graph](https://graphs.waffle.io/freecodecamp/freecodecamp/throughput.svg)](https://waffle.io/freecodecamp/freecodecamp/metrics) + [![Stories in Ready](https://badge.waffle.io/FreeCodeCamp/freecodecamp.png?label=ready&title=Ready)](https://waffle.io/FreeCodeCamp/freecodecamp) From e6cf415f88777128e57552813f01f80ae50736ed Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Fri, 6 Mar 2015 17:49:14 -0800 Subject: [PATCH 4/4] fix an issue of unathenticated users not being able to access challenges --- controllers/challenges.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/controllers/challenges.js b/controllers/challenges.js index ec63b3eac6..6658e18e13 100644 --- a/controllers/challenges.js +++ b/controllers/challenges.js @@ -23,9 +23,7 @@ exports.returnNextChallenge = function(req, res) { res.redirect('challenges/0'); } } else { - res.render('home', { - title: 'Learn to Code and Become a Software Engineer', - }); + return res.redirect('../challenges/0'); } };