make new landing pages and forms for project managers and nonprofits
This commit is contained in:
60
app.js
60
app.js
@ -39,7 +39,6 @@ var express = require('express'),
|
|||||||
homeController = require('./controllers/home'),
|
homeController = require('./controllers/home'),
|
||||||
resourcesController = require('./controllers/resources'),
|
resourcesController = require('./controllers/resources'),
|
||||||
userController = require('./controllers/user'),
|
userController = require('./controllers/user'),
|
||||||
contactController = require('./controllers/contact'),
|
|
||||||
nonprofitController = require('./controllers/nonprofits'),
|
nonprofitController = require('./controllers/nonprofits'),
|
||||||
bonfireController = require('./controllers/bonfire'),
|
bonfireController = require('./controllers/bonfire'),
|
||||||
coursewareController = require('./controllers/courseware'),
|
coursewareController = require('./controllers/courseware'),
|
||||||
@ -263,6 +262,24 @@ app.get('/chat', resourcesController.chat);
|
|||||||
|
|
||||||
app.get('/twitch', resourcesController.twitch);
|
app.get('/twitch', resourcesController.twitch);
|
||||||
|
|
||||||
|
// Agile Project Manager Onboarding
|
||||||
|
|
||||||
|
app.get('/pmi-acp-agile-project-managers', resourcesController.agileProjectManagers);
|
||||||
|
|
||||||
|
app.get('/agile', function(req, res) {
|
||||||
|
res.redirect(301, '/pmi-acp-agile-project-managers');
|
||||||
|
});
|
||||||
|
|
||||||
|
app.get('/pmi-acp-agile-project-managers-form', resourcesController.agileProjectManagersForm);
|
||||||
|
|
||||||
|
// Nonprofit Onboarding
|
||||||
|
|
||||||
|
app.get('/nonprofits', resourcesController.nonprofits);
|
||||||
|
|
||||||
|
app.get('/nonprofits-form', resourcesController.nonprofitsForm);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
app.get('/map', challengeMapController.challengeMap);
|
app.get('/map', challengeMapController.challengeMap);
|
||||||
|
|
||||||
app.get('/live-pair-programming', function(req, res) {
|
app.get('/live-pair-programming', function(req, res) {
|
||||||
@ -330,59 +347,18 @@ app.get('/email-signin', userController.getEmailSignin);
|
|||||||
app.post('/email-signup', userController.postEmailSignup);
|
app.post('/email-signup', userController.postEmailSignup);
|
||||||
|
|
||||||
app.post('/email-signin', userController.postSignin);
|
app.post('/email-signin', userController.postSignin);
|
||||||
app.get('/nonprofits', contactController.getNonprofitsForm);
|
|
||||||
app.post('/nonprofits', contactController.postNonprofitsForm);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Nonprofit Project routes.
|
* Nonprofit Project routes.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
app.get('/nonprofits', nonprofitController.nonprofitsHome);
|
|
||||||
|
|
||||||
app.get('/nonprofits/directory', nonprofitController.nonprofitsDirectory);
|
app.get('/nonprofits/directory', nonprofitController.nonprofitsDirectory);
|
||||||
|
|
||||||
app.get('/nonprofits/are-you-with-a-registered-nonprofit', nonprofitController.areYouWithARegisteredNonprofit);
|
|
||||||
|
|
||||||
app.get('/nonprofits/are-there-people-that-are-already-benefiting-from-your-services', nonprofitController.areTherePeopleThatAreAlreadyBenefitingFromYourServices);
|
|
||||||
|
|
||||||
app.get('/nonprofits/in-exchange-we-ask', nonprofitController.inExchangeWeAsk);
|
|
||||||
|
|
||||||
app.get('/nonprofits/ok-with-javascript', nonprofitController.okWithJavaScript);
|
|
||||||
|
|
||||||
app.get('/nonprofits/how-can-free-code-camp-help-you', nonprofitController.howCanFreeCodeCampHelpYou);
|
|
||||||
|
|
||||||
app.get('/nonprofits/what-does-your-nonprofit-do', nonprofitController.whatDoesYourNonprofitDo);
|
|
||||||
|
|
||||||
app.get('/nonprofits/link-us-to-your-website', nonprofitController.linkUsToYourWebsite);
|
|
||||||
|
|
||||||
app.get('/nonprofits/tell-us-your-name', nonprofitController.tellUsYourName);
|
|
||||||
|
|
||||||
app.get('/nonprofits/tell-us-your-email', nonprofitController.tellUsYourEmail);
|
|
||||||
|
|
||||||
app.get('/nonprofits/your-nonprofit-project-application-has-been-submitted', nonprofitController.yourNonprofitProjectApplicationHasBeenSubmitted);
|
|
||||||
|
|
||||||
app.get('/nonprofits/other-solutions', nonprofitController.otherSolutions);
|
|
||||||
|
|
||||||
app.get('/nonprofits/getNonprofitList', nonprofitController.showAllNonprofits);
|
|
||||||
|
|
||||||
app.get('/nonprofits/interested-in-nonprofit/:nonprofitName', nonprofitController.interestedInNonprofit);
|
|
||||||
|
|
||||||
app.get(
|
app.get(
|
||||||
'/nonprofits/:nonprofitName',
|
'/nonprofits/:nonprofitName',
|
||||||
nonprofitController.returnIndividualNonprofit
|
nonprofitController.returnIndividualNonprofit
|
||||||
);
|
);
|
||||||
|
|
||||||
app.get(
|
|
||||||
'/done-with-first-100-hours',
|
|
||||||
passportConf.isAuthenticated,
|
|
||||||
contactController.getDoneWithFirst100Hours
|
|
||||||
);
|
|
||||||
app.post(
|
|
||||||
'/done-with-first-100-hours',
|
|
||||||
passportConf.isAuthenticated,
|
|
||||||
contactController.postDoneWithFirst100Hours
|
|
||||||
);
|
|
||||||
|
|
||||||
app.post(
|
app.post(
|
||||||
'/update-progress',
|
'/update-progress',
|
||||||
passportConf.isAuthenticated,
|
passportConf.isAuthenticated,
|
||||||
|
@ -1,78 +0,0 @@
|
|||||||
var nodemailer = require('nodemailer'),
|
|
||||||
debug = require('debug')('freecc:cntr:contact'),
|
|
||||||
secrets = require('../config/secrets');
|
|
||||||
|
|
||||||
var transporter = nodemailer.createTransport({
|
|
||||||
service: 'Mandrill',
|
|
||||||
auth: {
|
|
||||||
user: secrets.mandrill.user,
|
|
||||||
pass: secrets.mandrill.password
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
/**
|
|
||||||
* GET /contact
|
|
||||||
* Contact form page.
|
|
||||||
*/
|
|
||||||
|
|
||||||
getNonprofitsForm: function(req, res) {
|
|
||||||
res.render('contact/nonprofits', {
|
|
||||||
title: 'Free Code Work for Nonprofits Project Submission Page'
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* POST /contact
|
|
||||||
* Send a contact form via Nodemailer.
|
|
||||||
*/
|
|
||||||
|
|
||||||
postNonprofitsForm: function(req, res) {
|
|
||||||
var mailOptions = {
|
|
||||||
to: 'team@freecodecamp.com',
|
|
||||||
name: req.body.name,
|
|
||||||
from: req.body.email,
|
|
||||||
subject: 'CodeNonprofit Project Idea from ' + req.body.name,
|
|
||||||
text: req.body.message
|
|
||||||
};
|
|
||||||
|
|
||||||
transporter.sendMail(mailOptions, function (err) {
|
|
||||||
if (err) {
|
|
||||||
req.flash('errors', {msg: err.message});
|
|
||||||
return res.redirect('/nonprofits');
|
|
||||||
}
|
|
||||||
req.flash('success', {msg: 'Email has been sent successfully!'});
|
|
||||||
res.redirect('/nonprofits');
|
|
||||||
});
|
|
||||||
},
|
|
||||||
|
|
||||||
getDoneWithFirst100Hours: function(req, res) {
|
|
||||||
if (req.user.points >= 53) {
|
|
||||||
res.render('contact/done-with-first-100-hours', {
|
|
||||||
title: 'Congratulations on finishing the first 100 hours of Free Code Camp!'
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
req.flash('errors', {msg: 'Hm... have you finished all the challenges?'});
|
|
||||||
res.redirect('/');
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
postDoneWithFirst100Hours: function(req, res) {
|
|
||||||
var mailOptions = {
|
|
||||||
to: 'team@freecodecamp.com',
|
|
||||||
name: 'Completionist',
|
|
||||||
from: req.body.email,
|
|
||||||
subject: 'Camper at ' + req.body.email + ' has completed the first 100 hours',
|
|
||||||
text: ''
|
|
||||||
};
|
|
||||||
|
|
||||||
transporter.sendMail(mailOptions, function (err) {
|
|
||||||
if (err) {
|
|
||||||
req.flash('errors', {msg: err.message});
|
|
||||||
return res.redirect('/done-with-first-100-hours');
|
|
||||||
}
|
|
||||||
req.flash('success', {msg: 'Email has been sent successfully!'});
|
|
||||||
res.redirect('/nonprofit-project-instructions');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
@ -6,12 +6,6 @@ var async = require('async'),
|
|||||||
debug = require('debug')('freecc:cntr:nonprofits'),
|
debug = require('debug')('freecc:cntr:nonprofits'),
|
||||||
R = require('ramda');
|
R = require('ramda');
|
||||||
|
|
||||||
exports.nonprofitsHome = function(req, res) {
|
|
||||||
res.render('nonprofits/home', {
|
|
||||||
title: 'A guide to our Nonprofit Projects'
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
exports.nonprofitsDirectory = function(req, res) {
|
exports.nonprofitsDirectory = function(req, res) {
|
||||||
Nonprofit.find({estimatedHours: { $gt: 0 } }, function(err, nonprofits) {
|
Nonprofit.find({estimatedHours: { $gt: 0 } }, function(err, nonprofits) {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
@ -155,6 +155,30 @@ module.exports = {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
nonprofits: function nonprofits(req, res) {
|
||||||
|
res.render('resources/nonprofits', {
|
||||||
|
title: 'A guide to our Nonprofit Projects'
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
nonprofitsForm: function nonprofitsForm(req, res) {
|
||||||
|
res.render('resources/nonprofits-form', {
|
||||||
|
title: 'A guide to our Nonprofit Projects'
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
agileProjectManagers: function agileProjectManagers(req, res) {
|
||||||
|
res.render('resources/pmi-acp-agile-project-managers', {
|
||||||
|
title: 'Get Agile Project Management Experience for the PMI-ACP'
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
|
agileProjectManagersForm: function agileProjectManagersForm(req, res) {
|
||||||
|
res.render('resources/pmi-acp-agile-project-managers-form', {
|
||||||
|
title: 'Get Agile Project Management Experience for the PMI-ACP'
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
twitch: function twitch(req, res) {
|
twitch: function twitch(req, res) {
|
||||||
res.render('resources/twitch', {
|
res.render('resources/twitch', {
|
||||||
title: "Enter Free Code Camp's Chat Rooms"
|
title: "Enter Free Code Camp's Chat Rooms"
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
extends ../layout
|
|
||||||
block content
|
|
||||||
.jumbotron.text-center
|
|
||||||
h1.animated.lightSpeedIn Congratulations!
|
|
||||||
.animated.fadeIn.delay-2
|
|
||||||
h2 You've completed the first 100 hours of Free Code Camp!
|
|
||||||
.animated.fadeIn.delay-4
|
|
||||||
h3 Now you're ready to continue your learning by building solutions for nonprofits!
|
|
||||||
h3 First, please enter your email below.
|
|
||||||
br
|
|
||||||
form.form-horizontal(role='form', action="/done-with-first-100-hours/", method='POST', novalidate='novalidate', name='doneWithFirst100HoursForm')
|
|
||||||
input(type='hidden', name='_csrf', value=_csrf)
|
|
||||||
.form-group
|
|
||||||
label(class='col-sm-3 control-label', for='email') Your email *
|
|
||||||
.col-sm-8
|
|
||||||
input.form-control(type='text', name='email', id='email', autocomplete="off", ng-model='email', required='required', ng-keypress='')
|
|
||||||
.col-sm-8.col-sm-offset-3(ng-cloak, ng-show="doneWithFirst100HoursForm.$error.email && !doneWithFirst100HoursForm.email.$pristine")
|
|
||||||
alert(type='danger')
|
|
||||||
span.ion-close-circled
|
|
||||||
| Please enter a valid email format.
|
|
||||||
.col-sm-8.col-sm-offset-3(ng-cloak, ng-show="doneWithFirst100HoursForm.email.$invalid && doneWithFirst100HoursForm.email.$error.required && !doneWithFirst100HoursForm.email.$pristine")
|
|
||||||
alert(type='danger')
|
|
||||||
span.ion-close-circled(id='#email-error').
|
|
||||||
Your email is required.
|
|
||||||
.form-group
|
|
||||||
.col-sm-offset-2.col-sm-8
|
|
||||||
button.btn.btn-primary(type='submit', ng-disabled='doneWithFirst100HoursForm.$invalid')
|
|
||||||
span.ion-paper-airplane
|
|
||||||
| Submit
|
|
@ -1,90 +0,0 @@
|
|||||||
extends ../layout
|
|
||||||
|
|
||||||
block content
|
|
||||||
.jumbotron
|
|
||||||
.text-center
|
|
||||||
h1.nonprofit-landing.hug-top Get pro bono code for your nonprofit
|
|
||||||
.big-break
|
|
||||||
h2 Our process:
|
|
||||||
.row
|
|
||||||
.col-xs-12.col-sm-12.col-md-4
|
|
||||||
h3.nowrap Your idea
|
|
||||||
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_portfolio.svg.gz', title='Get great references and connections to help you get a job')
|
|
||||||
p.landing-p You tell us how we can help you.
|
|
||||||
.col-xs-12.col-sm-12.col-md-4
|
|
||||||
h3.nowrap Our team
|
|
||||||
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_nonprofits.svg.gz', title='Build a portfolio of apps for nonprofits')
|
|
||||||
p.landing-p We'll hand pick developers and a project manager.
|
|
||||||
.col-xs-12.col-sm-12.col-md-4
|
|
||||||
h3.nowrap Your solution
|
|
||||||
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_connect.svg.gz', title='Help nonprofits')
|
|
||||||
p.landing-p Together we'll set milestones and complete your project.
|
|
||||||
.big-break
|
|
||||||
h2 Solutions we can help you build:
|
|
||||||
.text-center.negative-35
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-android-globe
|
|
||||||
h2.black-text Websites
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-card
|
|
||||||
h2.black-text Donation Systems
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-android-calendar
|
|
||||||
h2.black-text Volunteer Systems
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-ios-box
|
|
||||||
h2.black-text Inventory Systems
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-university
|
|
||||||
h2.black-text E-learning Platforms
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-ios-list
|
|
||||||
h2.black-text Web Forms
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-ios-people
|
|
||||||
h2.black-text Community Tools
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-settings
|
|
||||||
h2.black-text ...and other tools
|
|
||||||
br
|
|
||||||
br
|
|
||||||
.big-break
|
|
||||||
|
|
||||||
script.
|
|
||||||
challengeName = 'Home'
|
|
||||||
.big-break
|
|
||||||
h3 Fill in this form. We'll get back to you within 48 hours.
|
|
||||||
h4
|
|
||||||
form.form-horizontal(role='form', action="/nonprofits/", method='POST', novalidate='novalidate', name='nonprofitForm')
|
|
||||||
input(type='hidden', name='_csrf', value=_csrf)
|
|
||||||
.form-group
|
|
||||||
label(class='col-sm-2 control-label', for='name') Your name *
|
|
||||||
.col-sm-8
|
|
||||||
input.form-control(type='text', name='name', id='name', autocomplete="off", ng-model='name', required='required')
|
|
||||||
.col-sm-8.col-sm-offset-2(ng-cloak, ng-show="nonprofitForm.name.$invalid && nonprofitForm.name.$error.required && !nonprofitForm.name.$pristine")
|
|
||||||
alert(type='danger')
|
|
||||||
span.ion-close-circled(id='#name-error')
|
|
||||||
| Your name is required.
|
|
||||||
.form-group
|
|
||||||
label(class='col-sm-2 control-label', for='email') Your email *
|
|
||||||
.col-sm-8
|
|
||||||
input.form-control(type='text', name='email', id='email', autocomplete="off", ng-model='email', required='required')
|
|
||||||
.col-sm-8.col-sm-offset-2(ng-cloak, ng-show="nonprofitForm.email.$invalid && nonprofitForm.email.$error.required && !nonprofitForm.email.$pristine")
|
|
||||||
alert(type='danger')
|
|
||||||
span.ion-close-circled(id='#email-error').
|
|
||||||
Your email is required.
|
|
||||||
.form-group
|
|
||||||
label(class='col-sm-2 control-label', for='message') Briefly describe what problem you need to solve, and for whom. *
|
|
||||||
.col-sm-8
|
|
||||||
textarea.form-control(type='text', name='message', id='message', rows='7', autocomplete="off", ng-model='message', required='required')
|
|
||||||
.col-sm-8.col-sm-offset-2(ng-cloak, ng-show="nonprofitForm.message.$invalid && nonprofitForm.message.$error.required && !nonprofitForm.message.$pristine")
|
|
||||||
alert(type='danger')
|
|
||||||
span.ion-close-circled(id='#message-error')
|
|
||||||
| Your message is required.
|
|
||||||
.form-group
|
|
||||||
.col-sm-offset-2.col-sm-8
|
|
||||||
button.btn.btn-primary(type='submit', ng-disabled='nonprofitForm.$invalid')
|
|
||||||
span.ion-paper-airplane
|
|
||||||
| Submit
|
|
||||||
script.
|
|
||||||
var challengeName = 'Non-profit Interest'
|
|
@ -1,12 +0,0 @@
|
|||||||
extends ../layout
|
|
||||||
block content
|
|
||||||
.jumbotron.text-center
|
|
||||||
h1.hug-top Nonprofit Sign Up
|
|
||||||
include ../partials/nonprofit-application-progress-bar
|
|
||||||
h2 We build solutions for nonprofits who are already serving a need. Are there people who already benefit from your services?
|
|
||||||
.spacer
|
|
||||||
.row
|
|
||||||
.col-xs-6
|
|
||||||
a.btn.btn-primary.btn-big.btn-block(href='/nonprofits/ok-with-javascript') Yes
|
|
||||||
.col-xs-6
|
|
||||||
a.btn.btn-warning.btn-big.btn-block(href='/nonprofits/other-solutions') No
|
|
@ -1,12 +0,0 @@
|
|||||||
extends ../layout
|
|
||||||
block content
|
|
||||||
.jumbotron.text-center
|
|
||||||
h1.hug-top Nonprofit Sign Up
|
|
||||||
include ../partials/nonprofit-application-progress-bar
|
|
||||||
h2 Do you represent a nonprofit organization that is registered with your government?
|
|
||||||
.spacer
|
|
||||||
.row
|
|
||||||
.col-xs-6
|
|
||||||
a.btn.btn-primary.btn-big.btn-block(href='/nonprofits/are-there-people-that-are-already-benefiting-from-your-services') Yes
|
|
||||||
.col-xs-6
|
|
||||||
a.btn.btn-warning.btn-big.btn-block(href='/nonprofits/other-solutions') No
|
|
@ -1,83 +0,0 @@
|
|||||||
extends ../layout
|
|
||||||
block content
|
|
||||||
.jumbotron
|
|
||||||
.text-center
|
|
||||||
h2.nonprofit-landing.hug-top We'll code for your nonprofit, pro bono
|
|
||||||
.big-break
|
|
||||||
h2 Some of our success stories
|
|
||||||
.row
|
|
||||||
.col-xs-12.col-sm-12.col-md-4
|
|
||||||
img.img-responsive.testimonial-image.img-center(src="https://s3.amazonaws.com/freecodecamp/testimonial-jen.jpg", alt="@jenthebest's testimonial image")
|
|
||||||
.testimonial-copy Getting back on track with Free Code Camp and committing to a new career in 2015!
|
|
||||||
h3 - @jenbestyoga
|
|
||||||
.col-xs-12.col-sm-12.col-md-4
|
|
||||||
img.img-responsive.testimonial-image.img-center(src="https://s3.amazonaws.com/freecodecamp/testimonial-tate.jpg", alt="@TateThurston's testimonial image")
|
|
||||||
.testimonial-copy Just built my company's website with skills I've learned from Free Code Camp!
|
|
||||||
h3 - @TateThurston
|
|
||||||
.col-xs-12.col-sm-12.col-md-4
|
|
||||||
img.img-responsive.testimonial-image.img-center(src="https://s3.amazonaws.com/freecodecamp/testimonial-cynthia.jpg", alt="@cynthialanel's testimonial image")
|
|
||||||
.testimonial-copy I'm currently working through Free Code Camp to improve my JavaScript. The community is very welcoming!
|
|
||||||
h3 - @cynthialanel
|
|
||||||
.big-break
|
|
||||||
a.btn.btn-cta.signup-btn(href="/nonprofits/are-you-with-a-registered-nonprofit") Get pro bono help for my nonprofit
|
|
||||||
.big-break
|
|
||||||
h2 Our process
|
|
||||||
.row
|
|
||||||
.col-xs-12.col-sm-12.col-md-4
|
|
||||||
h3.nowrap Your idea
|
|
||||||
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_portfolio.svg.gz', title='Get great references and connections to help you get a job')
|
|
||||||
p.landing-p You tell us how we can help you.
|
|
||||||
.col-xs-12.col-sm-12.col-md-4
|
|
||||||
h3.nowrap Our team
|
|
||||||
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_nonprofits.svg.gz', title='Build a portfolio of apps for nonprofits')
|
|
||||||
p.landing-p We'll hand pick developers and a project manager.
|
|
||||||
.col-xs-12.col-sm-12.col-md-4
|
|
||||||
h3.nowrap Your solution
|
|
||||||
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_connect.svg.gz', title='Help nonprofits')
|
|
||||||
p.landing-p Together we'll set milestones and complete your project.
|
|
||||||
.big-break
|
|
||||||
h2 Solutions we can help you build:
|
|
||||||
.text-center.negative-35
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-android-globe
|
|
||||||
h2.black-text Websites
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-card
|
|
||||||
h2.black-text Donation Systems
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-android-calendar
|
|
||||||
h2.black-text Volunteer Systems
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-ios-box
|
|
||||||
h2.black-text Inventory Systems
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-university
|
|
||||||
h2.black-text E-learning Platforms
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-ios-list
|
|
||||||
h2.black-text Web Forms
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-ios-people
|
|
||||||
h2.black-text Community Tools
|
|
||||||
.col-xs-12.col-sm-12.col-md-3
|
|
||||||
.landing-skill-icon.ion-settings
|
|
||||||
h2.black-text ...and other tools
|
|
||||||
br
|
|
||||||
br
|
|
||||||
.big-break
|
|
||||||
h2 Why you should join our community right now:
|
|
||||||
h3.col-xs-offset-0.col-sm-offset-1
|
|
||||||
ul.text-left
|
|
||||||
li.ion-code   We're thousands of professionals, all learning to code together
|
|
||||||
li.ion-code   We're building projects for dozens of nonprofits
|
|
||||||
li.ion-code   Our community is 100% free and open source
|
|
||||||
li.ion-code   You'll learn Full Stack JavaScript and become a Software Engineer
|
|
||||||
li.ion-code   You'll work through our focused, interactive courses and tutorials
|
|
||||||
li.ion-code   You'll learn to code at your own pace, in your browser or on your phone
|
|
||||||
li.ion-code   You'll become qualified for thousands of jobs currently going unfilled
|
|
||||||
li.ion-code   You can get help in real time from our community chat rooms and forum
|
|
||||||
li.ion-code   We all share one common goal: to boost our careers with code
|
|
||||||
.big-break
|
|
||||||
a.btn.btn-cta.signup-btn(href="/nonprofits/are-you-with-a-registered-nonprofit") Get pro bono help for my nonprofit
|
|
||||||
script.
|
|
||||||
challengeName = 'Home'
|
|
@ -1,33 +0,0 @@
|
|||||||
extends ../layout
|
|
||||||
block content
|
|
||||||
.jumbotron.text-center
|
|
||||||
h1.hug-top Nonprofit Sign Up
|
|
||||||
include ../partials/nonprofit-application-progress-bar
|
|
||||||
h2 How can Free Code Camp help you?
|
|
||||||
.text-left.form-inline
|
|
||||||
h3.col-xs-12.col-sm-offset-5.checkbox-table
|
|
||||||
.col-xs-12
|
|
||||||
input.checkbox(type='checkbox', id='website')
|
|
||||||
label.ion-android-globe Websites
|
|
||||||
.col-xs-12
|
|
||||||
input.checkbox(type='checkbox', id='donation')
|
|
||||||
label.ion-card Donation Systems
|
|
||||||
.col-xs-12
|
|
||||||
input.checkbox(type='checkbox', id='volunteer')
|
|
||||||
label.ion-android-calendar Volunteer Systems
|
|
||||||
.col-xs-12
|
|
||||||
input.checkbox(type='checkbox', id='inventory')
|
|
||||||
label.ion-ios-box Inventory Systems
|
|
||||||
.col-xs-12
|
|
||||||
input.checkbox(type='checkbox', id='eLearning')
|
|
||||||
label.ion-university E-learning Platforms
|
|
||||||
.col-xs-12
|
|
||||||
input.checkbox(type='checkbox', id='form')
|
|
||||||
label.ion-ios-list Web Forms
|
|
||||||
.col-xs-12
|
|
||||||
input.checkbox(type='checkbox', id='community')
|
|
||||||
label.ion-ios-people Community Tools
|
|
||||||
.col-xs-12
|
|
||||||
input.checkbox(type='checkbox', id='other')
|
|
||||||
label.ion-settings Other tools
|
|
||||||
button#next-step.btn.btn-primary.btn-big.btn-block(type='submit') I've selected all that apply and am ready to move on
|
|
@ -1,17 +0,0 @@
|
|||||||
extends ../layout
|
|
||||||
block content
|
|
||||||
.jumbotron
|
|
||||||
h1.hug-top.text-center Nonprofit Sign Up
|
|
||||||
include ../partials/nonprofit-application-progress-bar
|
|
||||||
h2 Great! In exchange for our help, we ask only that you:
|
|
||||||
h3
|
|
||||||
ol
|
|
||||||
li Appoint one principal stakeholder to serve on behalf of your organization.
|
|
||||||
li Communicate with our campers on a regular basis, to answer questions and provide them with direction.
|
|
||||||
li Commit to using the solution that our campers build for your nonprofit.
|
|
||||||
.spacer
|
|
||||||
.row
|
|
||||||
.col-xs-6
|
|
||||||
a.btn.btn-primary.btn-big.btn-block(href='/nonprofits/how-can-free-code-camp-help-you') Sounds good!
|
|
||||||
.col-xs-6
|
|
||||||
a.btn.btn-warning.btn-big.btn-block(href='/nonprofits/other-solutions') This might not be for us.
|
|
@ -1,14 +0,0 @@
|
|||||||
extends ../layout
|
|
||||||
block content
|
|
||||||
.jumbotron.text-center
|
|
||||||
h1.hug-top Nonprofit Sign Up
|
|
||||||
include ../partials/nonprofit-application-progress-bar
|
|
||||||
h2 Link us to the website, blog, or social media page that best represents your organization.
|
|
||||||
.spacer
|
|
||||||
form(role='form', method='GET', action="/nonprofits/tell-us-your-email/?" + existingParams)
|
|
||||||
input(type='hidden', name='_csrf', value=_csrf)
|
|
||||||
.formgroup
|
|
||||||
.input-group
|
|
||||||
input.form-control.big-text-field.field-responsive(type='text', name='link', autocomplete='off', maxlength='500', autofocus='')
|
|
||||||
span.input-group-btn
|
|
||||||
button.btn.btn-big.btn-primary.btn-responsive Submit
|
|
@ -1,12 +0,0 @@
|
|||||||
extends ../layout
|
|
||||||
block content
|
|
||||||
.jumbotron.text-center
|
|
||||||
h1.hug-top Nonprofit Sign Up
|
|
||||||
include ../partials/nonprofit-application-progress-bar
|
|
||||||
h2 Our campers are learning to code using modern full stack JavaScript technologies like Node.js. We do not build or maintain Wordpress, Drupal, or other non-JavaScript based frameworks.
|
|
||||||
.spacer
|
|
||||||
.row
|
|
||||||
.col-xs-6
|
|
||||||
a.btn.btn-primary.btn-big.btn-block(href='/nonprofits/in-exchange-we-ask') Sounds good!
|
|
||||||
.col-xs-6
|
|
||||||
a.btn.btn-warning.btn-big.btn-block(href='/nonprofits/other-solutions') This might not be for us.
|
|
@ -1,14 +0,0 @@
|
|||||||
extends ../layout
|
|
||||||
block content
|
|
||||||
.jumbotron.text-center
|
|
||||||
h1.hug-top Nonprofit Sign Up
|
|
||||||
include ../partials/nonprofit-application-progress-bar
|
|
||||||
h2 Please tell us your email
|
|
||||||
.spacer
|
|
||||||
form(role='form', method='GET', novalidate='novalidate', name='nonprofitForm', action="/nonprofits/tell-us-your-name/")
|
|
||||||
input(type='hidden', name='_csrf', value=_csrf)
|
|
||||||
.formgroup
|
|
||||||
.input-group
|
|
||||||
input.form-control.big-text-field.field-responsive(type='text', name='email', autocomplete='off', maxlength='500', autofocus='')
|
|
||||||
span.input-group-btn
|
|
||||||
button.btn.btn-big.btn-primary.btn-responsive Submit
|
|
@ -1,13 +0,0 @@
|
|||||||
extends ../layout
|
|
||||||
block content
|
|
||||||
.jumbotron.text-center
|
|
||||||
h1.hug-top Nonprofit Sign Up
|
|
||||||
include ../partials/nonprofit-application-progress-bar
|
|
||||||
h2 Please tell us your name
|
|
||||||
.spacer
|
|
||||||
form(role='form', method='POST', novalidate='novalidate', name='nonprofitForm', action="/nonprofits/finish-application/")
|
|
||||||
.formgroup
|
|
||||||
.input-group
|
|
||||||
input.form-control.big-text-field.field-responsive(type='text', name='name', autocomplete='off', maxlength='140', autofocus='')
|
|
||||||
span.input-group-btn
|
|
||||||
button.btn.btn-big.btn-primary.btn-responsive Submit
|
|
@ -1,28 +0,0 @@
|
|||||||
extends ../layout
|
|
||||||
block content
|
|
||||||
.jumbotron.text-center
|
|
||||||
h1.hug-top Nonprofit Sign Up
|
|
||||||
include ../partials/nonprofit-application-progress-bar
|
|
||||||
h2 In 140 characters or less, what does your nonprofit do? For whom?
|
|
||||||
.spacer
|
|
||||||
form(role='form', method='GET', action="/nonprofits/link-us-to-your-website/")
|
|
||||||
input(type='hidden', name='_csrf', value=_csrf)
|
|
||||||
.formgroup
|
|
||||||
.input-group
|
|
||||||
input.form-control.big-text-field.field-responsive#what-does-the-nonprofit-do(type='text', maxlength='140', autofocus='', autocomplete='off', name='mission')
|
|
||||||
span.input-group-btn
|
|
||||||
button.btn.btn-big.btn-primary.btn-responsive(href='/nonprofits/link-us-to-your-website') Submit
|
|
||||||
.text-left
|
|
||||||
span#what-does-the-nonprofit-do-feedback
|
|
||||||
|
|
||||||
script.
|
|
||||||
var text_max = 140;
|
|
||||||
$('#what-does-the-nonprofit-do-feedback').html(text_max + ' characters remaining');
|
|
||||||
$('#what-does-the-nonprofit-do').keyup(function (e) {
|
|
||||||
if (e.which === 13 || e === 13) {
|
|
||||||
$('#submit-comment-to-comment').click();
|
|
||||||
}
|
|
||||||
var text_length = $('#what-does-the-nonprofit-do').val().length;
|
|
||||||
var text_remaining = text_max - text_length;
|
|
||||||
$('#what-does-the-nonprofit-do-feedback').html(text_remaining + ' characters remaining');
|
|
||||||
});
|
|
@ -1,6 +0,0 @@
|
|||||||
extends ../layout
|
|
||||||
block content
|
|
||||||
.jumbotron.text-center
|
|
||||||
h1.hug-top Nonprofit Sign Up
|
|
||||||
include ../partials/nonprofit-application-progress-bar
|
|
||||||
h2 Thank you for reaching out to us. We’ll send you an email no later than #{getBackDay}.
|
|
28
views/resources/nonprofits-form.jade
Normal file
28
views/resources/nonprofits-form.jade
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
html.
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!--Add the title of your typeform below-->
|
||||||
|
<title>nonprofit-projects</title>
|
||||||
|
<!--CSS styles that ensure your typeform takes up all the available screen space (DO NOT EDIT!)-->
|
||||||
|
<style type="text/css">
|
||||||
|
html{
|
||||||
|
margin: 0;
|
||||||
|
height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
iframe{
|
||||||
|
position: absolute;
|
||||||
|
left:0;
|
||||||
|
right:0;
|
||||||
|
bottom:0;
|
||||||
|
top:0;
|
||||||
|
border:0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<iframe id="typeform-full" width="100%" height="100%" frameborder="0" src="https://freecodecamp.typeform.com/to/JxMS5a"></iframe>
|
||||||
|
<script type="text/javascript" src="https://s3-eu-west-1.amazonaws.com/share.typeform.com/embed.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
55
views/resources/nonprofits.jade
Normal file
55
views/resources/nonprofits.jade
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
extends ../layout
|
||||||
|
block content
|
||||||
|
.jumbotron
|
||||||
|
.text-center
|
||||||
|
.row
|
||||||
|
.col-xs-12
|
||||||
|
h1.nonprofit-landing.hug-top Get pro bono code for your nonprofit
|
||||||
|
.big-break
|
||||||
|
.col-xs-12.col-sm-12.col-md-12
|
||||||
|
.embed-responsive.embed-responsive-16by9
|
||||||
|
iframe.embed-responsive-item(src='https://www.youtube.com/embed/KOs0m_AhkXA')
|
||||||
|
.big-break
|
||||||
|
h2 Our process:
|
||||||
|
.row
|
||||||
|
.col-xs-12.col-sm-12.col-md-4
|
||||||
|
h3.nowrap Your idea
|
||||||
|
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_portfolio.svg.gz', alt='Image of a briefcase')
|
||||||
|
p.landing-p You tell us how we can help you.
|
||||||
|
.col-xs-12.col-sm-12.col-md-4
|
||||||
|
h3.nowrap Our team
|
||||||
|
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_nonprofits.svg.gz', alt='Image of people putting their hands together in a huddle')
|
||||||
|
p.landing-p We'll hand pick developers and a project manager.
|
||||||
|
.col-xs-12.col-sm-12.col-md-4
|
||||||
|
h3.nowrap Your solution
|
||||||
|
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_connect.svg.gz', alt='image of two people high-fiving')
|
||||||
|
p.landing-p Together we'll set milestones and complete your project.
|
||||||
|
.big-break
|
||||||
|
h2 Solutions we can help you build:
|
||||||
|
.text-center.negative-35
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-android-globe
|
||||||
|
h2.black-text Websites
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-card
|
||||||
|
h2.black-text Donation Systems
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-android-calendar
|
||||||
|
h2.black-text Volunteer Systems
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-ios-box
|
||||||
|
h2.black-text Inventory Systems
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-university
|
||||||
|
h2.black-text E-learning Platforms
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-ios-list
|
||||||
|
h2.black-text Paperless Workflows
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-ios-people
|
||||||
|
h2.black-text Community Tools
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-settings
|
||||||
|
h2.black-text ...and other tools
|
||||||
|
.big-break
|
||||||
|
a.btn.btn-cta.signup-btn.btn-block(href="/nonprofits-form") My nonprofit needs coding help
|
29
views/resources/pmi-acp-agile-project-managers-form.jade
Normal file
29
views/resources/pmi-acp-agile-project-managers-form.jade
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
html.
|
||||||
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<!--Add the title of your typeform below-->
|
||||||
|
<title>PMI-ACP</title>
|
||||||
|
|
||||||
|
<!--CSS styles that ensure your typeform takes up all the available screen space (DO NOT EDIT!)-->
|
||||||
|
<style type="text/css">
|
||||||
|
html{
|
||||||
|
margin: 0;
|
||||||
|
height: 100%;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
iframe{
|
||||||
|
position: absolute;
|
||||||
|
left:0;
|
||||||
|
right:0;
|
||||||
|
bottom:0;
|
||||||
|
top:0;
|
||||||
|
border:0;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<iframe id="typeform-full" width="100%" height="100%" frameborder="0" src="https://freecodecamp.typeform.com/to/MhH9mp"></iframe>
|
||||||
|
<script type="text/javascript" src="https://s3-eu-west-1.amazonaws.com/share.typeform.com/embed.js"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
55
views/resources/pmi-acp-agile-project-managers.jade
Normal file
55
views/resources/pmi-acp-agile-project-managers.jade
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
extends ../layout
|
||||||
|
block content
|
||||||
|
.jumbotron
|
||||||
|
.text-center
|
||||||
|
.row
|
||||||
|
.col-xs-12
|
||||||
|
h1.nonprofit-landing.hug-top Get Agile Project Management Experience for the PMI-ACP by Helping Nonprofits
|
||||||
|
.big-break
|
||||||
|
.col-xs-12.col-sm-12.col-md-12
|
||||||
|
.embed-responsive.embed-responsive-16by9
|
||||||
|
iframe.embed-responsive-item(src='https://www.youtube.com/embed/KOs0m_AhkXA')
|
||||||
|
.big-break
|
||||||
|
h2 Your opportunity:
|
||||||
|
.row
|
||||||
|
.col-xs-12.col-sm-12.col-md-4
|
||||||
|
h3.nowrap Plan Projects
|
||||||
|
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_portfolio.svg.gz', alt='Image of a briefcase')
|
||||||
|
p.landing-p You'll triage deliverables and set deadlines.
|
||||||
|
.col-xs-12.col-sm-12.col-md-4
|
||||||
|
h3.nowrap Manage Teams
|
||||||
|
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_nonprofits.svg.gz', alt='Image of people putting their hands together in a huddle')
|
||||||
|
p.landing-p You'll lead two developers and a nonprofit stakeholder to success.
|
||||||
|
.col-xs-12.col-sm-12.col-md-4
|
||||||
|
h3.nowrap Become a PMI-ACP
|
||||||
|
img.img-responsive.landing-icon.img-center(src= 'https://s3.amazonaws.com/freecodecamp/landingIcons_connect.svg.gz', alt='image of two people high-fiving')
|
||||||
|
p.landing-p You'll learn Agile, get references, and qualify for the PMI-ACP.
|
||||||
|
.big-break
|
||||||
|
h2 Solutions you'll help nonprofits build:
|
||||||
|
.text-center.negative-35
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-android-globe
|
||||||
|
h2.black-text Websites
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-card
|
||||||
|
h2.black-text Donation Systems
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-android-calendar
|
||||||
|
h2.black-text Volunteer Systems
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-ios-box
|
||||||
|
h2.black-text Inventory Systems
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-university
|
||||||
|
h2.black-text E-learning Platforms
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-ios-list
|
||||||
|
h2.black-text Paperless Workflows
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-ios-people
|
||||||
|
h2.black-text Community Tools
|
||||||
|
.col-xs-12.col-sm-12.col-md-3
|
||||||
|
.landing-skill-icon.ion-settings
|
||||||
|
h2.black-text ...and other tools
|
||||||
|
.big-break
|
||||||
|
a.btn.btn-cta.signup-btn.btn-block(href="/pmi-acp-agile-project-manager-form") I want to lead agile projects for nonprofits
|
Reference in New Issue
Block a user