diff --git a/app.js b/app.js
index c475713f88..3b620225cd 100644
--- a/app.js
+++ b/app.js
@@ -289,7 +289,7 @@ app.post('/completed-bonfire/', bonfireController.completedBonfire);
* Courseware related routes
*/
-app.get('/coursewares', coursewareController.returnNextCourseware);
+app.get('/coursewares/', coursewareController.returnNextCourseware);
app.get(
'/coursewares/:coursewareName',
coursewareController.returnIndividualCourseware
diff --git a/controllers/courseware.js b/controllers/courseware.js
index 38c783106b..cac15ab86f 100644
--- a/controllers/courseware.js
+++ b/controllers/courseware.js
@@ -58,33 +58,39 @@ exports.returnIndividualCourseware = function(req, res, next) {
next(err);
}
courseware = courseware.pop();
+
+ // Handle not found
+ if (courseware.length < 1) {
+ req.flash('errors', {
+ msg: "404: We couldn't find a challenge with that name. Please double check the name."
+ });
+ return res.redirect('/coursewares')
+ }
+
+ // Redirect to full name if the user only entered a partial
var dashedNameFull = courseware.name.toLowerCase().replace(/\s/g, '-');
if (dashedNameFull != dashedName) {
return res.redirect('../coursewares/' + dashedNameFull);
}
- if (courseware.length < 1) {
- req.flash('errors', {
- msg: "404: We couldn't find a challenge with that name. Please double check the name."
- });
- return res.redirect('/coursewares')
- } else {
- res.render('coursewares/show', {
- title: courseware.name,
- dashedName: dashedName,
- name: courseware.name,
- brief: courseware.description[0],
- details: courseware.description.slice(1),
- tests: courseware.tests,
- challengeSeed: courseware.challengeSeed,
- cc: !!req.user,
- points: req.user ? req.user.points : undefined,
- verb: resources.randomVerb(),
- phrase: resources.randomPhrase(),
- compliment: resources.randomCompliment(),
- coursewareHash: courseware._id
- });
- }
+ // Render the view for the user
+ res.render('coursewares/show', {
+ title: courseware.name,
+ dashedName: dashedName,
+ name: courseware.name,
+ brief: courseware.description[0],
+ details: courseware.description.slice(1),
+ tests: courseware.tests,
+ challengeSeed: courseware.challengeSeed,
+ cc: !!req.user,
+ points: req.user ? req.user.points : undefined,
+ verb: resources.randomVerb(),
+ phrase: resources.randomPhrase(),
+ compliment: resources.randomCompliment(),
+ coursewareHash: courseware._id
+
+ });
+
});
};
diff --git a/public/js/lib/bonfire/bonfireFramework.js b/public/js/lib/bonfire/bonfireFramework.js
index 95d8bada06..b807263ac7 100644
--- a/public/js/lib/bonfire/bonfireFramework.js
+++ b/public/js/lib/bonfire/bonfireFramework.js
@@ -21,6 +21,15 @@ var myCodeMirror = CodeMirror.fromTextArea(document.getElementById("codeEditor")
var editor = myCodeMirror;
editor.setSize("100%", "auto");
+// Hijack tab key to enter two spaces intead
+editor.setOption("extraKeys", {
+ Tab: function(cm) {
+ var spaces = Array(cm.getOption("indentUnit") + 1).join(" ");
+ cm.replaceSelection(spaces);
+ }
+});
+
+
var attempts = 0;
if (attempts) {
diff --git a/public/js/lib/coursewares/coursewaresFramework.js b/public/js/lib/coursewares/coursewaresFramework.js
index ba06db1afc..c43b161300 100644
--- a/public/js/lib/coursewares/coursewaresFramework.js
+++ b/public/js/lib/coursewares/coursewaresFramework.js
@@ -23,14 +23,22 @@ var myCodeMirror = CodeMirror.fromTextArea(document.getElementById("codeEditor")
}
});
var editor = myCodeMirror;
+
+
+// Hijack tab key to insert two spaces instead
+editor.setOption("extraKeys", {
+ Tab: function(cm) {
+ var spaces = Array(cm.getOption("indentUnit") + 1).join(" ");
+ cm.replaceSelection(spaces);
+ }
+});
+
editor.setSize("100%", "auto");
var libraryIncludes = "" +
"" +
"" +
"" +
- "" +
- "" +
"" +
"" +
"" +