From bae9e41b4265e26942e8a1d5ac48aa50afb102d7 Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Sat, 17 Jan 2015 18:52:58 -0800 Subject: [PATCH] improve bonfire and start adding model and controller --- app.js | 25 ++++++------- controllers/bonfire.js | 69 ++++++++++++++++++++++++++++++------ controllers/resources.js | 2 +- models/Bonfire.js | 14 ++++++++ public/css/main.less | 4 +++ views/bonfire/bonfire.jade | 25 +++++++------ views/partials/bonfires.jade | 6 ++++ 7 files changed, 109 insertions(+), 36 deletions(-) create mode 100644 models/Bonfire.js create mode 100644 views/partials/bonfires.jade diff --git a/app.js b/app.js index 1664596f0b..3226a912d5 100644 --- a/app.js +++ b/app.js @@ -214,10 +214,6 @@ app.get( '/pair-program-with-team-viewer', resourcesController.pairProgramWithTeamViewer ); -app.get( - '/done-with-first-100-hours', - resourcesController.doneWithFirst100Hours -); app.get('/learn-to-code', resourcesController.about); app.get('/login', userController.getLogin); app.post('/login', userController.postLogin); @@ -253,6 +249,11 @@ app.get( ); app.all('/account', passportConf.isAuthenticated); app.get('/account/api', userController.getAccountAngular); +app.get('/bonfire', bonfireController.index); +//app.get( +// '/bonfire/:bonfireNumber', +// bonfireController.returnBonfire +//); // Unique Check API route app.get('/api/checkUniqueUsername/:username', userController.checkUniqueUsername); @@ -263,11 +264,6 @@ app.post('/account/password', userController.postUpdatePassword); app.post('/account/delete', userController.postDeleteAccount); app.get('/account/unlink/:provider', userController.getOauthUnlink); -//put this route last -app.get( - '/:username', - userController.returnUser -); /** * API examples routes. @@ -298,7 +294,7 @@ var passportOptions = { failureRedirect: '/login' }; -app.get('/auth/twitter', passport.authorize('twitter')); +app.get('/auth/twitter', passport.authenticate('twitter')); app.get( '/auth/twitter/callback', passport.authenticate('twitter', { @@ -350,10 +346,11 @@ app.get( } ); -/** - * Bonfire routing - */ -app.get('/bonfire', bonfireController.index); +//put this route last +app.get( + '/:username', + userController.returnUser +); /** diff --git a/controllers/bonfire.js b/controllers/bonfire.js index 3192985c79..c37b793b6d 100644 --- a/controllers/bonfire.js +++ b/controllers/bonfire.js @@ -1,20 +1,67 @@ var _ = require('lodash'), - debug = require('debug')('freecc:cntr:challenges'), - Challenge = require('./../models/Challenge'); + debug = require('debug')('freecc:cntr:bonfires'), + bonfire = require('./../models/bonfire'); /** * Bonfire controller */ exports.index = function(req, res) { - Challenge.find({}, null, { sort: { challengeNumber: 1 } }, function(err, c) { - if (err) { - debug('Challenge err: ', err); - next(err); - } - res.render('bonfire/bonfire.jade', { - challenges: c, - cc: req.user ? req.user.challengesHash : undefined - }); + res.render('bonfire/bonfire.jade', { }); + //Bonfire.find({}, null, { sort: { bonfireNumber: 1 } }, function(err, c) { + // if (err) { + // debug('bonfire err: ', err); + // next(err); + // } + //}); }; +//exports.returnBonfire = function(req, res, next) { +// var bonfireNumber = parseInt(req.params.bonfireNumber) || 0; +// var verbs = [ +// 'ACED', +// 'NAILED', +// 'ROCKED', +// 'SCORCHED', +// 'DEVASTATED', +// 'OWNED', +// 'CRUSHED', +// 'CONQUERED', +// 'KILLED', +// 'SHREDDED', +// 'ANNIHILATED', +// 'NUKED' +// ]; +// var phrases = [ +// "Shout it from on top of a mountain", +// "Tell everyone and their dogs", +// "Show them. Show them all!", +// "Inspire your friends", +// "Tell the world of your greatness", +// "Look accomplished on social media", +// "Share news of your grand endeavor", +// "Establish your alibi for the past two hours", +// "Prove to mom that computers aren't just for games" +// ]; +// if (bonfireNumber > 53) { bonfireNumber = 0; } +// Bonfire.find({}, null, { sort: { bonfireNumber: 1 } }, function(err, c) { +// if (err) { +// debug('bonfire err: ', err); +// next(err); +// } +// res.render('bonfires/show', { +// //title: 'bonfire: ' + c[bonfireNumber].name, +// //name: c[bonfireNumber].name, +// //video: c[bonfireNumber].video, +// //time: c[bonfireNumber].time, +// //steps: c[bonfireNumber].steps, +// //number: bonfireNumber, +// //categories: c[bonfireNumber].category, +// //cc: req.user ? req.user.bonfiresHash : undefined, +// //points: req.user ? req.user.points : undefined, +// //verb: verbs[Math.floor(Math.random() * verbs.length)], +// //phrase: phrases[Math.floor(Math.random() * phrases.length)], +// //bonfires: c +// }); +// }); +//}; \ No newline at end of file diff --git a/controllers/resources.js b/controllers/resources.js index 11d044301e..9e2394f267 100644 --- a/controllers/resources.js +++ b/controllers/resources.js @@ -161,7 +161,7 @@ module.exports = { }); }); }); - }, + } }; diff --git a/models/Bonfire.js b/models/Bonfire.js new file mode 100644 index 0000000000..10360c40c0 --- /dev/null +++ b/models/Bonfire.js @@ -0,0 +1,14 @@ +var mongoose = require('mongoose'); +var secrets = require('../config/secrets'); + +var bonfireSchema = new mongoose.Schema({ + name: { + type: String, + unique: true + }, + link: String, + time: String, + bonfireNumber: Number +}); + +module.exports = mongoose.model('Bonfire', bonfireSchema); diff --git a/public/css/main.less b/public/css/main.less index ffd0db57f4..b08506fd15 100644 --- a/public/css/main.less +++ b/public/css/main.less @@ -525,6 +525,10 @@ thead { } } +form.code { + font-size: 22px; +} + //uncomment this to see the dimensions of all elements outlined in red //* { // border-color: red; diff --git a/views/bonfire/bonfire.jade b/views/bonfire/bonfire.jade index 9f67a474f0..856dc6399d 100644 --- a/views/bonfire/bonfire.jade +++ b/views/bonfire/bonfire.jade @@ -15,9 +15,9 @@ block content script(src='/js/lib/bonfire/bonfire.js') .row - .col-sm-12.col-md-8.col-xs-12 + .col-sm-12.col-md-12.col-xs-12 .panel.panel-primary - .panel-heading Title + .panel-heading.text-center Bonfire Playground .panel.panel-body form.code .form-group.codeMirrorView @@ -26,7 +26,7 @@ block content .form-group.codeMirrorView textarea#codeOutput #submitButton.btn.btn-primary.btn-big.btn-block Run my code - #hintButton.btn.btn-info.btn-big.btn-block Show me hints + //#hintButton.btn.btn-info.btn-big.btn-block Show me hints script. var widgets = []; @@ -38,16 +38,26 @@ block content lint: true, matchBrackets: true, autoCloseBrackets: true, + cursorHeight: 0.85, + lineWrapping: true, gutters: ["CodeMirror-lint-markers"], onKeyEvent : doLinting }); var editor = myCodeMirror; - myCodeMirror.setValue('2*2'); + myCodeMirror.setValue('/*Welcome to Bonfire, Free Code Camp\'s future CoderByte replacement.\n'+ + 'Please feel free to use Bonfire as an in-browser playground and linting tool.*/\n\n\n' + + + 'function test() {\n' + + ' return [1,2,3].map(function(elem) {\n' + + ' return elem * elem;\n' + + ' });\n' + + '}\n\n' + + 'test();'); myCodeMirror.setSize("100%", 500); var codeOutput = CodeMirror.fromTextArea(document.getElementById("codeOutput"), { lineNumbers: false, - mode: "javascript", + mode: "text", theme: 'monokai', readOnly: 'nocursor' }); @@ -85,8 +95,3 @@ block content submit(js); }); - - - - .col-sm-12.col-md-4.col-xs-12 - include ../partials/challenges diff --git a/views/partials/bonfires.jade b/views/partials/bonfires.jade new file mode 100644 index 0000000000..41f9bbe9dd --- /dev/null +++ b/views/partials/bonfires.jade @@ -0,0 +1,6 @@ +h3 + ol(start='0') +for bonfire in bonfires + li + a(href="/bonfire/#{bonfire.bonfireNumber}", class="#{ (cc && cc[bonfire.bonfireNumber] > 0) ? 'strikethrough' : '' }") #{bonfire.name} + |   (#{bonfire.time} mins) \ No newline at end of file