From b4850932dceea88171249278fec4ee7e1b45c5b3 Mon Sep 17 00:00:00 2001 From: Quincy Larson Date: Mon, 20 Apr 2015 19:12:14 -0700 Subject: [PATCH 1/5] trivial change for example --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d621fd4b5e..054a8f17c3 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ Free Code Camp! -======================= +======================== We're a community of busy people learning to code by collaborating on projects for nonprofits. We learn, then use, the JavaScript MEAN stack - MongoDB, Express.js, Angular.js and Node.js. From a9feb269f6946302da34be9dcc7d60eab72e1dee Mon Sep 17 00:00:00 2001 From: terakilobyte Date: Sat, 25 Apr 2015 12:28:14 -0400 Subject: [PATCH 2/5] Remove some debug/console.log statements. Fix allFieldGuideIds method in resources.js to return an array of _ids, not an array of objects. Field guide controller now correctly completes field guides. Closes #367. --- app.js | 1 - controllers/bonfire.js | 1 - controllers/fieldGuide.js | 11 +++++------ controllers/nonprofits.js | 1 - controllers/resources.js | 4 +--- controllers/story.js | 9 +++++---- public/js/main.js | 2 -- 7 files changed, 11 insertions(+), 18 deletions(-) diff --git a/app.js b/app.js index 1c92c7d9f1..30df332f22 100755 --- a/app.js +++ b/app.js @@ -81,7 +81,6 @@ app.set('port', process.env.PORT || 3000); app.set('views', path.join(__dirname, 'views')); app.set('view engine', 'jade'); -console.log(process.env.NODE_ENV); if (process.env.NODE_ENV === 'production') { app.all(/.*/, function (req, res, next) { diff --git a/controllers/bonfire.js b/controllers/bonfire.js index 88678099e1..68f22d9532 100644 --- a/controllers/bonfire.js +++ b/controllers/bonfire.js @@ -326,7 +326,6 @@ exports.completedBonfire = function (req, res, next) { return next(err); } if (user) { - debug('Saving user'); res.send(true); } }); diff --git a/controllers/fieldGuide.js b/controllers/fieldGuide.js index d4bf9a216d..65b87d3931 100644 --- a/controllers/fieldGuide.js +++ b/controllers/fieldGuide.js @@ -22,7 +22,7 @@ exports.returnIndividualFieldGuide = function(req, res, next) { return res.redirect('/field-guide'); } - var fieldGuide = fieldGuideFromMongo.pop(); + var fieldGuide = R.head(fieldGuideFromMongo); var dashedNameFull = fieldGuide.name.toLowerCase().replace(/\s/g, '-').replace(/\?/g, ''); if (dashedNameFull !== dashedName) { return res.redirect('../field-guide/' + dashedNameFull); @@ -54,20 +54,20 @@ exports.returnNextFieldGuide = function(req, res, next) { var completed = req.user.completedFieldGuides; - req.user.uncompletedFieldGuides = resources.allFieldGuideIds().filter(function (elem) { + var uncompletedFieldGuides = resources.allFieldGuideIds().filter(function (elem) { if (completed.indexOf(elem) === -1) { return elem; } }); + req.user.uncompletedFieldGuides = uncompletedFieldGuides; req.user.save(); - var uncompletedFieldGuides = req.user.uncompletedFieldGuides; - var displayedFieldGuides = FieldGuide.find({'_id': uncompletedFieldGuides[0]}); displayedFieldGuides.exec(function(err, fieldGuide) { if (err) { return next(err); } + fieldGuide, fieldGuide[0]); fieldGuide = fieldGuide.pop(); if (typeof fieldGuide === 'undefined') { req.flash('success', { @@ -81,14 +81,13 @@ exports.returnNextFieldGuide = function(req, res, next) { }; exports.completedFieldGuide = function (req, res, next) { - debug('params in completedFieldGuide', req.params); var fieldGuideId = req.body.fieldGuideInfo.fieldGuideId; req.user.completedFieldGuides.push(fieldGuideId); var index = req.user.uncompletedFieldGuides.indexOf(fieldGuideId); if (index > -1) { - req.user.progressTimestamps.push(Date.now() || 0); + req.user.progressTimestamps.push(Date.now()); req.user.uncompletedFieldGuides.splice(index, 1); } diff --git a/controllers/nonprofits.js b/controllers/nonprofits.js index a7871327a3..d3b824cf3e 100644 --- a/controllers/nonprofits.js +++ b/controllers/nonprofits.js @@ -132,7 +132,6 @@ exports.returnIndividualNonprofit = function(req, res, next) { var hasShownInterest = nonprofit.interestedCampers.filter(function ( obj ) { return obj.username === req.user.profile.username; }); - console.log(hasShownInterest); if (hasShownInterest.length === 0) { buttonActive = true; } diff --git a/controllers/resources.js b/controllers/resources.js index d9e9450c6f..29e38c67c8 100644 --- a/controllers/resources.js +++ b/controllers/resources.js @@ -261,9 +261,7 @@ module.exports = { } else { allFieldGuideIds = fieldGuides. map(function (elem) { - return { - _id: elem._id - }; + return elem._id; }); return allFieldGuideIds; } diff --git a/controllers/story.js b/controllers/story.js index 9047279e3f..379222d5a5 100755 --- a/controllers/story.js +++ b/controllers/story.js @@ -118,7 +118,7 @@ exports.preSubmit = function(req, res) { exports.returnIndividualStory = function(req, res, next) { var dashedName = req.params.storyName; - var storyName = dashedName.replace(/\-/g, ' '); + var storyName = dashedName.replace(/\-/g, ' ').trim(); Story.find({'storyLink': storyName}, function(err, story) { if (err) { @@ -321,9 +321,10 @@ exports.storySubmission = function(req, res, next) { .replace(/\'/g, '') .replace(/\"/g, '') .replace(/,/g, '') - .replace(/[^a-z0-9]/gi, ' ') .replace(/\s+/g, ' ') - .toLowerCase(); + .replace(/[^a-z0-9\s]/gi, '') + .toLowerCase() + .trim(); var link = data.link; if (link.search(/^https?:\/\//g) === -1) { link = 'http://' + link; @@ -334,7 +335,7 @@ exports.storySubmission = function(req, res, next) { } // if duplicate storyLink add unique number - storyLink = (storyCount == 0) ? storyLink : storyLink + ' ' + storyCount; + storyLink = (storyCount === 0) ? storyLink : storyLink + ' ' + storyCount; var link = data.link; if (link.search(/^https?:\/\//g) === -1) { diff --git a/public/js/main.js b/public/js/main.js index ee6c9e1cb8..d57425e6eb 100644 --- a/public/js/main.js +++ b/public/js/main.js @@ -100,7 +100,6 @@ $(document).ready(function() { }); $('.next-field-guide-button').on('click', function() { - console.log('click'); var fieldGuideId = $('#fieldGuideId').text(); completedFieldGuide(fieldGuideId); }); @@ -126,7 +125,6 @@ $(document).ready(function() { }); $('#next-courseware-button').on('click', function() { - console.log(passedCoursewareHash); if ($('.signup-btn-nav').length < 1) { switch (challengeType) { case 0: From 2fce595e8979eef2bbc6498ace4069b95a15ca70 Mon Sep 17 00:00:00 2001 From: terakilobyte Date: Sat, 25 Apr 2015 12:40:07 -0400 Subject: [PATCH 3/5] Add story cleanup script to ensure all story links are proper. --- seed_data/storyCleanup.js | 50 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 seed_data/storyCleanup.js diff --git a/seed_data/storyCleanup.js b/seed_data/storyCleanup.js new file mode 100644 index 0000000000..02d24009dd --- /dev/null +++ b/seed_data/storyCleanup.js @@ -0,0 +1,50 @@ +/** + * Created by nathanleniz on 4/25/15. + */ +require('dotenv').load(); +var mongodb = require('mongodb'), + Story = require('../models/Story.js'), + secrets = require('../config/secrets'); + mongoose = require('mongoose'); + +mongoose.connect(secrets.db); + +function storyLinkCleanup(cb) { + console.log('headLineCleanup'); + var i = 1; + var stream = Story.find({}).skip(0).limit(0).batchSize(20000).stream(); + + stream.on('data', function (story) { + console.log(i++); + this.pause(); + story.storyLink = story.storyLink. + replace(/\'/g, ''). + replace(/\"/g, ''). + replace(/,/g, ''). + replace(/\s+/g, ' '). + replace(/[^a-z0-9\s]/gi, ''). + toLowerCase(). + trim(); + story.save(function (err) { + if (err) { + console.log('woops'); + } + this.resume(); + }.bind(this)); + }) + .on('error', function (err) { + console.log(err); + }).on('close', function () { + console.log('done with set'); + stream.destroy(); + cb(); + }); +} + +function done() { + console.log('Migration script has completed'); + process.exit(0); +} + + +storyLinkCleanup(done); From 7c8e5e60f4b7f300c3db5fbe9f96b5350fb1e99b Mon Sep 17 00:00:00 2001 From: terakilobyte Date: Sat, 25 Apr 2015 12:44:34 -0400 Subject: [PATCH 4/5] Modification to script. --- seed_data/storyCleanup.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/seed_data/storyCleanup.js b/seed_data/storyCleanup.js index 02d24009dd..645ff84206 100644 --- a/seed_data/storyCleanup.js +++ b/seed_data/storyCleanup.js @@ -33,7 +33,7 @@ function storyLinkCleanup(cb) { }.bind(this)); }) .on('error', function (err) { - console.log(err); + console.error(err); }).on('close', function () { console.log('done with set'); stream.destroy(); From ce84f3eeb10f9bd1c9524d367af40678b6544bbf Mon Sep 17 00:00:00 2001 From: terakilobyte Date: Sat, 25 Apr 2015 14:36:34 -0400 Subject: [PATCH 5/5] Fully remove remnant of errant debug statement --- controllers/fieldGuide.js | 1 - 1 file changed, 1 deletion(-) diff --git a/controllers/fieldGuide.js b/controllers/fieldGuide.js index 65b87d3931..51f01e8529 100644 --- a/controllers/fieldGuide.js +++ b/controllers/fieldGuide.js @@ -67,7 +67,6 @@ exports.returnNextFieldGuide = function(req, res, next) { if (err) { return next(err); } - fieldGuide, fieldGuide[0]); fieldGuide = fieldGuide.pop(); if (typeof fieldGuide === 'undefined') { req.flash('success', {