From ca6652a791178291934ca2ee5e481fc0b84d83e9 Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Tue, 23 Dec 2014 08:22:50 -0800 Subject: [PATCH] refactor views to remove hardcoded challenge data --- controllers/user.js | 16 ++- seed_data/challenges.json | 4 +- views/account/profile.jade | 246 +-------------------------------- views/partials/challenges.jade | 3 +- 4 files changed, 21 insertions(+), 248 deletions(-) diff --git a/controllers/user.js b/controllers/user.js index 48048b0c7c1..1da0cb9f340 100644 --- a/controllers/user.js +++ b/controllers/user.js @@ -6,6 +6,7 @@ var passport = require('passport'); var User = require('../models/User'); var secrets = require('../config/secrets'); var moment = require('moment'); +var Challenge = require('./../models/Challenge'); /** * GET /login @@ -130,10 +131,17 @@ exports.postEmailSignup = function(req, res, next) { */ exports.getAccount = function(req, res) { - res.render('account/profile', { - title: 'Manage your Free Code Camp Account', - cc: req.user.challengesHash, - moment: moment + Challenge.find({}, function (err, c) { + if (err) { + console.error('Challenge err: ', err); + next(err); + } + res.render('account/profile', { + title: 'Manage your Free Code Camp Account', + cc: c, + ch: req.user.challengesHash, + moment: moment + }); }); }; diff --git a/seed_data/challenges.json b/seed_data/challenges.json index 77161bfa46e..fce4df3015d 100644 --- a/seed_data/challenges.json +++ b/seed_data/challenges.json @@ -192,8 +192,8 @@ ] }, { - "name": "Customize Bootstrap with Bootswatch", - "time": 10, + "name": "Customize Bootstrap", + "time": 15, "video": "110752741", "challengeNumber": 16, "steps": [ diff --git a/views/account/profile.jade b/views/account/profile.jade index 4f883901cb3..422cb6f5b54 100644 --- a/views/account/profile.jade +++ b/views/account/profile.jade @@ -40,246 +40,12 @@ block content tr th Challenge th Date Finished - if cc[0] > 0 - tr - td Learn how Free Code Camp Works - td=moment(cc[0], 'X').format("MMM DD, YYYY") - if cc[1] > 0 - tr - td Join Our Chat Room - td=moment(cc[1], 'X').format("MMM DD, YYYY") - if cc[2] > 0 - tr - td Subscribe to Our Subreddit - td=moment(cc[2], 'X').format("MMM DD, YYYY") - if cc[3] > 0 - tr - td Build a Personal Website - td=moment(cc[3], 'X').format("MMM DD, YYYY") - if cc[4] > 0 - tr - td Build a Responsive Blog Theme - td=moment(cc[4], 'X').format("MMM DD, YYYY") - if cc[5] > 0 - tr - td Build a Small Business Website - td=moment(cc[5], 'X').format("MMM DD, YYYY") - if cc[6] > 0 - tr - td Tweak HTML and CSS in CodePen - td=moment(cc[6], 'X').format("MMM DD, YYYY") - if cc[7] > 0 - tr - td Build a CSS Robot - td=moment(cc[7], 'X').format("MMM DD, YYYY") - if cc[8] > 0 - tr - td Get Started with jQuery - td=moment(cc[8], 'X').format("MMM DD, YYYY") - if cc[9] > 0 - tr - td Traverse the DOM - td=moment(cc[9], 'X').format("MMM DD, YYYY") - if cc[10] > 0 - tr - td Work with the DOM - td=moment(cc[10], 'X').format("MMM DD, YYYY") - if cc[11] > 0 - tr - td Listen for DOM Events - td=moment(cc[11], 'X').format("MMM DD, YYYY") - if cc[12] > 0 - tr - td Use jQuery for Styling - td=moment(cc[12], 'X').format("MMM DD, YYYY") - if cc[13] > 0 - tr - td Build a MadLibs Game - td=moment(cc[13], 'X').format("MMM DD, YYYY") - if cc[14] > 0 - tr - td Discover Chrome's DevTools - td=moment(cc[14], 'X').format("MMM DD, YYYY") - if cc[15] > 0 - tr - td Tackle jQuery Exercises - td=moment(cc[15], 'X').format("MMM DD, YYYY") - if cc[16] > 0 - tr - td Customize Bootstrap - td=moment(cc[16], 'X').format("MMM DD, YYYY") - if cc[17] > 0 - tr - td Inject Animation into CSS - td=moment(cc[17], 'X').format("MMM DD, YYYY") - if cc[18] > 0 - tr - td Learn Basic Computer Science - td=moment(cc[18], 'X').format("MMM DD, YYYY") - if cc[19] > 0 - tr - td Learn Loops - td=moment(cc[19], 'X').format("MMM DD, YYYY") - if cc[20] > 0 - tr - td Learn Computer Hardware - td=moment(cc[20], 'X').format("MMM DD, YYYY") - if cc[21] > 0 - tr - td Learn Computer Networking - td=moment(cc[21], 'X').format("MMM DD, YYYY") - if cc[22] > 0 - tr - td Learn Boolean Logic - td=moment(cc[22], 'X').format("MMM DD, YYYY") - if cc[23] > 0 - tr - td Learn Computer Security - td=moment(cc[23], 'X').format("MMM DD, YYYY") - if cc[24] > 0 - tr - td Build an Adventure Game - td=moment(cc[24], 'X').format("MMM DD, YYYY") - if cc[25] > 0 - tr - td Build Rock Paper Scissors - td=moment(cc[25], 'X').format("MMM DD, YYYY") - if cc[26] > 0 - tr - td Learn JavaScript For Loops - td=moment(cc[26], 'X').format("MMM DD, YYYY") - if cc[27] > 0 - tr - td Learn JavaScript While Loops - td=moment(cc[27], 'X').format("MMM DD, YYYY") - if cc[28] > 0 - tr - td Learn Control Flow - td=moment(cc[28], 'X').format("MMM DD, YYYY") - if cc[29] > 0 - tr - td Build a Contact List - td=moment(cc[29], 'X').format("MMM DD, YYYY") - if cc[30] > 0 - tr - td Build an Address Book - td=moment(cc[30], 'X').format("MMM DD, YYYY") - if cc[31] > 0 - tr - td Build a Cash Register - td=moment(cc[31], 'X').format("MMM DD, YYYY") - if cc[32] > 0 - tr - td Get Help the Hacker Way - td=moment(cc[32], 'X').format("MMM DD, YYYY") - if cc[33] > 0 - tr - td Learn Regular Expressions - td=moment(cc[33], 'X').format("MMM DD, YYYY") - if cc[34] > 0 - tr - td Pair Program on CoderByte - td=moment(cc[34], 'X').format("MMM DD, YYYY") - if cc[35] > 0 - tr - td Learn Relational Database Theory - td=moment(cc[35], 'X').format("MMM DD, YYYY") - if cc[36] > 0 - tr - td Pair Program to Query SQL pt 1 - td=moment(cc[36], 'X').format("MMM DD, YYYY") - if cc[37] > 0 - tr - td Pair Program to Query SQL pt 2 - td=moment(cc[37], 'X').format("MMM DD, YYYY") - if cc[38] > 0 - tr - td Pair Program to modify SQL pt 1 - td=moment(cc[38], 'X').format("MMM DD, YYYY") - if cc[39] > 0 - tr - td Pair Program to modify SQL pt 2 - td=moment(cc[39], 'X').format("MMM DD, YYYY") - if cc[40] > 0 - tr - td Learn JSON - td=moment(cc[40], 'X').format("MMM DD, YYYY") - if cc[41] > 0 - tr - td Manage Source Code with Git - td=moment(cc[41], 'X').format("MMM DD, YYYY") - if cc[42] > 0 - tr - td Get Started with Node.js - td=moment(cc[42], 'X').format("MMM DD, YYYY") - if cc[43] > 0 - tr - td Try Node.js Events - td=moment(cc[43], 'X').format("MMM DD, YYYY") - if cc[44] > 0 - tr - td Try Node.js Streams - td=moment(cc[44], 'X').format("MMM DD, YYYY") - if cc[45] > 0 - tr - td Learn how Node.js Modules Work - td=moment(cc[45], 'X').format("MMM DD, YYYY") - if cc[46] > 0 - tr - td Start an Express.js Server - td=moment(cc[46], 'X').format("MMM DD, YYYY") - if cc[47] > 0 - tr - td Use Socket.io - td=moment(cc[47], 'X').format("MMM DD, YYYY") - if cc[48] > 0 - tr - td Use Redis to Persist Data - td=moment(cc[48], 'X').format("MMM DD, YYYY") - if cc[49] > 0 - tr - td Dive Deeper into Express.js - td=moment(cc[49], 'X').format("MMM DD, YYYY") - if cc[50] > 0 - tr - td Set up Express.js Middleware - td=moment(cc[50], 'X').format("MMM DD, YYYY") - if cc[51] > 0 - tr - td Take Advantage of Parameters - td=moment(cc[51], 'X').format("MMM DD, YYYY") - if cc[52] > 0 - tr - td Add the Body Parser - td=moment(cc[52], 'X').format("MMM DD, YYYY") - if cc[53] > 0 - tr - td Configure Routes in Express.js - td=moment(cc[53], 'X').format("MMM DD, YYYY") - if cc[54] > 0 - tr - td Try MongoDB - td=moment(cc[54], 'X').format("MMM DD, YYYY") - if cc[55] > 0 - tr - td Get Started with Angular.js - td=moment(cc[55], 'X').format("MMM DD, YYYY") - if cc[56] > 0 - tr - td Apply Angular.js Directives - td=moment(cc[56], 'X').format("MMM DD, YYYY") - if cc[57] > 0 - tr - td Power Forms with Angular.js - td=moment(cc[57], 'X').format("MMM DD, YYYY") - if cc[58] > 0 - tr - td Customize Angular.js Directives - td=moment(cc[58], 'X').format("MMM DD, YYYY") - if cc[59] > 0 - tr - td Create Angular.js Services - td=moment(cc[59], 'X').format("MMM DD, YYYY") + for challenge in cc + if ch[challenge.challengeNumber] > 0 + tr + td= cc[challenge.challengeNumber].name + td= moment(ch[challenge.challengeNumber], 'X').format("MMM DD, YYYY") + h3 Danger Zone button.btn.btn-danger.confirm-deletion span.ion-trash-b diff --git a/views/partials/challenges.jade b/views/partials/challenges.jade index d6a42bc96af..25b47ce5416 100644 --- a/views/partials/challenges.jade +++ b/views/partials/challenges.jade @@ -7,5 +7,4 @@ a(href="/challenges/#{challenge.challengeNumber}", class="#{ (cc && cc[challenge.challengeNumber] > 0) ? 'strikethrough' : '' }") #{challenge.name} |   (#{challenge.time} mins) - - a.btn.btn-primary(href="/done-with-first-100-hours", class="#{ cc && cc[59] > 0 ? 'disabled' : '' }") I've finished all Free Code Camp challenges and all the Easy and Medium CoderByte Challenges \ No newline at end of file + a.btn.btn-primary(href="/done-with-first-100-hours", class="#{ ((cc && cc[59] > 0) || (!cc)) ? 'disabled' : '' }") I've finished all Free Code Camp challenges and all the Easy and Medium CoderByte Challenges \ No newline at end of file