diff --git a/app.js b/app.js
index 27092125a1..e522e412c3 100644
--- a/app.js
+++ b/app.js
@@ -42,7 +42,7 @@ var express = require('express'),
nonprofitController = require('./controllers/nonprofits'),
bonfireController = require('./controllers/bonfire'),
coursewareController = require('./controllers/courseware'),
- wikiController = require('./controllers/wiki'),
+ fieldGuideController = require('./controllers/fieldGuide'),
challengeMapController = require('./controllers/challengeMap'),
@@ -238,11 +238,11 @@ app.use(express.static(__dirname + '/public', { maxAge: 86400000 }));
app.get('/', homeController.index);
app.get('/privacy', function(req, res) {
- res.redirect(301, "/wiki/free-code-camp's-privacy-policy");
+ res.redirect(301, "/field-guide/free-code-camp's-privacy-policy");
});
app.get('/nonprofit-project-instructions', function(req, res) {
- res.redirect(301, "/wiki/free-code-camp's-privacy-policy");
+ res.redirect(301, "/field-guide/free-code-camp's-privacy-policy");
});
app.get('/jquery-exercises', resourcesController.jqueryExercises);
@@ -254,31 +254,31 @@ app.get('/twitch', resourcesController.twitch);
app.get('/map', challengeMapController.challengeMap);
app.get('/live-pair-programming', function(req, res) {
- res.redirect(301, '/wiki/live-stream-pair-programming-on-twitch.tv');
+ res.redirect(301, '/field-guide/live-stream-pair-programming-on-twitch.tv');
});
app.get('/install-screenhero', function(req, res) {
- res.redirect(301, '/wiki/install-screenhero');
+ res.redirect(301, '/field-guide/install-screenhero');
});
app.get('/guide-to-our-nonprofit-projects', function(req, res) {
- res.redirect(301, '/wiki/a-guide-to-our-nonprofit-projects');
+ res.redirect(301, '/field-guide/a-guide-to-our-nonprofit-projects');
});
app.get('/chromebook', function(req, res) {
- res.redirect(301, '/wiki/chromebook');
+ res.redirect(301, '/field-guide/chromebook');
});
app.get('/deploy-a-website', function(req, res) {
- res.redirect(301, '/wiki/deploy-a-website');
+ res.redirect(301, '/field-guide/deploy-a-website');
});
app.get('/gmail-shortcuts', function(req, res) {
- res.redirect(301, '/wiki/gmail-shortcuts');
+ res.redirect(301, '/field-guide/gmail-shortcuts');
});
app.get('/nodeschool-challenges', function(req, res) {
- res.redirect(301, '/wiki/nodeschool-challenges');
+ res.redirect(301, '/field-guide/nodeschool-challenges');
});
app.get('/stats', function(req, res) {
@@ -484,7 +484,7 @@ app.get('/api/trello', resourcesController.trelloCalls);
* Bonfire related routes
*/
-app.get('/wiki/getWikiList', wikiController.showAllWikis);
+app.get('/field-guide/getFieldGuideList', fieldGuideController.showAllFieldGuides);
app.get('/playground', bonfireController.index);
@@ -510,15 +510,15 @@ app.get('/bonfire', function(req, res) {
app.post('/completed-bonfire/', bonfireController.completedBonfire);
/**
- * Wiki related routes
+ * Field Guide related routes
*/
-app.get('/wiki/:wikiName', wikiController.returnIndividualWiki);
+app.get('/field-guide/:fieldGuideName', fieldGuideController.returnIndividualFieldGuide);
-app.get('/wiki', wikiController.returnNextWiki);
+app.get('/field-guide', fieldGuideController.returnNextFieldGuide);
-app.post('/completed-wiki/', wikiController.completedWiki);
+app.post('/completed-field-guide/', fieldGuideController.completedFieldGuide);
/**
diff --git a/controllers/challengeMap.js b/controllers/challengeMap.js
index f8cad437cf..b858bf7385 100644
--- a/controllers/challengeMap.js
+++ b/controllers/challengeMap.js
@@ -2,7 +2,6 @@ var async = require('async'),
User = require('../models/User'),
Bonfire = require('./../models/Bonfire'),
Story = require('./../models/Story'),
- Wiki = require('./../models/Wiki'),
Nonprofit = require('./../models/Nonprofit'),
Comment = require('./../models/Comment'),
Courseware = require('./../models/Courseware'),
@@ -12,7 +11,6 @@ var async = require('async'),
bonfires = require('../seed_data/bonfires.json'),
nonprofits = require('../seed_data/nonprofits.json'),
coursewares = require('../seed_data/coursewares.json'),
- wikis = require('../seed_data/wikis.json'),
moment = require('moment'),
https = require('https'),
debug = require('debug')('freecc:cntr:resources'),
diff --git a/controllers/fieldGuide.js b/controllers/fieldGuide.js
new file mode 100644
index 0000000000..49b79e6bd6
--- /dev/null
+++ b/controllers/fieldGuide.js
@@ -0,0 +1,99 @@
+var _ = require('lodash'),
+ debug = require('debug')('freecc:cntr:fieldGuide'),
+ FieldGuide = require('./../models/FieldGuide'),
+ resources = require('./resources'),
+ R = require('ramda');
+
+exports.returnIndividualFieldGuide = function(req, res, next) {
+ var dashedName = req.params.fieldGuideName;
+
+ var fieldGuideName = dashedName.replace(/\-/g, ' ');
+
+ FieldGuide.find({'name': new RegExp(fieldGuideName, 'i')}, function(err, fieldGuide) {
+ if (err) {
+ next(err);
+ }
+
+ if (fieldGuide.length < 1) {
+ req.flash('errors', {
+ msg: "404: We couldn't find a field guide entry with that name. Please double check the name."
+ });
+
+ return res.redirect('/field-guide');
+ }
+
+ fieldGuide = fieldGuide.pop();
+ var dashedNameFull = fieldGuide.name.toLowerCase().replace(/\s/g, '-').replace(/\?/g, '');
+ if (dashedNameFull != dashedName) {
+ return res.redirect('../field-guide/' + dashedNameFull);
+ }
+ res.render('field-guide/show', {
+ title: fieldGuide.name,
+ fieldGuideId: fieldGuide._id,
+ description: fieldGuide.description.join('')
+ });
+ });
+};
+
+exports.showAllFieldGuides = function(req, res) {
+ var data = {};
+ data.fieldGuideList = resources.allFieldGuideNames();
+ data.fieldGuideIds = resources.allFieldGuideIds();
+ data.completedFieldGuides = req.user.completedFieldGuides;
+ res.send(data);
+};
+
+exports.returnNextFieldGuide = function(req, res, next) {
+ if (!req.user) {
+ return res.redirect('../field-guide/how-do-i-use-this-guide?');
+ }
+
+ var completed = req.user.completedFieldGuides;
+
+ req.user.uncompletedFieldGuides = resources.allFieldGuideIds().filter(function (elem) {
+ if (completed.indexOf(elem) === -1) {
+ return elem;
+ }
+ });
+ 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.pop();
+ if (fieldGuide === undefined) {
+ req.flash('success', {
+ msg: "You've read all our current Field Guide entries. You can contribute to our Field Guide here."
+ });
+ return res.redirect('../field-guide/how-do-i-use-this-guide?');
+ }
+ var nameString = fieldGuide.name.toLowerCase().replace(/\s/g, '-');
+ return res.redirect('../field-guide/' + nameString);
+ });
+};
+
+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.uncompletedFieldGuides.splice(index, 1);
+ }
+
+ req.user.save(function (err, user) {
+ if (err) {
+ return next(err);
+ }
+ if (user) {
+ res.send(true);
+ }
+ });
+};
diff --git a/controllers/resources.js b/controllers/resources.js
index 8ec410f9dc..707b333fe7 100644
--- a/controllers/resources.js
+++ b/controllers/resources.js
@@ -3,7 +3,7 @@ var async = require('async'),
Challenge = require('./../models/Challenge'),
Bonfire = require('./../models/Bonfire'),
Story = require('./../models/Story'),
- Wiki = require('./../models/Wiki'),
+ FieldGuide = require('./../models/FieldGuide'),
Nonprofit = require('./../models/Nonprofit'),
Comment = require('./../models/Comment'),
resources = require('./resources.json'),
@@ -12,7 +12,7 @@ var async = require('async'),
bonfires = require('../seed_data/bonfires.json'),
nonprofits = require('../seed_data/nonprofits.json'),
coursewares = require('../seed_data/coursewares.json'),
- wikis = require('../seed_data/wikis.json'),
+ fieldGuides = require('../seed_data/field-guides.json'),
moment = require('moment'),
https = require('https'),
debug = require('debug')('freecc:cntr:resources'),
@@ -259,8 +259,8 @@ module.exports = {
});
},
- allWikiIds: function() {
- return wikis.map(function(elem) {
+ allFieldGuideIds: function() {
+ return fieldGuides.map(function(elem) {
return {
_id: elem._id,
}
@@ -289,8 +289,8 @@ module.exports = {
});
},
- allWikiNames: function() {
- return wikis.map(function(elem) {
+ allFieldGuideNames: function() {
+ return fieldGuides.map(function(elem) {
return {
name: elem.name
}
diff --git a/controllers/wiki.js b/controllers/wiki.js
deleted file mode 100644
index 04d95114ce..0000000000
--- a/controllers/wiki.js
+++ /dev/null
@@ -1,99 +0,0 @@
-var _ = require('lodash'),
- debug = require('debug')('freecc:cntr:wiki'),
- Wiki = require('./../models/Wiki'),
- resources = require('./resources'),
- R = require('ramda');
-
-exports.returnIndividualWiki = function(req, res, next) {
- var dashedName = req.params.wikiName;
-
- var wikiName = dashedName.replace(/\-/g, ' ');
-
- Wiki.find({'name': new RegExp(wikiName, 'i')}, function(err, wiki) {
- if (err) {
- next(err);
- }
-
- if (wiki.length < 1) {
- req.flash('errors', {
- msg: "404: We couldn't find a wiki entry with that name. Please double check the name."
- });
-
- return res.redirect('/wiki');
- }
-
- wiki = wiki.pop();
- var dashedNameFull = wiki.name.toLowerCase().replace(/\s/g, '-').replace(/\?/g, '');
- if (dashedNameFull != dashedName) {
- return res.redirect('../wiki/' + dashedNameFull);
- }
- res.render('wiki/show', {
- title: wiki.name,
- wikiId: wiki._id,
- description: wiki.description.join('')
- });
- });
-};
-
-exports.showAllWikis = function(req, res) {
- var data = {};
- data.wikiList = resources.allWikiNames();
- data.wikiIds = resources.allWikiIds();
- data.completedWikis = req.user.completedWikis;
- res.send(data);
-};
-
-exports.returnNextWiki = function(req, res, next) {
- if (!req.user) {
- return res.redirect('../wiki/how-do-i-use-this-guide?');
- }
-
- var completed = req.user.completedWikis;
-
- req.user.uncompletedWikis = resources.allWikiIds().filter(function (elem) {
- if (completed.indexOf(elem) === -1) {
- return elem;
- }
- });
- req.user.save();
-
- var uncompletedWikis = req.user.uncompletedWikis;
-
- var displayedWikis = Wiki.find({'_id': uncompletedWikis[0]});
- displayedWikis.exec(function(err, wiki) {
- if (err) {
- return next(err);
- }
- wiki = wiki.pop();
- if (wiki === undefined) {
- req.flash('success', {
- msg: "You've read all our current Wiki entries. You can contribute to our Wiki here."
- });
- return res.redirect('../wiki/how-do-i-use-this-guide?');
- }
- var nameString = wiki.name.toLowerCase().replace(/\s/g, '-');
- return res.redirect('../wiki/' + nameString);
- });
-};
-
-exports.completedWiki = function (req, res, next) {
- debug('params in completedWiki', req.params);
- var wikiId = req.body.wikiInfo.wikiId;
-
- req.user.completedWikis.push(wikiId);
-
- var index = req.user.uncompletedWikis.indexOf(wikiId);
- if (index > -1) {
- req.user.progressTimestamps.push(Date.now() || 0);
- req.user.uncompletedWikis.splice(index, 1);
- }
-
- req.user.save(function (err, user) {
- if (err) {
- return next(err);
- }
- if (user) {
- res.send(true);
- }
- });
-};
diff --git a/models/Wiki.js b/models/FieldGuide.js
similarity index 66%
rename from models/Wiki.js
rename to models/FieldGuide.js
index e7eb8a183b..b705f44774 100644
--- a/models/Wiki.js
+++ b/models/FieldGuide.js
@@ -1,7 +1,7 @@
var mongoose = require('mongoose');
var secrets = require('../config/secrets');
-var wikiSchema = new mongoose.Schema({
+var fieldGuideSchema = new mongoose.Schema({
name: {
type: String,
unique: false
@@ -12,4 +12,4 @@ var wikiSchema = new mongoose.Schema({
}
});
-module.exports = mongoose.model('Wiki', wikiSchema);
+module.exports = mongoose.model('FieldGuide', fieldGuideSchema);
diff --git a/models/User.js b/models/User.js
index d511c4a897..36e9c87f78 100644
--- a/models/User.js
+++ b/models/User.js
@@ -127,8 +127,8 @@ var userSchema = new mongoose.Schema({
verified: Boolean
}
],
- completedWikis: [],
- uncompletedWikis: [],
+ completedFieldGuides: [],
+ uncompletedFieldGuides: [],
currentStreak: {
type: Number,
default: 0
diff --git a/public/js/main.js b/public/js/main.js
index 00081f0f4b..14db8f7f1b 100644
--- a/public/js/main.js
+++ b/public/js/main.js
@@ -52,18 +52,18 @@ $(document).ready(function() {
}
}
- function completedWiki(wikiId) {
+ function completedFieldGuide(fieldGuideId) {
if ($('.signup-btn-nav').length < 1) {
$.post(
- '/completed-wiki',
+ '/completed-field-guide',
{
- wikiInfo: {
- wikiId: wikiId
+ fieldGuideInfo: {
+ fieldGuideId: fieldGuideId
}
},
function(res) {
if (res) {
- window.location.href = '/wiki'
+ window.location.href = '/field-guide'
}
});
}
@@ -78,9 +78,10 @@ $(document).ready(function() {
});
- $('.next-wiki-button').on('click', function() {
- var wikiId = $('#wikiId').text();
- completedWiki(wikiId);
+ $('.next-field-guide-button').on('click', function() {
+ console.log('click');
+ var fieldGuideId = $('#fieldGuideId').text();
+ completedFieldGuide(fieldGuideId);
});
$("img").error(function () {
diff --git a/seed_data/wikis.json b/seed_data/field-guides.json
similarity index 100%
rename from seed_data/wikis.json
rename to seed_data/field-guides.json
diff --git a/seed_data/seed.js b/seed_data/seed.js
index 5a131cc4d9..95c35b328f 100644
--- a/seed_data/seed.js
+++ b/seed_data/seed.js
@@ -1,12 +1,12 @@
require('dotenv').load();
var Bonfire = require('../models/Bonfire.js'),
Courseware = require('../models/Courseware.js'),
- Wiki = require('../models/Wiki.js'),
+ FieldGuide = require('../models/FieldGuide.js'),
Nonprofit = require('../models/Nonprofit.js'),
mongoose = require('mongoose'),
secrets = require('../config/secrets'),
coursewares = require('./coursewares.json'),
- wikis = require('./wikis.json'),
+ fieldGuides = require('./field-guides.json'),
nonprofits = require('./nonprofits.json'),
bonfires = require('./bonfires.json');
@@ -61,13 +61,13 @@ Courseware.remove({}, function(err, data) {
console.log('coursewares');
});
-Wiki.remove({}, function(err, data) {
+FieldGuide.remove({}, function(err, data) {
if (err) {
console.error(err);
} else {
console.log('Deleted ', data);
}
- Wiki.create(wikis, function(err, data) {
+ FieldGuide.create(fieldGuides, function(err, data) {
if (err) {
console.log(err);
} else {
@@ -75,7 +75,7 @@ Wiki.remove({}, function(err, data) {
}
CompletionMonitor();
});
- console.log('wikis');
+ console.log('field guides');
});
Nonprofit.remove({}, function(err, data) {
diff --git a/views/wiki/show.jade b/views/field-guide/show.jade
similarity index 81%
rename from views/wiki/show.jade
rename to views/field-guide/show.jade
index 1f9782a2e9..5a568642dc 100644
--- a/views/wiki/show.jade
+++ b/views/field-guide/show.jade
@@ -1,7 +1,7 @@
extends ../layout
block content
script.
- var challengeName = 'Wiki View';
+ var challengeName = 'Field Guide View';
.col-xs-12.col-sm-12.col-md-12
.panel.panel-info
.panel-heading.text-center
@@ -15,7 +15,7 @@ block content
.spacer
.col-xs-12.col-sm-6.col-sm-offset-3
.text-center
- .next-wiki-button.btn.btn-primary.btn-big.btn-block Next article (ctrl + enter)
+ .next-fieldGuide-button.btn.btn-primary.btn-big.btn-block Next article (ctrl + enter)
.ten-pixel-break
#showAllButton.btn.btn-info.btn-big.btn-block Show me all articles
.spacer
@@ -30,13 +30,13 @@ block content
.modal-header.all-list-header Wiki Articles
a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
.modal-body
- include ../partials/wikis
- #wikiId.hidden= wikiId
+ include ../partials/field-guide
+ #fieldGuideId.hidden= fieldGuideId
script.
$(document).ready(function() {
$('body').keydown(function(e) {
if (e.ctrlKey && e.keyCode == 13) {
- $('.next-wiki-button').click();
+ $('.next-field-guide-button').click();
}
});
});
diff --git a/views/partials/wikis.jade b/views/partials/field-guide.jade
similarity index 51%
rename from views/partials/wikis.jade
rename to views/partials/field-guide.jade
index 6e6d817fd1..7af5c02fc9 100644
--- a/views/partials/wikis.jade
+++ b/views/partials/field-guide.jade
@@ -1,5 +1,5 @@
h3
- ol#wikiList
+ ol#fieldGuideList
script(src='/js/lib/ramda/ramda.min.js')
script.
var getLinkedName = function getLinkedName(name) {
@@ -8,22 +8,22 @@ h3
return name.toLowerCase().replace(/\s/g, '-').replace(/\?/g, '');
}
$.ajax({
- url: '/wiki/getWikiList',
+ url: '/field-guide/getFieldGuideList',
type: 'GET'
})
.success(
function(data) {
var docfrag = document.createDocumentFragment();
- for (var i = 0; i < data.wikiList.length; i++) {
+ for (var i = 0; i < data.fieldGuideList.length; i++) {
var li = document.createElement("li");
- // strike through wikis previously read
- var linkedName = getLinkedName(data.wikiList[i].name);
- if (data.completedWikis.indexOf(data.wikiIds[i]) > -1) {
- $(li).html("" + data.wikiList[i].name + "");
+ // strike through field guides previously read
+ var linkedName = getLinkedName(data.fieldGuideList[i].name);
+ if (data.completedFieldGuides.indexOf(data.fieldGuideIds[i]) > -1) {
+ $(li).html("" + data.fieldGuideList[i].name + "");
} else {
- $(li).html("" + data.wikiList[i].name + "");
+ $(li).html("" + data.fieldGuideList[i].name + "");
}
docfrag.appendChild(li);
};
- $('#wikiList').append(docfrag);
+ $('#fieldGuideList').append(docfrag);
});
diff --git a/views/partials/navbar.jade b/views/partials/navbar.jade
index 17901f93ca..e85e2b20e0 100644
--- a/views/partials/navbar.jade
+++ b/views/partials/navbar.jade
@@ -18,7 +18,7 @@
li
a(href='/stories/hot') News
li
- a(href='/wiki') Field Guide
+ a(href='/field-guide') Field Guide
if !user
li
li