Merge branch 'master' of github.com:FreeCodeCamp/freecodecamp
Conflicts: controllers/resources.js
This commit is contained in:
10
app.js
10
app.js
@ -43,6 +43,7 @@ var express = require('express'),
|
|||||||
fieldGuideController = require('./controllers/fieldGuide'),
|
fieldGuideController = require('./controllers/fieldGuide'),
|
||||||
challengeMapController = require('./controllers/challengeMap'),
|
challengeMapController = require('./controllers/challengeMap'),
|
||||||
challengeController = require('./controllers/challenge'),
|
challengeController = require('./controllers/challenge'),
|
||||||
|
jobsController = require('./controllers/jobs'),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Stories
|
* Stories
|
||||||
@ -159,9 +160,8 @@ var trusted = [
|
|||||||
'*.ytimg.com',
|
'*.ytimg.com',
|
||||||
'*.bitly.com',
|
'*.bitly.com',
|
||||||
'http://cdn.inspectlet.com/',
|
'http://cdn.inspectlet.com/',
|
||||||
'http://hn.inspectlet.com/',
|
'wss://inspectletws.herokuapp.com/',
|
||||||
'*.simplyhired.com',
|
'http://hn.inspectlet.com/'
|
||||||
'*.simply-partner.com'
|
|
||||||
];
|
];
|
||||||
|
|
||||||
app.use(helmet.csp({
|
app.use(helmet.csp({
|
||||||
@ -269,8 +269,6 @@ app.get('/pmi-acp-agile-project-managers-form',
|
|||||||
|
|
||||||
app.get('/nonprofits', resourcesController.nonprofits);
|
app.get('/nonprofits', resourcesController.nonprofits);
|
||||||
|
|
||||||
app.get('/nonprofits/getNonprofitList', nonprofitController.showAllNonprofits);
|
|
||||||
|
|
||||||
app.get('/nonprofits-form', resourcesController.nonprofitsForm);
|
app.get('/nonprofits-form', resourcesController.nonprofitsForm);
|
||||||
|
|
||||||
app.get('/map',
|
app.get('/map',
|
||||||
@ -354,7 +352,7 @@ app.get(
|
|||||||
|
|
||||||
app.get(
|
app.get(
|
||||||
'/jobs',
|
'/jobs',
|
||||||
resourcesController.jobs
|
jobsController.jobsDirectory
|
||||||
);
|
);
|
||||||
|
|
||||||
app.get(
|
app.get(
|
||||||
|
14
controllers/jobs.js
Normal file
14
controllers/jobs.js
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
var moment = require('moment'),
|
||||||
|
Job = require('./../models/Job'),
|
||||||
|
resources = require('./resources');
|
||||||
|
|
||||||
|
exports.jobsDirectory = function(req, res, next) {
|
||||||
|
Job.find({}, function(err, jobs) {
|
||||||
|
if (err) { return next(err); }
|
||||||
|
|
||||||
|
res.render('jobs/directory', {
|
||||||
|
title: 'Junior JavaScript Engineer Jobs',
|
||||||
|
jobs: jobs
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
@ -13,92 +13,6 @@ exports.nonprofitsDirectory = function(req, res, next) {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.areYouWithARegisteredNonprofit = function(req, res) {
|
|
||||||
res.render('nonprofits/are-you-with-a-registered-nonprofit', {
|
|
||||||
title: 'Are you with a with a registered nonprofit',
|
|
||||||
step: 1
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.areTherePeopleThatAreAlreadyBenefitingFromYourServices =
|
|
||||||
function(req, res) {
|
|
||||||
res.render(
|
|
||||||
'nonprofits/' +
|
|
||||||
'are-there-people-that-are-already-benefiting-from-your-services',
|
|
||||||
{
|
|
||||||
title: 'Are there people already benefiting from your services',
|
|
||||||
step: 2
|
|
||||||
}
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.okWithJavaScript = function(req, res) {
|
|
||||||
res.render('nonprofits/ok-with-javascript', {
|
|
||||||
title: 'Are you OK with us using JavaScript',
|
|
||||||
step: 3
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.inExchangeWeAsk = function(req, res) {
|
|
||||||
res.render('nonprofits/in-exchange-we-ask', {
|
|
||||||
title: 'In exchange we ask that you ...',
|
|
||||||
step: 4
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.howCanFreeCodeCampHelpYou = function(req, res) {
|
|
||||||
res.render('nonprofits/how-can-free-code-camp-help-you', {
|
|
||||||
title: 'Are you with a with a registered nonprofit',
|
|
||||||
step: 5
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.whatDoesYourNonprofitDo = function(req, res) {
|
|
||||||
res.render('nonprofits/what-does-your-nonprofit-do', {
|
|
||||||
existingParams: req.params,
|
|
||||||
title: 'What does your nonprofit do?',
|
|
||||||
step: 6
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.linkUsToYourWebsite = function(req, res) {
|
|
||||||
res.render('nonprofits/link-us-to-your-website', {
|
|
||||||
title: 'Link us to your website',
|
|
||||||
step: 7
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.tellUsYourEmail = function(req, res) {
|
|
||||||
res.render('nonprofits/tell-us-your-email', {
|
|
||||||
title: 'Tell us your email',
|
|
||||||
step: 8
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.tellUsYourName = function(req, res) {
|
|
||||||
res.render('nonprofits/tell-us-your-name', {
|
|
||||||
title: 'Tell us your name',
|
|
||||||
step: 9
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.yourNonprofitProjectApplicationHasBeenSubmitted = function(req, res) {
|
|
||||||
res.render(
|
|
||||||
'nonprofits/your-nonprofit-project-application-has-been-submitted',
|
|
||||||
{
|
|
||||||
title: 'Your Nonprofit Project application has been submitted!',
|
|
||||||
step: 10,
|
|
||||||
getBackDay: moment().weekday(5).format('dddd')
|
|
||||||
}
|
|
||||||
);
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.otherSolutions = function(req, res) {
|
|
||||||
res.render('nonprofits/other-solutions', {
|
|
||||||
title: 'Here are some other possible solutions for you'
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.returnIndividualNonprofit = function(req, res, next) {
|
exports.returnIndividualNonprofit = function(req, res, next) {
|
||||||
var dashedName = req.params.nonprofitName;
|
var dashedName = req.params.nonprofitName;
|
||||||
var nonprofitName = dashedName.replace(/\-/g, ' ');
|
var nonprofitName = dashedName.replace(/\-/g, ' ');
|
||||||
@ -179,12 +93,6 @@ exports.returnIndividualNonprofit = function(req, res, next) {
|
|||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.showAllNonprofits = function(req, res) {
|
|
||||||
var data = {};
|
|
||||||
data.nonprofitsList = resources.allNonprofitNames();
|
|
||||||
res.send(data);
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.interestedInNonprofit = function(req, res, next) {
|
exports.interestedInNonprofit = function(req, res, next) {
|
||||||
if (req.user) {
|
if (req.user) {
|
||||||
Nonprofit.findOne(
|
Nonprofit.findOne(
|
||||||
|
@ -234,12 +234,6 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
jobs: function jobs(req, res) {
|
|
||||||
res.render('resources/jobs', {
|
|
||||||
title: 'Job Board for Front End Developer and Full Stack JavaScript Developer Jobs'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
jobsForm: function jobsForm(req, res) {
|
jobsForm: function jobsForm(req, res) {
|
||||||
res.render('resources/jobs-form', {
|
res.render('resources/jobs-form', {
|
||||||
title: 'Employer Partnership Form for Job Postings, Recruitment and Corporate Sponsorships'
|
title: 'Employer Partnership Form for Job Postings, Recruitment and Corporate Sponsorships'
|
||||||
@ -607,8 +601,8 @@ module.exports = {
|
|||||||
var challenge = req.body.payload.challenge;
|
var challenge = req.body.payload.challenge;
|
||||||
|
|
||||||
slack.send({
|
slack.send({
|
||||||
text: "*" + userName + "* wants help with " + challenge + ". " +
|
text: "*@" + userName + "* wants help with " + challenge + ". " +
|
||||||
code + "Hey, *" + userName + "*, if no one helps you right " +
|
code + "Hey, *@" + userName + "*, if no one helps you right " +
|
||||||
"away, try typing out your problem in detail to me. Like this: " +
|
"away, try typing out your problem in detail to me. Like this: " +
|
||||||
"http://en.wikipedia.org/wiki/Rubber_duck_debugging",
|
"http://en.wikipedia.org/wiki/Rubber_duck_debugging",
|
||||||
channel: '#help',
|
channel: '#help',
|
||||||
@ -622,8 +616,8 @@ module.exports = {
|
|||||||
var userName = req.user.profile.username;
|
var userName = req.user.profile.username;
|
||||||
var challenge = req.body.payload.challenge;
|
var challenge = req.body.payload.challenge;
|
||||||
slack.send({
|
slack.send({
|
||||||
text: "Anyone want to pair with @" + userName + " on " + challenge +
|
text: "Anyone want to pair with *@" + userName + "* on " + challenge +
|
||||||
"?\nMake sure you install Screen Hero here:" +
|
"?\nMake sure you install Screen Hero here: " +
|
||||||
"http://freecodecamp.com/field-guide/how-do-i-install-screenhero\n" +
|
"http://freecodecamp.com/field-guide/how-do-i-install-screenhero\n" +
|
||||||
"Then start your pair program session with *@" + userName +
|
"Then start your pair program session with *@" + userName +
|
||||||
"* by typing \"/hero @" + userName + "\" into Slack.\n And *@"+ userName +
|
"* by typing \"/hero @" + userName + "\" into Slack.\n And *@"+ userName +
|
||||||
|
18
models/Job.js
Normal file
18
models/Job.js
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
var mongoose = require('mongoose');
|
||||||
|
var secrets = require('../config/secrets');
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @type {exports.Schema}
|
||||||
|
*/
|
||||||
|
|
||||||
|
var Long = mongoose.Types.Long;
|
||||||
|
var jobSchema = new mongoose.Schema({
|
||||||
|
position: String,
|
||||||
|
company: String,
|
||||||
|
logoUrl: String,
|
||||||
|
postingUrl: String,
|
||||||
|
copy: Array
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports = mongoose.model('Job', jobSchema);
|
@ -17,7 +17,7 @@ $(document).ready(function() {
|
|||||||
setCSRFToken($('meta[name="csrf-token"]').attr('content'));
|
setCSRFToken($('meta[name="csrf-token"]').attr('content'));
|
||||||
|
|
||||||
$('#i-want-help').on('click', function() {
|
$('#i-want-help').on('click', function() {
|
||||||
/*
|
$('#help-modal').modal('hide');
|
||||||
var editorValue = editor.getValue();
|
var editorValue = editor.getValue();
|
||||||
var currentLocation = window.location.href;
|
var currentLocation = window.location.href;
|
||||||
$.post(
|
$.post(
|
||||||
@ -34,11 +34,10 @@ $(document).ready(function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
*/
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#i-want-help-editorless').on('click', function() {
|
$('#i-want-help-editorless').on('click', function() {
|
||||||
/*
|
$('#help-editorless-modal').modal('hide');
|
||||||
var currentLocation = window.location.href;
|
var currentLocation = window.location.href;
|
||||||
$.post(
|
$.post(
|
||||||
'/get-help',
|
'/get-help',
|
||||||
@ -53,14 +52,15 @@ $(document).ready(function() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
*/
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#report-issue').on('click', function() {
|
$('#report-issue').on('click', function() {
|
||||||
window.open('https://github.com/freecodecamp/freecodecamp/issues/new?title=Challenge '+ window.location.href +' has an issue &body=Please%20tell%20us%20in%20detail%20here%20how%20we%20can%20make%20this%20challenge%20better.', '_blank')
|
$('#issue-modal').modal('hide');
|
||||||
|
window.open('https://github.com/freecodecamp/freecodecamp/issues/new?&body=Challenge '+ window.location.href +' has an issue. Please describe how to reproduce it, and include links to screen shots if possible.', '_blank')
|
||||||
});
|
});
|
||||||
|
|
||||||
$('#i-want-to-pair').on('click', function() {
|
$('#i-want-to-pair').on('click', function() {
|
||||||
|
$('#pair-modal').modal('hide');
|
||||||
var currentLocation = window.location.href;
|
var currentLocation = window.location.href;
|
||||||
$.post(
|
$.post(
|
||||||
'/get-pair',
|
'/get-pair',
|
||||||
@ -138,6 +138,26 @@ $(document).ready(function() {
|
|||||||
$('#complete-courseware-dialog').modal('show');
|
$('#complete-courseware-dialog').modal('show');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#completed-courseware-editorless').on('click', function() {
|
||||||
|
$('#complete-courseware-editorless-dialog').modal('show');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#trigger-pair-modal').on('click', function() {
|
||||||
|
$('#pair-modal').modal('show');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#trigger-help-modal').on('click', function() {
|
||||||
|
$('#help-modal').modal('show');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#trigger-help-editorless-modal').on('click', function() {
|
||||||
|
$('#help-editorless-modal').modal('show');
|
||||||
|
});
|
||||||
|
|
||||||
|
$('#trigger-issue-modal').on('click', function() {
|
||||||
|
$('#issue-modal').modal('show');
|
||||||
|
});
|
||||||
|
|
||||||
$('#completed-zipline-or-basejump').on('click', function() {
|
$('#completed-zipline-or-basejump').on('click', function() {
|
||||||
$('#complete-zipline-or-basejump-dialog').modal('show');
|
$('#complete-zipline-or-basejump-dialog').modal('show');
|
||||||
});
|
});
|
||||||
@ -145,6 +165,11 @@ $(document).ready(function() {
|
|||||||
$('#complete-courseware-dialog').on('hidden.bs.modal', function() {
|
$('#complete-courseware-dialog').on('hidden.bs.modal', function() {
|
||||||
editor.focus();
|
editor.focus();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
$('#complete-challenge-dialog').on('hidden.bs.modal', function() {
|
||||||
|
editor.focus();
|
||||||
|
});
|
||||||
|
|
||||||
var challengeTypes = {
|
var challengeTypes = {
|
||||||
'HTML_CSS_JQ': 0,
|
'HTML_CSS_JQ': 0,
|
||||||
'JAVASCRIPT': 1,
|
'JAVASCRIPT': 1,
|
||||||
@ -160,7 +185,6 @@ $(document).ready(function() {
|
|||||||
case challengeTypes.HTML_CSS_JQ:
|
case challengeTypes.HTML_CSS_JQ:
|
||||||
case challengeTypes.JAVASCRIPT:
|
case challengeTypes.JAVASCRIPT:
|
||||||
case challengeTypes.VIDEO:
|
case challengeTypes.VIDEO:
|
||||||
console.log(challenge_Id);
|
|
||||||
$.post(
|
$.post(
|
||||||
'/completed-challenge/',
|
'/completed-challenge/',
|
||||||
{
|
{
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
"_id": "bd7129d8c441eddfbeb5bddf",
|
"_id": "bd7129d8c441eddfbeb5bddf",
|
||||||
"name": "Waypoint: Practice Functional Programming",
|
"name": "Waypoint: Practice Functional Programming",
|
||||||
"difficulty": 0.01,
|
"difficulty": 0.01,
|
||||||
"challengeSeed": "114604814",
|
"challengeSeed": "129169463",
|
||||||
"description": [
|
"description": [
|
||||||
"Functional programming holds the key to unlocking JavaScript's powerful asynchronous features.",
|
"Functional programming holds the key to unlocking JavaScript's powerful asynchronous features.",
|
||||||
"Jafar Husain's 42-step interactive Functional Programming course will familiarize you with the various ways you can recombine these functions.",
|
"Jafar Husain's 42-step interactive Functional Programming course will familiarize you with the various ways you can recombine these functions.",
|
||||||
|
@ -297,6 +297,7 @@
|
|||||||
" <li><a href='https://www.facebook.com/groups/free.code.camp.berkeley/' target='_blank'>Berkeley</a></li>",
|
" <li><a href='https://www.facebook.com/groups/free.code.camp.berkeley/' target='_blank'>Berkeley</a></li>",
|
||||||
" <li><a href='https://www.facebook.com/groups/free.code.camp.berlin/' target='_blank'>Berlin</a></li>",
|
" <li><a href='https://www.facebook.com/groups/free.code.camp.berlin/' target='_blank'>Berlin</a></li>",
|
||||||
" <li><a href='https://www.facebook.com/groups/free.code.camp.bhaktapur/' target='_blank'>Bhaktapur</a></li>",
|
" <li><a href='https://www.facebook.com/groups/free.code.camp.bhaktapur/' target='_blank'>Bhaktapur</a></li>",
|
||||||
|
" <li><a href='https://www.facebook.com/groups/free.code.camp.bijeljina/' target='_blank'>Bijeljina</a></li>",
|
||||||
" <li><a href='https://www.facebook.com/groups/free.code.camp.bismarck.north.dakota/' target='_blank'>Bismarck, ND</a></li>",
|
" <li><a href='https://www.facebook.com/groups/free.code.camp.bismarck.north.dakota/' target='_blank'>Bismarck, ND</a></li>",
|
||||||
" <li><a href='https://www.facebook.com/groups/free.code.camp.bogota/' target='_blank'>Bogota</a></li>",
|
" <li><a href='https://www.facebook.com/groups/free.code.camp.bogota/' target='_blank'>Bogota</a></li>",
|
||||||
" <li><a href='https://www.facebook.com/groups/free.code.camp.boston/' target='_blank'>Boston</a></li>",
|
" <li><a href='https://www.facebook.com/groups/free.code.camp.boston/' target='_blank'>Boston</a></li>",
|
||||||
@ -413,6 +414,7 @@
|
|||||||
" <li><a href='https://www.facebook.com/groups/free.code.camp.tirana/' target='_blank'>Tirana</a></li>",
|
" <li><a href='https://www.facebook.com/groups/free.code.camp.tirana/' target='_blank'>Tirana</a></li>",
|
||||||
" <li><a href='https://www.facebook.com/groups/free.code.camp.tulsa/' target='_blank'>Tulsa</a></li>",
|
" <li><a href='https://www.facebook.com/groups/free.code.camp.tulsa/' target='_blank'>Tulsa</a></li>",
|
||||||
" <li><a href='https://www.facebook.com/groups/free.code.camp.northern.arizona/' target='_blank'>Verde Valley</a></li>",
|
" <li><a href='https://www.facebook.com/groups/free.code.camp.northern.arizona/' target='_blank'>Verde Valley</a></li>",
|
||||||
|
" <li><a href='https://www.facebook.com/groups/free.code.camp.vlc/' target='_blank'>Valencia</a></li>",
|
||||||
" <li><a href='https://www.facebook.com/groups/free.code.camp.washington.dc/' target='_blank'>Washington, DC</a></li>",
|
" <li><a href='https://www.facebook.com/groups/free.code.camp.washington.dc/' target='_blank'>Washington, DC</a></li>",
|
||||||
" </ol>",
|
" </ol>",
|
||||||
" </h4>",
|
" </h4>",
|
||||||
|
30
seed_data/jobs.json
Normal file
30
seed_data/jobs.json
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "bd7167d8c441cbafaeb5bdef",
|
||||||
|
"company": "Livestream",
|
||||||
|
"position": "Junior Backend Developer (Node.js)",
|
||||||
|
"logoUrl": "https://s3.amazonaws.com/prod-heroku/greenhouse_job_boards/logos/000/001/189/resized/livestream_logo-rgb_standard-cc718e67ce1a0f6fa400f609bdefe605.png?1429547161",
|
||||||
|
"postingUrl": "https://boards.greenhouse.io/livestream/jobs/59458?t=ek25h0#.VWeTk1xVhBc?source=freecodecamp.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bd7167d8c442cbafaeb5bdef",
|
||||||
|
"company": "Adobe",
|
||||||
|
"position": "Junior JavaScript Engineer",
|
||||||
|
"logoUrl": "http://cdn-3.famouslogos.us/images/adobe-logo.jpg",
|
||||||
|
"postingUrl": "https://adobe.taleo.net/careersection/2/jobdetail.ftl?job=32619&lang=en"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bd7167d8c443cbafaeb5bdef",
|
||||||
|
"company": "Bookspan",
|
||||||
|
"position": "Full Stack JavaScript Developer (Junior)",
|
||||||
|
"logoUrl": "https://tm-prod.global.ssl.fastly.net/uploaded/companies/227/small_logo.png?v=db9dbe",
|
||||||
|
"postingUrl": "http://bookspan.theresumator.com/apply/10190b666b74087b537f4659756f7c5679000704722064232c1d2e3b2b102501310437/Fullstack-Javascript-Developer-junior?source=freecodecamp.com&sid=zvi9YD9OcHwoDZNgM3XI9uPszGvqxJo6eHf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "bd7167d8c444cbafaeb5bdef",
|
||||||
|
"company": "Good Eggs",
|
||||||
|
"position": "Full Stack Developer",
|
||||||
|
"logoUrl": "https://d1qb2nb5cznatu.cloudfront.net/startups/i/72165-64efbd521cdfe3357c811758f5436e7d-medium_jpg.jpg",
|
||||||
|
"postingUrl": "http://www.jobscore.com/jobs2/goodeggs/full-stack-developer/cQ_hd-0USr4Om7eJe4iefn?Board=freecodecamp.com"
|
||||||
|
}
|
||||||
|
]
|
@ -2,17 +2,19 @@ require('dotenv').load();
|
|||||||
var Challenge = require('../models/Challenge.js'),
|
var Challenge = require('../models/Challenge.js'),
|
||||||
FieldGuide = require('../models/FieldGuide.js'),
|
FieldGuide = require('../models/FieldGuide.js'),
|
||||||
Nonprofit = require('../models/Nonprofit.js'),
|
Nonprofit = require('../models/Nonprofit.js'),
|
||||||
|
Job = require('../models/Job.js'),
|
||||||
mongoose = require('mongoose'),
|
mongoose = require('mongoose'),
|
||||||
secrets = require('../config/secrets'),
|
secrets = require('../config/secrets'),
|
||||||
fieldGuides = require('./field-guides.json'),
|
fieldGuides = require('./field-guides.json'),
|
||||||
nonprofits = require('./nonprofits.json'),
|
nonprofits = require('./nonprofits.json'),
|
||||||
|
jobs = require('./jobs.json'),
|
||||||
fs = require('fs');
|
fs = require('fs');
|
||||||
|
|
||||||
mongoose.connect(secrets.db);
|
mongoose.connect(secrets.db);
|
||||||
var challenges = fs.readdirSync(__dirname + '/challenges');
|
var challenges = fs.readdirSync(__dirname + '/challenges');
|
||||||
|
|
||||||
var counter = 0;
|
var counter = 0;
|
||||||
var offerings = 2 + challenges.length;
|
var offerings = 3 + challenges.length;
|
||||||
|
|
||||||
var CompletionMonitor = function() {
|
var CompletionMonitor = function() {
|
||||||
counter++;
|
counter++;
|
||||||
@ -42,6 +44,7 @@ Challenge.remove({}, function(err, data) {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
FieldGuide.remove({}, function(err, data) {
|
FieldGuide.remove({}, function(err, data) {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
@ -75,3 +78,20 @@ Nonprofit.remove({}, function(err, data) {
|
|||||||
});
|
});
|
||||||
console.log('nonprofits');
|
console.log('nonprofits');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Job.remove({}, function(err, data) {
|
||||||
|
if (err) {
|
||||||
|
console.error(err);
|
||||||
|
} else {
|
||||||
|
console.log('Deleted ', data);
|
||||||
|
}
|
||||||
|
Job.create(jobs, function(err, data) {
|
||||||
|
if (err) {
|
||||||
|
console.log(err);
|
||||||
|
} else {
|
||||||
|
console.log('Saved ', data);
|
||||||
|
}
|
||||||
|
CompletionMonitor();
|
||||||
|
});
|
||||||
|
console.log('jobs');
|
||||||
|
});
|
||||||
|
@ -260,28 +260,28 @@ block content
|
|||||||
.panel.panel-info
|
.panel.panel-info
|
||||||
.panel-heading.text-center Manage your account here:
|
.panel-heading.text-center Manage your account here:
|
||||||
.panel-body
|
.panel-body
|
||||||
- if (!user.google || !user.facebook || !user.linkedin || !user.twitter)
|
if (!user.google || !user.facebook || !user.linkedin || !user.twitter)
|
||||||
- if (!user.google)
|
if (!user.google)
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
a.btn.btn-lg.btn-block.btn-google-plus.btn-link-social(href='/auth/google')
|
a.btn.btn-lg.btn-block.btn-google-plus.btn-link-social(href='/auth/google')
|
||||||
i.fa.fa-google-plus
|
i.fa.fa-google-plus
|
||||||
| Link Google with my account
|
| Link Google with my account
|
||||||
- if (!user.facebook)
|
if (!user.facebook)
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
a.btn.btn-lg.btn-block.btn-facebook.btn-link-social(href='/auth/facebook')
|
a.btn.btn-lg.btn-block.btn-facebook.btn-link-social(href='/auth/facebook')
|
||||||
i.fa.fa-facebook
|
i.fa.fa-facebook
|
||||||
| Link Facebook with my account
|
| Link Facebook with my account
|
||||||
//- if (!user.github)
|
//if (!user.github)
|
||||||
// .col-xs-12
|
// .col-xs-12
|
||||||
// a.btn.btn-lg.btn-block.btn-github.btn-link-social(href='/auth/github')
|
// a.btn.btn-lg.btn-block.btn-github.btn-link-social(href='/auth/github')
|
||||||
// i.fa.fa-github
|
// i.fa.fa-github
|
||||||
// | Link GitHub with my account
|
// | Link GitHub with my account
|
||||||
- if (!user.linkedin)
|
if (!user.linkedin)
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
a.btn.btn-lg.btn-block.btn-linkedin.btn-link-social(href='/auth/linkedin')
|
a.btn.btn-lg.btn-block.btn-linkedin.btn-link-social(href='/auth/linkedin')
|
||||||
i.fa.fa-linkedin
|
i.fa.fa-linkedin
|
||||||
| Link LinkedIn with my account
|
| Link LinkedIn with my account
|
||||||
- if (!user.twitter)
|
if (!user.twitter)
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
a.btn.btn-lg.btn-block.btn-twitter.btn-link-social(href='/auth/twitter')
|
a.btn.btn-lg.btn-block.btn-twitter.btn-link-social(href='/auth/twitter')
|
||||||
i.fa.fa-twitter
|
i.fa.fa-twitter
|
||||||
|
@ -23,15 +23,15 @@ block content
|
|||||||
else
|
else
|
||||||
img.img-center.img-responsive.public-profile-img(src='https://s3.amazonaws.com/freecodecamp/camper-image-placeholder.png')
|
img.img-center.img-responsive.public-profile-img(src='https://s3.amazonaws.com/freecodecamp/camper-image-placeholder.png')
|
||||||
h1.text-center.negative-5.profile-social-icons
|
h1.text-center.negative-5.profile-social-icons
|
||||||
- if (twitterHandle)
|
if (twitterHandle)
|
||||||
a.fa.fa-twitter-square.text-primary(title="@#{username}'s Twitter Profile", href="http://twitter.com/#{twitterHandle}", target='_blank')
|
a.fa.fa-twitter-square.text-primary(title="@#{username}'s Twitter Profile", href="http://twitter.com/#{twitterHandle}", target='_blank')
|
||||||
- if (githubProfile)
|
if (githubProfile)
|
||||||
a.fa.fa-github-square.text-primary(title="@#{username}'s GitHub Profile", href=githubProfile, target='_blank')
|
a.fa.fa-github-square.text-primary(title="@#{username}'s GitHub Profile", href=githubProfile, target='_blank')
|
||||||
- if (codepenProfile)
|
if (codepenProfile)
|
||||||
a.ion-social-codepen.text-primary(title="@#{username}'s CodePen Profile", href=codepenProfile, target='_blank')
|
a.ion-social-codepen.text-primary(title="@#{username}'s CodePen Profile", href=codepenProfile, target='_blank')
|
||||||
- if (linkedinProfile)
|
if (linkedinProfile)
|
||||||
a.fa.fa-linkedin-square.text-primary(title="@#{username}'s LinkedIn Profile", href=linkedinProfile, target='_blank')
|
a.fa.fa-linkedin-square.text-primary(title="@#{username}'s LinkedIn Profile", href=linkedinProfile, target='_blank')
|
||||||
- if (facebookProfile)
|
if (facebookProfile)
|
||||||
a.fa.fa-facebook-square.text-primary(title="@#{username}'s Facebook Profile", href=facebookProfile, target='_blank')
|
a.fa.fa-facebook-square.text-primary(title="@#{username}'s Facebook Profile", href=facebookProfile, target='_blank')
|
||||||
.visible-md.visible-lg
|
.visible-md.visible-lg
|
||||||
.col-xs-12.col-sm-12.col-md-4.text-justify
|
.col-xs-12.col-sm-12.col-md-4.text-justify
|
||||||
@ -137,7 +137,7 @@ block content
|
|||||||
h4.col-sm-6.text-left Current Streak: #{currentStreak}
|
h4.col-sm-6.text-left Current Streak: #{currentStreak}
|
||||||
|
|
||||||
|
|
||||||
- if (challenges.length > 0)
|
if (challenges.length > 0)
|
||||||
.col-sm-12
|
.col-sm-12
|
||||||
table.table.table-striped
|
table.table.table-striped
|
||||||
thead
|
thead
|
||||||
@ -154,7 +154,7 @@ block content
|
|||||||
a(href=challenge.solution, target='_blank') View my solution
|
a(href=challenge.solution, target='_blank') View my solution
|
||||||
|
|
||||||
br
|
br
|
||||||
- if (bonfires.length > 0)
|
if (bonfires.length > 0)
|
||||||
.col-sm-12
|
.col-sm-12
|
||||||
table.table.table-striped
|
table.table.table-striped
|
||||||
thead
|
thead
|
||||||
|
@ -94,13 +94,13 @@ block content
|
|||||||
if (user && user.sentSlackInvite)
|
if (user && user.sentSlackInvite)
|
||||||
.button-spacer
|
.button-spacer
|
||||||
.btn-group.input-group.btn-group-justified
|
.btn-group.input-group.btn-group-justified
|
||||||
label.btn.btn-success#i-want-help(disabled)
|
label.btn.btn-success#trigger-help-modal
|
||||||
i.fa.fa-medkit
|
i.fa.fa-medkit
|
||||||
| Help(disabled)
|
| Help
|
||||||
label.btn.btn-success#i-want-to-pair
|
label.btn.btn-success#trigger-pair-modal
|
||||||
i.fa.fa-user-plus
|
i.fa.fa-user-plus
|
||||||
| Pair
|
| Pair
|
||||||
label.btn.btn-success#report-issue
|
label.btn.btn-success#trigger-issue-modal
|
||||||
i.fa.fa-bug
|
i.fa.fa-bug
|
||||||
| Bug
|
| Bug
|
||||||
.button-spacer
|
.button-spacer
|
||||||
@ -136,20 +136,21 @@ block content
|
|||||||
.text-center
|
.text-center
|
||||||
.animated.zoomInDown.delay-half
|
.animated.zoomInDown.delay-half
|
||||||
span.completion-icon.ion-checkmark-circled.text-primary
|
span.completion-icon.ion-checkmark-circled.text-primary
|
||||||
- if (user)
|
if (user)
|
||||||
|
|
||||||
a.animated.fadeIn.btn.btn-lg.btn-primary.btn-block#next-courseware-button(name='_csrf', value=_csrf) Go to my next challenge (ctrl + enter)
|
a.animated.fadeIn.btn.btn-lg.btn-primary.btn-block#next-courseware-button(name='_csrf', value=_csrf) Go to my next challenge (ctrl + enter)
|
||||||
|
|
||||||
|
|
||||||
- if (user.progressTimestamps.length > 2)
|
if (user.progressTimestamps.length > 2)
|
||||||
a.animated.fadeIn.btn.btn-lg.btn-block.btn-twitter(target="_blank", href="https://twitter.com/intent/tweet?text=I%20just%20#{verb}%20%40FreeCodeCamp%20Bonfire:%20#{name}&url=http%3A%2F%2Ffreecodecamp.com/challenges/#{dashedName}&hashtags=LearnToCode, JavaScript")
|
a.animated.fadeIn.btn.btn-lg.btn-block.btn-twitter(target="_blank", href="https://twitter.com/intent/tweet?text=I%20just%20#{verb}%20%40FreeCodeCamp%20#{name}&url=http%3A%2F%2Ffreecodecamp.com/challenges/#{dashedName}&hashtags=LearnToCode, JavaScript")
|
||||||
i.fa.fa-twitter  
|
i.fa.fa-twitter  
|
||||||
= phrase
|
= phrase
|
||||||
- else
|
else
|
||||||
a.animated.fadeIn.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress
|
a.animated.fadeIn.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress
|
||||||
|
include ../partials/challenge-modals
|
||||||
script.
|
script.
|
||||||
var MDNlinks = !{JSON.stringify(MDNlinks)};
|
var MDNlinks = !{JSON.stringify(MDNlinks)};
|
||||||
if (!MDNlinks.length) {
|
if (!MDNlinks.length) {
|
||||||
$('#MDN-links').addClass('collapse');
|
$('#MDN-links').addClass('collapse');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ block content
|
|||||||
span.ion-arrow-up-b
|
span.ion-arrow-up-b
|
||||||
| Less information
|
| Less information
|
||||||
br
|
br
|
||||||
- if (user)
|
if (user)
|
||||||
a.btn.btn-primary.btn-big.btn-block#next-courseware-button
|
a.btn.btn-primary.btn-big.btn-block#next-courseware-button
|
||||||
| Go to my next challenge
|
| Go to my next challenge
|
||||||
br
|
br
|
||||||
@ -46,16 +46,16 @@ block content
|
|||||||
if (user.sentSlackInvite)
|
if (user.sentSlackInvite)
|
||||||
.button-spacer
|
.button-spacer
|
||||||
.btn-group.input-group.btn-group-justified
|
.btn-group.input-group.btn-group-justified
|
||||||
label.btn.btn-success#i-want-help(disabled)
|
label.btn.btn-success#trigger-help-modal
|
||||||
i.fa.fa-medkit
|
i.fa.fa-medkit
|
||||||
| Help(disabled)
|
| Help
|
||||||
label.btn.btn-success#report-issue
|
label.btn.btn-success#trigger-issue-modal
|
||||||
i.fa.fa-bug
|
i.fa.fa-bug
|
||||||
| Bug
|
| Bug
|
||||||
.button-spacer
|
.button-spacer
|
||||||
script.
|
script.
|
||||||
var userLoggedIn = true;
|
var userLoggedIn = true;
|
||||||
- else
|
else
|
||||||
a.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress
|
a.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress
|
||||||
script.
|
script.
|
||||||
var userLoggedIn = false;
|
var userLoggedIn = false;
|
||||||
@ -91,4 +91,5 @@ block content
|
|||||||
.animated.zoomInDown.delay-half
|
.animated.zoomInDown.delay-half
|
||||||
span.completion-icon.ion-checkmark-circled.text-primary
|
span.completion-icon.ion-checkmark-circled.text-primary
|
||||||
a.animated.fadeIn.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress
|
a.animated.fadeIn.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress
|
||||||
|
include ../partials/challenge-modals
|
||||||
script(src="/js/lib/coursewares/coursewaresHCJQFramework_0.1.7.js")
|
script(src="/js/lib/coursewares/coursewaresHCJQFramework_0.1.7.js")
|
||||||
|
@ -38,13 +38,13 @@ block content
|
|||||||
if (user && user.sentSlackInvite)
|
if (user && user.sentSlackInvite)
|
||||||
.button-spacer
|
.button-spacer
|
||||||
.btn-group.input-group.btn-group-justified
|
.btn-group.input-group.btn-group-justified
|
||||||
label.btn.btn-success#i-want-help
|
label.btn.btn-success#trigger-help-modal
|
||||||
i.fa.fa-medkit
|
i.fa.fa-medkit
|
||||||
| Help
|
| Help
|
||||||
label.btn.btn-success#i-want-to-pair
|
label.btn.btn-success#trigger-pair-modal
|
||||||
i.fa.fa-user-plus
|
i.fa.fa-user-plus
|
||||||
| Pair
|
| Pair
|
||||||
label.btn.btn-success#report-issue
|
label.btn.btn-success#trigger-issue-modal
|
||||||
i.fa.fa-bug
|
i.fa.fa-bug
|
||||||
| Bug
|
| Bug
|
||||||
.spacer
|
.spacer
|
||||||
@ -77,11 +77,12 @@ block content
|
|||||||
.text-center
|
.text-center
|
||||||
.animated.zoomInDown.delay-half
|
.animated.zoomInDown.delay-half
|
||||||
span.completion-icon.ion-checkmark-circled.text-primary
|
span.completion-icon.ion-checkmark-circled.text-primary
|
||||||
- if (user)
|
if (user)
|
||||||
a.animated.fadeIn.btn.btn-lg.btn-primary.btn-block#next-courseware-button(name='_csrf', value=_csrf, ng-disabled='completedWithForm.$invalid && existingUser.length > 0') Go to my next challenge (ctrl + enter)
|
a.animated.fadeIn.btn.btn-lg.btn-primary.btn-block#next-courseware-button(name='_csrf', value=_csrf, ng-disabled='completedWithForm.$invalid && existingUser.length > 0') Go to my next challenge (ctrl + enter)
|
||||||
- if (points && points > 2)
|
if (points && points > 2)
|
||||||
a.animated.fadeIn.btn.btn-lg.btn-block.btn-twitter(href="https://twitter.com/intent/tweet?text=I%20just%20#{verb}%20%40FreeCodeCamp%20Bonfire:%20#{name}&url=http%3A%2F%2Ffreecodecamp.com/bonfires/#{dashedName}&hashtags=LearnToCode, JavaScript" target="_blank")
|
a.animated.fadeIn.btn.btn-lg.btn-block.btn-twitter(href="https://twitter.com/intent/tweet?text=I%20just%20#{verb}%20%40FreeCodeCamp%20#{name}&url=http%3A%2F%2Ffreecodecamp.com/challenges/#{dashedName}&hashtags=LearnToCode, JavaScript" target="_blank")
|
||||||
i.fa.fa-twitter  
|
i.fa.fa-twitter  
|
||||||
= phrase
|
= phrase
|
||||||
- else
|
else
|
||||||
a.animated.fadeIn.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress
|
a.animated.fadeIn.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress
|
||||||
|
include ../partials/challenge-modals
|
||||||
|
@ -17,16 +17,16 @@ block content
|
|||||||
iframe.embed-responsive-item(src='//player.vimeo.com/video/#{video}')
|
iframe.embed-responsive-item(src='//player.vimeo.com/video/#{video}')
|
||||||
br
|
br
|
||||||
if (user)
|
if (user)
|
||||||
a.btn.btn-primary.btn-big.btn-block#completed-courseware I've completed this challenge (ctrl + enter)
|
a.btn.btn-primary.btn-big.btn-block#completed-courseware-editorless I've completed this challenge (ctrl + enter)
|
||||||
script.
|
script.
|
||||||
var userLoggedIn = true;
|
var userLoggedIn = true;
|
||||||
.button-spacer
|
.button-spacer
|
||||||
if (user.sentSlackInvite)
|
if (user.sentSlackInvite)
|
||||||
.btn-group.input-group.btn-group-justified
|
.btn-group.input-group.btn-group-justified
|
||||||
.btn.btn-success.btn-big#i-want-help-editorless(disabled)
|
.btn.btn-success.btn-big#trigger-help-editorless-modal
|
||||||
i.fa.fa-medkit
|
i.fa.fa-medkit
|
||||||
| Get help(disabled)
|
| Get help
|
||||||
.btn.btn-success.btn-big#report-issue
|
.btn.btn-success.btn-big#trigger-issue-modal
|
||||||
i.fa.fa-bug
|
i.fa.fa-bug
|
||||||
| Report a bug
|
| Report a bug
|
||||||
.button-spacer
|
.button-spacer
|
||||||
@ -41,22 +41,21 @@ block content
|
|||||||
var controlEnterHandler = function(e) {
|
var controlEnterHandler = function(e) {
|
||||||
$('body').unbind('keypress');
|
$('body').unbind('keypress');
|
||||||
if (e.ctrlKey && e.keyCode == 13) {
|
if (e.ctrlKey && e.keyCode == 13) {
|
||||||
$('#complete-courseware-dialog').modal('show');
|
$('#complete-courseware-editorless-dialog').modal('show');
|
||||||
} else {
|
} else {
|
||||||
$('body').bind('keypress', controlEnterHandler);
|
$('body').bind('keypress', controlEnterHandler);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var modalControlEnterHandler = function(e) {
|
var modalControlEnterHandler = function(e) {
|
||||||
$('#complete-courseware-dialog').unbind('keypress');
|
$('#complete-courseware-editorless-dialog').unbind('keypress');
|
||||||
if (e.ctrlKey && e.keyCode == 13) {
|
if (e.ctrlKey && e.keyCode == 13) {
|
||||||
$('#next-courseware-button').click();
|
$('#next-courseware-button').click();
|
||||||
} else {
|
} else {
|
||||||
$('#complete-courseware-dialog').bind('keypress', modalControlEnterHandler);
|
$('#complete-courseware-editorless-dialog').bind('keypress', modalControlEnterHandler);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#complete-courseware-editorless-dialog.modal(tabindex='-1')
|
||||||
#complete-courseware-dialog.modal(tabindex='-1')
|
|
||||||
.modal-dialog.animated.zoomIn.fast-animation
|
.modal-dialog.animated.zoomIn.fast-animation
|
||||||
.modal-content
|
.modal-content
|
||||||
.modal-header.challenge-list-header= compliment
|
.modal-header.challenge-list-header= compliment
|
||||||
@ -65,17 +64,17 @@ block content
|
|||||||
.text-center
|
.text-center
|
||||||
.animated.zoomInDown.delay-half
|
.animated.zoomInDown.delay-half
|
||||||
span.completion-icon.ion-checkmark-circled.text-primary
|
span.completion-icon.ion-checkmark-circled.text-primary
|
||||||
- if (user)
|
if (user)
|
||||||
a.animated.fadeIn.btn.btn-lg.btn-primary.btn-block#next-courseware-button(name='_csrf', value=_csrf) On to my next challenge (ctrl + enter)
|
a.animated.fadeIn.btn.btn-lg.btn-primary.btn-block#next-courseware-button(name='_csrf', value=_csrf) On to my next challenge (ctrl + enter)
|
||||||
script.
|
script.
|
||||||
$('#complete-courseware-dialog').bind('keypress', modalControlEnterHandler);
|
$('#complete-courseware-editorless-dialog').bind('keypress', modalControlEnterHandler);
|
||||||
|
|
||||||
- if (user.progressTimestamps.length > 2)
|
if (user.progressTimestamps.length > 2)
|
||||||
.button-spacer
|
.button-spacer
|
||||||
a.animated.fadeIn.btn.btn-lg.btn-block.btn-twitter(href="https://twitter.com/intent/tweet?text=I%20just%20#{verb}%20%40FreeCodeCamp%20Challenge:%20#{name}&url=http%3A%2F%2Ffreecodecamp.com/challenges/#{dashedName}&hashtags=LearnToCode, JavaScript" target="_blank")
|
a.animated.fadeIn.btn.btn-lg.btn-block.btn-twitter(href="https://twitter.com/intent/tweet?text=I%20just%20#{verb}%20%40FreeCodeCamp%20#{name}&url=http%3A%2F%2Ffreecodecamp.com/challenges/#{dashedName}&hashtags=LearnToCode, JavaScript" target="_blank")
|
||||||
i.fa.fa-twitter  
|
i.fa.fa-twitter  
|
||||||
= phrase
|
= phrase
|
||||||
- else
|
else
|
||||||
a.animated.fadeIn.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress
|
a.animated.fadeIn.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress
|
||||||
h1 #{name}
|
h1 #{name}
|
||||||
script.
|
script.
|
||||||
@ -84,3 +83,4 @@ block content
|
|||||||
var challenge_Id = !{JSON.stringify(challengeId)};
|
var challenge_Id = !{JSON.stringify(challengeId)};
|
||||||
var challenge_Name = !{JSON.stringify(name)};
|
var challenge_Name = !{JSON.stringify(name)};
|
||||||
var challengeType = !{JSON.stringify(challengeType)};
|
var challengeType = !{JSON.stringify(challengeType)};
|
||||||
|
include ../partials/challenge-modals
|
||||||
|
@ -21,13 +21,13 @@ block content
|
|||||||
if (user.sentSlackInvite)
|
if (user.sentSlackInvite)
|
||||||
.button-spacer
|
.button-spacer
|
||||||
.btn-group.input-group.btn-group-justified
|
.btn-group.input-group.btn-group-justified
|
||||||
.btn.btn-success.btn-big#i-want-help-editorless(disabled)
|
.btn.btn-success.btn-big#trigger-help-editorless-modal
|
||||||
i.fa.fa-medkit
|
i.fa.fa-medkit
|
||||||
| Help(disabled)
|
| Help
|
||||||
.btn.btn-success.btn-big#i-want-to-pair
|
.btn.btn-success.btn-big#trigger-pair-modal
|
||||||
i.fa.fa-user-plus
|
i.fa.fa-user-plus
|
||||||
| Pair
|
| Pair
|
||||||
.btn.btn-success.btn-big#report-issue
|
.btn.btn-success.btn-big#trigger-issue-modal
|
||||||
i.fa.fa-bug
|
i.fa.fa-bug
|
||||||
| Bug
|
| Bug
|
||||||
.button-spacer
|
.button-spacer
|
||||||
@ -69,7 +69,7 @@ block content
|
|||||||
.text-center
|
.text-center
|
||||||
.animated.zoomInDown.delay-half
|
.animated.zoomInDown.delay-half
|
||||||
span.completion-icon.ion-checkmark-circled.text-primary
|
span.completion-icon.ion-checkmark-circled.text-primary
|
||||||
- if (user)
|
if (user)
|
||||||
form.form-horizontal(novalidate='novalidate', name='completedWithForm')
|
form.form-horizontal(novalidate='novalidate', name='completedWithForm')
|
||||||
.form-group.text-center
|
.form-group.text-center
|
||||||
.col-xs-10.col-xs-offset-1.col-sm-8.col-sm-offset-2.col-md-8.col-md-offset-2.animated.fadeIn
|
.col-xs-10.col-xs-offset-1.col-sm-8.col-sm-offset-2.col-md-8.col-md-offset-2.animated.fadeIn
|
||||||
@ -91,13 +91,8 @@ block content
|
|||||||
a.animated.fadeIn.btn.btn-lg.btn-primary.btn-block#next-courseware-button(name='_csrf', value=_csrf, ng-disabled='completedWithForm.$invalid') Go to my next challenge (ctrl + enter)
|
a.animated.fadeIn.btn.btn-lg.btn-primary.btn-block#next-courseware-button(name='_csrf', value=_csrf, ng-disabled='completedWithForm.$invalid') Go to my next challenge (ctrl + enter)
|
||||||
script.
|
script.
|
||||||
$('#complete-zipline-or-basejump-dialog').on('keypress', modalControlEnterHandler);
|
$('#complete-zipline-or-basejump-dialog').on('keypress', modalControlEnterHandler);
|
||||||
|
|
||||||
if (user.progressTimestamps.length > 2)
|
|
||||||
.button-spacer
|
|
||||||
a.animated.fadeIn.btn.btn-lg.btn-block.btn-twitter(target="_blank")
|
|
||||||
i.fa.fa-twitter  
|
|
||||||
= phrase
|
|
||||||
else
|
else
|
||||||
a.animated.fadeIn.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress
|
a.animated.fadeIn.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress
|
||||||
script.
|
script.
|
||||||
$('body').on('keypress', controlEnterHandler);
|
$('body').on('keypress', controlEnterHandler);
|
||||||
|
include ../partials/challenge-modals
|
||||||
|
@ -4,7 +4,7 @@ block content
|
|||||||
if (user && user.progressTimestamps.length > 0)
|
if (user && user.progressTimestamps.length > 0)
|
||||||
.col-xs-12
|
.col-xs-12
|
||||||
.embed-responsive.embed-responsive-16by9
|
.embed-responsive.embed-responsive-16by9
|
||||||
iframe.embed-responsive-item(src='//player.vimeo.com/video/128853855')
|
iframe.embed-responsive-item(src='//player.vimeo.com/video/129168884')
|
||||||
br
|
br
|
||||||
h3 Note: If you're using Firefox and the buttons aren't working, do a full refresh (control + f5 on Windows and command + shift + r on Mac). We're working on this.
|
h3 Note: If you're using Firefox and the buttons aren't working, do a full refresh (control + f5 on Windows and command + shift + r on Mac). We're working on this.
|
||||||
h3 Note: If you've already completed the HTML, CSS, Bootstrap Waypoints, you do not need to do these new Waypoints.
|
h3 Note: If you've already completed the HTML, CSS, Bootstrap Waypoints, you do not need to do these new Waypoints.
|
||||||
|
33
views/jobs/directory.jade
Normal file
33
views/jobs/directory.jade
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
extends ../layout
|
||||||
|
block content
|
||||||
|
script.
|
||||||
|
var challengeName = 'Jobs View';
|
||||||
|
.row
|
||||||
|
|
||||||
|
.panel.panel-info
|
||||||
|
.panel-heading.text-center Junior JavaScript Engineer Jobs
|
||||||
|
.panel-body
|
||||||
|
.col-xs-12.col-sm-12.col-md-10.col-md-offset-1
|
||||||
|
h2.text-center We want all our campers to get awesome software engineer jobs.
|
||||||
|
h2.text-center
|
||||||
|
a(href='https://www.linkedin.com/groups?viewMembers=&gid=6966827&sik=1432338555021' target='_blank') Many already have
|
||||||
|
| .
|
||||||
|
p.text-center.large-p.hidden-xs.hidden-sm This is a small sampling of the 1,000s of junior software engineer jobs. Learn about the  
|
||||||
|
a(href='http://blog.freecodecamp.com/2014/10/the-real-reason-to-learn-mean-stack.html' target='_blank') the job market in aggregate
|
||||||
|
| .
|
||||||
|
.spacer
|
||||||
|
|
||||||
|
.text-center
|
||||||
|
a.btn.btn-primary.btn-big(href='/jobs-form') My organization is hiring software engineers
|
||||||
|
.spacer
|
||||||
|
.spacer
|
||||||
|
for job in jobs
|
||||||
|
.spacer
|
||||||
|
.row
|
||||||
|
.col-xs-12.col-sm-2
|
||||||
|
img.img-responsive.img-center(src=job.logoUrl)
|
||||||
|
.col-xs-12.col-sm-10
|
||||||
|
h2.negative-15= job.position
|
||||||
|
h3.negative-15= job.company
|
||||||
|
a.text-center.btn.btn-primary.btn-lg(href=job.postingUrl target='_blank') More info
|
||||||
|
.spacer
|
@ -1,65 +0,0 @@
|
|||||||
extends ../layout
|
|
||||||
block content
|
|
||||||
.jumbotron.text-center
|
|
||||||
h1.hug-top Here are some other solutions we recommend
|
|
||||||
.spacer
|
|
||||||
h2 Please note that Free Code Camp is not partnered with, nor do we receive a referral fee from, any of the following providers. We simply want to help guide you towards a solution for your organization.
|
|
||||||
h3 Skills-based Volunteer Organizations
|
|
||||||
ul
|
|
||||||
li
|
|
||||||
a(href='http://www.volunteermatch.com') Volunteer Match
|
|
||||||
li
|
|
||||||
a(href='http://www.catchafire.com') Catchafire
|
|
||||||
h3 DIY Websites
|
|
||||||
ul
|
|
||||||
li
|
|
||||||
a(href='http://www.wix.com') Wix
|
|
||||||
li
|
|
||||||
a(href='http://www.squarespace.com/') Square Space
|
|
||||||
|
|
||||||
h3 Donor and Volunteer Management Systems
|
|
||||||
ul
|
|
||||||
li
|
|
||||||
a(href='https://www.thedatabank.com/') The Data Bank
|
|
||||||
li
|
|
||||||
a(href='http://www.donorsnap.com/') DonorSnap
|
|
||||||
li
|
|
||||||
a(href='http://www.donorperfect.com/') Donor Perfect
|
|
||||||
li
|
|
||||||
a(href='https://www.blackbaud.com/fundraising-crm/etapestry-donor-management') eTapestry
|
|
||||||
li
|
|
||||||
a(href='http://www.z2systems.com/') NeonCRM
|
|
||||||
li
|
|
||||||
a(href='http://www.regpacks.com/volunteer-management/') Regpack
|
|
||||||
li
|
|
||||||
a(href='http://sumac.com/') Sumac
|
|
||||||
li
|
|
||||||
a(href='http://www.volgistics.com/') Volgistics
|
|
||||||
h3 Inventory Management Systems
|
|
||||||
ul
|
|
||||||
li
|
|
||||||
a(href='https://www.ezofficeinventory.com/industries/non-profits') EZ Office Inventory
|
|
||||||
li
|
|
||||||
a(href='https://www.ordoro.com') Ordoro
|
|
||||||
li
|
|
||||||
a(href='http://www.unleashedsoftware.com') Unleashed
|
|
||||||
h3 E-Learning platforms
|
|
||||||
ul
|
|
||||||
li
|
|
||||||
a(href='http://www.dokeos.com/') Dokeos
|
|
||||||
li
|
|
||||||
a(href='http://www.efrontlearning.net/') eFront
|
|
||||||
li
|
|
||||||
a(href='https://moodle.org/') Moodle
|
|
||||||
li
|
|
||||||
a(href='https://sakaiproject.org/') Sakai
|
|
||||||
h3 Community Management
|
|
||||||
ul
|
|
||||||
li
|
|
||||||
a(href='https://civicrm.org/') CiviCRM
|
|
||||||
li
|
|
||||||
a(href='http://tcmgr.com/') Total Community Manager
|
|
||||||
h3 Electronic Forms
|
|
||||||
ul
|
|
||||||
li
|
|
||||||
a(href='http://www.google.com/forms') Google Forms
|
|
52
views/partials/challenge-modals.jade
Normal file
52
views/partials/challenge-modals.jade
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
#pair-modal.modal(tabindex='-1')
|
||||||
|
.modal-dialog.animated.zoomIn.fast-animation
|
||||||
|
.modal-content
|
||||||
|
.modal-header.challenge-list-header Ready to pair program?
|
||||||
|
a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
|
||||||
|
.modal-body.text-center
|
||||||
|
h3 This will create a pair programming request.
|
||||||
|
h3 You'll need  
|
||||||
|
a(href='/field-guide/how-do-i-install-screenhero' target='_blank') Screen Hero
|
||||||
|
| .
|
||||||
|
h3 Other campers may then message you about pair programming.
|
||||||
|
a.btn.btn-lg.btn-primary.btn-block#i-want-to-pair(name='_csrf', value=_csrf) Create my pair request
|
||||||
|
a.btn.btn-lg.btn-info.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Cancel
|
||||||
|
|
||||||
|
#issue-modal.modal(tabindex='-1')
|
||||||
|
.modal-dialog.animated.zoomIn.fast-animation
|
||||||
|
.modal-content
|
||||||
|
.modal-header.challenge-list-header Did you find a bug?
|
||||||
|
a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
|
||||||
|
.modal-body.text-center
|
||||||
|
h3 This will open our GitHub Issues page.
|
||||||
|
h3 Please tell us how to reproduce the bug and link us to screen shots if possible.
|
||||||
|
a.btn.btn-lg.btn-primary.btn-block#report-issue(name='_csrf', value=_csrf) Create my GitHub issue
|
||||||
|
a.btn.btn-lg.btn-info.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Cancel
|
||||||
|
|
||||||
|
#help-modal.modal(tabindex='-1')
|
||||||
|
.modal-dialog.animated.zoomIn.fast-animation
|
||||||
|
.modal-content
|
||||||
|
.modal-header.challenge-list-header Need some help?
|
||||||
|
a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
|
||||||
|
.modal-body.text-center
|
||||||
|
h3 Remember to use  
|
||||||
|
a(href='/field-guide/how-do-i-get-help-when-i-get-stuck' target='_blank') RSAP
|
||||||
|
| .
|
||||||
|
h3 If you've already read the errors and searched Google, you should ask for help.
|
||||||
|
h3 This will open a help request in our Help chat room.
|
||||||
|
a.btn.btn-lg.btn-primary.btn-block#i-want-help(name='_csrf', value=_csrf) Ask for help
|
||||||
|
a.btn.btn-lg.btn-info.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Cancel
|
||||||
|
|
||||||
|
#help-editorless-modal.modal(tabindex='-1')
|
||||||
|
.modal-dialog.animated.zoomIn.fast-animation
|
||||||
|
.modal-content
|
||||||
|
.modal-header.challenge-list-header Need some help?
|
||||||
|
a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
|
||||||
|
.modal-body.text-center
|
||||||
|
h3 Remember to use  
|
||||||
|
a(href='/field-guide/how-do-i-get-help-when-i-get-stuck' target='_blank') RSAP
|
||||||
|
| .
|
||||||
|
h3 If you've already read the errors and searched Google, you should ask for help.
|
||||||
|
h3 This will open a help request in our Help chat room.
|
||||||
|
a.btn.btn-lg.btn-primary.btn-block#i-want-help-editorless(name='_csrf', value=_csrf) Ask for help
|
||||||
|
a.btn.btn-lg.btn-info.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Cancel
|
@ -1,16 +0,0 @@
|
|||||||
extends ../layout-wide
|
|
||||||
block content
|
|
||||||
.row
|
|
||||||
.col-xs-12.col-sm-8.col-sm-offset-2.text-center
|
|
||||||
h2 We want all our campers to get awesome software engineer jobs (
|
|
||||||
a(href='https://www.linkedin.com/groups?viewMembers=&gid=6966827&sik=1432338555021' target='_blank') and many already have
|
|
||||||
| ).
|
|
||||||
h3.hidden-xs.hidden-sm This is a small sampling of the 1,000s of junior software engineer jobs. Learn about the  
|
|
||||||
a(href='http://blog.freecodecamp.com/2014/10/the-real-reason-to-learn-mean-stack.html' target='_blank') the job market in aggregate
|
|
||||||
| .
|
|
||||||
.spacer
|
|
||||||
a.btn.btn-primary.btn-big(href='/jobs-form') My organization is hiring software engineers
|
|
||||||
.spacer
|
|
||||||
.embed-responsive.embed-responsive-4by3.hidden-xs.hidden-sm
|
|
||||||
iframe.embed-responsive-item(src="http://freecodecamp.simply-partner.com" scrolling="no")
|
|
||||||
.spacer
|
|
Reference in New Issue
Block a user