From e2deaa3f9d29209f2b3ac31ab197e6bce8077fe6 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Wed, 24 Jun 2015 09:34:32 -0700
Subject: [PATCH 001/186] add calculator view
---
views/resources/calculator.jade | 114 ++++++++++++++++++++++++++++++++
1 file changed, 114 insertions(+)
create mode 100644 views/resources/calculator.jade
diff --git a/views/resources/calculator.jade b/views/resources/calculator.jade
new file mode 100644
index 0000000000..285272b93d
--- /dev/null
+++ b/views/resources/calculator.jade
@@ -0,0 +1,114 @@
+extends ../layout-wide
+block content
+ script(src="../../../js/calculator.js")
+ .row
+ .col-xs-12.col-sm-10.col-md-8.col-lg-6.col-sm-offset-1.col-md-offset-2.col-lg-offset-3
+ h1.text-center Coding Bootcamp Cost Calculator
+ h3.text-center.text-primary#chosen Coming from _______, and making $_______, your true costs will be:
+ #city-buttons
+ .spacer
+ h2.text-center Where do you live?
+ .spacer
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#atlanta.btn.btn-primary.btn-block.btn-lg Atlanta
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#austin.btn.btn-primary.btn-block.btn-lg Austin
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#brisbane.btn.btn-primary.btn-block.btn-lg Brisbane
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#boulder.btn.btn-primary.btn-block.btn-lg Boulder
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#chicago.btn.btn-primary.btn-block.btn-lg Chicago
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#denver.btn.btn-primary.btn-block.btn-lg Denver
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#hong-kong.btn.btn-primary.btn-block.btn-lg Hong Kong
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#london.btn.btn-primary.btn-block.btn-lg London
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#los-angeles.btn.btn-primary.btn-block.btn-lg Los Angeles
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#manchester.btn.btn-primary.btn-block.btn-lg Manchester
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#melbourne.btn.btn-primary.btn-block.btn-lg Melbourne
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#new-york-city.btn.btn-primary.btn-block.btn-lg New York City
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#portland.btn.btn-primary.btn-block.btn-lg Portland
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#raleigh-durham.btn.btn-primary.btn-block.btn-lg Raleigh-Durham
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#san-francisco.btn.btn-primary.btn-block.btn-lg San Fransisco
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#seattle.btn.btn-primary.btn-block.btn-lg Seattle
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#singapore.btn.btn-primary.btn-block.btn-lg Singapore
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#toronto.btn.btn-primary.btn-block.btn-lg Toronto
+ .col-xs-12.btn-nav
+ button#other.btn.btn-primary.btn-block.btn-lg Other
+ .spacer
+ #income.initially-hidden
+ .spacer
+ h2.text-center How much money did you make last year (in USD)?
+ .spacer
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#0.btn.btn-primary.btn-block.btn-lg(href='#') $0
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#20000.btn.btn-primary.btn-block.btn-lg(href='#') $20,000
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#30000.btn.btn-primary.btn-block.btn-lg(href='#') $30,000
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#40000.btn.btn-primary.btn-block.btn-lg(href='#') $40,000
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#50000.btn.btn-primary.btn-block.btn-lg(href='#') $50,000
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#60000.btn.btn-primary.btn-block.btn-lg(href='#') $60,000
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#70000.btn.btn-primary.btn-block.btn-lg(href='#') $70,000
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#80000.btn.btn-primary.btn-block.btn-lg(href='#') $80,000
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#90000.btn.btn-primary.btn-block.btn-lg(href='#') $90,000
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#100000.btn.btn-primary.btn-block.btn-lg(href='#') $100,000
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#120000.btn.btn-primary.btn-block.btn-lg(href='#') $120,000
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#140000.btn.btn-primary.btn-block.btn-lg(href='#') $140,000
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#160000.btn.btn-primary.btn-block.btn-lg(href='#') $160,000
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#180000.btn.btn-primary.btn-block.btn-lg(href='#') $180,000
+ .col-xs-12.col-sm-12.col-md-4.btn-nav
+ button#200000.btn.btn-primary.btn-block.btn-lg(href='#') $200,000
+ .spacer
+ #chart.initially-hidden
+ .d3-centered
+ svg.chart
+ #explanation.initially-hidden
+ .col-xs-12.col-sm-10.col-sm-offset-1
+ .text-center
+ button#transform.btn.btn-primary.btn-lg Transform
+ .button-spacer
+ a(href='/coding-bootcamp-cost-calculator.json') View Data Source JSON
+ span •
+ a(href='/coding-bootcamp-cost-calculator') Recalculate
+ h3 Notes:
+ ol
+ li.large-li We assumed an APR of 6% and a term of 3 years. If you happen to have around $15,000 in cash set aside for a coding bootcamp, please ignore this cost.
+ li.large-li We assume a cost of living of $500 for cities like San Francisco and New York City, and $400 per week for everywhere else.
+ li.large-li The most substantial cost for most people is lost wages. A 40-hour-per-week job at the US Federal minimum wage would pay at least $15,000 per year. You can read more about economic cost
+ a(href='https://en.wikipedia.org/wiki/Economic_cost' target='_blank') here
+ | .
+ li.large-li Free Code Camp. We don't charge tuition or garnish wages. We're fully online so you don't have to move. We're self-paced so you don't have to quit your job. Thus, your true cost of attending Free Code Camp will be $0.
+ .spacer
+ .row
+ .col-xs-12.col-sm-4.col-md-3
+ img.img-responsive.testimonial-image(src='https://www.evernote.com/l/AHRIBndcq-5GwZVnSy1_D7lskpH4OcJcUKUB/image.png')
+ .col-xs-12.col-sm-8.col-md-9
+ h3 Built by Suzanne Atkinson
+ p.large-p Suzanne is an emergency medicine physician, triathlon coach and web developer from Pittsburgh. You should
+ a(href='https://twitter.com/intent/user?screen_name=SteelCityCoach' target='_blank') follow her on Twitter
+ | .
+ .spacer
From 09656a0f34bf771af493a8dd01a0aa1edd75fdab Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Wed, 24 Jun 2015 09:44:30 -0700
Subject: [PATCH 002/186] add more calculator logic
---
app.js | 3 +
controllers/bootcamps.json | 231 +++++++++++++++++++++++++++++++++++++
controllers/resources.js | 16 ++-
3 files changed, 248 insertions(+), 2 deletions(-)
create mode 100644 controllers/bootcamps.json
diff --git a/app.js b/app.js
index a265e530de..9cde852619 100755
--- a/app.js
+++ b/app.js
@@ -239,6 +239,9 @@ app.get('/chat', resourcesController.chat);
app.get('/twitch', resourcesController.twitch);
+app.get('/coding-bootcamp-cost-calculator', resourcesController.bootcampCalculator);
+app.get('/coding-bootcamp-cost-calculator.json', resourcesController.bootcampCalculatorJson);
+
app.get('/cats.json', function(req, res) {
res.send(
[
diff --git a/controllers/bootcamps.json b/controllers/bootcamps.json
new file mode 100644
index 0000000000..f993befcd7
--- /dev/null
+++ b/controllers/bootcamps.json
@@ -0,0 +1,231 @@
+[
+ {
+ "name": "Hack Reactor",
+ "cost": "17780",
+ "housing": "500",
+ "weeks": "12",
+ "finance": true,
+ "cities": [
+ "new-york-city",
+ "san-francisco"
+ ]
+ }, {
+ "name": "Hack Reactor Online",
+ "cost": "17780",
+ "housing": "0",
+ "weeks": "12",
+ "finance": true,
+ "cities": [
+ "online"
+ ]
+}, {
+ "name": "Hackbright Academy",
+ "cost": "15000",
+ "housing": "500",
+ "weeks": "10",
+ "finance": true,
+ "cities": [
+ "san-francisco"
+ ]
+}, {
+ "name": "Dev Bootcamp",
+ "cost": "13950",
+ "finance": true,
+ "housing": "500",
+ "weeks": "19",
+ "cities": [
+ "new-york-city",
+ "san-francisco",
+ "chicago"
+ ]
+}, {
+ "name": "General Asssembly",
+ "cost": "11500",
+ "housing": "500",
+ "finance": true,
+ "weeks": "12",
+ "cities": [
+ "washington-dc",
+ "austin",
+ "boston",
+ "chicago",
+ "hong-kong",
+ "london",
+ "los-angeles",
+ "melbourne",
+ "new-york-city",
+ "san-francisco",
+ "seattle",
+ "singapore"
+ ]
+}, {
+ "name": "Angel Hack",
+ "cost": "14250",
+ "housing": "500",
+ "finance": true,
+ "weeks": "12",
+ "cities": [
+ "san-francisco"
+ ]
+}, {
+ "name": "Bitmaker Labs",
+ "cost": "12000",
+ "housing": "500",
+ "finance": true,
+ "weeks": "12",
+ "cities": [
+ "toronto"
+ ]
+}, {
+ "name": "CoderVox",
+ "cost": "9980",
+ "housing": "400",
+ "finance": true,
+ "weeks": "12",
+ "cities": [
+ "austin"
+ ]
+}, {
+ "name": "Coding Dojo",
+ "cost": "12500",
+ "housing": "500",
+ "finance": true,
+ "weeks": "12",
+ "cities": [
+ "new-york-city",
+ "san-francisco",
+ "chicago"
+ ]
+}, {
+ "name": "Epicodus",
+ "cost": "4500",
+ "housing": "400",
+ "finance": false,
+ "weeks": "15",
+ "cities": [
+ "portland"
+ ]
+}, {
+ "name": "Flat Iron School",
+ "cost": "15000",
+ "housing": "500",
+ "finance": true,
+ "weeks": "12",
+ "cities": [
+ "new-york-city"
+ ]
+}, {
+ "name": "Galvanize",
+ "cost": "21000",
+ "housing": "500",
+ "finance": true,
+ "weeks": "24",
+ "cities": [
+ "boulder",
+ "denver",
+ "seattle",
+ "san-francisco"
+ ]
+}, {
+ "name": "The Iron Yard",
+ "cost": "12000",
+ "housing": "500",
+ "finance": true,
+ "weeks": "19",
+ "cities": [
+ "austin",
+ "washington-dc",
+ "raleigh-durham",
+ "atlanta"
+ ]
+}, {
+ "name": "Launch Academy",
+ "cost": "12500",
+ "housing": "500",
+ "finance": true,
+ "weeks": "10",
+ "cities": [
+ "boston"
+ ]
+}, {
+ "name": "Maker Square",
+ "cost": "16920",
+ "housing": "500",
+ "finance": true,
+ "weeks": "12",
+ "cities": [
+ "los-angeles",
+ "san-francisco",
+ "austin"
+ ]
+}, {
+ "name": "Refactor U",
+ "cost": "13500",
+ "housing": "400",
+ "finance": true,
+ "weeks": "10",
+ "cities": [
+ "boulder"
+ ]
+}, {
+ "name": "Rocket U",
+ "cost": "12500",
+ "housing": "500",
+ "finance": true,
+ "weeks": "12",
+ "cities": [
+ "new-york-city",
+ "san-francisco",
+ "chicago"
+ ]
+}, {
+ "name": "Sabio",
+ "cost": "13450",
+ "housing": "500",
+ "finance": true,
+ "weeks": "12",
+ "cities": [
+ "los-angeles"
+ ]
+}, {
+ "name": "Shillington School",
+ "cost": "12950",
+ "housing": "500",
+ "finance": true,
+ "weeks": "12",
+ "cities": [
+ "new-york-city",
+ "sydney",
+ "brisbane",
+ "london",
+ "manchester",
+ "melbourne"
+ ]
+}, {
+ "name": "The Tech Academy",
+ "cost": "9000",
+ "housing": "400",
+ "finance": true,
+ "weeks": "20",
+ "cities": [
+ "portland"
+ ]
+}, {
+ "name": "Turing School",
+ "cost": "17500",
+ "housing": "400",
+ "finance": true,
+ "weeks": "27",
+ "cities": [
+ "denver"
+ ]
+}, {
+ "name": "Free Code Camp",
+ "cost": "0",
+ "housing": "0",
+ "finance": false,
+ "weeks": "0",
+ "cities": [
+ "online"
+ ]
+}]
diff --git a/controllers/resources.js b/controllers/resources.js
index 9101f82edf..1bd1bb7dd3 100644
--- a/controllers/resources.js
+++ b/controllers/resources.js
@@ -8,8 +8,7 @@ var async = require('async'),
R = require('ramda'),
_ = require('lodash'),
fs = require('fs'),
-
-
+ bootcampJson = require('./bootcamps.json'),
constantStrings = require('./constantStrings.json'),
User = require('../models/User'),
Challenge = require('./../models/Challenge'),
@@ -247,6 +246,8 @@ module.exports = {
);
},
+
+
nonprofits: function nonprofits(req, res) {
res.render('resources/nonprofits', {
title: 'A guide to our Nonprofit Projects'
@@ -277,6 +278,17 @@ module.exports = {
});
},
+ bootcampCalculator: function bootcampCalculator(req, res) {
+ res.render('resources/calculator', {
+ title: 'Coding Bootcamp Cost Calculator',
+ bootcampJson: bootcampJson
+ });
+ },
+
+ bootcampCalculatorJson: function bootcampCalculatorJson(req, res) {
+ res.send(bootcampJson);
+ },
+
unsubscribe: function unsubscribe(req, res, next) {
User.findOne({ email: req.params.email }, function(err, user) {
if (user) {
From ca5cef08bfdd9d2fa7ec8c338b14c87ed5f5e47e Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Wed, 24 Jun 2015 09:51:44 -0700
Subject: [PATCH 003/186] finished fixing coding bootcamp cost calculator
---
public/css/main.less | 23 +++
public/js/calculator.js | 272 ++++++++++++++++++++++++++++++++
views/resources/calculator.jade | 8 +-
3 files changed, 299 insertions(+), 4 deletions(-)
create mode 100644 public/js/calculator.js
diff --git a/public/css/main.less b/public/css/main.less
index 245fc0a974..42222bf5a0 100644
--- a/public/css/main.less
+++ b/public/css/main.less
@@ -1108,6 +1108,29 @@ hr {
}
}
+// Calculator styles
+
+.initially-hidden {
+ display: none;
+}
+
+.chart rect {
+ fill: steelblue;
+}
+
+.chart text {
+ font-size: 14px;
+ text-anchor: end;
+}
+
+.axis path,
+.axis line {
+ fill: none;
+ stroke: #121401;
+ stroke-width: 2px;
+ shape-rendering: crispEdges;
+}
+
//uncomment this to see the dimensions of all elements outlined in red
//* {
// border-color: red;
diff --git a/public/js/calculator.js b/public/js/calculator.js
new file mode 100644
index 0000000000..7434f0ebc7
--- /dev/null
+++ b/public/js/calculator.js
@@ -0,0 +1,272 @@
+$(document).ready(function () {
+ var bootcamps = ''
+ $.getJSON('/coding-bootcamp-cost-calculator.json', function(data) {
+ bootcamps = data;
+ });
+ var city = "";
+ $("body").data("state", "stacked");
+ $('#city-buttons').on("click", "button", function () {
+ $(this).addClass('animated pulse');
+ city = $(this).attr("id");
+ $('#chosen').text('Coming from ' + city.replace(/-/g, ' ').replace(/\w\S*/g, function (txt) {
+ return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
+ }) + ', and making $_______, your true costs will be:');
+ setTimeout(function () {
+ $('#city-buttons').hide();
+ $('#income').addClass('animated fadeIn').show();
+ }, 1000);
+ });
+ $('#income').on("click", "button", function () {
+ $(this).addClass('animated pulse');
+ setTimeout(function () {
+ $('#income').hide();
+ $('#chart').addClass('animated fadeIn').show();
+ $('#chart-controls').addClass('animated fadeIn').show();
+ $('#explanation').addClass('animated fadeIn').show();
+ }, 1000);
+ var lastYearsIncome = parseInt($(this).attr("id"));
+ $('#chosen').text('Coming from ' + city.replace(/-/g, ' ').replace(/\w\S*/g, function (txt) {
+ return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
+ }) + ', and making $' + lastYearsIncome.toString().replace(/0000$/, '0,000') + ', your true costs will be:');
+ var categoryNames = ['Lost Wages', 'Financing Cost', 'Housing Cost', 'Tuition'];
+ bootcamps.forEach(function (camp) {
+ var x0 = 0;
+ if (camp.cities.indexOf(city) > -1) {
+ weeklyHousing = 0;
+ } else {
+ weeklyHousing = +camp.housing;
+ }
+ camp.mapping = [{
+ name: camp.name,
+ label: 'Tuition',
+ value: +camp.cost,
+ x0: x0,
+ x1: x0 += +camp.cost
+ }, {
+ name: camp.name,
+ label: 'Financing Cost',
+ value: +Math.floor(camp.cost * .09519),
+ x0: +camp.cost,
+ x1: camp.finance ? x0 += +Math.floor(camp.cost * .09519) : 0
+ }, {
+ name: camp.name,
+ label: 'Housing Cost',
+ value: +weeklyHousing * camp.weeks,
+ x0: camp.finance ? +Math.floor(camp.cost * 1.09519) : camp.cost,
+ x1: x0 += weeklyHousing * camp.weeks
+ }, {
+ name: camp.name,
+ label: 'Lost Wages',
+ value: +(Math.floor(camp.weeks * lastYearsIncome / 50)),
+ x0: camp.finance ? +(Math.floor(camp.cost * 1.09519) + weeklyHousing * camp.weeks) : +camp.cost + weeklyHousing * camp.weeks,
+ x1: x0 += +(Math.floor(camp.weeks * lastYearsIncome / 50))
+ }];
+ camp.total = camp.mapping[camp.mapping.length - 1].x1;
+ });
+ bootcamps.sort(function (a, b) {
+ return a.total - b.total;
+ });
+ maxValue = 0;
+ bootcamps.forEach(function (camp) {
+ camp.mapping.forEach(function (elem) {
+ if (elem.value > maxValue) {
+ maxValue = elem.value;
+ }
+ });
+ });
+ var xStackMax = d3.max(bootcamps, function (d) {
+ return d.total;
+ }), //Scale for Stacked
+ xGroupMax = bootcamps.map(function (camp) {
+ return camp.mapping.reduce(function (a, b) {
+ return a.value > b.value ? a.value : b.value;
+ });
+ }).reduce(function (a, b) {
+ return a > b ? a : b;
+ });
+ var margin = {
+ top: 30,
+ right: 60,
+ bottom: 50,
+ left: 140
+ },
+ width = 800 - margin.left - margin.right,
+ height = 1200 - margin.top - margin.bottom;
+ var barHeight = 20;
+ var xScale = d3.scale.linear()
+ .domain([0, xStackMax])
+ .rangeRound([0, width]);
+ var y0Scale = d3.scale.ordinal()
+ .domain(bootcamps.map(function (d) {
+ return d.name;
+ }))
+ .rangeRoundBands([0, height], .1);
+ var y1Scale = d3.scale.ordinal()
+ .domain(categoryNames).rangeRoundBands([0, y0Scale.rangeBand()]);
+ var color = d3.scale.ordinal()
+ .range(["#215f1e", "#5f5c1e", "#1e215f", "#5c1e5f"])
+ .domain(categoryNames);
+ var svg = d3.select("svg")
+ .attr("width", width + margin.left + margin.right)
+ .attr("height", height + margin.top + margin.bottom)
+ .append("g")
+ .attr("transform", "translate(" + margin.left + "," + margin.top + ")");
+ var selection = svg.selectAll(".series")
+ .data(bootcamps)
+ .enter().append("g")
+ .attr("class", "series")
+ .attr("transform", function (d) {
+ return "translate(0," + y0Scale(d.name) + ")";
+ });
+ var rect = selection.selectAll("rect")
+ .data(function (d) {
+ return d.mapping;
+ })
+ .enter().append("rect")
+ .attr("x", 0)
+ .attr("width", 0)
+ .attr("height", y0Scale.rangeBand())
+ .style("fill", function (d) {
+ return color(d.label);
+ })
+ .style("stroke", "white")
+ .on("mouseover", function (d) {
+ showPopover.call(this, d);
+ })
+ .on("mouseout", function (d) {
+ removePopovers();
+ });
+ rect.transition()
+ .delay(function (d, i) {
+ return i * 10;
+ })
+ .attr("x", function (d) {
+ return xScale(d.x0);
+ })
+ .attr("width", function (d) {
+ return xScale((d.x1) - (d.x0));
+ });
+ d3.selectAll("#transform").on("click", function () {
+ $('#transform').addClass('animated pulse');
+ change();
+ setTimeout(function () {
+ $('#transform').removeClass('animated pulse');
+ }, 1000);
+ });
+
+ d3.selectAll("#chart").on("click", function () {
+ change();
+ });
+
+ function change() {
+ if ($("body").data("state") === "stacked") {
+ transitionGrouped();
+ $("body").data("state", "grouped");
+ } else {
+ transitionStacked();
+ $("body").data("state", "stacked");
+ }
+ }
+
+ function transitionGrouped() {
+ xScale.domain = ([0, xGroupMax]);
+ rect.transition()
+ .duration(500)
+ .delay(function (d, i) {
+ return i * 10;
+ })
+ .attr("width", function (d) {
+ return xScale((d.x1) - (d.x0));
+ })
+ .transition()
+ .attr("y", function (d) {
+ return y1Scale(d.label);
+ })
+ .attr("x", 0)
+ .attr("height", y1Scale.rangeBand())
+ }
+
+ function transitionStacked() {
+ xScale.domain = ([0, xStackMax]);
+ rect.transition()
+ .duration(500)
+ .delay(function (d, i) {
+ return i * 10;
+ })
+ .attr("x", function (d) {
+ return xScale(d.x0);
+ })
+ .transition()
+ .attr("y", function (d) {
+ return y0Scale(d.label);
+ })
+ .attr("height", y0Scale.rangeBand())
+ }
+
+ //axes
+ var xAxis = d3.svg.axis()
+ .scale(xScale)
+ .orient("bottom");
+ var yAxis = d3.svg.axis()
+ .scale(y0Scale)
+ .orient("left");
+ svg.append("g")
+ .attr("class", "y axis")
+ .call(yAxis);
+ svg.append("g")
+ .attr("class", "x axis")
+ .attr("transform", "translate(0," + height + ")")
+ .call(xAxis)
+ .append("text")
+ .attr("x", 300)
+ .attr("y", 35)
+ .attr("dy", ".35em")
+ .style("text-anchor", "middle")
+ .text("Cost in $USD");
+ //tooltips
+ function removePopovers() {
+ $('.popover').each(function () {
+ $(this).remove();
+ });
+ }
+
+ function showPopover(d) {
+ $(this).popover({
+ title: d.name,
+ placement: 'auto top',
+ container: 'body',
+ trigger: 'manual',
+ html: true,
+ content: function () {
+ return d.label +
+ " $" +
+ d3.format(",")(d.value ? d.value : d.x1 - d.x0);
+ }
+ });
+ $(this).popover('show')
+ }
+
+ //legends
+ var legend = svg.selectAll(".legend")
+ .data(categoryNames.slice().reverse())
+ .enter().append("g")
+ .attr("class", "legend")
+ .attr("transform", function (d, i) {
+ return "translate(30," + i * y0Scale.rangeBand() * 1.1 + ")";
+ });
+ legend.append("rect")
+ .attr("x", width - y0Scale.rangeBand())
+ .attr("width", y0Scale.rangeBand())
+ .attr("height", y0Scale.rangeBand())
+ .style("fill", color)
+ .style("stroke", "white");
+ legend.append("text")
+ .attr("x", width - y0Scale.rangeBand() * 1.2)
+ .attr("y", 12)
+ .attr("dy", ".35em")
+ .style("text-anchor", "end")
+ .text(function (d) {
+ return d;
+ });
+ });
+});
diff --git a/views/resources/calculator.jade b/views/resources/calculator.jade
index 285272b93d..7d51bc7666 100644
--- a/views/resources/calculator.jade
+++ b/views/resources/calculator.jade
@@ -1,6 +1,6 @@
extends ../layout-wide
block content
- script(src="../../../js/calculator.js")
+ script(src="/js/calculator.js")
.row
.col-xs-12.col-sm-10.col-md-8.col-lg-6.col-sm-offset-1.col-md-offset-2.col-lg-offset-3
h1.text-center Coding Bootcamp Cost Calculator
@@ -104,9 +104,9 @@ block content
li.large-li Free Code Camp. We don't charge tuition or garnish wages. We're fully online so you don't have to move. We're self-paced so you don't have to quit your job. Thus, your true cost of attending Free Code Camp will be $0.
.spacer
.row
- .col-xs-12.col-sm-4.col-md-3
- img.img-responsive.testimonial-image(src='https://www.evernote.com/l/AHRIBndcq-5GwZVnSy1_D7lskpH4OcJcUKUB/image.png')
- .col-xs-12.col-sm-8.col-md-9
+ .col-xs-12.col-sm-5.col-md-5
+ img.testimonial-image(src='https://www.evernote.com/l/AHRIBndcq-5GwZVnSy1_D7lskpH4OcJcUKUB/image.png')
+ .col-xs-12.col-sm-7.col-md-7
h3 Built by Suzanne Atkinson
p.large-p Suzanne is an emergency medicine physician, triathlon coach and web developer from Pittsburgh. You should
a(href='https://twitter.com/intent/user?screen_name=SteelCityCoach' target='_blank') follow her on Twitter
From 80e995e98f327426438bc9a22e673c6055e3e5b7 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Sat, 27 Jun 2015 15:29:39 -0700
Subject: [PATCH 004/186] update field guide cities
---
seed_data/field-guides.json | 47 ++++++++++++++++++++++++++++++++++---
1 file changed, 44 insertions(+), 3 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 136433aab4..e05849510f 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -320,13 +320,17 @@
" Albany ",
" Alameda ",
" Amsterdam ",
+ " Ann Arbor ",
" Apucarana ",
" Aracaju ",
" Asheville ",
+ " Asuncion ",
" Atlanta ",
+ " Auckland ",
" Austin ",
" Baltimore ",
" Bandung ",
+ " Bangkok ",
" Belem ",
" Belgrade ",
" Bellingham ",
@@ -336,6 +340,8 @@
" Berlin ",
" Bhaktapur ",
" Bijeljina ",
+ " Bydgoszcz ",
+ " Birmingham ",
" Birmingham, Alabama ",
" Bismarck, ND ",
" Bogota ",
@@ -343,18 +349,22 @@
" Boulder ",
" Brasilia ",
" Bratislava ",
+ " Brno ",
" Brussels ",
+ " Bucaramanga ",
" Buenos Aires ",
" Bucharest ",
" Budapest ",
" Cairo ",
" Calgary ",
" Campinas ",
+ " Cape Cod ",
" Cape Town ",
" Caracas ",
" Charlotte ",
" Chattanooga ",
" Chennai ",
+ " Chiang Mai ",
" Chicago ",
" Cincinnati ",
" Clarksville ",
@@ -368,8 +378,11 @@
" Des Moines ",
" Detroit ",
" Dhaka ",
+ " Dnipropetrovsk ",
" Doha ",
" Dubai ",
+ " Dublin ",
+ " Durango ",
" Edmonton ",
" Firenze ",
" Flagstaff ",
@@ -377,11 +390,14 @@
" Fort Worth ",
" Frankfurt ",
" Freehold ",
+ " Galveston ",
+ " Gdynia ",
" Geneva ",
" Guntur ",
- " Glendora ",
+ " Granada ",
" Guarapuava ",
" Hampton Roads ",
+ " Hanoi ",
" Hartford ",
" Hermosillo ",
" Ho Chi Minh City ",
@@ -404,44 +420,60 @@
" Karachi ",
" Kathmandu ",
" Kemerovo ",
+ " Kerch ",
" Kiev ",
" Kolkata ",
" Krasnodar ",
" Kryvyi Rih ",
+ " La Crosse ",
+ " La Paz ",
" Lagos ",
" Lahore ",
" Leesburg ",
" Lehi ",
" Lima ",
" Limassol ",
+ " Lisbon ",
" London ",
" Los Angeles ",
" Lubbock ",
+ " Madrid ",
" Manila ",
" Melbourne ",
+ " Mexico City ",
" Miami ",
" Minneapolis ",
+ " Mississippi Gulf Coast ",
" Missoula ",
+ " Montgomery ",
" Montreal ",
" Moscow ",
" Munich ",
" Mysore ",
" Nairobi ",
+ " Nashik ",
" Nashville ",
" New Haven ",
" New Orleans ",
" New Paltz ",
" New York City ",
+ " Nicosia ",
+ " North Platte ",
" Oakland ",
" Oklahoma City ",
" Omaha ",
" Orange County ",
- " Orlando ",
+ " Orlando ",
" Parana ",
" Paris ",
+ " Pasadena ",
+ " Pasto ",
+ " Penang ",
" Philadelphia ",
" Pittsburgh ",
" Poitiers ",
+ " Porto ",
+ " Pune ",
" Phoenix ",
" Portland ",
" Prescott ",
@@ -453,6 +485,7 @@
" Recife ",
" Richmond ",
" Rio de Janeiro ",
+ " Roma ",
" Rotterdam ",
" Sacramento ",
" Saint George ",
@@ -463,17 +496,24 @@
" San Diego ",
" San Francisco ",
" San Jose ",
+ " Santa Barbara ",
+ " Santa Cruz ",
" Sao Paulo ",
" Scottsdale ",
" Sedona ",
" Seattle ",
+ " Sidoarjo ",
" Singapore ",
+ " Skopje ",
" Solo ",
+ " Stuttgart ",
" Taipei ",
" Tampa ",
+ " Temecula ",
" Tempe ",
" Tirana ",
" Toronto ",
+ " Tucson ",
" Tulsa ",
" Verde Valley ",
" Valencia ",
@@ -481,6 +521,7 @@
" Washington, DC ",
" Winnipeg ",
" Yaounde ",
+ " Znojmo ",
" Zurich ",
" ",
" ",
@@ -509,7 +550,7 @@
" ",
" Click the \"Upload a photo button. To start out, you'll probably just want to use Free Code Camp's banner (download it here ), or a scenic shot of your city. Later you can update this with a picture from one of your city's Free Code Camp events. ",
" ",
- " Message @quincylarson in Slack with a link to your city's group page and he'll include it here. ",
+ " Message @quincylarson on Gitter with a link to your city's group page and he'll include it here. ",
" Join our Local Leaders Facebook group , where we share ideas about involving campers in your city. ",
" ",
"
",
From 968676da728259d0830e070452e13b1cf4a02810 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Sun, 28 Jun 2015 15:38:42 -0700
Subject: [PATCH 005/186] fix entities bonfire tests
---
seed_data/challenges/basic-bonfires.json | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/seed_data/challenges/basic-bonfires.json b/seed_data/challenges/basic-bonfires.json
index a40b1f917b..ac5b09dcec 100644
--- a/seed_data/challenges/basic-bonfires.json
+++ b/seed_data/challenges/basic-bonfires.json
@@ -1078,7 +1078,11 @@
],
"tests": [
"assert.strictEqual(convert('Dolce & Gabbana'), 'Dolce & Gabbana', 'should escape characters');",
- "assert.strictEqual('<>', '<>', 'should escape characters');",
+ "assert.strictEqual(convert('Hamburgers < Pizza < Tacos'), 'Hamburgers < Pizza < Tacos', 'should escape characters');",
+ "assert.strictEqual(convert('Sixty > twelve'), 'Sixty > twelve', 'should escape characters');",
+ "assert.strictEqual(convert('Stuff in \"quotation marks\"'), 'Stuff in "quotation marks"', 'should escape characters');",
+ "assert.strictEqual(convert(\"Shindler's List\"), 'Shindler's List', 'should escape characters');",
+ "assert.strictEqual(convert('<>'), '<>', 'should escape characters');",
"assert.strictEqual(convert('abc'), 'abc', 'should handle strings with nothing to escape');"
],
"MDNlinks": [
From af8295ec75db4d93790cf68a8ae811d894f6d797 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Sun, 28 Jun 2015 18:19:54 -0700
Subject: [PATCH 006/186] fix modal copy
---
views/partials/challenge-modals.jade | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/views/partials/challenge-modals.jade b/views/partials/challenge-modals.jade
index 5270e77cd4..1a0872a2ee 100644
--- a/views/partials/challenge-modals.jade
+++ b/views/partials/challenge-modals.jade
@@ -4,12 +4,11 @@
.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
+ h3 Tell your fellow campers which challenge you are interested in pair programming on.
+ a.btn.btn-lg.btn-primary.btn-block#i-want-to-pair(name='_csrf', value=_csrf) Take me to the Pair Programming room
a.btn.btn-lg.btn-info.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Cancel
#issue-modal.modal(tabindex='-1')
@@ -33,7 +32,6 @@
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
@@ -47,6 +45,5 @@
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
From e5df5120ff517dd2ed14974e3ad04c558c3bde8d Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Sun, 28 Jun 2015 18:30:34 -0700
Subject: [PATCH 007/186] fix #1147
---
seed_data/challenges/bootstrap.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/seed_data/challenges/bootstrap.json b/seed_data/challenges/bootstrap.json
index abf29c33b5..ae20843697 100644
--- a/seed_data/challenges/bootstrap.json
+++ b/seed_data/challenges/bootstrap.json
@@ -618,8 +618,8 @@
"The \"row\" class is applied to a div
, and the buttons themselves can be wrapped within it."
],
"tests": [
- "assert($('div.row:has(button)'), 'Your buttons should all be wrapped within the same div
element with the class \"row\".')",
- "assert($('div.col-xs-4:has(button)').length > 2, 'Each of your Bootstrap buttons should be wrapped within its own a div
element with the class \"col-xs-4\".')",
+ "assert($('div.row:has(button)').length > 0, 'Your buttons should all be wrapped within the same div
element with the class \"row\".')",
+ "assert($('div.col-xs-4:has(button)').length > 2, 'Each of your Bootstrap buttons should be wrapped within its own div
element with the class \"col-xs-4\".')",
"assert(editor.match(/<\\/button>/g) && editor.match(//g).length === editor.match(/button elements has a closing tag.')",
"assert(editor.match(/<\\/div>/g) && editor.match(//g).length === editor.match(/
div elements has a closing tag.')"
],
From a97ce4492524d32e9222628ece896edc08f37ae2 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Mon, 29 Jun 2015 14:27:02 -0700
Subject: [PATCH 008/186] update cities
---
seed_data/field-guides.json | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index e05849510f..fbd4dcab63 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -393,9 +393,10 @@
" Galveston ",
" Gdynia ",
" Geneva ",
- " Guntur ",
+ " Glendora ",
" Granada ",
" Guarapuava ",
+ " Guntur ",
" Hampton Roads ",
" Hanoi ",
" Hartford ",
@@ -438,6 +439,7 @@
" Los Angeles ",
" Lubbock ",
" Madrid ",
+ " Manchester ",
" Manila ",
" Melbourne ",
" Mexico City ",
@@ -490,6 +492,7 @@
" Sacramento ",
" Saint George ",
" Saint Louis ",
+ " Saint Paul ",
" Salt Lake City ",
" Salvador ",
" San Bernardino ",
@@ -506,6 +509,7 @@
" Singapore ",
" Skopje ",
" Solo ",
+ " South Bend ",
" Stuttgart ",
" Taipei ",
" Tampa ",
@@ -515,9 +519,11 @@
" Toronto ",
" Tucson ",
" Tulsa ",
- " Verde Valley ",
" Valencia ",
" Vancouver ",
+ " Verde Valley ",
+ " Virginia Beach ",
+ " Vitória ",
" Washington, DC ",
" Winnipeg ",
" Yaounde ",
From 5156714cf1c8496ea7efe93c02736869111ca671 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Mon, 29 Jun 2015 15:56:02 -0700
Subject: [PATCH 009/186] remove duplicate city
---
seed_data/field-guides.json | 1 -
1 file changed, 1 deletion(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index fbd4dcab63..b733f44a03 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -402,7 +402,6 @@
" Hartford ",
" Hermosillo ",
" Ho Chi Minh City ",
- " Ho Chi Minh City ",
" Hong Kong ",
" Houston ",
" Hyderabad ",
From 6d7f9731e6fe5d7d771cc40147368cebfa1a4ec3 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Wed, 1 Jul 2015 01:22:06 -0700
Subject: [PATCH 010/186] update field guide with list of all rooms
---
seed_data/field-guides.json | 495 +++++++++++++++++++-----------------
views/field-guide/show.jade | 5 +-
2 files changed, 266 insertions(+), 234 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index b733f44a03..8d1c3f33ef 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -225,7 +225,7 @@
" ",
" This is the most time-efficient way to handle being stuck, and it's the most respectful of other people's time, too.
",
" Most of the time, you'll solve your problem after just one or two steps of this algorithm.
",
- " We have a special chat room just for getting help: https://freecodecamp.slack.com/messages/help/
",
+ " We have a special chat room just for getting help: https://gitter.im/freecodecamp/help/
",
" Also, if you need to post on Stack Overflow, be sure to read their guide to asking good questions: http://stackoverflow.com/help/how-to-ask .
",
" Learning to code is hard. But it's a lot easier if you ask for help when you need it!
",
" "
@@ -273,6 +273,34 @@
"
"
]
},
+ {
+ "_id": "bd7158d9c435eddfaeb5bdcf",
+ "name": "What are the Official Free Code Camp Chat Rooms?",
+ "dashedName": "what-are-the-official-free-code-camp-chat-rooms",
+ "description": [
+ "",
+ "
We have 3 official chat rooms: ",
+ "
",
+ " Free Code Camp - a friendly place where you can hang out and chat ",
+ " Help - the best place to get help from your fellow campers ",
+ " LetsPair - the best room to find a fellow campers to pair program with ",
+ " ",
+ "
We also have language-specific chat rooms: ",
+ "
",
+ "
",
+ "
If you think we should add a chat room, please message @quincylarson in Gitter.
",
+ "
"
+ ]
+ },
{
"_id": "bd7158d9c435eddfaeb5bdef",
"name": "Does Free Code Camp have an application process?",
@@ -296,7 +324,7 @@
" ",
"
",
" Follow this tutorial to set up your computer for streaming. ",
- " Contact Jason Ruekert - he's @jsonify in Slack. He's in charge of our Twitch.tv channel. Tell him what you'd like to stream, and when you're available to stream. ",
+ " Contact Jason Ruekert - he's @jsonify in Gitter. He's in charge of our Twitch.tv channel. Tell him what you'd like to stream, and when you're available to stream. ",
" Jason will pair with you using Screen Hero to verify your computer is configured properly to stream. ",
" ",
" ",
@@ -312,223 +340,226 @@
"dashedName": "how-can-i-find-other-free-code-camp-campers-in-my-city",
"description": [
"",
- "
Find your city below and join their group. This is a great way to hang out with other coders, share insights, and pair program. ",
+ "
Find your city below and join their Facebook group and Gitter Chat. This is a great way to hang out with other coders, share insights, and pair program. ",
"
",
+ " Accra Facebook Gitter ",
+ " Ahmedabad Facebook Gitter ",
+ " Albany Facebook Gitter ",
+ " Alameda Facebook Gitter ",
+ " Amsterdam Facebook Gitter ",
+ " Ann Arbor Facebook Gitter ",
+ " Apucarana Facebook Gitter ",
+ " Aracaju Facebook Gitter ",
+ " Asheville Facebook Gitter ",
+ " Asuncion Facebook Gitter ",
+ " Atlanta Facebook Gitter ",
+ " Auckland Facebook Gitter ",
+ " Austin Facebook Gitter ",
+ " Baltimore Facebook Gitter ",
+ " Bandung Facebook Gitter ",
+ " Bangkok Facebook Gitter ",
+ " Belem Facebook Gitter ",
+ " Belgrade Facebook Gitter ",
+ " Bellingham Facebook Gitter ",
+ " Belo Horizonte Facebook Gitter ",
+ " Bengaluru Facebook Gitter ",
+ " Berkeley Facebook Gitter ",
+ " Berlin Facebook Gitter ",
+ " Bhaktapur Facebook Gitter ",
+ " Bijeljina Facebook Gitter ",
+ " Bydgoszcz Facebook Gitter ",
+ " Birmingham Facebook Gitter ",
+ " Birmingham, Alabama Facebook Gitter ",
+ " Bismarck, ND Facebook Gitter ",
+ " Bogota Facebook Gitter ",
+ " Boston Facebook Gitter ",
+ " Boulder Facebook Gitter ",
+ " Brasilia Facebook Gitter ",
+ " Bratislava Facebook Gitter ",
+ " Brno Facebook Gitter ",
+ " Brussels Facebook Gitter ",
+ " Bucaramanga Facebook Gitter ",
+ " Buenos Aires Facebook Gitter ",
+ " Bucharest Facebook Gitter ",
+ " Budapest Facebook Gitter ",
+ " Cairo Facebook Gitter ",
+ " Calgary Facebook Gitter ",
+ " Campinas Facebook Gitter ",
+ " Cape Cod Facebook Gitter ",
+ " Cape Town Facebook Gitter ",
+ " Caracas Facebook Gitter ",
+ " Charlotte Facebook Gitter ",
+ " Chattanooga Facebook Gitter ",
+ " Chennai Facebook Gitter ",
+ " Chiang Mai Facebook Gitter ",
+ " Chicago Facebook Gitter ",
+ " Cincinnati Facebook Gitter ",
+ " Clarksville Facebook Gitter ",
+ " Cluj Facebook Gitter ",
+ " Coimbatore Facebook Gitter ",
+ " Coventry Facebook Gitter ",
+ " Curitiba Facebook Gitter ",
+ " Dallas Facebook Gitter ",
+ " Delhi Facebook Gitter ",
+ " Denver Facebook Gitter ",
+ " Des Moines Facebook Gitter ",
+ " Detroit Facebook Gitter ",
+ " Dhaka Facebook Gitter ",
+ " Dnipropetrovsk Facebook Gitter ",
+ " Doha Facebook Gitter ",
+ " Dubai Facebook Gitter ",
+ " Dublin Facebook Gitter ",
+ " Durango Facebook Gitter ",
+ " Edmonton Facebook Gitter ",
+ " Firenze Facebook Gitter ",
+ " Flagstaff Facebook Gitter ",
+ " Florianopolis Facebook Gitter ",
+ " Fort Worth Facebook Gitter ",
+ " Frankfurt Facebook Gitter ",
+ " Freehold Facebook Gitter ",
+ " Galveston Facebook Gitter ",
+ " Gdynia Facebook Gitter ",
+ " Geneva Facebook Gitter ",
+ " Glendora Facebook Gitter ",
+ " Guntur Facebook Gitter ",
+ " Granada Facebook Gitter ",
+ " Guarapuava Facebook Gitter ",
+ " Hampton Roads Facebook Gitter ",
+ " Hanoi Facebook Gitter ",
+ " Harcourt Facebook Gitter ",
+ " Hartford Facebook Gitter ",
+ " Hermosillo Facebook Gitter ",
+ " Ho Chi Minh City Facebook Gitter ",
+ " Hong Kong Facebook Gitter ",
+ " Houston Facebook Gitter ",
+ " Hyderabad Facebook Gitter ",
+ " Istanbul Facebook Gitter ",
+ " Indianapolis Facebook Gitter ",
+ " Iasi Facebook Gitter ",
+ " Irkutsk Facebook Gitter ",
+ " Islamabad Facebook Gitter ",
+ " Ivano Frankivsk Facebook Gitter ",
+ " Jakarta Facebook Gitter ",
+ " Joao Pessoa Facebook Gitter ",
+ " Johannesburg Facebook Gitter ",
+ " Kaduna Facebook Gitter ",
+ " Kalamazoo Facebook Gitter ",
+ " Kansas City Facebook Gitter ",
+ " Karachi Facebook Gitter ",
+ " Kathmandu Facebook Gitter ",
+ " Kemerovo Facebook Gitter ",
+ " Kerch Facebook Gitter ",
+ " Kiev Facebook Gitter ",
+ " Kolkata Facebook Gitter ",
+ " Krasnodar Facebook Gitter ",
+ " Kryvyi Rih Facebook Gitter ",
+ " La Crosse Facebook Gitter ",
+ " La Paz Facebook Gitter ",
+ " Lagos Facebook Gitter ",
+ " Lahore Facebook Gitter ",
+ " Leesburg Facebook Gitter ",
+ " Lehi Facebook Gitter ",
+ " Lima Facebook Gitter ",
+ " Limassol Facebook Gitter ",
+ " Lisbon Facebook Gitter ",
+ " London Facebook Gitter ",
+ " Los Angeles Facebook Gitter ",
+ " Lubbock Facebook Gitter ",
+ " Madrid Facebook Gitter ",
+ " Manchester Facebook Gitter ",
+ " Manila Facebook Gitter ",
+ " Melbourne Facebook Gitter ",
+ " Mexico City Facebook Gitter ",
+ " Miami Facebook Gitter ",
+ " Milwaukee Facebook Gitter ",
+ " Minneapolis Facebook Gitter ",
+ " Mississippi Gulf Coast Facebook Gitter ",
+ " Missoula Facebook Gitter ",
+ " Montgomery Facebook Gitter ",
+ " Montreal Facebook Gitter ",
+ " Moscow Facebook Gitter ",
+ " Munich Facebook Gitter ",
+ " Mysore Facebook Gitter ",
+ " Nairobi Facebook Gitter ",
+ " Nashik Facebook Gitter ",
+ " Nashville Facebook Gitter ",
+ " New Haven Facebook Gitter ",
+ " New Orleans Facebook Gitter ",
+ " New Paltz Facebook Gitter ",
+ " New York City Facebook Gitter ",
+ " Nicosia Facebook Gitter ",
+ " North Platte Facebook Gitter ",
+ " Oakland Facebook Gitter ",
+ " Oklahoma City Facebook Gitter ",
+ " Omaha Facebook Gitter ",
+ " Orange County Facebook Gitter ",
+ " Orlando Facebook Gitter ",
+ " Parana Facebook Gitter ",
+ " Paris Facebook Gitter ",
+ " Pasadena Facebook Gitter ",
+ " Pasto Facebook Gitter ",
+ " Penang Facebook Gitter ",
+ " Philadelphia Facebook Gitter ",
+ " Pittsburgh Facebook Gitter ",
+ " Poitiers Facebook Gitter ",
+ " Porto Facebook Gitter ",
+ " Pune Facebook Gitter ",
+ " Phoenix Facebook Gitter ",
+ " Portland Facebook Gitter ",
+ " Prescott Facebook Gitter ",
+ " Pristina Facebook Gitter ",
+ " Providence Facebook Gitter ",
+ " Provo Facebook Gitter ",
+ " Quibdo Facebook Gitter ",
+ " Raleigh Facebook Gitter ",
+ " Recife Facebook Gitter ",
+ " Richmond Facebook Gitter ",
+ " Rio de Janeiro Facebook Gitter ",
+ " Roma Facebook Gitter ",
+ " Rotterdam Facebook Gitter ",
+ " Sacramento Facebook Gitter ",
+ " Saint George Facebook Gitter ",
+ " Saint Louis Facebook Gitter ",
+ " Saint Paul Facebook Gitter ",
+ " Salt Lake City Facebook Gitter ",
+ " Salvador Facebook Gitter ",
+ " San Bernardino Facebook Gitter ",
+ " San Diego Facebook Gitter ",
+ " San Francisco Facebook Gitter ",
+ " San Jose Facebook Gitter ",
+ " San Luis Obispo Facebook Gitter ",
+ " Santa Barbara Facebook Gitter ",
+ " Santa Cruz Facebook Gitter ",
+ " Sao Paulo Facebook Gitter ",
+ " Scottsdale Facebook Gitter ",
+ " Sedona Facebook Gitter ",
+ " Seattle Facebook Gitter ",
+ " Sidoarjo Facebook Gitter ",
+ " Singapore Facebook Gitter ",
+ " Skopje Facebook Gitter ",
+ " Solo Facebook Gitter ",
+ " South Bend Facebook Gitter ",
+ " Stuttgart Facebook Gitter ",
+ " Taipei Facebook Gitter ",
+ " Tampa Facebook Gitter ",
+ " Temecula Facebook Gitter ",
+ " Tempe Facebook Gitter ",
+ " Tirana Facebook Gitter ",
+ " Toronto Facebook Gitter ",
+ " Tucson Facebook Gitter ",
+ " Tulsa Facebook Gitter ",
+ " Verde Valley Facebook Gitter ",
+ " Valencia Facebook Gitter ",
+ " Vancouver Facebook Gitter ",
+ " Virginia Beach Facebook Gitter ",
+ " Vitória Facebook Gitter ",
+ " Washington, DC Facebook Gitter ",
+ " Winnipeg Facebook Gitter ",
+ " Yaounde Facebook Gitter ",
+ " Znojmo Facebook Gitter ",
+ " Zurich Facebook Gitter ",
+ "
",
" ",
"
If you didn't see your city on this list, you should create your own Facebook group for your city. Please follow these steps: ",
"
",
@@ -555,11 +586,11 @@
" ",
"
Click the \"Upload a photo button. To start out, you'll probably just want to use Free Code Camp's banner (download it here ), or a scenic shot of your city. Later you can update this with a picture from one of your city's Free Code Camp events. ",
"
",
- "
Message @quincylarson on Gitter with a link to your city's group page and he'll include it here. ",
+ "
Message @quincylarson on Gitter with a link to your city's group page. He'll include it on this list and also create a Gitter room for you. ",
"
Join our Local Leaders Facebook group , where we share ideas about involving campers in your city. ",
" ",
" ",
- "
If you don't have a Facebook page, we strongly recommend you create one, even if it's just for the purpose of coordinating with campers in your city through this group.
",
+ "
If you don't have a Facebook account, we strongly recommend you create one, even if it's just for the purpose of coordinating with campers in your city through this group.
",
"
If Facebook is blocked in your country, feel free to use social network with a similar group functionality that's popular in your region.
",
"
"
]
@@ -688,8 +719,8 @@
" ",
" ",
" It's notoriously difficult to estimate how long building software projects will take, so feel free to ask our volunteer team for help.
",
- " You'll continue to meet with your stakeholder at least twice a month in your project's Slack channel.
",
- " You should also ask questions in your project's Slack channel as they come up throughout the week, and your stakeholder can answer them asynchronously.
",
+ " You'll continue to meet with your stakeholder at least twice a month in your project's Gitter channel.
",
+ " You should also ask questions in your project's Gitter channel as they come up throughout the week, and your stakeholder can answer them asynchronously.
",
" Getting \"blocked\" on a task can take away your sense of forward momentum, so be sure to proactively seek answers to any ambiguities you encounter.
",
" Ultimately, the project will be considered complete once both the stakeholder's needs have been met, and you and your pair are happy with the project. Then you can add it to your portfolio!
",
" Working with your Pair ",
@@ -697,7 +728,7 @@
" Here are our recommended ways of collaborating:
",
" ",
"
",
- " • Slack has robust private messaging functionality. It's the main way our team communicates, and we recommend it over email. ",
+ " • Gitter has robust private messaging functionality. It's the main way our team communicates, and we recommend it over email. ",
" • Trello is great for managing projects. Work with your stakeholder to create Trello cards, and update these cards regularly as you make progress on them. ",
" • Screen Hero or Team Viewer - These are the ideal way to pair program. Tools like TMUX are good, but difficult to use. We discourage you from using screen sharing tools where only one person has control of the keyboard and mouse - that isn't real pair programming. ",
" • Write clear and readable code, commit messages, branch names, and pull request messages. ",
@@ -782,9 +813,9 @@
" ",
" ",
" Free Code Camp should be a harassment-free experience for everyone, regardless of gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, national origin, or religion (or lack thereof).
",
- " We do not tolerate harassment of campers in any form, anywhere on Free Code Camp's online media (Slack, Twitch, etc.) or during pair programming. Harassment includes sexual language and imagery, deliberate intimidation, stalking, unwelcome sexual attention, libel, and any malicious hacking or social engineering.
",
+ " We do not tolerate harassment of campers in any form, anywhere on Free Code Camp's online media (Gitter, Twitch, etc.) or during pair programming. Harassment includes sexual language and imagery, deliberate intimidation, stalking, unwelcome sexual attention, libel, and any malicious hacking or social engineering.
",
" If a camper engages in harassing behavior, our team will take any action we deem appropriate, up to and including banning them from Free Code Camp.
",
- " We want everyone to feel safe and respected. If you are being harassed or notice that someone else is being harassed, say something! Message @quincylarson, @terakilobyte and @codenonprofit in Slack (preferably with a screen shot of the offending language) so we can take fast action.
",
+ " We want everyone to feel safe and respected. If you are being harassed or notice that someone else is being harassed, say something! Message @quincylarson, @terakilobyte and @codenonprofit in Gitter (preferably with a screen shot of the offending language) so we can take fast action.
",
" If you have questions about this code of conduct, email us at team@freecodecamp.com .
",
""
]
@@ -840,10 +871,10 @@
" We're happy to do a quick interview for your publication or show. Here's whom you should contact about what, and how to best reach them: ",
" ",
"
",
- " Want to talk to about Free Code Camp's curriculum or long-term vision? Reach out to Quincy Larson. He's @ossia on Twitter and @quincylarson on Slack. ",
- " Want to talk about Free Code Camp's open source codebase, infrastructure, or JavaScript in general? Talk to Nathan Leniz. He's @terakilobyte on Twitter and @terakilobyte on Slack. ",
- " Want to explore our efforts to empower nonprofits with code? Michael D. Johnson eats, sleeps and breathes that. He's @figitalboy on Twitter and @codenonprofit on Slack. ",
- " Want to get a camper's perspective on our community? Talk with Bianca Mihai (@biancamihai on Slack and @bubuslubu on Twitter) or Suzanne Atkinson (@adventurebear on Slack and @steelcitycoach on Twitter).",
+ " Want to talk to about Free Code Camp's curriculum or long-term vision? Reach out to Quincy Larson. He's @ossia on Twitter and @quincylarson on Gitter. ",
+ " Want to talk about Free Code Camp's open source codebase, infrastructure, or JavaScript in general? Talk to Nathan Leniz. He's @terakilobyte on Twitter and @terakilobyte on Gitter. ",
+ " Want to explore our efforts to empower nonprofits with code? Michael D. Johnson eats, sleeps and breathes that. He's @figitalboy on Twitter and @codenonprofit on Gitter. ",
+ " Want to get a camper's perspective on our community? Talk with Bianca Mihai (@biancamihai on Gitter and @bubuslubu on Twitter) or Suzanne Atkinson (@adventurebear on Gitter and @steelcitycoach on Twitter).",
" ",
" ",
" We strive to be helpful and transparent in everything we do. We'll do what we can to help you share our community with your audience.
",
@@ -901,7 +932,7 @@
" Contributing to our field guide is a great way to establish your history on GitHub, add to your portfolio, and help other campers. If you have a question about JavaScript or programming in general that you'd like us to add to the field guide, here are two ways to get it into the guide:
",
" ",
"
",
- " You can message @danraley in Slack with your question. ",
+ " You can message @danraley in Gitter with your question. ",
" You can also contribute to this field guide directly via GitHub pull request, by cloning Free Code Camp's main repository and modifying field-guides.json . ",
" ",
" ",
@@ -915,7 +946,7 @@
"description": [
"",
"
Our translation effort is driven by bilingual campers like you.",
- "
If you're able to help us, you can join our Trello board by sending @quincylarson your email address in Slack.
",
+ "
If you're able to help us, you can join our Trello board by sending @quincylarson your email address in Gitter.
",
"
"
]
},
@@ -928,7 +959,7 @@
" Translation is an all-or-nothing proposal.",
"
We won't be able to add new languages to Free Code Camp until all of our challenges are translated into that langauge.
",
" In addition to translating these initially, we'll also need to maintain the translation as the challenges are gradually updated.
",
- " If you're able to help us, you can join our Trello board by sending @quincylarson your email address in Slack.
",
+ " If you're able to help us, you can join our Trello board by sending @quincylarson your email address in Gitter.
",
""
]
},
diff --git a/views/field-guide/show.jade b/views/field-guide/show.jade
index a81eb6682f..35b16099f2 100644
--- a/views/field-guide/show.jade
+++ b/views/field-guide/show.jade
@@ -12,10 +12,11 @@ block content
.text-center
if user && user.uncompletedFieldGuides.length > 0
.next-field-guide-button.btn.btn-primary.btn-big.btn-block Next article (ctrl + enter)
- .ten-pixel-break
+ .button-spacer
+ .button-spacer
a.btn.btn-info.btn-big.btn-block(href='/field-guide/all-articles') Show me all articles
if !user
- .ten-pixel-break
+ .button-spacer
a.btn.btn-big.signup-btn.btn-block(href='/login') Start learning to code (it's free)
.spacer
#fieldGuideId.hidden= fieldGuideId
From 0afd8507ec6758226d9da7ad62446784d1e9136d Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Wed, 1 Jul 2015 01:24:00 -0700
Subject: [PATCH 011/186] remove news nav ad
---
views/stories/news-nav.jade | 7 -------
1 file changed, 7 deletions(-)
diff --git a/views/stories/news-nav.jade b/views/stories/news-nav.jade
index 48f64ae561..253a6513c9 100644
--- a/views/stories/news-nav.jade
+++ b/views/stories/news-nav.jade
@@ -13,13 +13,6 @@
button#searchbutton.btn.btn-big.btn-primary.btn-responsive(type='button') Search
.spacer
-.row
- .col-xs-12.col-sm-8.col-sm-offset-2.well
- h4.text-center Which other free resources do you use?
- img.img-responsive(src='https://www.evernote.com/l/AHRNhlwViM1Kh5qCm6iy7MSWrbdyxYbRkWkB/image.png')
- p Link us to your favorite free coding resources.
- p Use the headline: "Awesome Free Resource: (the name of the book, podcast, or video series)". We'll publish a list of the 25 most-upvoted resources (and the campers who submitted them) in Wednesday's blog post, and in an upcoming Field Guide article. Also - as always - you'll get 1 point every time someone upvotes your post.
-.spacer
#search-results
From 74e5840b806d658871a17a9a2904f0c4b716b137 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Wed, 1 Jul 2015 01:33:01 -0700
Subject: [PATCH 012/186] update official LA room link
---
seed_data/field-guides.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 8d1c3f33ef..5844f2249e 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -464,7 +464,7 @@
" Limassol Facebook Gitter ",
" Lisbon Facebook Gitter ",
" London Facebook Gitter ",
- " Los Angeles Facebook Gitter ",
+ " Los Angeles Facebook Gitter ",
" Lubbock Facebook Gitter ",
" Madrid Facebook Gitter ",
" Manchester Facebook Gitter ",
From 14e010b3c78b96e57890f2c4af3a2990d6c40a88 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Fri, 3 Jul 2015 01:09:58 -0700
Subject: [PATCH 013/186] update the cities
---
seed_data/field-guides.json | 38 +++++++++++++++++++++----------------
1 file changed, 22 insertions(+), 16 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 5844f2249e..98a445e32d 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -279,23 +279,24 @@
"dashedName": "what-are-the-official-free-code-camp-chat-rooms",
"description": [
"",
- "
We have 3 official chat rooms: ",
+ "
We have 4 official chat rooms: ",
"
",
- " Free Code Camp - a friendly place where you can hang out and chat ",
- " Help - the best place to get help from your fellow campers ",
- " LetsPair - the best room to find a fellow campers to pair program with ",
+ " Free Code Camp - a friendly place where you can hang out and chat ",
+ " Help - the best place to get help from your fellow campers ",
+ " LetsPair - the best room to find fellow campers to pair program with using Screen Hero ",
+ " TeamViewer - the best room to find fellow campers who use Linux and pair with using Team Viewer ",
" ",
"
We also have language-specific chat rooms: ",
"
",
+ "
Arabic ",
+ "
Chinese ",
+ "
Dutch ",
+ "
French ",
+ "
German ",
+ "
Portugues ",
+ "
Russian ",
+ "
Spanish ",
+ " ",
"
",
"
If you think we should add a chat room, please message @quincylarson in Gitter.
",
"
"
@@ -356,7 +357,7 @@
" Atlanta Facebook Gitter ",
" Auckland Facebook Gitter ",
" Austin Facebook Gitter ",
- " Baltimore Facebook Gitter ",
+ " Baltimore Facebook Gitter ",
" Bandung Facebook Gitter ",
" Bangkok Facebook Gitter ",
" Belem Facebook Gitter ",
@@ -396,6 +397,7 @@
" Chicago Facebook Gitter ",
" Cincinnati Facebook Gitter ",
" Clarksville Facebook Gitter ",
+ " Cleveland Facebook Gitter ",
" Cluj Facebook Gitter ",
" Coimbatore Facebook Gitter ",
" Coventry Facebook Gitter ",
@@ -427,7 +429,6 @@
" Guarapuava Facebook Gitter ",
" Hampton Roads Facebook Gitter ",
" Hanoi Facebook Gitter ",
- " Harcourt Facebook Gitter ",
" Hartford Facebook Gitter ",
" Hermosillo Facebook Gitter ",
" Ho Chi Minh City Facebook Gitter ",
@@ -440,11 +441,13 @@
" Irkutsk Facebook Gitter ",
" Islamabad Facebook Gitter ",
" Ivano Frankivsk Facebook Gitter ",
+ " Jaipur Facebook Gitter ",
" Jakarta Facebook Gitter ",
" Joao Pessoa Facebook Gitter ",
" Johannesburg Facebook Gitter ",
" Kaduna Facebook Gitter ",
" Kalamazoo Facebook Gitter ",
+ " Kampala Facebook Gitter ",
" Kansas City Facebook Gitter ",
" Karachi Facebook Gitter ",
" Kathmandu Facebook Gitter ",
@@ -467,7 +470,7 @@
" Los Angeles Facebook Gitter ",
" Lubbock Facebook Gitter ",
" Madrid Facebook Gitter ",
- " Manchester Facebook Gitter ",
+ " Manchester, UK Facebook Gitter ",
" Manila Facebook Gitter ",
" Melbourne Facebook Gitter ",
" Mexico City Facebook Gitter ",
@@ -476,6 +479,7 @@
" Minneapolis Facebook Gitter ",
" Mississippi Gulf Coast Facebook Gitter ",
" Missoula Facebook Gitter ",
+ " Monterrey Facebook Gitter ",
" Montgomery Facebook Gitter ",
" Montreal Facebook Gitter ",
" Moscow Facebook Gitter ",
@@ -506,6 +510,7 @@
" Porto Facebook Gitter ",
" Pune Facebook Gitter ",
" Phoenix Facebook Gitter ",
+ " Port Harcourt Facebook Gitter ",
" Portland Facebook Gitter ",
" Prescott Facebook Gitter ",
" Pristina Facebook Gitter ",
@@ -535,6 +540,7 @@
" Scottsdale Facebook Gitter ",
" Sedona Facebook Gitter ",
" Seattle Facebook Gitter ",
+ " Seoul Facebook Gitter ",
" Sidoarjo Facebook Gitter ",
" Singapore Facebook Gitter ",
" Skopje Facebook Gitter ",
From 1ddd91c7de7de52bb716f36bfb5f1dc77733593b Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Fri, 3 Jul 2015 01:12:38 -0700
Subject: [PATCH 014/186] fix minor typo
---
seed_data/field-guides.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 98a445e32d..533e942994 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -284,7 +284,7 @@
" Free Code Camp - a friendly place where you can hang out and chat ",
" Help - the best place to get help from your fellow campers ",
" LetsPair - the best room to find fellow campers to pair program with using Screen Hero ",
- " TeamViewer - the best room to find fellow campers who use Linux and pair with using Team Viewer ",
+ " TeamViewer - the best room to find fellow campers who use Linux and pair program using Team Viewer ",
" ",
" We also have language-specific chat rooms: ",
" ",
From 2d2c7f080861987aacc8c681a5dec0acc2cc7f02 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Sun, 5 Jul 2015 22:51:59 -0700
Subject: [PATCH 015/186] add selfie notification modal and camper news ad
---
views/challengeMap/show.jade | 36 ++++++++++++++++++------------------
views/stories/news-nav.jade | 8 +++++++-
2 files changed, 25 insertions(+), 19 deletions(-)
diff --git a/views/challengeMap/show.jade b/views/challengeMap/show.jade
index 173f58d7c4..8a683863b4 100644
--- a/views/challengeMap/show.jade
+++ b/views/challengeMap/show.jade
@@ -83,21 +83,21 @@ block content
li.large-p.negative-10
a(href="/challenges/#{challenge.name}")= challenge.name
- //#announcementModal.modal(tabindex='-1')
- // .modal-dialog.animated.fadeInUp.fast-animation
- // .modal-content
- // .modal-header.challenge-list-header Add us to your LinkedIn profile
- // a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
- // .modal-body
- // h3.text-left LinkedIn now recognizes Free Code Camp as a university.
- // img.img-responsive.img-center(src='https://www.evernote.com/l/AHTzkHwtg-BHj57bqqDL7WFF8WgrI5V8cxwB/image.png')
- // h3.text-left It takes less than a minute to add Free Code Camp to your LinkedIn profile.
- // a.btn.btn-lg.btn-info.btn-block(name='_csrf', value=_csrf, aria-hidden='true', href='/linkedin', target='_blank') Show me how to do this
- // a.btn.btn-lg.btn-primary.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Thanks for the heads-up
- //script.
- // $(document).ready(function () {
- // if (!localStorage || !localStorage.linkedIn) {
- // $('#announcementModal').modal('show');
- // localStorage.linkedIn = "true";
- // }
- // });
+ #announcementModal.modal(tabindex='-1')
+ .modal-dialog.animated.fadeInUp.fast-animation
+ .modal-content
+ .modal-header.challenge-list-header Share your workspace selfie
+ a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
+ .modal-body
+ h3.text-left Your workspace selfie should be part of our upcoming mosaic.
+ img.img-responsive.img-center(src='https://www.evernote.com/l/Ajm69Uj6uvJLzo7PAj8wGjjbSvGyN0ME-5YB/image.png')
+ h3.text-left Take a selfie of you at your workspace with Free Code Camp open.
+ h3.text-left Share it on Instagram, Twitter or Facebook with the hashtag #freecodecamp.
+ a.btn.btn-lg.btn-primary.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Thanks for the heads-up
+ script.
+ $(document).ready(function () {
+ if (!localStorage || !localStorage.selfie) {
+ $('#announcementModal').modal('show');
+ localStorage.selfie = "true";
+ }
+ });
diff --git a/views/stories/news-nav.jade b/views/stories/news-nav.jade
index 253a6513c9..043c6a00a6 100644
--- a/views/stories/news-nav.jade
+++ b/views/stories/news-nav.jade
@@ -11,7 +11,13 @@
input#searchArea.big-text-field.field-responsive.form-control(type='text', placeholder='Search our links')
span.input-group-btn
button#searchbutton.btn.btn-big.btn-primary.btn-responsive(type='button') Search
-
+.spacer
+.row
+ .col-xs-12.col-sm-8.col-sm-offset-2.well
+ h3.text-center Your workspace selfie should be part of our upcoming mosaic.
+ img.img-responsive(src='https://www.evernote.com/l/Ajm69Uj6uvJLzo7PAj8wGjjbSvGyN0ME-5YB/image.png')
+ p.large-p Take a selfie of you at your workspace with Free Code Camp open.
+ p.large-p Share it on Instagram, Twitter or Facebook with the hashtag #freecodecamp.
.spacer
#search-results
From cf82494f283c8fc30fd397f777174bd7e72997aa Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Sun, 5 Jul 2015 23:05:45 -0700
Subject: [PATCH 016/186] add more cities
---
seed_data/field-guides.json | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 533e942994..f30b187a81 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -348,6 +348,7 @@
" Ahmedabad Facebook Gitter ",
" Albany Facebook Gitter ",
" Alameda Facebook Gitter ",
+ " Amman Facebook Gitter ",
" Amsterdam Facebook Gitter ",
" Ann Arbor Facebook Gitter ",
" Apucarana Facebook Gitter ",
@@ -401,6 +402,7 @@
" Cluj Facebook Gitter ",
" Coimbatore Facebook Gitter ",
" Coventry Facebook Gitter ",
+ " Cuenca Facebook Gitter ",
" Curitiba Facebook Gitter ",
" Dallas Facebook Gitter ",
" Delhi Facebook Gitter ",
@@ -420,6 +422,7 @@
" Fort Worth Facebook Gitter ",
" Frankfurt Facebook Gitter ",
" Freehold Facebook Gitter ",
+ " Fresno Facebook Gitter ",
" Galveston Facebook Gitter ",
" Gdynia Facebook Gitter ",
" Geneva Facebook Gitter ",
@@ -441,6 +444,7 @@
" Irkutsk Facebook Gitter ",
" Islamabad Facebook Gitter ",
" Ivano Frankivsk Facebook Gitter ",
+ " Jacksonville Facebook Gitter ",
" Jaipur Facebook Gitter ",
" Jakarta Facebook Gitter ",
" Joao Pessoa Facebook Gitter ",
@@ -493,6 +497,7 @@
" New Paltz Facebook Gitter ",
" New York City Facebook Gitter ",
" Nicosia Facebook Gitter ",
+ " Noida Facebook Gitter ",
" North Platte Facebook Gitter ",
" Oakland Facebook Gitter ",
" Oklahoma City Facebook Gitter ",
@@ -508,7 +513,7 @@
" Pittsburgh Facebook Gitter ",
" Poitiers Facebook Gitter ",
" Porto Facebook Gitter ",
- " Pune Facebook Gitter ",
+ " Perth Facebook Gitter ",
" Phoenix Facebook Gitter ",
" Port Harcourt Facebook Gitter ",
" Portland Facebook Gitter ",
@@ -516,6 +521,7 @@
" Pristina Facebook Gitter ",
" Providence Facebook Gitter ",
" Provo Facebook Gitter ",
+ " Pune Facebook Gitter ",
" Quibdo Facebook Gitter ",
" Raleigh Facebook Gitter ",
" Recife Facebook Gitter ",
@@ -527,6 +533,7 @@
" Saint George Facebook Gitter ",
" Saint Louis Facebook Gitter ",
" Saint Paul Facebook Gitter ",
+ " Salamanca Facebook Gitter ",
" Salt Lake City Facebook Gitter ",
" Salvador Facebook Gitter ",
" San Bernardino Facebook Gitter ",
@@ -558,6 +565,7 @@
" Verde Valley Facebook Gitter ",
" Valencia Facebook Gitter ",
" Vancouver Facebook Gitter ",
+ " Victoria Facebook Gitter ",
" Virginia Beach Facebook Gitter ",
" Vitória Facebook Gitter ",
" Washington, DC Facebook Gitter ",
From 9444683c508cee8255c1e7c3c2f6bf2f5df80aa0 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Tue, 7 Jul 2015 10:48:07 -0700
Subject: [PATCH 017/186] update the landing page
---
views/home.jade | 24 ++++++++----------------
1 file changed, 8 insertions(+), 16 deletions(-)
diff --git a/views/home.jade b/views/home.jade
index f1058309b5..7b25a30777 100644
--- a/views/home.jade
+++ b/views/home.jade
@@ -1,19 +1,6 @@
extends layout
block content
.jumbotron
- if (user && user.progressTimestamps.length > 0)
- .col-xs-12
- .embed-responsive.embed-responsive-16by9
- iframe.embed-responsive-item(src='//player.vimeo.com/video/129168884')
- 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've already completed the HTML, CSS, Bootstrap Waypoints, you do not need to do these new Waypoints.
- h3 Note: If you were already doing full stack JavaScript Waypoints (Node.js, Angular.js), go ahead and start the Bonfires (Basic Algorithm Scripting).
- h3 Thanks for your patience everyone! We're confident these curriculum improvements will better prepare you for your nonprofit projects and for the workplace.
- br
- br
- br
- br
.text-center
h1.hug-top Code with Us
h2 Let's learn to code by building projects for nonprofits
@@ -43,7 +30,12 @@ block content
a.btn.btn-cta.signup-btn.btn-block(href="/login") Start learning to code (it's free)
.button-spacer
a.btn.btn-cta.btn-success.btn-block(href="/nonprofits") My nonprofit needs coding help
- .big-break
+ h2 As seen in:
+ img.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/as-seen-on.png')
+ .spacer
+ h2 We're a proven way to start your software engineering career:
+ img.img-center.img-responsive(src='https://s3.amazonaws.com/freecodecamp/linkedin-alumni.png')
+ .spacer
h2 Campers you'll hang out with:
.row
.col-xs-12.col-sm-12.col-md-4
@@ -74,8 +66,8 @@ block content
.landing-skill-icon.fa.fa-database.font-awesome-padding
h2.black-text Databases
.col-xs-12.col-sm-12.col-md-3
- .landing-skill-icon.ion-social-chrome
- h2.black-text DevTools
+ .landing-skill-icon.ion-social-github
+ h2.black-text Git
.col-xs-12.col-sm-12.col-md-3
.landing-skill-icon.ion-social-nodejs
h2.black-text Node.js
From 8afb1e7e197251bed01cff31d55ed45003959bd7 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Tue, 7 Jul 2015 11:02:00 -0700
Subject: [PATCH 018/186] remove buggy devtools challenge
---
seed_data/challenges/basic-javascript.json | 31 ----------------------
1 file changed, 31 deletions(-)
diff --git a/seed_data/challenges/basic-javascript.json b/seed_data/challenges/basic-javascript.json
index 4ab91aa847..8e40b4bc0a 100644
--- a/seed_data/challenges/basic-javascript.json
+++ b/seed_data/challenges/basic-javascript.json
@@ -188,37 +188,6 @@
"namePt": "",
"descriptionPt": []
},
- {
- "_id": "bd7118d8c441eddfaeb5bdef",
- "name": "Waypoint: Discover Chrome DevTools",
- "difficulty": 0.32,
- "challengeSeed": "110752743",
- "description": [
- "It's time to learn the most powerful tool your browser has - the Development Tools!",
- "If you aren't already using Chrome, you'll want to download it here: http://www.google.com/chrome/ . While it's true that Firefox has a tool called Firebug that is very similar to Chrome's DevTools, we will use Chrome for this challenge.",
- "Note that this course, jointly produced by Google and Code School, is technologically impressive, but occasionally buggy. If you encounter a bug, just ignore it and keep going.",
- "Go to http://discover-devtools.codeschool.com .",
- "Complete \"Chapter 1: Getting Started & Basic DOM and Styles\".",
- "Complete \"Chapter 2: Advanced DOM and Styles\".",
- "Complete \"Chapter 3: Working with the Console\".",
- "Complete \"Chapter 4: Debugging JavaScript\".",
- "Complete \"Chapter 5: Improving Network Performance\".",
- "Complete \"Chapter 6: Improving Performance\".",
- "Complete \"Chapter 7: Memory Profiling\"."
- ],
- "challengeType": 2,
- "tests": [],
- "nameCn": "",
- "descriptionCn": [],
- "nameFr": "",
- "descriptionFr": [],
- "nameRu": "",
- "descriptionRu": [],
- "nameEs": "",
- "descriptionEs": [],
- "namePt": "",
- "descriptionPt": []
- },
{
"_id": "bd7138d8c441eddfaeb5bdef",
"name": "Waypoint: Learn Regular Expressions",
From 6f89a0dbcee7c763cfd414a3dd984a52caad2c1d Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Tue, 7 Jul 2015 11:07:03 -0700
Subject: [PATCH 019/186] remove computer science challenges
---
seed_data/challenges/computer-science.json | 172 ---------------------
1 file changed, 172 deletions(-)
delete mode 100644 seed_data/challenges/computer-science.json
diff --git a/seed_data/challenges/computer-science.json b/seed_data/challenges/computer-science.json
deleted file mode 100644
index 15f5c3ebb6..0000000000
--- a/seed_data/challenges/computer-science.json
+++ /dev/null
@@ -1,172 +0,0 @@
-{
- "name": "Computer Science",
- "order": 0.005,
- "challenges": [
- {
- "_id": "bd7123d8c441eddfaeb5bdef",
- "name": "Waypoint: Learn Basic Computer Science",
- "difficulty": 0.90,
- "challengeSeed": "114628241",
- "description": [
- "Stanford has an excellent free online Computer Science curriculum. This interactive course uses a modified version of JavaScript. It will cover a lot of concepts quickly.",
- "Note that Harvard also has an excellent introduction to computer science course called CS50, but it takes more than 100 hours to complete, and doesn't use JavaScript.",
- "Despite being completely self-paced, Stanford's CS101 course is broken up into weeks. Each of the following challenges will address one of those weeks.",
- "Go to https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z54/z1/ and complete the first week's course work."
- ],
- "challengeType": 2,
- "tests": [],
- "nameCn": "",
- "descriptionCn": [],
- "nameFr": "",
- "descriptionFr": [],
- "nameRu": "",
- "descriptionRu": [],
- "nameEs": "Waypoint: Aprende Informática Básica",
- "descriptionEs": [
- "Stanford tiene en internet un excelente currículo gratuito sobre Informática. Este curso interactivo utiliza una versión modificada de JavaScript. En él se cubrirán varios conceptos rápidamente.",
- "Vale recalcar que Harvard también tiene un excelente curso de introducción a la informática llamado CS50, pero éste toma más de 100 horas para completar y no utiliza JavaScript.",
- "A pesar de que puedes llevarlo a tu propio ritmo, el curso de Stanford CS101 está separado en semanas. Cada uno de los desafíos apuntará a cada una de esas semanas.",
- "Ingresa a https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z54/z1/ y completa la primera semana del curso."
- ],
- "namePt": "",
- "descriptionPt": []
- },
- {
- "_id": "bd8124d8c441eddfaeb5bdef",
- "name": "Waypoint: Learn Loops",
- "difficulty": 0.19,
- "challengeSeed": "114597348",
- "description": [
- "Now let's tackle week 2 of Stanford's Intro to Computer Science course.",
- "This will introduce us to loops, a fundamental feature of every programming language.",
- "Go to https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z100/a7a70ce6e4724c58862ee6007284face/ and complete Week 2."
- ],
- "challengeType": 2,
- "tests": [],
- "nameCn": "",
- "descriptionCn": [],
- "nameFr": "",
- "descriptionFr": [],
- "nameRu": "",
- "descriptionRu": [],
- "nameEs": "Waypoint: Aprende Loops",
- "descriptionEs": [
- "Ahora apuntaremos a completar la semana 2 del curso de Introducción a Informática de Stanford.",
- "Esto nos introducirá a los loops (bucles), una característica fundamental de todos los lenguajes de programación",
- "Ingresa a https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z100/a7a70ce6e4724c58862ee6007284face/ y completa la segunda semana del curso."
- ],
- "namePt": "",
- "descriptionPt": []
- },
- {
- "_id": "bd8125d8c441eddfaeb5bdef",
- "name": "Waypoint: Learn Computer Hardware",
- "difficulty": 0.20,
- "challengeSeed": "114597347",
- "description": [
- "Week 3 of Stanford's Intro to Computer Science covers computer hardware and explains Moore's law of exponential growth in the price-performance of processors.",
- "This challenge will also give you an understanding of how bits and bytes work.",
- "Go to https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z143/z101/ and complete Week 3."
- ],
- "challengeType": 2,
- "tests": [],
- "nameCn": "",
- "descriptionCn": [],
- "nameFr": "",
- "descriptionFr": [],
- "nameRu": "",
- "descriptionRu": [],
- "nameEs": "Waypoint: Aprende sobre el Hardware de las Computadoras",
- "descriptionEs": [
- "La semana 3 del curso de Introducción a Informática de Stanford cubrirá el hardware de las computadoras y explicará la ley de Moore sobre el crecimiento exponencial del precio-desempeño de los procesadores.",
- "Este desafío también te dará un entendimiento más amplio sobre como funcionan los bits y bytes.",
- "Ingresa a https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z143/z101/ y completa la tercera semana del curso."
- ],
- "namePt": "",
- "descriptionPt": []
- },
- {
- "_id": "bd8126d8c441eddfaeb5bdef",
- "name": "Waypoint: Learn Computer Networking",
- "difficulty": 0.21,
- "challengeSeed": "114604811",
- "description": [
- "Now that you've learned about computer hardware, it's time to learn about the software that runs on top of it.",
- "Particularly important, you will learn about networks and TCP/IP - the protocol that powers the internet.",
- "Go to https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z187/z144/ and complete Week 4."
- ],
- "challengeType": 2,
- "tests": [],
- "nameCn": "",
- "descriptionCn": [],
- "nameFr": "",
- "descriptionFr": [],
- "nameRu": "",
- "descriptionRu": [],
- "nameEs": "Waypoint: Aprende sobre Redes de Computadoras",
- "descriptionEs": [
- "Ahora que ya hemos aprendido sobre hardware, es hora de aprender sobre el software que corre encima de él.",
- "Es importante recalcar que aprenderás sobre como funcionan las redes y TCP/IP - el protocolo que potencia el internet.",
- "Ingresa a https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z187/z144/ y completa la cuarta semana del curso."
- ],
- "namePt": "",
- "descriptionPt": []
- },
- {
- "_id": "bd8127d8c441eddfaeb5bdef",
- "name": "Waypoint: Learn Boolean Logic",
- "difficulty": 0.22,
- "challengeSeed": "114604812",
- "description": [
- "Now we'll do some more table exercises and learn boolean logic.",
- "We'll also learn the difference between digital data and analog data.",
- "Go to https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z208/z188/ and complete Week 5."
- ],
- "challengeType": 2,
- "tests": [],
- "nameCn": "",
- "descriptionCn": [],
- "nameFr": "",
- "descriptionFr": [],
- "nameRu": "",
- "descriptionRu": [],
- "nameEs": "Waypoint: Aprende Lógica Booleana",
- "descriptionEs": [
- "Ahora trabajaremos más ejercicios de tablas y aprenderemos lógica booleana.",
- "También aprenderemos la diferencia entre datos digitales y datos análogos.",
- "Ingresa a https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z208/z188/ y completa la quinta semana del curso."
- ],
- "namePt": "",
- "descriptionPt": []
- },
- {
- "_id": "bd8128d8c441eddfaeb5bdef",
- "name": "Waypoint: Learn Computer Security",
- "difficulty": 0.23,
- "challengeSeed": "114604813",
- "description": [
- "We're almost done with Stanford's Introduction to Computer Science course!",
- "We'll learn about one of the most important inventions of the 20th century - spreadsheets.",
- "We'll also learn about Computer Security and some of the more common vulnerabilities software systems have.",
- "Go to https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z229/z213/ and complete Week 6, the final week of the course."
- ],
- "challengeType": 2,
- "tests": [],
- "nameCn": "",
- "descriptionCn": [],
- "nameFr": "",
- "descriptionFr": [],
- "nameRu": "",
- "descriptionRu": [],
- "nameEs": "Waypoint: Aprende sobre Seguridad Informática",
- "descriptionEs": [
- "¡Ya casi completamos el curso de Introducción a la Informática!",
- "Aprenderemos sobre una de la más importante invención del siglo 20 - la hoja de cálculo.",
- "También aprenderemos sobre la Seguridad Informática y sobre algunas de las vulnerabilidades más comúnes en los sistemas de software.",
- "Ingresa a https://class.stanford.edu/courses/Engineering/CS101/Summer2014/courseware/z229/z213/ y completa la sexta y última semana del curso."
- ],
- "namePt": "",
- "descriptionPt": []
- }
- ]
-}
From 9b33a3bf1515b9d3c52b8061e9942475b3501af0 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Tue, 7 Jul 2015 11:09:48 -0700
Subject: [PATCH 020/186] resequence ziplines
---
seed_data/challenges/ziplines.json | 70 +++++++++++++++---------------
1 file changed, 35 insertions(+), 35 deletions(-)
diff --git a/seed_data/challenges/ziplines.json b/seed_data/challenges/ziplines.json
index 8f46222201..d028a92ce6 100644
--- a/seed_data/challenges/ziplines.json
+++ b/seed_data/challenges/ziplines.json
@@ -36,41 +36,6 @@
"namePt": "",
"descriptionPt": []
},
- {
- "_id": "bd7158d8c442eddfaeb5bd1f",
- "name": "Zipline: Use the Twitch.tv JSON API",
- "difficulty": 1.01,
- "challengeSeed": "126411564",
- "description": [
- "Objective: Build a CodePen.io that successfully reverse-engineers this: http://codepen.io/GeoffStorbeck/full/GJKRxZ .",
- "Rule #1: Don't look at the example project's code. Figure it out for yourself.",
- "Rule #2: You may use whichever libraries or APIs you need.",
- "Rule #3: Reverse engineer the example project's functionality, and also feel free to personalize it.",
- "Here are the user stories you must enable, and optional bonus user stories:",
- "User Story: As a user, I can see whether Free Code Camp is currently streaming on Twitch.tv.",
- "User Story: As a user, I can click the status output and be sent directly to the Free Code Camp's Twitch.tv channel.",
- "User Story: As a user, if Free Code Camp is streaming, I can see additional details about what they are streaming.",
- "Bonus User Story: As a user, I can search through the streams listed.",
- "Hint: Here's an example call to Twitch.tv's JSON API: https://api.twitch.tv/kraken/streams/freecodecamp
.",
- "Hint: The relevant documentation about this API call is here: https://github.com/justintv/Twitch-API/blob/master/v3_resources/streams.md#get-streamschannel .",
- "Hint: Here's an array of the Twitch.tv usernames of people who regularly stream coding: [\"freecodecamp\", \"storbeck\", \"terakilobyte\", \"habathcx\",\"RobotCaleb\",\"comster404\",\"brunofin\",\"thomasballinger\",\"noobs2ninjas\",\"beohoff\"]
",
- "Remember to use RSAP if you get stuck. Try using jQuery's $.getJSON() to consume APIs.",
- "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.",
- "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.Click here then add your link to your tweet's text "
- ],
- "challengeType": 3,
- "tests": [],
- "nameCn": "",
- "descriptionCn": [],
- "nameFr": "",
- "descriptionFr": [],
- "nameRu": "",
- "descriptionRu": [],
- "nameEs": "",
- "descriptionEs": [],
- "namePt": "",
- "descriptionPt": []
- },
{
"_id": "bd7158d8c442eddfaeb5bd13",
"name": "Zipline: Build a Random Quote Machine",
@@ -133,6 +98,41 @@
"namePt": "",
"descriptionPt": []
},
+ {
+ "_id": "bd7158d8c442eddfaeb5bd1f",
+ "name": "Zipline: Use the Twitch.tv JSON API",
+ "difficulty": 1.01,
+ "challengeSeed": "126411564",
+ "description": [
+ "Objective: Build a CodePen.io that successfully reverse-engineers this: http://codepen.io/GeoffStorbeck/full/GJKRxZ .",
+ "Rule #1: Don't look at the example project's code. Figure it out for yourself.",
+ "Rule #2: You may use whichever libraries or APIs you need.",
+ "Rule #3: Reverse engineer the example project's functionality, and also feel free to personalize it.",
+ "Here are the user stories you must enable, and optional bonus user stories:",
+ "User Story: As a user, I can see whether Free Code Camp is currently streaming on Twitch.tv.",
+ "User Story: As a user, I can click the status output and be sent directly to the Free Code Camp's Twitch.tv channel.",
+ "User Story: As a user, if Free Code Camp is streaming, I can see additional details about what they are streaming.",
+ "Bonus User Story: As a user, I can search through the streams listed.",
+ "Hint: Here's an example call to Twitch.tv's JSON API: https://api.twitch.tv/kraken/streams/freecodecamp
.",
+ "Hint: The relevant documentation about this API call is here: https://github.com/justintv/Twitch-API/blob/master/v3_resources/streams.md#get-streamschannel .",
+ "Hint: Here's an array of the Twitch.tv usernames of people who regularly stream coding: [\"freecodecamp\", \"storbeck\", \"terakilobyte\", \"habathcx\",\"RobotCaleb\",\"comster404\",\"brunofin\",\"thomasballinger\",\"noobs2ninjas\",\"beohoff\"]
",
+ "Remember to use RSAP if you get stuck. Try using jQuery's $.getJSON() to consume APIs.",
+ "When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.",
+ "If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.Click here then add your link to your tweet's text "
+ ],
+ "challengeType": 3,
+ "tests": [],
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": []
+ },
{
"_id": "bd7158d8c442eddfaeb5bd18",
"name": "Zipline: Stylize Stories on Camper News",
From 146af85bb1ad263a5c884bc88018fa73e0582492 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Wed, 8 Jul 2015 09:12:09 -0700
Subject: [PATCH 021/186] remove reference to slack
---
seed_data/challenges/basic-bonfires.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed_data/challenges/basic-bonfires.json b/seed_data/challenges/basic-bonfires.json
index ac5b09dcec..b714a136cb 100644
--- a/seed_data/challenges/basic-bonfires.json
+++ b/seed_data/challenges/basic-bonfires.json
@@ -13,7 +13,7 @@
"Pair Programming is where two people code together on the same computer. It is an efficient way to collaborate, and widely practiced at software companies. Pair Programming is one of the core concepts of \"Agile\" Software Development, which you will hear more about later.",
"Many people use Skype or Google Hangouts to pair program, but if you talk with professional software engineers, they will tell you that it's not really pair programming unless both people have the ability to use the keyboard and mouse.",
"The most popular tool for pair programming is Screen Hero. You can download Screen Hero for Mac or Windows . Create your new user account from within the app.",
- "We have a special chat room for people ready to pair program. Go to our http://freecodecamp.slack.com/messages/letspair and type \"Hello Pair Programmers!\"",
+ "We have a special chat room for people ready to pair program. Go to https://gitter.im/freecodecamp/letspair and type \"Hello Pair Programmers!\"",
"If someone is available, they will be your \"pair\" - the person you pair programming with.",
"If no one gets back to you in the first few minutes, don't worry. There will be lots of opportunities to pair program in the future.",
"If someone does get back to you, private message them and ask for the email address they used to register Screen Hero.",
From d1ad14e5f0ebb5b441a5d4bfb6b9469dbd56d8f9 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Thu, 9 Jul 2015 12:48:54 -0700
Subject: [PATCH 022/186] add new notification
---
views/challengeMap/show.jade | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/views/challengeMap/show.jade b/views/challengeMap/show.jade
index 8a683863b4..1f03deb6a7 100644
--- a/views/challengeMap/show.jade
+++ b/views/challengeMap/show.jade
@@ -86,18 +86,17 @@ block content
#announcementModal.modal(tabindex='-1')
.modal-dialog.animated.fadeInUp.fast-animation
.modal-content
- .modal-header.challenge-list-header Share your workspace selfie
+ .modal-header.challenge-list-header Our chat is slow right now
a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
.modal-body
- h3.text-left Your workspace selfie should be part of our upcoming mosaic.
- img.img-responsive.img-center(src='https://www.evernote.com/l/Ajm69Uj6uvJLzo7PAj8wGjjbSvGyN0ME-5YB/image.png')
- h3.text-left Take a selfie of you at your workspace with Free Code Camp open.
- h3.text-left Share it on Instagram, Twitter or Facebook with the hashtag #freecodecamp.
+ h3.text-left Please note that Gitter.im, our chat client, is really slow right now.
+ h3.text-left Gitter is working to fix this ASAP. If you can't join our chat room, please try again later.
+ h3.text-left Thank you for your patience. In the meantime, happy coding!
a.btn.btn-lg.btn-primary.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Thanks for the heads-up
script.
$(document).ready(function () {
- if (!localStorage || !localStorage.selfie) {
+ if (!localStorage || !localStorage.gitter) {
$('#announcementModal').modal('show');
- localStorage.selfie = "true";
+ localStorage.gitter = "true";
}
});
From c1e317c09a4b55fe15737d0576d42af68099f244 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Thu, 9 Jul 2015 13:12:56 -0700
Subject: [PATCH 023/186] update twitch page with new Saturday Summit link
---
views/resources/twitch.jade | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/views/resources/twitch.jade b/views/resources/twitch.jade
index 1b89b17432..84965fbd17 100644
--- a/views/resources/twitch.jade
+++ b/views/resources/twitch.jade
@@ -31,6 +31,11 @@ block content
.col-xs-12
h2 Here are some of our previous shows (you can full-screen them):
.row.negative-20
+ .col-xs-12.col-sm-12.col-md-6
+ .embed-responsive.embed-responsive-16by9.big-break
+ iframe.embed-responsive-item(src='//www.youtube.com/embed/MxVPmOxRSGA')
+ p.wrappable.negative-30 link:
+ a(href="//www.youtube.com/watch?v=MxVPmOxRSGA") http://www.youtube.com/watch?v=MxVPmOxRSGA
.col-xs-12.col-sm-12.col-md-6
.embed-responsive.embed-responsive-16by9.big-break
iframe.embed-responsive-item(src='//www.youtube.com/embed/Z_43xApGB9Y')
From 9864b762e733ca3a593d484b83474c29cb27f7bf Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Fri, 10 Jul 2015 21:09:48 -0700
Subject: [PATCH 024/186] add cities
---
seed_data/field-guides.json | 67 ++++++++++++++++++++++++++++++-------
1 file changed, 54 insertions(+), 13 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index f30b187a81..a89b075e56 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -346,8 +346,9 @@
" ",
" Accra Facebook Gitter ",
" Ahmedabad Facebook Gitter ",
- " Albany Facebook Gitter ",
+ " Aichi Facebook Gitter ",
" Alameda Facebook Gitter ",
+ " Albany Facebook Gitter ",
" Amman Facebook Gitter ",
" Amsterdam Facebook Gitter ",
" Ann Arbor Facebook Gitter ",
@@ -363,28 +364,36 @@
" Bangkok Facebook Gitter ",
" Belem Facebook Gitter ",
" Belgrade Facebook Gitter ",
+ " Belize Facebook Gitter ",
" Bellingham Facebook Gitter ",
" Belo Horizonte Facebook Gitter ",
" Bengaluru Facebook Gitter ",
" Berkeley Facebook Gitter ",
" Berlin Facebook Gitter ",
" Bhaktapur Facebook Gitter ",
+ " Bhubaneswar Facebook Gitter ",
" Bijeljina Facebook Gitter ",
- " Bydgoszcz Facebook Gitter ",
- " Birmingham Facebook Gitter ",
" Birmingham, Alabama Facebook Gitter ",
+ " Birmingham Facebook Gitter ",
+ " Bishkek Facebook Gitter ",
" Bismarck, ND Facebook Gitter ",
+ " Bloomington, IL Facebook Gitter ",
+ " Bloomington, IN Facebook Gitter ",
" Bogota Facebook Gitter ",
+ " Boise Facebook Gitter ",
" Boston Facebook Gitter ",
" Boulder Facebook Gitter ",
" Brasilia Facebook Gitter ",
" Bratislava Facebook Gitter ",
+ " Brighton Facebook Gitter ",
" Brno Facebook Gitter ",
" Brussels Facebook Gitter ",
" Bucaramanga Facebook Gitter ",
- " Buenos Aires Facebook Gitter ",
" Bucharest Facebook Gitter ",
" Budapest Facebook Gitter ",
+ " Buenos Aires Facebook Gitter ",
+ " Bury St Edmunds Facebook Gitter ",
+ " Bydgoszcz Facebook Gitter ",
" Cairo Facebook Gitter ",
" Calgary Facebook Gitter ",
" Campinas Facebook Gitter ",
@@ -401,6 +410,7 @@
" Cleveland Facebook Gitter ",
" Cluj Facebook Gitter ",
" Coimbatore Facebook Gitter ",
+ " Colorado Springs Facebook Gitter ",
" Coventry Facebook Gitter ",
" Cuenca Facebook Gitter ",
" Curitiba Facebook Gitter ",
@@ -420,16 +430,21 @@
" Flagstaff Facebook Gitter ",
" Florianopolis Facebook Gitter ",
" Fort Worth Facebook Gitter ",
+ " Frankfort Facebook Gitter ",
" Frankfurt Facebook Gitter ",
" Freehold Facebook Gitter ",
" Fresno Facebook Gitter ",
" Galveston Facebook Gitter ",
- " Gdynia Facebook Gitter ",
+ " Gdańsk Facebook Gitter ",
+ " Gdynia Facebook Gitter ",
" Geneva Facebook Gitter ",
" Glendora Facebook Gitter ",
- " Guntur Facebook Gitter ",
" Granada Facebook Gitter ",
+ " Guadalajara Facebook Gitter ",
" Guarapuava Facebook Gitter ",
+ " Guntur Facebook Gitter ",
+ " Hagerstown Facebook Gitter ",
+ " Hamburg Facebook Gitter ",
" Hampton Roads Facebook Gitter ",
" Hanoi Facebook Gitter ",
" Hartford Facebook Gitter ",
@@ -437,12 +452,13 @@
" Ho Chi Minh City Facebook Gitter ",
" Hong Kong Facebook Gitter ",
" Houston Facebook Gitter ",
+ " Hove Facebook Gitter ",
" Hyderabad Facebook Gitter ",
- " Istanbul Facebook Gitter ",
- " Indianapolis Facebook Gitter ",
" Iasi Facebook Gitter ",
+ " Indianapolis Facebook Gitter ",
" Irkutsk Facebook Gitter ",
" Islamabad Facebook Gitter ",
+ " Istanbul Facebook Gitter ",
" Ivano Frankivsk Facebook Gitter ",
" Jacksonville Facebook Gitter ",
" Jaipur Facebook Gitter ",
@@ -458,6 +474,8 @@
" Kemerovo Facebook Gitter ",
" Kerch Facebook Gitter ",
" Kiev Facebook Gitter ",
+ " Kingston, ON Facebook Gitter ",
+ " Knoxville Facebook Gitter ",
" Kolkata Facebook Gitter ",
" Krasnodar Facebook Gitter ",
" Kryvyi Rih Facebook Gitter ",
@@ -465,14 +483,18 @@
" La Paz Facebook Gitter ",
" Lagos Facebook Gitter ",
" Lahore Facebook Gitter ",
+ " Las Cruces Facebook Gitter ",
" Leesburg Facebook Gitter ",
" Lehi Facebook Gitter ",
+ " Lexington Facebook Gitter ",
" Lima Facebook Gitter ",
" Limassol Facebook Gitter ",
" Lisbon Facebook Gitter ",
" London Facebook Gitter ",
+ " Los Alamos Facebook Gitter ",
" Los Angeles Facebook Gitter ",
" Lubbock Facebook Gitter ",
+ " Lviv Facebook Gitter ",
" Madrid Facebook Gitter ",
" Manchester, UK Facebook Gitter ",
" Manila Facebook Gitter ",
@@ -486,7 +508,9 @@
" Monterrey Facebook Gitter ",
" Montgomery Facebook Gitter ",
" Montreal Facebook Gitter ",
+ " MorganCity Facebook Gitter ",
" Moscow Facebook Gitter ",
+ " Multan Facebook Gitter ",
" Munich Facebook Gitter ",
" Mysore Facebook Gitter ",
" Nairobi Facebook Gitter ",
@@ -498,6 +522,7 @@
" New York City Facebook Gitter ",
" Nicosia Facebook Gitter ",
" Noida Facebook Gitter ",
+ " Normal Facebook Gitter ",
" North Platte Facebook Gitter ",
" Oakland Facebook Gitter ",
" Oklahoma City Facebook Gitter ",
@@ -509,14 +534,14 @@
" Pasadena Facebook Gitter ",
" Pasto Facebook Gitter ",
" Penang Facebook Gitter ",
+ " Perth Facebook Gitter ",
" Philadelphia Facebook Gitter ",
+ " Phoenix Facebook Gitter ",
" Pittsburgh Facebook Gitter ",
" Poitiers Facebook Gitter ",
- " Porto Facebook Gitter ",
- " Perth Facebook Gitter ",
- " Phoenix Facebook Gitter ",
" Port Harcourt Facebook Gitter ",
" Portland Facebook Gitter ",
+ " Porto Facebook Gitter ",
" Prescott Facebook Gitter ",
" Pristina Facebook Gitter ",
" Providence Facebook Gitter ",
@@ -525,8 +550,11 @@
" Quibdo Facebook Gitter ",
" Raleigh Facebook Gitter ",
" Recife Facebook Gitter ",
+ " Redmond, OR Facebook Gitter ",
+ " Rice Lake Facebook Gitter ",
" Richmond Facebook Gitter ",
" Rio de Janeiro Facebook Gitter ",
+ " Rochester, NY Facebook Gitter ",
" Roma Facebook Gitter ",
" Rotterdam Facebook Gitter ",
" Sacramento Facebook Gitter ",
@@ -543,34 +571,47 @@
" San Luis Obispo Facebook Gitter ",
" Santa Barbara Facebook Gitter ",
" Santa Cruz Facebook Gitter ",
+ " Santo Domingo Facebook Gitter ",
" Sao Paulo Facebook Gitter ",
+ " Savannah Facebook Gitter ",
" Scottsdale Facebook Gitter ",
- " Sedona Facebook Gitter ",
" Seattle Facebook Gitter ",
+ " Sedona Facebook Gitter ",
" Seoul Facebook Gitter ",
" Sidoarjo Facebook Gitter ",
" Singapore Facebook Gitter ",
" Skopje Facebook Gitter ",
" Solo Facebook Gitter ",
+ " Sopot Facebook Gitter ",
" South Bend Facebook Gitter ",
+ " St Cloud Facebook Gitter ",
+ " Struga Facebook Gitter ",
" Stuttgart Facebook Gitter ",
+ " Sydney Facebook Gitter ",
+ " Sydney Facebook Gitter ",
" Taipei Facebook Gitter ",
" Tampa Facebook Gitter ",
+ " Tel Aviv Facebook Gitter ",
" Temecula Facebook Gitter ",
" Tempe Facebook Gitter ",
+ " Tijuana Facebook Gitter ",
" Tirana Facebook Gitter ",
" Toronto Facebook Gitter ",
" Tucson Facebook Gitter ",
" Tulsa Facebook Gitter ",
- " Verde Valley Facebook Gitter ",
" Valencia Facebook Gitter ",
" Vancouver Facebook Gitter ",
+ " Verde Valley Facebook Gitter ",
" Victoria Facebook Gitter ",
" Virginia Beach Facebook Gitter ",
" Vitória Facebook Gitter ",
" Washington, DC Facebook Gitter ",
+ " Waterford Facebook Gitter ",
+ " Wichita Facebook Gitter ",
" Winnipeg Facebook Gitter ",
" Yaounde Facebook Gitter ",
+ " Yekaterinburg Facebook Gitter ",
+ " Zagreb Facebook Gitter ",
" Znojmo Facebook Gitter ",
" Zurich Facebook Gitter ",
"
",
From 65e5a715a652ab06d9001d0a85dd45d1e77ecb49 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Fri, 10 Jul 2015 21:11:24 -0700
Subject: [PATCH 025/186] comment out modal explaining that gitter is slow
---
views/challengeMap/show.jade | 34 +++++++++++++++++-----------------
1 file changed, 17 insertions(+), 17 deletions(-)
diff --git a/views/challengeMap/show.jade b/views/challengeMap/show.jade
index 1f03deb6a7..70512ed0dd 100644
--- a/views/challengeMap/show.jade
+++ b/views/challengeMap/show.jade
@@ -83,20 +83,20 @@ block content
li.large-p.negative-10
a(href="/challenges/#{challenge.name}")= challenge.name
- #announcementModal.modal(tabindex='-1')
- .modal-dialog.animated.fadeInUp.fast-animation
- .modal-content
- .modal-header.challenge-list-header Our chat is slow right now
- a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
- .modal-body
- h3.text-left Please note that Gitter.im, our chat client, is really slow right now.
- h3.text-left Gitter is working to fix this ASAP. If you can't join our chat room, please try again later.
- h3.text-left Thank you for your patience. In the meantime, happy coding!
- a.btn.btn-lg.btn-primary.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Thanks for the heads-up
- script.
- $(document).ready(function () {
- if (!localStorage || !localStorage.gitter) {
- $('#announcementModal').modal('show');
- localStorage.gitter = "true";
- }
- });
+ //#announcementModal.modal(tabindex='-1')
+ // .modal-dialog.animated.fadeInUp.fast-animation
+ // .modal-content
+ // .modal-header.challenge-list-header Our chat is slow right now
+ // a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
+ // .modal-body
+ // h3.text-left Please note that Gitter.im, our chat client, is really slow right now.
+ // h3.text-left Gitter is working to fix this ASAP. If you can't join our chat room, please try again later.
+ // h3.text-left Thank you for your patience. In the meantime, happy coding!
+ // a.btn.btn-lg.btn-primary.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Thanks for the heads-up
+ //script.
+ // $(document).ready(function () {
+ // if (!localStorage || !localStorage.gitter) {
+ // $('#announcementModal').modal('show');
+ // localStorage.gitter = "true";
+ // }
+ // });
From 64dcac01844802f4899d6ae89409efd8a6d003b7 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Sat, 11 Jul 2015 16:37:27 -0700
Subject: [PATCH 026/186] update cities
---
seed_data/field-guides.json | 559 +++++++++++++++++++-----------------
1 file changed, 288 insertions(+), 271 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index a89b075e56..51ff146d01 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -344,276 +344,293 @@
" Find your city below and join their Facebook group and Gitter Chat. This is a great way to hang out with other coders, share insights, and pair program. ",
" ",
" ",
- " Accra Facebook Gitter ",
- " Ahmedabad Facebook Gitter ",
- " Aichi Facebook Gitter ",
- " Alameda Facebook Gitter ",
- " Albany Facebook Gitter ",
- " Amman Facebook Gitter ",
- " Amsterdam Facebook Gitter ",
- " Ann Arbor Facebook Gitter ",
- " Apucarana Facebook Gitter ",
- " Aracaju Facebook Gitter ",
- " Asheville Facebook Gitter ",
- " Asuncion Facebook Gitter ",
- " Atlanta Facebook Gitter ",
- " Auckland Facebook Gitter ",
- " Austin Facebook Gitter ",
- " Baltimore Facebook Gitter ",
- " Bandung Facebook Gitter ",
- " Bangkok Facebook Gitter ",
- " Belem Facebook Gitter ",
- " Belgrade Facebook Gitter ",
- " Belize Facebook Gitter ",
- " Bellingham Facebook Gitter ",
- " Belo Horizonte Facebook Gitter ",
- " Bengaluru Facebook Gitter ",
- " Berkeley Facebook Gitter ",
- " Berlin Facebook Gitter ",
- " Bhaktapur Facebook Gitter ",
- " Bhubaneswar Facebook Gitter ",
- " Bijeljina Facebook Gitter ",
- " Birmingham, Alabama Facebook Gitter ",
- " Birmingham Facebook Gitter ",
- " Bishkek Facebook Gitter ",
- " Bismarck, ND Facebook Gitter ",
- " Bloomington, IL Facebook Gitter ",
- " Bloomington, IN Facebook Gitter ",
- " Bogota Facebook Gitter ",
- " Boise Facebook Gitter ",
- " Boston Facebook Gitter ",
- " Boulder Facebook Gitter ",
- " Brasilia Facebook Gitter ",
- " Bratislava Facebook Gitter ",
- " Brighton Facebook Gitter ",
- " Brno Facebook Gitter ",
- " Brussels Facebook Gitter ",
- " Bucaramanga Facebook Gitter ",
- " Bucharest Facebook Gitter ",
- " Budapest Facebook Gitter ",
- " Buenos Aires Facebook Gitter ",
- " Bury St Edmunds Facebook Gitter ",
- " Bydgoszcz Facebook Gitter ",
- " Cairo Facebook Gitter ",
- " Calgary Facebook Gitter ",
- " Campinas Facebook Gitter ",
- " Cape Cod Facebook Gitter ",
- " Cape Town Facebook Gitter ",
- " Caracas Facebook Gitter ",
- " Charlotte Facebook Gitter ",
- " Chattanooga Facebook Gitter ",
- " Chennai Facebook Gitter ",
- " Chiang Mai Facebook Gitter ",
- " Chicago Facebook Gitter ",
- " Cincinnati Facebook Gitter ",
- " Clarksville Facebook Gitter ",
- " Cleveland Facebook Gitter ",
- " Cluj Facebook Gitter ",
- " Coimbatore Facebook Gitter ",
- " Colorado Springs Facebook Gitter ",
- " Coventry Facebook Gitter ",
- " Cuenca Facebook Gitter ",
- " Curitiba Facebook Gitter ",
- " Dallas Facebook Gitter ",
- " Delhi Facebook Gitter ",
- " Denver Facebook Gitter ",
- " Des Moines Facebook Gitter ",
- " Detroit Facebook Gitter ",
- " Dhaka Facebook Gitter ",
- " Dnipropetrovsk Facebook Gitter ",
- " Doha Facebook Gitter ",
- " Dubai Facebook Gitter ",
- " Dublin Facebook Gitter ",
- " Durango Facebook Gitter ",
- " Edmonton Facebook Gitter ",
- " Firenze Facebook Gitter ",
- " Flagstaff Facebook Gitter ",
- " Florianopolis Facebook Gitter ",
- " Fort Worth Facebook Gitter ",
- " Frankfort Facebook Gitter ",
- " Frankfurt Facebook Gitter ",
- " Freehold Facebook Gitter ",
- " Fresno Facebook Gitter ",
- " Galveston Facebook Gitter ",
- " Gdańsk Facebook Gitter ",
- " Gdynia Facebook Gitter ",
- " Geneva Facebook Gitter ",
- " Glendora Facebook Gitter ",
- " Granada Facebook Gitter ",
- " Guadalajara Facebook Gitter ",
- " Guarapuava Facebook Gitter ",
- " Guntur Facebook Gitter ",
- " Hagerstown Facebook Gitter ",
- " Hamburg Facebook Gitter ",
- " Hampton Roads Facebook Gitter ",
- " Hanoi Facebook Gitter ",
- " Hartford Facebook Gitter ",
- " Hermosillo Facebook Gitter ",
- " Ho Chi Minh City Facebook Gitter ",
- " Hong Kong Facebook Gitter ",
- " Houston Facebook Gitter ",
- " Hove Facebook Gitter ",
- " Hyderabad Facebook Gitter ",
- " Iasi Facebook Gitter ",
- " Indianapolis Facebook Gitter ",
- " Irkutsk Facebook Gitter ",
- " Islamabad Facebook Gitter ",
- " Istanbul Facebook Gitter ",
- " Ivano Frankivsk Facebook Gitter ",
- " Jacksonville Facebook Gitter ",
- " Jaipur Facebook Gitter ",
- " Jakarta Facebook Gitter ",
- " Joao Pessoa Facebook Gitter ",
- " Johannesburg Facebook Gitter ",
- " Kaduna Facebook Gitter ",
- " Kalamazoo Facebook Gitter ",
- " Kampala Facebook Gitter ",
- " Kansas City Facebook Gitter ",
- " Karachi Facebook Gitter ",
- " Kathmandu Facebook Gitter ",
- " Kemerovo Facebook Gitter ",
- " Kerch Facebook Gitter ",
- " Kiev Facebook Gitter ",
- " Kingston, ON Facebook Gitter ",
- " Knoxville Facebook Gitter ",
- " Kolkata Facebook Gitter ",
- " Krasnodar Facebook Gitter ",
- " Kryvyi Rih Facebook Gitter ",
- " La Crosse Facebook Gitter ",
- " La Paz Facebook Gitter ",
- " Lagos Facebook Gitter ",
- " Lahore Facebook Gitter ",
- " Las Cruces Facebook Gitter ",
- " Leesburg Facebook Gitter ",
- " Lehi Facebook Gitter ",
- " Lexington Facebook Gitter ",
- " Lima Facebook Gitter ",
- " Limassol Facebook Gitter ",
- " Lisbon Facebook Gitter ",
- " London Facebook Gitter ",
- " Los Alamos Facebook Gitter ",
- " Los Angeles Facebook Gitter ",
- " Lubbock Facebook Gitter ",
- " Lviv Facebook Gitter ",
- " Madrid Facebook Gitter ",
- " Manchester, UK Facebook Gitter ",
- " Manila Facebook Gitter ",
- " Melbourne Facebook Gitter ",
- " Mexico City Facebook Gitter ",
- " Miami Facebook Gitter ",
- " Milwaukee Facebook Gitter ",
- " Minneapolis Facebook Gitter ",
- " Mississippi Gulf Coast Facebook Gitter ",
- " Missoula Facebook Gitter ",
- " Monterrey Facebook Gitter ",
- " Montgomery Facebook Gitter ",
- " Montreal Facebook Gitter ",
- " MorganCity Facebook Gitter ",
- " Moscow Facebook Gitter ",
- " Multan Facebook Gitter ",
- " Munich Facebook Gitter ",
- " Mysore Facebook Gitter ",
- " Nairobi Facebook Gitter ",
- " Nashik Facebook Gitter ",
- " Nashville Facebook Gitter ",
- " New Haven Facebook Gitter ",
- " New Orleans Facebook Gitter ",
- " New Paltz Facebook Gitter ",
- " New York City Facebook Gitter ",
- " Nicosia Facebook Gitter ",
- " Noida Facebook Gitter ",
- " Normal Facebook Gitter ",
- " North Platte Facebook Gitter ",
- " Oakland Facebook Gitter ",
- " Oklahoma City Facebook Gitter ",
- " Omaha Facebook Gitter ",
- " Orange County Facebook Gitter ",
- " Orlando Facebook Gitter ",
- " Parana Facebook Gitter ",
- " Paris Facebook Gitter ",
- " Pasadena Facebook Gitter ",
- " Pasto Facebook Gitter ",
- " Penang Facebook Gitter ",
- " Perth Facebook Gitter ",
- " Philadelphia Facebook Gitter ",
- " Phoenix Facebook Gitter ",
- " Pittsburgh Facebook Gitter ",
- " Poitiers Facebook Gitter ",
- " Port Harcourt Facebook Gitter ",
- " Portland Facebook Gitter ",
- " Porto Facebook Gitter ",
- " Prescott Facebook Gitter ",
- " Pristina Facebook Gitter ",
- " Providence Facebook Gitter ",
- " Provo Facebook Gitter ",
- " Pune Facebook Gitter ",
- " Quibdo Facebook Gitter ",
- " Raleigh Facebook Gitter ",
- " Recife Facebook Gitter ",
- " Redmond, OR Facebook Gitter ",
- " Rice Lake Facebook Gitter ",
- " Richmond Facebook Gitter ",
- " Rio de Janeiro Facebook Gitter ",
- " Rochester, NY Facebook Gitter ",
- " Roma Facebook Gitter ",
- " Rotterdam Facebook Gitter ",
- " Sacramento Facebook Gitter ",
- " Saint George Facebook Gitter ",
- " Saint Louis Facebook Gitter ",
- " Saint Paul Facebook Gitter ",
- " Salamanca Facebook Gitter ",
- " Salt Lake City Facebook Gitter ",
- " Salvador Facebook Gitter ",
- " San Bernardino Facebook Gitter ",
- " San Diego Facebook Gitter ",
- " San Francisco Facebook Gitter ",
- " San Jose Facebook Gitter ",
- " San Luis Obispo Facebook Gitter ",
- " Santa Barbara Facebook Gitter ",
- " Santa Cruz Facebook Gitter ",
- " Santo Domingo Facebook Gitter ",
- " Sao Paulo Facebook Gitter ",
- " Savannah Facebook Gitter ",
- " Scottsdale Facebook Gitter ",
- " Seattle Facebook Gitter ",
- " Sedona Facebook Gitter ",
- " Seoul Facebook Gitter ",
- " Sidoarjo Facebook Gitter ",
- " Singapore Facebook Gitter ",
- " Skopje Facebook Gitter ",
- " Solo Facebook Gitter ",
- " Sopot Facebook Gitter ",
- " South Bend Facebook Gitter ",
- " St Cloud Facebook Gitter ",
- " Struga Facebook Gitter ",
- " Stuttgart Facebook Gitter ",
- " Sydney Facebook Gitter ",
- " Sydney Facebook Gitter ",
- " Taipei Facebook Gitter ",
- " Tampa Facebook Gitter ",
- " Tel Aviv Facebook Gitter ",
- " Temecula Facebook Gitter ",
- " Tempe Facebook Gitter ",
- " Tijuana Facebook Gitter ",
- " Tirana Facebook Gitter ",
- " Toronto Facebook Gitter ",
- " Tucson Facebook Gitter ",
- " Tulsa Facebook Gitter ",
- " Valencia Facebook Gitter ",
- " Vancouver Facebook Gitter ",
- " Verde Valley Facebook Gitter ",
- " Victoria Facebook Gitter ",
- " Virginia Beach Facebook Gitter ",
- " Vitória Facebook Gitter ",
- " Washington, DC Facebook Gitter ",
- " Waterford Facebook Gitter ",
- " Wichita Facebook Gitter ",
- " Winnipeg Facebook Gitter ",
- " Yaounde Facebook Gitter ",
- " Yekaterinburg Facebook Gitter ",
- " Zagreb Facebook Gitter ",
- " Znojmo Facebook Gitter ",
- " Zurich Facebook Gitter ",
+ " Accra Facebook Gitter ",
+ " Adelaide Facebook Gitter ",
+ " Ahmedabad Facebook Gitter ",
+ " Aichi Facebook Gitter ",
+ " Alameda Facebook Gitter ",
+ " Albany Facebook Gitter ",
+ " Amman Facebook Gitter ",
+ " Amsterdam Facebook Gitter ",
+ " Ankara Facebook Gitter ",
+ " Ann Arbor Facebook Gitter ",
+ " Apucarana Facebook Gitter ",
+ " Aracaju Facebook Gitter ",
+ " Asheville Facebook Gitter ",
+ " Asuncion Facebook Gitter ",
+ " Atlanta Facebook Gitter ",
+ " Auckland Facebook Gitter ",
+ " Austin Facebook Gitter ",
+ " Baltimore Facebook Gitter ",
+ " Bandung Facebook Gitter ",
+ " Bangkok Facebook Gitter ",
+ " Belem Facebook Gitter ",
+ " Belgrade Facebook Gitter ",
+ " Belize Facebook Gitter ",
+ " Bellingham Facebook Gitter ",
+ " Belo Horizonte Facebook Gitter ",
+ " Bengaluru Facebook Gitter ",
+ " Berkeley Facebook Gitter ",
+ " Berlin Facebook Gitter ",
+ " Bhaktapur Facebook Gitter ",
+ " Bhubaneswar Facebook Gitter ",
+ " Bijeljina Facebook Gitter ",
+ " Birmingham, Alabama Facebook Gitter ",
+ " Birmingham Facebook Gitter ",
+ " Bishkek Facebook Gitter ",
+ " Bismarck, ND Facebook Gitter ",
+ " Bloomington, IL Facebook Gitter ",
+ " Bloomington, IN Facebook Gitter ",
+ " Bogota Facebook Gitter ",
+ " Boise Facebook Gitter ",
+ " Boston Facebook Gitter ",
+ " Boulder Facebook Gitter ",
+ " Brasilia Facebook Gitter ",
+ " Bratislava Facebook Gitter ",
+ " Brighton Facebook Gitter ",
+ " Brno Facebook Gitter ",
+ " Brussels Facebook Gitter ",
+ " Bucaramanga Facebook Gitter ",
+ " Bucharest Facebook Gitter ",
+ " Budapest Facebook Gitter ",
+ " Buenos Aires Facebook Gitter ",
+ " Bury St Edmunds Facebook Gitter ",
+ " Bydgoszcz Facebook Gitter ",
+ " Cairo Facebook Gitter ",
+ " Calgary Facebook Gitter ",
+ " Campinas Facebook Gitter ",
+ " Cape Cod Facebook Gitter ",
+ " Cape Town Facebook Gitter ",
+ " Caracas Facebook Gitter ",
+ " Charlotte Facebook Gitter ",
+ " Chattanooga Facebook Gitter ",
+ " Chennai Facebook Gitter ",
+ " Chiang Mai Facebook Gitter ",
+ " Chicago Facebook Gitter ",
+ " Christchurch Facebook Gitter ",
+ " Cincinnati Facebook Gitter ",
+ " Clarksville Facebook Gitter ",
+ " Cleveland Facebook Gitter ",
+ " Cluj Facebook Gitter ",
+ " Coimbatore Facebook Gitter ",
+ " Colorado Springs Facebook Gitter ",
+ " Coventry Facebook Gitter ",
+ " Cuenca Facebook Gitter ",
+ " Curitiba Facebook Gitter ",
+ " Dallas Facebook Gitter ",
+ " Delhi Facebook Gitter ",
+ " Denver Facebook Gitter ",
+ " Derby Facebook Gitter ",
+ " Des Moines Facebook Gitter ",
+ " Detroit Facebook Gitter ",
+ " Dhaka Facebook Gitter ",
+ " Dnipropetrovsk Facebook Gitter ",
+ " Doha Facebook Gitter ",
+ " Dubai Facebook Gitter ",
+ " Dublin Facebook Gitter ",
+ " Durango Facebook Gitter ",
+ " Edmonton Facebook Gitter ",
+ " Firenze Facebook Gitter ",
+ " Flagstaff Facebook Gitter ",
+ " Florianopolis Facebook Gitter ",
+ " Fort Worth Facebook Gitter ",
+ " Frankfort Facebook Gitter ",
+ " Frankfurt Facebook Gitter ",
+ " Freehold Facebook Gitter ",
+ " Fresno Facebook Gitter ",
+ " Gainesville, FL Facebook Gitter ",
+ " Galveston Facebook Gitter ",
+ " Gdańsk Facebook Gitter ",
+ " Gdynia Facebook Gitter ",
+ " Geneva Facebook Gitter ",
+ " Glendora Facebook Gitter ",
+ " Granada Facebook Gitter ",
+ " Guadalajara Facebook Gitter ",
+ " Guarapuava Facebook Gitter ",
+ " Guntur Facebook Gitter ",
+ " Hagerstown Facebook Gitter ",
+ " Haifa Facebook Gitter ",
+ " Hamburg Facebook Gitter ",
+ " Hampton Roads Facebook Gitter ",
+ " Hanoi Facebook Gitter ",
+ " Hartford Facebook Gitter ",
+ " Hermosillo Facebook Gitter ",
+ " Hickory Facebook Gitter ",
+ " Ho Chi Minh City Facebook Gitter ",
+ " Hong Kong Facebook Gitter ",
+ " Houston Facebook Gitter ",
+ " Hove Facebook Gitter ",
+ " Hyderabad Facebook Gitter ",
+ " Iasi Facebook Gitter ",
+ " Indianapolis Facebook Gitter ",
+ " Irkutsk Facebook Gitter ",
+ " Islamabad Facebook Gitter ",
+ " Istanbul Facebook Gitter ",
+ " Ivano Frankivsk Facebook Gitter ",
+ " Jacksonville Facebook Gitter ",
+ " Jaipur Facebook Gitter ",
+ " Jakarta Facebook Gitter ",
+ " Joao Pessoa Facebook Gitter ",
+ " Johannesburg Facebook Gitter ",
+ " Kaduna Facebook Gitter ",
+ " Kalamazoo Facebook Gitter ",
+ " Kampala Facebook Gitter ",
+ " Kansas City Facebook Gitter ",
+ " Karachi Facebook Gitter ",
+ " Kathmandu Facebook Gitter ",
+ " Kemerovo Facebook Gitter ",
+ " Kerch Facebook Gitter ",
+ " Kiev Facebook Gitter ",
+ " Kingston, ON Facebook Gitter ",
+ " Knoxville Facebook Gitter ",
+ " Kolkata Facebook Gitter ",
+ " Krasnodar Facebook Gitter ",
+ " Kryvyi Rih Facebook Gitter ",
+ " La Crosse Facebook Gitter ",
+ " La Paz Facebook Gitter ",
+ " Lagos Facebook Gitter ",
+ " Lahore Facebook Gitter ",
+ " Las Cruces Facebook Gitter ",
+ " Leesburg Facebook Gitter ",
+ " Leesville Facebook Gitter ",
+ " Lehi Facebook Gitter ",
+ " Lexington Facebook Gitter ",
+ " Lima Facebook Gitter ",
+ " Limassol Facebook Gitter ",
+ " Lindsay Facebook Gitter ",
+ " Lisbon Facebook Gitter ",
+ " London Facebook Gitter ",
+ " Los Alamos Facebook Gitter ",
+ " Los Angeles Facebook Gitter ",
+ " Lubbock Facebook Gitter ",
+ " Lviv Facebook Gitter ",
+ " Madison Facebook Gitter ",
+ " Madrid Facebook Gitter ",
+ " Manchester, UK Facebook Gitter ",
+ " Manila Facebook Gitter ",
+ " Melbourne Facebook Gitter ",
+ " Mexico City Facebook Gitter ",
+ " Miami Facebook Gitter ",
+ " Milwaukee Facebook Gitter ",
+ " Minneapolis Facebook Gitter ",
+ " Minsk Facebook Gitter ",
+ " Mississippi Gulf Coast Facebook Gitter ",
+ " Missoula Facebook Gitter ",
+ " Monterrey Facebook Gitter ",
+ " Montgomery Facebook Gitter ",
+ " Montreal Facebook Gitter ",
+ " Moosejaw Facebook Gitter ",
+ " MorganCity Facebook Gitter ",
+ " Moscow Facebook Gitter ",
+ " Multan Facebook Gitter ",
+ " Munich Facebook Gitter ",
+ " Mysore Facebook Gitter ",
+ " Nairobi Facebook Gitter ",
+ " Nashik Facebook Gitter ",
+ " Nashville Facebook Gitter ",
+ " New Haven Facebook Gitter ",
+ " New Orleans Facebook Gitter ",
+ " New Paltz Facebook Gitter ",
+ " New York City Facebook Gitter ",
+ " Nicosia Facebook Gitter ",
+ " Noida Facebook Gitter ",
+ " Normal Facebook Gitter ",
+ " North Platte Facebook Gitter ",
+ " Oakland Facebook Gitter ",
+ " Oklahoma City Facebook Gitter ",
+ " Omaha Facebook Gitter ",
+ " Orange County Facebook Gitter ",
+ " Orlando Facebook Gitter ",
+ " Parana Facebook Gitter ",
+ " Paris Facebook Gitter ",
+ " Pasadena Facebook Gitter ",
+ " Pasto Facebook Gitter ",
+ " Penang Facebook Gitter ",
+ " Perth Facebook Gitter ",
+ " Perugia Facebook Gitter ",
+ " Philadelphia Facebook Gitter ",
+ " Phoenix Facebook Gitter ",
+ " Pittsburgh Facebook Gitter ",
+ " Poitiers Facebook Gitter ",
+ " Port Harcourt Facebook Gitter ",
+ " Portland Facebook Gitter ",
+ " Porto Facebook Gitter ",
+ " Prescott Facebook Gitter ",
+ " Pristina Facebook Gitter ",
+ " Providence Facebook Gitter ",
+ " Provo Facebook Gitter ",
+ " Pune Facebook Gitter ",
+ " Quibdo Facebook Gitter ",
+ " Raleigh Facebook Gitter ",
+ " Ranchi Facebook Gitter ",
+ " Recife Facebook Gitter ",
+ " Redmond, OR Facebook Gitter ",
+ " Rice Lake Facebook Gitter ",
+ " Richmond Facebook Gitter ",
+ " Rio de Janeiro Facebook Gitter ",
+ " Rochester, NY Facebook Gitter ",
+ " Roma Facebook Gitter ",
+ " Rotterdam Facebook Gitter ",
+ " Sacramento Facebook Gitter ",
+ " Saint George Facebook Gitter ",
+ " Saint Louis Facebook Gitter ",
+ " Saint Paul Facebook Gitter ",
+ " Salamanca Facebook Gitter ",
+ " Salt Lake City Facebook Gitter ",
+ " Salvador Facebook Gitter ",
+ " San Bernardino Facebook Gitter ",
+ " San Diego Facebook Gitter ",
+ " San Francisco Facebook Gitter ",
+ " San Jose Facebook Gitter ",
+ " San Luis Obispo Facebook Gitter ",
+ " Santa Barbara Facebook Gitter ",
+ " Santa Cruz Facebook Gitter ",
+ " Santo Domingo Facebook Gitter ",
+ " Sao Paulo Facebook Gitter ",
+ " Savannah Facebook Gitter ",
+ " Scottsdale Facebook Gitter ",
+ " Seattle Facebook Gitter ",
+ " Sedona Facebook Gitter ",
+ " Seoul Facebook Gitter ",
+ " Sheffield Facebook Gitter ",
+ " Sidoarjo Facebook Gitter ",
+ " Singapore Facebook Gitter ",
+ " Skopje Facebook Gitter ",
+ " Solo Facebook Gitter ",
+ " Sopot Facebook Gitter ",
+ " South Bend Facebook Gitter ",
+ " St Cloud Facebook Gitter ",
+ " Struga Facebook Gitter ",
+ " Stuttgart Facebook Gitter ",
+ " Sydney Facebook Gitter ",
+ " Taipei Facebook Gitter ",
+ " Tampa Facebook Gitter ",
+ " Tel Aviv Facebook Gitter ",
+ " Temecula Facebook Gitter ",
+ " Tempe Facebook Gitter ",
+ " Tijuana Facebook Gitter ",
+ " Tirana Facebook Gitter ",
+ " Torino Facebook Gitter ",
+ " Toronto Facebook Gitter ",
+ " Tucson Facebook Gitter ",
+ " Tulsa Facebook Gitter ",
+ " Valencia Facebook Gitter ",
+ " Vancouver Facebook Gitter ",
+ " Verde Valley Facebook Gitter ",
+ " Victoria Facebook Gitter ",
+ " Vilnius Facebook Gitter ",
+ " Virginia Beach Facebook Gitter ",
+ " Vitória Facebook Gitter ",
+ " Washington, DC Facebook Gitter ",
+ " Waterford Facebook Gitter ",
+ " Wichita Facebook Gitter ",
+ " Winnipeg Facebook Gitter ",
+ " Yaounde Facebook Gitter ",
+ " Yekaterinburg Facebook Gitter ",
+ " Yerevan Facebook Gitter ",
+ " Zagreb Facebook Gitter ",
+ " Znojmo Facebook Gitter ",
+ " Zurich Facebook Gitter ",
"
",
" ",
" If you didn't see your city on this list, you should create your own Facebook group for your city. Please follow these steps: ",
@@ -756,7 +773,7 @@
" ",
"
",
" We'll wait until there are two campers who have chosen the same project and look like they're a good match for one another based on the factors mentioned above. ",
- " We'll call the stakeholder to confirm once again that he or she agrees with our terms and has signed our Nonprofit Project Stakeholder Pledge . ",
+ " We'll call the stakeholder to confirm once again that he or she agrees with our terms and has signed our Nonprofit Project Stakeholder Pledge . ",
" We'll set an initial meeting with representatives from Free Code Camp, the two campers, and the stakeholder. ",
" If the stakeholder and both campers shows up promptly, and seem enthusiastic and professional, we'll start the project. ",
" ",
From 875dc2d3d544baf1c62489285535841a984ee5f9 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Sat, 11 Jul 2015 22:30:37 -0700
Subject: [PATCH 027/186] update Tampa to Tampa Bay
---
seed_data/field-guides.json | 62 ++++++++++++++++++-------------------
1 file changed, 31 insertions(+), 31 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 51ff146d01..9120ab73c6 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -455,7 +455,7 @@
" Hanoi Facebook Gitter ",
" Hartford Facebook Gitter ",
" Hermosillo Facebook Gitter ",
- " Hickory Facebook Gitter ",
+ " Hickory Facebook Gitter ",
" Ho Chi Minh City Facebook Gitter ",
" Hong Kong Facebook Gitter ",
" Houston Facebook Gitter ",
@@ -599,38 +599,38 @@
" Solo Facebook Gitter ",
" Sopot Facebook Gitter ",
" South Bend Facebook Gitter ",
- " St Cloud Facebook Gitter ",
- " Struga Facebook Gitter ",
- " Stuttgart Facebook Gitter ",
- " Sydney Facebook Gitter ",
- " Taipei Facebook Gitter ",
- " Tampa Facebook Gitter ",
- " Tel Aviv Facebook Gitter ",
- " Temecula Facebook Gitter ",
+ " St Cloud Facebook Gitter ",
+ " Struga Facebook Gitter ",
+ " Stuttgart Facebook Gitter ",
+ " Sydney Facebook Gitter ",
+ " Taipei Facebook Gitter ",
+ " Tampa Bay Facebook Gitter ",
+ " Tel Aviv Facebook Gitter ",
+ " Temecula Facebook Gitter ",
" Tempe Facebook Gitter ",
- " Tijuana Facebook Gitter ",
- " Tirana Facebook Gitter ",
- " Torino Facebook Gitter ",
- " Toronto Facebook Gitter ",
- " Tucson Facebook Gitter ",
- " Tulsa Facebook Gitter ",
- " Valencia Facebook Gitter ",
- " Vancouver Facebook Gitter ",
- " Verde Valley Facebook Gitter ",
- " Victoria Facebook Gitter ",
- " Vilnius Facebook Gitter ",
- " Virginia Beach Facebook Gitter ",
- " Vitória Facebook Gitter ",
- " Washington, DC Facebook Gitter ",
- " Waterford Facebook Gitter ",
- " Wichita Facebook Gitter ",
- " Winnipeg Facebook Gitter ",
- " Yaounde Facebook Gitter ",
- " Yekaterinburg Facebook Gitter ",
- " Yerevan Facebook Gitter ",
+ " Tijuana Facebook Gitter ",
+ " Tirana Facebook Gitter ",
+ " Torino Facebook Gitter ",
+ " Toronto Facebook Gitter ",
+ " Tucson Facebook Gitter ",
+ " Tulsa Facebook Gitter ",
+ " Valencia Facebook Gitter ",
+ " Vancouver Facebook Gitter ",
+ " Verde Valley Facebook Gitter ",
+ " Victoria Facebook Gitter ",
+ " Vilnius Facebook Gitter ",
+ " Virginia Beach Facebook Gitter ",
+ " Vitória Facebook Gitter ",
+ " Washington, DC Facebook Gitter ",
+ " Waterford Facebook Gitter ",
+ " Wichita Facebook Gitter ",
+ " Winnipeg Facebook Gitter ",
+ " Yaounde Facebook Gitter ",
+ " Yekaterinburg Facebook Gitter ",
+ " Yerevan Facebook Gitter ",
" Zagreb Facebook Gitter ",
- " Znojmo Facebook Gitter ",
- " Zurich Facebook Gitter ",
+ " Znojmo Facebook Gitter ",
+ " Zurich Facebook Gitter ",
" ",
" ",
" If you didn't see your city on this list, you should create your own Facebook group for your city. Please follow these steps: ",
From d759fe4046ef961f69bbd57c25c3587317b830aa Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Sun, 12 Jul 2015 14:32:32 -0700
Subject: [PATCH 028/186] update cities
---
seed_data/field-guides.json | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 9120ab73c6..fbaaac9225 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -438,6 +438,7 @@
" Frankfurt Facebook Gitter ",
" Freehold Facebook Gitter ",
" Fresno Facebook Gitter ",
+ " Fuengirola Facebook Gitter ",
" Gainesville, FL Facebook Gitter ",
" Galveston Facebook Gitter ",
" Gdańsk Facebook Gitter ",
@@ -483,9 +484,11 @@
" Kiev Facebook Gitter ",
" Kingston, ON Facebook Gitter ",
" Knoxville Facebook Gitter ",
+ " Koeln Facebook Gitter ",
" Kolkata Facebook Gitter ",
" Krasnodar Facebook Gitter ",
" Kryvyi Rih Facebook Gitter ",
+ " Kuala Lumpur Facebook Gitter ",
" La Crosse Facebook Gitter ",
" La Paz Facebook Gitter ",
" Lagos Facebook Gitter ",
@@ -531,6 +534,7 @@
" New Haven Facebook Gitter ",
" New Orleans Facebook Gitter ",
" New Paltz Facebook Gitter ",
+ " New Westminster Facebook Gitter ",
" New York City Facebook Gitter ",
" Nicosia Facebook Gitter ",
" Noida Facebook Gitter ",
@@ -582,6 +586,7 @@
" San Diego Facebook Gitter ",
" San Francisco Facebook Gitter ",
" San Jose Facebook Gitter ",
+ " San Juan Facebook Gitter ",
" San Luis Obispo Facebook Gitter ",
" Santa Barbara Facebook Gitter ",
" Santa Cruz Facebook Gitter ",
@@ -594,6 +599,7 @@
" Seoul Facebook Gitter ",
" Sheffield Facebook Gitter ",
" Sidoarjo Facebook Gitter ",
+ " Sierra Vista Facebook Gitter ",
" Singapore Facebook Gitter ",
" Skopje Facebook Gitter ",
" Solo Facebook Gitter ",
@@ -602,7 +608,7 @@
" St Cloud Facebook Gitter ",
" Struga Facebook Gitter ",
" Stuttgart Facebook Gitter ",
- " Sydney Facebook Gitter ",
+ " Sydney Facebook Gitter ",
" Taipei Facebook Gitter ",
" Tampa Bay Facebook Gitter ",
" Tel Aviv Facebook Gitter ",
@@ -1088,4 +1094,4 @@
""
]
}
-]
+]
\ No newline at end of file
From d61ddd7096329868de978dfb8deee5b3663072dc Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Tue, 14 Jul 2015 00:38:24 -0700
Subject: [PATCH 029/186] update cities
---
seed_data/field-guides.json | 12 ++++++++++++
1 file changed, 12 insertions(+)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index fbaaac9225..836fbdb2cc 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -344,6 +344,7 @@
" Find your city below and join their Facebook group and Gitter Chat. This is a great way to hang out with other coders, share insights, and pair program. ",
" ",
" ",
+ " Abu Dhabi Facebook Gitter ",
" Accra Facebook Gitter ",
" Adelaide Facebook Gitter ",
" Ahmedabad Facebook Gitter ",
@@ -364,8 +365,10 @@
" Baltimore Facebook Gitter ",
" Bandung Facebook Gitter ",
" Bangkok Facebook Gitter ",
+ " Beirut Facebook Gitter ",
" Belem Facebook Gitter ",
" Belgrade Facebook Gitter ",
+ " Belize City Facebook Gitter ",
" Belize Facebook Gitter ",
" Bellingham Facebook Gitter ",
" Belo Horizonte Facebook Gitter ",
@@ -413,6 +416,7 @@
" Cleveland Facebook Gitter ",
" Cluj Facebook Gitter ",
" Coimbatore Facebook Gitter ",
+ " Colombo Facebook Gitter ",
" Colorado Springs Facebook Gitter ",
" Coventry Facebook Gitter ",
" Cuenca Facebook Gitter ",
@@ -448,6 +452,7 @@
" Granada Facebook Gitter ",
" Guadalajara Facebook Gitter ",
" Guarapuava Facebook Gitter ",
+ " Guatemala City Facebook Gitter ",
" Guntur Facebook Gitter ",
" Hagerstown Facebook Gitter ",
" Haifa Facebook Gitter ",
@@ -471,6 +476,7 @@
" Jacksonville Facebook Gitter ",
" Jaipur Facebook Gitter ",
" Jakarta Facebook Gitter ",
+ " Jamnagar Facebook Gitter ",
" Joao Pessoa Facebook Gitter ",
" Johannesburg Facebook Gitter ",
" Kaduna Facebook Gitter ",
@@ -519,6 +525,7 @@
" Minsk Facebook Gitter ",
" Mississippi Gulf Coast Facebook Gitter ",
" Missoula Facebook Gitter ",
+ " Modesto Facebook Gitter ",
" Monterrey Facebook Gitter ",
" Montgomery Facebook Gitter ",
" Montreal Facebook Gitter ",
@@ -529,6 +536,7 @@
" Munich Facebook Gitter ",
" Mysore Facebook Gitter ",
" Nairobi Facebook Gitter ",
+ " Napoli Facebook Gitter ",
" Nashik Facebook Gitter ",
" Nashville Facebook Gitter ",
" New Haven Facebook Gitter ",
@@ -582,6 +590,7 @@
" Salamanca Facebook Gitter ",
" Salt Lake City Facebook Gitter ",
" Salvador Facebook Gitter ",
+ " San Antonio Facebook Gitter ",
" San Bernardino Facebook Gitter ",
" San Diego Facebook Gitter ",
" San Francisco Facebook Gitter ",
@@ -616,10 +625,12 @@
" Tempe Facebook Gitter ",
" Tijuana Facebook Gitter ",
" Tirana Facebook Gitter ",
+ " Tom's River Facebook Gitter ",
" Torino Facebook Gitter ",
" Toronto Facebook Gitter ",
" Tucson Facebook Gitter ",
" Tulsa Facebook Gitter ",
+ " Valdosta Facebook Gitter ",
" Valencia Facebook Gitter ",
" Vancouver Facebook Gitter ",
" Verde Valley Facebook Gitter ",
@@ -631,6 +642,7 @@
" Waterford Facebook Gitter ",
" Wichita Facebook Gitter ",
" Winnipeg Facebook Gitter ",
+ " Wuerzburg Facebook Gitter ",
" Yaounde Facebook Gitter ",
" Yekaterinburg Facebook Gitter ",
" Yerevan Facebook Gitter ",
From e2c28ca5074447c166263ad5b10ddebc3b29190a Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Tue, 14 Jul 2015 22:48:13 -0700
Subject: [PATCH 030/186] update cities and language rooms
---
seed_data/field-guides.json | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 836fbdb2cc..605d199cdb 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -290,12 +290,17 @@
" ",
" Arabic ",
" Chinese ",
- " Dutch ",
- " French ",
" German ",
+ " Dutch ",
+ " Spanish ",
+ " French ",
+ " Japanese ",
+ " Korean ",
+ " Persian ",
" Portugues ",
" Russian ",
- " Spanish ",
+ " Thai ",
+ " Vietnamese ",
" ",
" ",
" If you think we should add a chat room, please message @quincylarson in Gitter.
",
@@ -359,6 +364,7 @@
" Aracaju Facebook Gitter ",
" Asheville Facebook Gitter ",
" Asuncion Facebook Gitter ",
+ " Athens Facebook Gitter ",
" Atlanta Facebook Gitter ",
" Auckland Facebook Gitter ",
" Austin Facebook Gitter ",
@@ -401,6 +407,7 @@
" Bydgoszcz Facebook Gitter ",
" Cairo Facebook Gitter ",
" Calgary Facebook Gitter ",
+ " Cali Facebook Gitter ",
" Campinas Facebook Gitter ",
" Cape Cod Facebook Gitter ",
" Cape Town Facebook Gitter ",
@@ -473,6 +480,7 @@
" Islamabad Facebook Gitter ",
" Istanbul Facebook Gitter ",
" Ivano Frankivsk Facebook Gitter ",
+ " Izmir Facebook Gitter ",
" Jacksonville Facebook Gitter ",
" Jaipur Facebook Gitter ",
" Jakarta Facebook Gitter ",
@@ -553,6 +561,7 @@
" Omaha Facebook Gitter ",
" Orange County Facebook Gitter ",
" Orlando Facebook Gitter ",
+ " Panama City Facebook Gitter ",
" Parana Facebook Gitter ",
" Paris Facebook Gitter ",
" Pasadena Facebook Gitter ",
@@ -619,12 +628,14 @@
" Stuttgart Facebook Gitter ",
" Sydney Facebook Gitter ",
" Taipei Facebook Gitter ",
+ " Tallahassee Facebook Gitter ",
" Tampa Bay Facebook Gitter ",
" Tel Aviv Facebook Gitter ",
" Temecula Facebook Gitter ",
" Tempe Facebook Gitter ",
" Tijuana Facebook Gitter ",
" Tirana Facebook Gitter ",
+ " Tokyo Facebook Gitter ",
" Tom's River Facebook Gitter ",
" Torino Facebook Gitter ",
" Toronto Facebook Gitter ",
@@ -638,6 +649,7 @@
" Vilnius Facebook Gitter ",
" Virginia Beach Facebook Gitter ",
" Vitória Facebook Gitter ",
+ " Warsaw Facebook Gitter ",
" Washington, DC Facebook Gitter ",
" Waterford Facebook Gitter ",
" Wichita Facebook Gitter ",
From 3dbcb561e43de9ed08806edc47208b669b7870b1 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Tue, 14 Jul 2015 23:50:14 -0700
Subject: [PATCH 031/186] add cities, remove jobs from navbar for now
---
seed_data/field-guides.json | 12 +++++++++++-
views/partials/navbar.jade | 2 --
2 files changed, 11 insertions(+), 3 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 605d199cdb..8576d6ee6a 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -371,6 +371,7 @@
" Baltimore Facebook Gitter ",
" Bandung Facebook Gitter ",
" Bangkok Facebook Gitter ",
+ " Barcelona Facebook Gitter ",
" Beirut Facebook Gitter ",
" Belem Facebook Gitter ",
" Belgrade Facebook Gitter ",
@@ -441,9 +442,11 @@
" Dublin Facebook Gitter ",
" Durango Facebook Gitter ",
" Edmonton Facebook Gitter ",
+ " Evansville Facebook Gitter ",
" Firenze Facebook Gitter ",
" Flagstaff Facebook Gitter ",
" Florianopolis Facebook Gitter ",
+ " Fort Collins Facebook Gitter ",
" Fort Worth Facebook Gitter ",
" Frankfort Facebook Gitter ",
" Frankfurt Facebook Gitter ",
@@ -457,6 +460,7 @@
" Geneva Facebook Gitter ",
" Glendora Facebook Gitter ",
" Granada Facebook Gitter ",
+ " Grand Rapids Facebook Gitter ",
" Guadalajara Facebook Gitter ",
" Guarapuava Facebook Gitter ",
" Guatemala City Facebook Gitter ",
@@ -555,13 +559,14 @@
" Nicosia Facebook Gitter ",
" Noida Facebook Gitter ",
" Normal Facebook Gitter ",
+ " North Mississippi Facebook Gitter ",
" North Platte Facebook Gitter ",
" Oakland Facebook Gitter ",
" Oklahoma City Facebook Gitter ",
" Omaha Facebook Gitter ",
" Orange County Facebook Gitter ",
" Orlando Facebook Gitter ",
- " Panama City Facebook Gitter ",
+ " Panama City Facebook Gitter ",
" Parana Facebook Gitter ",
" Paris Facebook Gitter ",
" Pasadena Facebook Gitter ",
@@ -589,6 +594,7 @@
" Rice Lake Facebook Gitter ",
" Richmond Facebook Gitter ",
" Rio de Janeiro Facebook Gitter ",
+ " Riverside, CA Facebook Gitter ",
" Rochester, NY Facebook Gitter ",
" Roma Facebook Gitter ",
" Rotterdam Facebook Gitter ",
@@ -597,6 +603,7 @@
" Saint Louis Facebook Gitter ",
" Saint Paul Facebook Gitter ",
" Salamanca Facebook Gitter ",
+ " Salisbury, MD Facebook Gitter ",
" Salt Lake City Facebook Gitter ",
" Salvador Facebook Gitter ",
" San Antonio Facebook Gitter ",
@@ -624,6 +631,7 @@
" Sopot Facebook Gitter ",
" South Bend Facebook Gitter ",
" St Cloud Facebook Gitter ",
+ " Stroke-on-Trent Facebook Gitter ",
" Struga Facebook Gitter ",
" Stuttgart Facebook Gitter ",
" Sydney Facebook Gitter ",
@@ -633,6 +641,7 @@
" Tel Aviv Facebook Gitter ",
" Temecula Facebook Gitter ",
" Tempe Facebook Gitter ",
+ " Ticino Facebook Gitter ",
" Tijuana Facebook Gitter ",
" Tirana Facebook Gitter ",
" Tokyo Facebook Gitter ",
@@ -641,6 +650,7 @@
" Toronto Facebook Gitter ",
" Tucson Facebook Gitter ",
" Tulsa Facebook Gitter ",
+ " Tunis Facebook Gitter ",
" Valdosta Facebook Gitter ",
" Valencia Facebook Gitter ",
" Vancouver Facebook Gitter ",
diff --git a/views/partials/navbar.jade b/views/partials/navbar.jade
index 93b49da0ae..0275ef5db3 100644
--- a/views/partials/navbar.jade
+++ b/views/partials/navbar.jade
@@ -19,8 +19,6 @@ nav.navbar.navbar-default.navbar-fixed-top.nav-height
a(href='/news') News
li
a(href='/field-guide') Guide
- li
- a(href='/jobs') Jobs
if !user
li
li
From e9da8afd5aa7737895bf0e877c000083a05d353f Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Wed, 15 Jul 2015 22:43:28 -0700
Subject: [PATCH 032/186] add gitter issue modal, add twitch announcement to
news
---
views/challengeMap/show.jade | 34 +++++++++++++++++-----------------
views/partials/footer.jade | 4 ++--
views/stories/news-nav.jade | 7 +++----
3 files changed, 22 insertions(+), 23 deletions(-)
diff --git a/views/challengeMap/show.jade b/views/challengeMap/show.jade
index 70512ed0dd..9445341ee4 100644
--- a/views/challengeMap/show.jade
+++ b/views/challengeMap/show.jade
@@ -83,20 +83,20 @@ block content
li.large-p.negative-10
a(href="/challenges/#{challenge.name}")= challenge.name
- //#announcementModal.modal(tabindex='-1')
- // .modal-dialog.animated.fadeInUp.fast-animation
- // .modal-content
- // .modal-header.challenge-list-header Our chat is slow right now
- // a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
- // .modal-body
- // h3.text-left Please note that Gitter.im, our chat client, is really slow right now.
- // h3.text-left Gitter is working to fix this ASAP. If you can't join our chat room, please try again later.
- // h3.text-left Thank you for your patience. In the meantime, happy coding!
- // a.btn.btn-lg.btn-primary.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Thanks for the heads-up
- //script.
- // $(document).ready(function () {
- // if (!localStorage || !localStorage.gitter) {
- // $('#announcementModal').modal('show');
- // localStorage.gitter = "true";
- // }
- // });
+ #announcementModal.modal(tabindex='-1')
+ .modal-dialog.animated.fadeInUp.fast-animation
+ .modal-content
+ .modal-header.challenge-list-header Our chat is slow right now
+ a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
+ .modal-body
+ h3.text-left Please note that Gitter.im, our chat client, isn't working properly right now.
+ h3.text-left Gitter is working to fix this ASAP. If you can't join our chat room, please try again later.
+ h3.text-left Thank you for your patience. In the meantime, happy coding!
+ a.btn.btn-lg.btn-primary.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Thanks for the heads-up
+ script.
+ $(document).ready(function () {
+ if (!localStorage || !localStorage.gitter1) {
+ $('#announcementModal').modal('show');
+ localStorage.gitter1 = "true";
+ }
+ });
diff --git a/views/partials/footer.jade b/views/partials/footer.jade
index fe25c7723a..76d9721053 100644
--- a/views/partials/footer.jade
+++ b/views/partials/footer.jade
@@ -2,7 +2,7 @@
.col-xs-12.hidden-xs.hidden-sm
a.ion-speakerphone(href='http://blog.freecodecamp.com', target='_blank') Blog
a.ion-social-github(href="http://github.com/freecodecamp", target='_blank') GitHub
- a.ion-social-twitch-outline(href="/twitch") Twitch
+ a.ion-social-twitch-outline(href="//twitch.tv/freecodecamp", target='_blank') Twitch
a.ion-social-linkedin(href="/linkedin") LinkedIn
a.ion-social-facebook(href="/field-guide/how-can-i-find-other-free-code-camp-campers-in-my-city") Facebook
a.ion-social-twitter(href="http://twitter.com/freecodecamp", target='_blank') Twitter
@@ -12,7 +12,7 @@
span.sr-only Free Code Camp's Blog
a.ion-social-github(href="http://github.com/freecodecamp", target='_blank')
span.sr-only Free Code Camp on GitHub
- a.ion-social-twitch-outline(href="/twitch")
+ a.ion-social-twitch-outline(href="//twitch.tv/freecodecamp", target='_blank')
span.sr-only Free Code Camp Live Pair Programming on Twitch.tv
a.ion-social-linkedin(href="/linkedin")
span.sr-only Free Code Camp LinkedIn Alumni Network
diff --git a/views/stories/news-nav.jade b/views/stories/news-nav.jade
index 043c6a00a6..8ecbfe9c1f 100644
--- a/views/stories/news-nav.jade
+++ b/views/stories/news-nav.jade
@@ -14,10 +14,9 @@
.spacer
.row
.col-xs-12.col-sm-8.col-sm-offset-2.well
- h3.text-center Your workspace selfie should be part of our upcoming mosaic.
- img.img-responsive(src='https://www.evernote.com/l/Ajm69Uj6uvJLzo7PAj8wGjjbSvGyN0ME-5YB/image.png')
- p.large-p Take a selfie of you at your workspace with Free Code Camp open.
- p.large-p Share it on Instagram, Twitter or Facebook with the hashtag #freecodecamp.
+ h3.text-center Watch us Code Games Live All Weekend
+ img.img-responsive.img-center(src='https://www.evernote.com/l/AjnoItzbAtJEfKPD85t0waxHGgpMyr_G_qkB/image.png')
+ p.large-p We'll build JavaScript games all weekend and stream it all live. You should follow our Twitch.tv channel . See you there!
.spacer
#search-results
From 7aeb9fd3b88c271c7561cd73f4df1bafe57b4993 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Thu, 16 Jul 2015 01:52:02 -0700
Subject: [PATCH 033/186] update cities, remove gitter outage warning
---
seed_data/field-guides.json | 5 +++++
views/challengeMap/show.jade | 34 +++++++++++++++++-----------------
2 files changed, 22 insertions(+), 17 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 8576d6ee6a..96ae6c5e95 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -410,9 +410,11 @@
" Calgary Facebook Gitter ",
" Cali Facebook Gitter ",
" Campinas Facebook Gitter ",
+ " Canberra Facebook Gitter ",
" Cape Cod Facebook Gitter ",
" Cape Town Facebook Gitter ",
" Caracas Facebook Gitter ",
+ " Central Mississippi Facebook Gitter ",
" Charlotte Facebook Gitter ",
" Chattanooga Facebook Gitter ",
" Chennai Facebook Gitter ",
@@ -485,6 +487,7 @@
" Istanbul Facebook Gitter ",
" Ivano Frankivsk Facebook Gitter ",
" Izmir Facebook Gitter ",
+ " Jackson, MS Facebook Gitter ",
" Jacksonville Facebook Gitter ",
" Jaipur Facebook Gitter ",
" Jakarta Facebook Gitter ",
@@ -585,6 +588,7 @@
" Pristina Facebook Gitter ",
" Providence Facebook Gitter ",
" Provo Facebook Gitter ",
+ " Puebla Facebook Gitter ",
" Pune Facebook Gitter ",
" Quibdo Facebook Gitter ",
" Raleigh Facebook Gitter ",
@@ -648,6 +652,7 @@
" Tom's River Facebook Gitter ",
" Torino Facebook Gitter ",
" Toronto Facebook Gitter ",
+ " Trivandrum Facebook Gitter ",
" Tucson Facebook Gitter ",
" Tulsa Facebook Gitter ",
" Tunis Facebook Gitter ",
diff --git a/views/challengeMap/show.jade b/views/challengeMap/show.jade
index 9445341ee4..2ea972eba2 100644
--- a/views/challengeMap/show.jade
+++ b/views/challengeMap/show.jade
@@ -83,20 +83,20 @@ block content
li.large-p.negative-10
a(href="/challenges/#{challenge.name}")= challenge.name
- #announcementModal.modal(tabindex='-1')
- .modal-dialog.animated.fadeInUp.fast-animation
- .modal-content
- .modal-header.challenge-list-header Our chat is slow right now
- a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
- .modal-body
- h3.text-left Please note that Gitter.im, our chat client, isn't working properly right now.
- h3.text-left Gitter is working to fix this ASAP. If you can't join our chat room, please try again later.
- h3.text-left Thank you for your patience. In the meantime, happy coding!
- a.btn.btn-lg.btn-primary.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Thanks for the heads-up
- script.
- $(document).ready(function () {
- if (!localStorage || !localStorage.gitter1) {
- $('#announcementModal').modal('show');
- localStorage.gitter1 = "true";
- }
- });
+ //#announcementModal.modal(tabindex='-1')
+ // .modal-dialog.animated.fadeInUp.fast-animation
+ // .modal-content
+ // .modal-header.challenge-list-header Our chat is slow right now
+ // a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
+ // .modal-body
+ // h3.text-left Please note that Gitter.im, our chat client, isn't working properly right now.
+ // h3.text-left Gitter is working to fix this ASAP. If you can't join our chat room, please try again later.
+ // h3.text-left Thank you for your patience. In the meantime, happy coding!
+ // a.btn.btn-lg.btn-primary.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Thanks for the heads-up
+ //script.
+ // $(document).ready(function () {
+ // if (!localStorage || !localStorage.gitter1) {
+ // $('#announcementModal').modal('show');
+ // localStorage.gitter1 = "true";
+ // }
+ // });
From bf236006d5bb47a7d2143c9b8e0d2e6843c7df2e Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Sat, 18 Jul 2015 23:31:57 -0700
Subject: [PATCH 034/186] add gitter maintenance modal
---
seed_data/field-guides.json | 14 +++++++-------
views/challengeMap/show.jade | 33 ++++++++++++++++-----------------
2 files changed, 23 insertions(+), 24 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 96ae6c5e95..808f3cf810 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -292,10 +292,10 @@
" Chinese ",
" German ",
" Dutch ",
- " Spanish ",
+ " Spanish ",
" French ",
- " Japanese ",
- " Korean ",
+ " Japanese ",
+ " Korean ",
" Persian ",
" Portugues ",
" Russian ",
@@ -408,7 +408,7 @@
" Bydgoszcz Facebook Gitter ",
" Cairo Facebook Gitter ",
" Calgary Facebook Gitter ",
- " Cali Facebook Gitter ",
+ " Cali Facebook Gitter ",
" Campinas Facebook Gitter ",
" Canberra Facebook Gitter ",
" Cape Cod Facebook Gitter ",
@@ -649,7 +649,7 @@
" Tijuana Facebook Gitter ",
" Tirana Facebook Gitter ",
" Tokyo Facebook Gitter ",
- " Tom's River Facebook Gitter ",
+ " Tom's River Facebook Gitter ",
" Torino Facebook Gitter ",
" Toronto Facebook Gitter ",
" Trivandrum Facebook Gitter ",
@@ -798,7 +798,7 @@
" Building nonprofit projects is the main way that our campers learn full stack JavaScript and agile software development. Once you complete the Free Code Camp Waypoints, Bonfires, Ziplines and Basejumps, you'll begin this process.
",
" Starting with the end in mind ",
" Our goal at Free Code Camp is to help you land a job as a junior software developer (or, if you prefer, a 'pivot job' that leads your current career in a more technical direction).
",
- " You'll continue to work on nonprofit projects until you've built a sufficiently impressive portfolio and references to start your job search. Your portfolio will ultimately have three to five nonprofit projects. We estimate that the 900 hours of nonprofit projects you're going to complete, in addition to the 100 hours of challenges you've already completed, will be enough to qualify you for your first coding job. This will produce a much broader portfolio than a traditional coding bootcamp, which generally only has one or two capstone projects.
",
+ " You'll continue to work on nonprofit projects until you've built a sufficiently impressive portfolio and references to start your job search. Your portfolio will ultimately have four nonprofit projects. We estimate that the 800 hours of nonprofit projects you're going to complete, in addition to the 800 hours of challenges you've already completed, will be enough to qualify you for your first coding job. This will produce a much broader portfolio than a traditional coding bootcamp, which generally only has one or two capstone projects.
",
" Choosing your first Nonprofit Project ",
" We've categorized all the nonprofit projects by estimated time investment per camper: 100 hours, 200 hours, and 300 hours. These are only rough estimates.
",
" Example: if you and the camper you're paired up with (your pair) each stated you could work 20 hours per week. If the project is a 100 hour per camper project, you should be able to complete it in about 5 weeks.
",
@@ -1133,4 +1133,4 @@
""
]
}
-]
\ No newline at end of file
+]
diff --git a/views/challengeMap/show.jade b/views/challengeMap/show.jade
index 2ea972eba2..6c3804c27b 100644
--- a/views/challengeMap/show.jade
+++ b/views/challengeMap/show.jade
@@ -83,20 +83,19 @@ block content
li.large-p.negative-10
a(href="/challenges/#{challenge.name}")= challenge.name
- //#announcementModal.modal(tabindex='-1')
- // .modal-dialog.animated.fadeInUp.fast-animation
- // .modal-content
- // .modal-header.challenge-list-header Our chat is slow right now
- // a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
- // .modal-body
- // h3.text-left Please note that Gitter.im, our chat client, isn't working properly right now.
- // h3.text-left Gitter is working to fix this ASAP. If you can't join our chat room, please try again later.
- // h3.text-left Thank you for your patience. In the meantime, happy coding!
- // a.btn.btn-lg.btn-primary.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Thanks for the heads-up
- //script.
- // $(document).ready(function () {
- // if (!localStorage || !localStorage.gitter1) {
- // $('#announcementModal').modal('show');
- // localStorage.gitter1 = "true";
- // }
- // });
+ #announcementModal.modal(tabindex='-1')
+ .modal-dialog.animated.fadeInUp.fast-animation
+ .modal-content
+ .modal-header.challenge-list-header The chat service we use is doing maintenance.
+ a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
+ .modal-body
+ h3.text-left Please note that Gitter.im, our chat client, won't be available between 3 AM and 5 AM EST.
+ h3.text-left Thank you for your patience. In the meantime, happy coding!
+ a.btn.btn-lg.btn-primary.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Thanks for the heads-up
+ script.
+ $(document).ready(function () {
+ if (!localStorage || !localStorage.gitter2) {
+ $('#announcementModal').modal('show');
+ localStorage.gitter2 = "true";
+ }
+ });
From 2d5cf29c6afb8b71780e3cc8f43e4756c65d2c29 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Sun, 19 Jul 2015 02:57:01 -0700
Subject: [PATCH 035/186] add cities and remove gitter modal
---
seed_data/field-guides.json | 32 +++++++++++++++++++++++++++-----
views/challengeMap/show.jade | 32 ++++++++++++++++----------------
2 files changed, 43 insertions(+), 21 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 808f3cf810..7fcf773a21 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -279,12 +279,25 @@
"dashedName": "what-are-the-official-free-code-camp-chat-rooms",
"description": [
"",
- "
We have 4 official chat rooms: ",
+ "
We have 6 official chat rooms: ",
"
",
- " Free Code Camp - a friendly place where you can hang out and chat ",
- " Help - the best place to get help from your fellow campers ",
- " LetsPair - the best room to find fellow campers to pair program with using Screen Hero ",
- " TeamViewer - the best room to find fellow campers who use Linux and pair program using Team Viewer ",
+ " Free Code Camp - our main chat room - hang out and chat about life and learning to code ",
+ " Help - get help with our coding challenges from your fellow campers ",
+ " CodingJobs - chat about the process of getting a coding job, such as portfolios, networking, and interviewing ",
+ " YouCanDoThis - it's natural to doubt yourself when learning to code - share your feelings and get moral support here ",
+ " LetsPair - find fellow campers to pair program with using Screen Hero ",
+ " TeamViewer - find fellow campers who use Linux and pair program using Team Viewer ",
+ " PairProgrammingWomen - this women-only chat room helps women pair program together ",
+ " Hardware - chat about computer hardware and Internet of Things ",
+ " GameDev - chat about designing and developing video games ",
+ " Gaming - chat about gaming of all kinds, such as video games and table top games ",
+ " TVandMovies - chat about TV shows and movies ",
+ " Sports - chat about sports ",
+ " Music - chat about music ",
+ " Photography - chat about photography and videography ",
+ " Business - chat about business and entrepreneurship ",
+ " Saving - chat about saving, investing, and home economics ",
+ " Productivity - chat about productivity, self improvement and quantified self ",
" ",
"
We also have language-specific chat rooms: ",
"
",
@@ -349,6 +362,7 @@
" Find your city below and join their Facebook group and Gitter Chat. This is a great way to hang out with other coders, share insights, and pair program. ",
" ",
" ",
+ " Aarhus Facebook Gitter ",
" Abu Dhabi Facebook Gitter ",
" Accra Facebook Gitter ",
" Adelaide Facebook Gitter ",
@@ -358,6 +372,7 @@
" Albany Facebook Gitter ",
" Amman Facebook Gitter ",
" Amsterdam Facebook Gitter ",
+ " Anacortes Facebook Gitter ",
" Ankara Facebook Gitter ",
" Ann Arbor Facebook Gitter ",
" Apucarana Facebook Gitter ",
@@ -398,12 +413,14 @@
" Brasilia Facebook Gitter ",
" Bratislava Facebook Gitter ",
" Brighton Facebook Gitter ",
+ " Brisbane Facebook Gitter ",
" Brno Facebook Gitter ",
" Brussels Facebook Gitter ",
" Bucaramanga Facebook Gitter ",
" Bucharest Facebook Gitter ",
" Budapest Facebook Gitter ",
" Buenos Aires Facebook Gitter ",
+ " Buffalo Facebook Gitter ",
" Bury St Edmunds Facebook Gitter ",
" Bydgoszcz Facebook Gitter ",
" Cairo Facebook Gitter ",
@@ -482,6 +499,7 @@
" Hyderabad Facebook Gitter ",
" Iasi Facebook Gitter ",
" Indianapolis Facebook Gitter ",
+ " Ipswich Facebook Gitter ",
" Irkutsk Facebook Gitter ",
" Islamabad Facebook Gitter ",
" Istanbul Facebook Gitter ",
@@ -547,6 +565,7 @@
" Moosejaw Facebook Gitter ",
" MorganCity Facebook Gitter ",
" Moscow Facebook Gitter ",
+ " Moss Point Facebook Gitter ",
" Multan Facebook Gitter ",
" Munich Facebook Gitter ",
" Mysore Facebook Gitter ",
@@ -554,6 +573,7 @@
" Napoli Facebook Gitter ",
" Nashik Facebook Gitter ",
" Nashville Facebook Gitter ",
+ " New Brunswick Facebook Gitter ",
" New Haven Facebook Gitter ",
" New Orleans Facebook Gitter ",
" New Paltz Facebook Gitter ",
@@ -619,6 +639,7 @@
" San Luis Obispo Facebook Gitter ",
" Santa Barbara Facebook Gitter ",
" Santa Cruz Facebook Gitter ",
+ " Santiago Facebook Gitter ",
" Santo Domingo Facebook Gitter ",
" Sao Paulo Facebook Gitter ",
" Savannah Facebook Gitter ",
@@ -652,6 +673,7 @@
" Tom's River Facebook Gitter ",
" Torino Facebook Gitter ",
" Toronto Facebook Gitter ",
+ " Tri-Cities Washington Facebook Gitter ",
" Trivandrum Facebook Gitter ",
" Tucson Facebook Gitter ",
" Tulsa Facebook Gitter ",
diff --git a/views/challengeMap/show.jade b/views/challengeMap/show.jade
index 6c3804c27b..0b23cfc5ba 100644
--- a/views/challengeMap/show.jade
+++ b/views/challengeMap/show.jade
@@ -83,19 +83,19 @@ block content
li.large-p.negative-10
a(href="/challenges/#{challenge.name}")= challenge.name
- #announcementModal.modal(tabindex='-1')
- .modal-dialog.animated.fadeInUp.fast-animation
- .modal-content
- .modal-header.challenge-list-header The chat service we use is doing maintenance.
- a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
- .modal-body
- h3.text-left Please note that Gitter.im, our chat client, won't be available between 3 AM and 5 AM EST.
- h3.text-left Thank you for your patience. In the meantime, happy coding!
- a.btn.btn-lg.btn-primary.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Thanks for the heads-up
- script.
- $(document).ready(function () {
- if (!localStorage || !localStorage.gitter2) {
- $('#announcementModal').modal('show');
- localStorage.gitter2 = "true";
- }
- });
+ //#announcementModal.modal(tabindex='-1')
+ // .modal-dialog.animated.fadeInUp.fast-animation
+ // .modal-content
+ // .modal-header.challenge-list-header The chat service we use is doing maintenance.
+ // a.close.closing-x(href='#', data-dismiss='modal', aria-hidden='true') ×
+ // .modal-body
+ // h3.text-left Please note that Gitter.im, our chat client, won't be available between 3 AM and 5 AM EST.
+ // h3.text-left Thank you for your patience. In the meantime, happy coding!
+ // a.btn.btn-lg.btn-primary.btn-block(href='#', data-dismiss='modal', aria-hidden='true') Thanks for the heads-up
+ //script.
+ // $(document).ready(function () {
+ // if (!localStorage || !localStorage.gitter2) {
+ // $('#announcementModal').modal('show');
+ // localStorage.gitter2 = "true";
+ // }
+ // });
From 7ceaadbda0d92d83ba2db0714ed7bfec572617cd Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Sun, 19 Jul 2015 03:03:12 -0700
Subject: [PATCH 036/186] update official rooms
---
seed_data/field-guides.json | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 7fcf773a21..587e48f807 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -279,8 +279,8 @@
"dashedName": "what-are-the-official-free-code-camp-chat-rooms",
"description": [
"",
- "
We have 6 official chat rooms: ",
- "
",
+ " The following are our official chat rooms: ",
+ " ",
" Free Code Camp - our main chat room - hang out and chat about life and learning to code ",
" Help - get help with our coding challenges from your fellow campers ",
" CodingJobs - chat about the process of getting a coding job, such as portfolios, networking, and interviewing ",
@@ -297,8 +297,8 @@
" Photography - chat about photography and videography ",
" Business - chat about business and entrepreneurship ",
" Saving - chat about saving, investing, and home economics ",
- " Productivity - chat about productivity, self improvement and quantified self ",
- " ",
+ "
SelfImprovement - chat about productivity, self improvement and quantified self",
+ " ",
"
We also have language-specific chat rooms: ",
"
",
" Arabic ",
From a0c553f67d0ecd8e181d5be0fd2ac2fdc882a812 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Tue, 21 Jul 2015 19:13:46 -0700
Subject: [PATCH 037/186] update cities
---
seed_data/field-guides.json | 13 +++++++++++++
1 file changed, 13 insertions(+)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 587e48f807..59415846b9 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -370,6 +370,7 @@
" Aichi Facebook Gitter ",
" Alameda Facebook Gitter ",
" Albany Facebook Gitter ",
+ " Almeria Facebook Gitter ",
" Amman Facebook Gitter ",
" Amsterdam Facebook Gitter ",
" Anacortes Facebook Gitter ",
@@ -460,6 +461,7 @@
" Dubai Facebook Gitter ",
" Dublin Facebook Gitter ",
" Durango Facebook Gitter ",
+ " Edinburgh Facebook Gitter ",
" Edmonton Facebook Gitter ",
" Evansville Facebook Gitter ",
" Firenze Facebook Gitter ",
@@ -484,6 +486,7 @@
" Guarapuava Facebook Gitter ",
" Guatemala City Facebook Gitter ",
" Guntur Facebook Gitter ",
+ " Göttingen Facebook Gitter ",
" Hagerstown Facebook Gitter ",
" Haifa Facebook Gitter ",
" Hamburg Facebook Gitter ",
@@ -498,6 +501,7 @@
" Hove Facebook Gitter ",
" Hyderabad Facebook Gitter ",
" Iasi Facebook Gitter ",
+ " Idaho Falls Facebook Gitter ",
" Indianapolis Facebook Gitter ",
" Ipswich Facebook Gitter ",
" Irkutsk Facebook Gitter ",
@@ -532,6 +536,7 @@
" La Paz Facebook Gitter ",
" Lagos Facebook Gitter ",
" Lahore Facebook Gitter ",
+ " Lakeland Facebook Gitter ",
" Las Cruces Facebook Gitter ",
" Leesburg Facebook Gitter ",
" Leesville Facebook Gitter ",
@@ -544,6 +549,7 @@
" London Facebook Gitter ",
" Los Alamos Facebook Gitter ",
" Los Angeles Facebook Gitter ",
+ " Louisville Facebook Gitter ",
" Lubbock Facebook Gitter ",
" Lviv Facebook Gitter ",
" Madison Facebook Gitter ",
@@ -553,6 +559,7 @@
" Melbourne Facebook Gitter ",
" Mexico City Facebook Gitter ",
" Miami Facebook Gitter ",
+ " Milan Facebook Gitter ",
" Milwaukee Facebook Gitter ",
" Minneapolis Facebook Gitter ",
" Minsk Facebook Gitter ",
@@ -560,6 +567,7 @@
" Missoula Facebook Gitter ",
" Modesto Facebook Gitter ",
" Monterrey Facebook Gitter ",
+ " Montevideo Facebook Gitter ",
" Montgomery Facebook Gitter ",
" Montreal Facebook Gitter ",
" Moosejaw Facebook Gitter ",
@@ -589,6 +597,7 @@
" Omaha Facebook Gitter ",
" Orange County Facebook Gitter ",
" Orlando Facebook Gitter ",
+ " Ottawa Facebook Gitter ",
" Panama City Facebook Gitter ",
" Parana Facebook Gitter ",
" Paris Facebook Gitter ",
@@ -601,9 +610,11 @@
" Phoenix Facebook Gitter ",
" Pittsburgh Facebook Gitter ",
" Poitiers Facebook Gitter ",
+ " Pondicherry Facebook Gitter ",
" Port Harcourt Facebook Gitter ",
" Portland Facebook Gitter ",
" Porto Facebook Gitter ",
+ " Prague Facebook Gitter ",
" Prescott Facebook Gitter ",
" Pristina Facebook Gitter ",
" Providence Facebook Gitter ",
@@ -647,6 +658,7 @@
" Seattle Facebook Gitter ",
" Sedona Facebook Gitter ",
" Seoul Facebook Gitter ",
+ " Shanghai Facebook Gitter ",
" Sheffield Facebook Gitter ",
" Sidoarjo Facebook Gitter ",
" Sierra Vista Facebook Gitter ",
@@ -678,6 +690,7 @@
" Tucson Facebook Gitter ",
" Tulsa Facebook Gitter ",
" Tunis Facebook Gitter ",
+ " University Center Facebook Gitter ",
" Valdosta Facebook Gitter ",
" Valencia Facebook Gitter ",
" Vancouver Facebook Gitter ",
From 14de6fd3eff00e4724f4d3e0d0c127d22e35337f Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Tue, 21 Jul 2015 20:02:41 -0700
Subject: [PATCH 038/186] update chat rooms and news-nav banner
---
seed_data/field-guides.json | 75 ++++++++++++++++++++-----------------
views/stories/news-nav.jade | 6 +--
2 files changed, 43 insertions(+), 38 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 59415846b9..8cbda63b2b 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -280,42 +280,47 @@
"description": [
"",
"
The following are our official chat rooms: ",
- "
",
- " Free Code Camp - our main chat room - hang out and chat about life and learning to code ",
- " Help - get help with our coding challenges from your fellow campers ",
- " CodingJobs - chat about the process of getting a coding job, such as portfolios, networking, and interviewing ",
- " YouCanDoThis - it's natural to doubt yourself when learning to code - share your feelings and get moral support here ",
- " LetsPair - find fellow campers to pair program with using Screen Hero ",
- " TeamViewer - find fellow campers who use Linux and pair program using Team Viewer ",
- " PairProgrammingWomen - this women-only chat room helps women pair program together ",
- " Hardware - chat about computer hardware and Internet of Things ",
- " GameDev - chat about designing and developing video games ",
- " Gaming - chat about gaming of all kinds, such as video games and table top games ",
- " TVandMovies - chat about TV shows and movies ",
- " Sports - chat about sports ",
- " Music - chat about music ",
- " Photography - chat about photography and videography ",
- " Business - chat about business and entrepreneurship ",
- " Saving - chat about saving, investing, and home economics ",
- " SelfImprovement - chat about productivity, self improvement and quantified self ",
- " ",
+ "
",
+ " FreeCodeCamp our main chat room - hang out and chat about life and learning to code ",
+ " Help get help with our coding challenges from your fellow campers ",
+ " CodingJobs chat about the process of getting a coding job, such as portfolios, networking, and interviewing ",
+ " YouCanDoThis it's natural to doubt yourself when learning to code - share your feelings and get moral support here ",
+ " LetsPair find fellow campers to pair program with using Screen Hero ",
+ " TeamViewer find fellow campers who use Linux and pair program using Team Viewer ",
+ " PairProgrammingWomen this women-only chat room helps women pair program with other women if they so desire ",
+ "
",
+ "
We also have the following casual chat rooms: ",
+ "
",
+ " Hardware chat about computer hardware and Internet of Things ",
+ " GameDev chat about designing and developing video games ",
+ " Gaming chat about gaming of all kinds, such as video games and table top games ",
+ " TVandMovies chat about TV shows and movies ",
+ " Sports chat about sports ",
+ " Music chat about music ",
+ " Art and Photography chat about art, photography and videography ",
+ " Business chat about business and entrepreneurship ",
+ " Saving chat about saving, investing, and home economics ",
+ " SelfImprovement chat about productivity, self improvement and quantified self ",
+ "
",
+ "
You'll note that we do not have religion or politics chat rooms. Please don't discuss those things here :)
",
"
We also have language-specific chat rooms: ",
- "
",
- " Arabic ",
- " Chinese ",
- " German ",
- " Dutch ",
- " Spanish ",
- " French ",
- " Japanese ",
- " Korean ",
- " Persian ",
- " Portugues ",
- " Russian ",
- " Thai ",
- " Vietnamese ",
- " ",
+ "
",
+ " Arabic ",
+ " Chinese ",
+ " German ",
+ " Dutch ",
+ " Spanish ",
+ " French ",
+ " Japanese ",
+ " Korean ",
+ " Persian ",
+ " Portugues ",
+ " Russian ",
+ " Thai ",
+ " Vietnamese ",
+ "
",
"
",
+ "
By joining these chat rooms, you accept our Code of Conduct . ",
"
If you think we should add a chat room, please message @quincylarson in Gitter.
",
"
"
]
@@ -967,7 +972,7 @@
" Free Code Camp should be a harassment-free experience for everyone, regardless of gender, gender identity and expression, age, sexual orientation, disability, physical appearance, body size, race, national origin, or religion (or lack thereof).
",
" We do not tolerate harassment of campers in any form, anywhere on Free Code Camp's online media (Gitter, Twitch, etc.) or during pair programming. Harassment includes sexual language and imagery, deliberate intimidation, stalking, unwelcome sexual attention, libel, and any malicious hacking or social engineering.
",
" If a camper engages in harassing behavior, our team will take any action we deem appropriate, up to and including banning them from Free Code Camp.
",
- " We want everyone to feel safe and respected. If you are being harassed or notice that someone else is being harassed, say something! Message @quincylarson, @terakilobyte and @codenonprofit in Gitter (preferably with a screen shot of the offending language) so we can take fast action.
",
+ " We want everyone to feel safe and respected. If you are being harassed or notice that someone else is being harassed, say something! Message @quincylarson, @brianamarie and @codenonprofit in Gitter (preferably with a screen shot of the offending language) so we can take fast action.
",
" If you have questions about this code of conduct, email us at team@freecodecamp.com .
",
" "
]
diff --git a/views/stories/news-nav.jade b/views/stories/news-nav.jade
index 8ecbfe9c1f..5d11172e39 100644
--- a/views/stories/news-nav.jade
+++ b/views/stories/news-nav.jade
@@ -14,9 +14,9 @@
.spacer
.row
.col-xs-12.col-sm-8.col-sm-offset-2.well
- h3.text-center Watch us Code Games Live All Weekend
- img.img-responsive.img-center(src='https://www.evernote.com/l/AjnoItzbAtJEfKPD85t0waxHGgpMyr_G_qkB/image.png')
- p.large-p We'll build JavaScript games all weekend and stream it all live. You should follow our Twitch.tv channel . See you there!
+ h3.text-center We just added a ton of new chat rooms
+ img.img-responsive.img-center(src='https://www.evernote.com/l/AHTBwaDT-EdNLrMjK_9EBMO8Eqrt7Z87GhQB/image.png')
+ p.large-p Check out our full list of official chat rooms and star the ones you want to keep at the top of your room list. Happy chatting!
.spacer
#search-results
From c258e6d61c45de0723c265fe321c9803a2f57c0f Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Thu, 23 Jul 2015 17:30:10 -0700
Subject: [PATCH 039/186] add issues room
---
seed_data/field-guides.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 8cbda63b2b..d247a58e7b 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -288,6 +288,7 @@
" LetsPair find fellow campers to pair program with using Screen Hero ",
" TeamViewer find fellow campers who use Linux and pair program using Team Viewer ",
" PairProgrammingWomen this women-only chat room helps women pair program with other women if they so desire ",
+ " Issues this is the place to discuss issues with our open source codebase and coordinate pull requests ",
"
",
" We also have the following casual chat rooms: ",
" ",
From 87b43cce15d785732a4c5e4067904c5f3ab462aa Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Thu, 23 Jul 2015 17:45:20 -0700
Subject: [PATCH 040/186] add causesignal to recommended nonprofit resources
---
seed_data/field-guides.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index d247a58e7b..35a5750186 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -1055,6 +1055,7 @@
" https://wordpress.com/
",
" Build it yourself for free with no code
",
" Donor and Volunteer Management Systems ",
+ " http://causesignal.com
",
" https://www.thedatabank.com/
",
" http://www.donorsnap.com/
",
" http://www.donorperfect.com/
",
From 955017e24107ef2bd4c21f544fb29e706db7fd99 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Thu, 23 Jul 2015 22:25:38 -0700
Subject: [PATCH 041/186] add Tagalog chat room
---
seed_data/field-guides.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 35a5750186..3e8568f20b 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -318,6 +318,7 @@
" Portugues ",
" Russian ",
" Thai ",
+ " Tagalog ",
" Vietnamese ",
"
",
" ",
From f69a11d78e839a0029dfa6d8d0b040d33d52efdb Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Fri, 24 Jul 2015 00:40:15 -0700
Subject: [PATCH 042/186] add warning to field guide
---
seed_data/field-guides.json | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 3e8568f20b..d8622aca30 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -279,7 +279,8 @@
"dashedName": "what-are-the-official-free-code-camp-chat-rooms",
"description": [
"",
- "
The following are our official chat rooms: ",
+ "
The following are our official chat rooms. ",
+ "
Please note that all chat rooms listed here are publicly accessible and indexed by search engines, so only share email addresses or other sensitive information in private messages.
",
"
",
" FreeCodeCamp our main chat room - hang out and chat about life and learning to code ",
" Help get help with our coding challenges from your fellow campers ",
@@ -303,7 +304,7 @@
" Saving chat about saving, investing, and home economics ",
" SelfImprovement chat about productivity, self improvement and quantified self ",
"
",
- "
You'll note that we do not have religion or politics chat rooms. Please don't discuss those things here :)
",
+ "
You'll note that we do not have religion or politics chat rooms. Please don't discuss those things at Free Code Camp :)
",
"
We also have language-specific chat rooms: ",
"
",
" Arabic ",
From cecf60aa1757168cdc864f420fc504e9550d756e Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Sun, 26 Jul 2015 15:53:31 -0700
Subject: [PATCH 043/186] update cities and add different help rooms
---
seed_data/field-guides.json | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index d8622aca30..3e269ec356 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -283,13 +283,17 @@
" Please note that all chat rooms listed here are publicly accessible and indexed by search engines, so only share email addresses or other sensitive information in private messages.
",
" ",
" FreeCodeCamp our main chat room - hang out and chat about life and learning to code ",
- " Help get help with our coding challenges from your fellow campers ",
+ " Help get help with our Waypoint challenges from your fellow campers ",
+ " HelpZiplines get help with our Zipline challenges from your fellow campers ",
+ " HelpBonfires get help with our Bonfire challenges from your fellow campers ",
+ " HelpBasejumps get help with our Basejump challenges from your fellow campers ",
+ " NonprofitProjects get help with your Nonprofit Projects from your fellow campers ",
" CodingJobs chat about the process of getting a coding job, such as portfolios, networking, and interviewing ",
" YouCanDoThis it's natural to doubt yourself when learning to code - share your feelings and get moral support here ",
" LetsPair find fellow campers to pair program with using Screen Hero ",
" TeamViewer find fellow campers who use Linux and pair program using Team Viewer ",
- " PairProgrammingWomen this women-only chat room helps women pair program with other women if they so desire ",
" Issues this is the place to discuss issues with our open source codebase and coordinate pull requests ",
+ " PairProgrammingWomen this women-only chat room helps women pair program with other women if they so desire ",
"
",
" We also have the following casual chat rooms: ",
" ",
@@ -307,6 +311,7 @@
" You'll note that we do not have religion or politics chat rooms. Please don't discuss those things at Free Code Camp :)
",
" We also have language-specific chat rooms: ",
" ",
+ " Albanian ",
" Arabic ",
" Chinese ",
" German ",
@@ -378,6 +383,7 @@
" Aichi Facebook Gitter ",
" Alameda Facebook Gitter ",
" Albany Facebook Gitter ",
+ " Algiers Facebook Gitter ",
" Almeria Facebook Gitter ",
" Amman Facebook Gitter ",
" Amsterdam Facebook Gitter ",
@@ -440,6 +446,8 @@
" Cape Cod Facebook Gitter ",
" Cape Town Facebook Gitter ",
" Caracas Facebook Gitter ",
+ " Cardiff Facebook Gitter ",
+ " Casablanca Facebook Gitter ",
" Central Mississippi Facebook Gitter ",
" Charlotte Facebook Gitter ",
" Chattanooga Facebook Gitter ",
@@ -472,6 +480,7 @@
" Edinburgh Facebook Gitter ",
" Edmonton Facebook Gitter ",
" Evansville Facebook Gitter ",
+ " Ferizaj Facebook Gitter ",
" Firenze Facebook Gitter ",
" Flagstaff Facebook Gitter ",
" Florianopolis Facebook Gitter ",
@@ -504,6 +513,7 @@
" Hermosillo Facebook Gitter ",
" Hickory Facebook Gitter ",
" Ho Chi Minh City Facebook Gitter ",
+ " Hobart Facebook Gitter ",
" Hong Kong Facebook Gitter ",
" Houston Facebook Gitter ",
" Hove Facebook Gitter ",
@@ -537,6 +547,7 @@
" Knoxville Facebook Gitter ",
" Koeln Facebook Gitter ",
" Kolkata Facebook Gitter ",
+ " Kosovo Facebook Gitter ",
" Krasnodar Facebook Gitter ",
" Kryvyi Rih Facebook Gitter ",
" Kuala Lumpur Facebook Gitter ",
@@ -554,10 +565,12 @@
" Limassol Facebook Gitter ",
" Lindsay Facebook Gitter ",
" Lisbon Facebook Gitter ",
+ " Little Rock Facebook Gitter ",
" London Facebook Gitter ",
" Los Alamos Facebook Gitter ",
" Los Angeles Facebook Gitter ",
" Louisville Facebook Gitter ",
+ " Luanda Facebook Gitter ",
" Lubbock Facebook Gitter ",
" Lviv Facebook Gitter ",
" Madison Facebook Gitter ",
@@ -634,6 +647,7 @@
" Ranchi Facebook Gitter ",
" Recife Facebook Gitter ",
" Redmond, OR Facebook Gitter ",
+ " Reno Facebook Gitter ",
" Rice Lake Facebook Gitter ",
" Richmond Facebook Gitter ",
" Rio de Janeiro Facebook Gitter ",
@@ -679,10 +693,13 @@
" Stroke-on-Trent Facebook Gitter ",
" Struga Facebook Gitter ",
" Stuttgart Facebook Gitter ",
+ " Surrey Facebook Gitter ",
" Sydney Facebook Gitter ",
" Taipei Facebook Gitter ",
" Tallahassee Facebook Gitter ",
+ " Tallinn Facebook Gitter ",
" Tampa Bay Facebook Gitter ",
+ " Tehran Facebook Gitter ",
" Tel Aviv Facebook Gitter ",
" Temecula Facebook Gitter ",
" Tempe Facebook Gitter ",
@@ -707,6 +724,7 @@
" Vilnius Facebook Gitter ",
" Virginia Beach Facebook Gitter ",
" Vitória Facebook Gitter ",
+ " Warrington Facebook Gitter ",
" Warsaw Facebook Gitter ",
" Washington, DC Facebook Gitter ",
" Waterford Facebook Gitter ",
From b81567f02f1256036f04e227c89b2032e68520d1 Mon Sep 17 00:00:00 2001
From: ckylee
Date: Tue, 28 Jul 2015 00:49:09 +0800
Subject: [PATCH 044/186] Update basic-bonfires.json
Temporary fix to bug found in "Everything Be True" bonfire mission (additional test case to prevent "return collection[0].hasProperty(pre)" from passing)
---
seed_data/challenges/basic-bonfires.json | 1 +
1 file changed, 1 insertion(+)
diff --git a/seed_data/challenges/basic-bonfires.json b/seed_data/challenges/basic-bonfires.json
index b714a136cb..5d81301776 100644
--- a/seed_data/challenges/basic-bonfires.json
+++ b/seed_data/challenges/basic-bonfires.json
@@ -1421,6 +1421,7 @@
"tests": [
"assert.strictEqual(every([{'user': 'Tinky-Winky', 'sex': 'male'}, {'user': 'Dipsy', 'sex': 'male'}, {'user': 'Laa-Laa', 'sex': 'female'}, {'user': 'Po', 'sex': 'female'}], 'sex'), true, 'should return true if predicate returns truthy for all elements in the collection');",
"assert.strictEqual(every([{'user': 'Tinky-Winky', 'sex': 'male'}, {'user': 'Dipsy', 'sex': 'male'}, {'user': 'Laa-Laa', 'sex': 'female'}, {'user': 'Po', 'sex': 'female'}], {'sex': 'female'}), false, 'should return false if predicate returns falsey for any element in the collection');"
+ "assert.strictEqual(every([{'user': 'Tinky-Winky', 'sex': 'female'}, {'user': 'Dipsy', 'sex': 'male'}, {'user': 'Laa-Laa', 'sex': 'female'}, {'user': 'Po', 'sex': 'female'}], {'sex': 'female'}), false, 'should return false if predicate returns falsey for any element in the collection');"
],
"MDNlinks": [
"Object.hasOwnProperty()",
From 03229bd021db67683238187623db2d0bdf229915 Mon Sep 17 00:00:00 2001
From: Juan David Pastas
Date: Mon, 3 Aug 2015 17:33:14 -0500
Subject: [PATCH 045/186] Language typo.
---
seed_data/field-guides.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed_data/field-guides.json b/seed_data/field-guides.json
index 3e269ec356..f87bdc740b 100644
--- a/seed_data/field-guides.json
+++ b/seed_data/field-guides.json
@@ -1136,7 +1136,7 @@
"description": [
"",
"
Translation is an all-or-nothing proposal.",
- "
We won't be able to add new languages to Free Code Camp until all of our challenges are translated into that langauge.
",
+ "
We won't be able to add new languages to Free Code Camp until all of our challenges are translated into that language.
",
"
In addition to translating these initially, we'll also need to maintain the translation as the challenges are gradually updated.
",
"
If you're able to help us, you can join our Trello board by sending @quincylarson your email address in Gitter.
",
"
"
From 2b45fc7787e98d089e97687cf7e557fb633267fd Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Mon, 3 Aug 2015 22:09:56 -0700
Subject: [PATCH 046/186] remove stories from sitemap
---
views/resources/sitemap.jade | 7 -------
1 file changed, 7 deletions(-)
diff --git a/views/resources/sitemap.jade b/views/resources/sitemap.jade
index 5541565540..664b1ffd10 100644
--- a/views/resources/sitemap.jade
+++ b/views/resources/sitemap.jade
@@ -46,13 +46,6 @@ urlset(xmlns="http://www.sitemaps.org/schemas/sitemap/0.9")
changefreq weekly
priority= 0.5
- each story in stories
- url
- loc #{appUrl}/news/#{story.replace(/\s/g, '-')}
- lastmod= now
- changefreq daily
- priority= 0.9
-
each nonprofit in nonprofits
url
loc #{appUrl}/nonprofits/#{nonprofit.replace(/\s/g, '-')}
From d8110dad8809772b2d0cf211192746a3a570573c Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Mon, 3 Aug 2015 22:11:28 -0700
Subject: [PATCH 047/186] fix json typo
---
seed_data/challenges/basic-bonfires.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed_data/challenges/basic-bonfires.json b/seed_data/challenges/basic-bonfires.json
index 5d81301776..413224a973 100644
--- a/seed_data/challenges/basic-bonfires.json
+++ b/seed_data/challenges/basic-bonfires.json
@@ -1420,7 +1420,7 @@
],
"tests": [
"assert.strictEqual(every([{'user': 'Tinky-Winky', 'sex': 'male'}, {'user': 'Dipsy', 'sex': 'male'}, {'user': 'Laa-Laa', 'sex': 'female'}, {'user': 'Po', 'sex': 'female'}], 'sex'), true, 'should return true if predicate returns truthy for all elements in the collection');",
- "assert.strictEqual(every([{'user': 'Tinky-Winky', 'sex': 'male'}, {'user': 'Dipsy', 'sex': 'male'}, {'user': 'Laa-Laa', 'sex': 'female'}, {'user': 'Po', 'sex': 'female'}], {'sex': 'female'}), false, 'should return false if predicate returns falsey for any element in the collection');"
+ "assert.strictEqual(every([{'user': 'Tinky-Winky', 'sex': 'male'}, {'user': 'Dipsy', 'sex': 'male'}, {'user': 'Laa-Laa', 'sex': 'female'}, {'user': 'Po', 'sex': 'female'}], {'sex': 'female'}), false, 'should return false if predicate returns falsey for any element in the collection');",
"assert.strictEqual(every([{'user': 'Tinky-Winky', 'sex': 'female'}, {'user': 'Dipsy', 'sex': 'male'}, {'user': 'Laa-Laa', 'sex': 'female'}, {'user': 'Po', 'sex': 'female'}], {'sex': 'female'}), false, 'should return false if predicate returns falsey for any element in the collection');"
],
"MDNlinks": [
From 13920938f5d1a452b3e55628e548a3595efdf303 Mon Sep 17 00:00:00 2001
From: Quincy Larson
Date: Sat, 15 Aug 2015 12:00:43 -0700
Subject: [PATCH 048/186] warning of server maintanence
---
views/challengeMap/show.jade | 3 +++
views/home.jade | 3 +++
2 files changed, 6 insertions(+)
diff --git a/views/challengeMap/show.jade b/views/challengeMap/show.jade
index 0b23cfc5ba..7138f75b8f 100644
--- a/views/challengeMap/show.jade
+++ b/views/challengeMap/show.jade
@@ -2,6 +2,9 @@ extends ../layout
block content
script.
var completedChallenges = !{JSON.stringify(completedChallengeList)};
+ .bg-danger.default-border-radius
+ p
+ a(href='https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/August-2015-Server-Maintenance' target='_blank') We're changing servers for the next few minutes. Please note that from now until this message goes away, newly created accounts and camper progress may be lost. Thank you for your patience.
.panel.panel-info
.panel-heading.text-center
h1 Challenge Map
diff --git a/views/home.jade b/views/home.jade
index 7b25a30777..85165761ce 100644
--- a/views/home.jade
+++ b/views/home.jade
@@ -1,5 +1,8 @@
extends layout
block content
+ .bg-danger.default-border-radius
+ p
+ a(href='https://github.com/FreeCodeCamp/FreeCodeCamp/wiki/August-2015-Server-Maintenance' target='_blank') We're changing servers for the next few minutes. Please note that from now until this message goes away, newly created accounts and camper progress may be lost. Thank you for your patience.
.jumbotron
.text-center
h1.hug-top Code with Us
From e8bffc57213e68113dedaf7e35a979fb9e63cfa2 Mon Sep 17 00:00:00 2001
From: Matt Trifilo
Date: Mon, 17 Aug 2015 14:55:22 -0500
Subject: [PATCH 049/186] Spelling and grammar edit.
Minor spelling and grammar edit in the description of "Waypoint: Use Hex Code for Specific Colors" for clarity.
---
seed/challenges/html5-and-css.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed/challenges/html5-and-css.json b/seed/challenges/html5-and-css.json
index 7bdce36cdb..1bf7c3d1ba 100644
--- a/seed/challenges/html5-and-css.json
+++ b/seed/challenges/html5-and-css.json
@@ -3431,7 +3431,7 @@
"description": [
"Did you know there are other ways to represent colors in CSS? One of these ways is called hexadecimal code, or hex code
for short.",
"Decimal
means the numbers zero through nine - the numbers that people use in everyday life. Hexadecimal
includes these 10 numbers, plus the letters A, B, C, D, E and F. This means that Hexidecimal has a total of 16 possible values, instead of the 10 possible values that our normal base-10 number system gives us.",
- "With CSS, we use 6 hexidecimal number to represent colors. For example, #000000
is the lowest possible value, and it represents the color black.",
+ "With CSS, we use 6 hexadecimal numbers to represent colors. For example, #000000
is the lowest possible value, and it represents the color black.",
"Replace the word black
in our body
element's background-color with its hex code
representation, #000000
. "
],
"tests": [
From 8f0fba855ee6e5afce8d2d6504c64a1688722e5f Mon Sep 17 00:00:00 2001
From: ayampol
Date: Mon, 17 Aug 2015 16:43:43 -0400
Subject: [PATCH 050/186] Update basic-ziplines.json
Add missing around <a target='_blank'&rt;.
---
seed/challenges/basic-ziplines.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed/challenges/basic-ziplines.json b/seed/challenges/basic-ziplines.json
index 7b7ca96c27..ff72754961 100644
--- a/seed/challenges/basic-ziplines.json
+++ b/seed/challenges/basic-ziplines.json
@@ -52,7 +52,7 @@
"Bonus User Story: As a user, I navigate to different sections of the webpage by clicking buttons in the navigation.",
"Don't worry if you don't have anything to showcase on your portfolio yet - you will build several several apps on the next few CodePen challenges, and can come back and update your portfolio later.",
"There are many great portfolio templates out there, but for this challenge, you'll need to build a portfolio page yourself. Using Bootstrap will make this much easier for you.",
- "Note that CodePen.io overrides the Window.open() function, so if you want to open windows using jquery, you will need to target invisible anchor elements like this one: <a target='_blank'&rt;.",
+ "Note that CodePen.io overrides the Window.open() function, so if you want to open windows using jquery, you will need to target invisible anchor elements like this one: <a target='_blank'&rt;
.",
"Remember to use Read-Search-Ask if you get stuck.",
"When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.",
"If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.Click here then add your link to your tweet's text "
From 5034a92038221ff7e1d1ce248caf9a018f6d5c78 Mon Sep 17 00:00:00 2001
From: ayampol
Date: Mon, 17 Aug 2015 16:49:19 -0400
Subject: [PATCH 051/186] Fix code tags
Changed &rt to >.
---
seed/challenges/basic-ziplines.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed/challenges/basic-ziplines.json b/seed/challenges/basic-ziplines.json
index ff72754961..408eecdde8 100644
--- a/seed/challenges/basic-ziplines.json
+++ b/seed/challenges/basic-ziplines.json
@@ -52,7 +52,7 @@
"Bonus User Story: As a user, I navigate to different sections of the webpage by clicking buttons in the navigation.",
"Don't worry if you don't have anything to showcase on your portfolio yet - you will build several several apps on the next few CodePen challenges, and can come back and update your portfolio later.",
"There are many great portfolio templates out there, but for this challenge, you'll need to build a portfolio page yourself. Using Bootstrap will make this much easier for you.",
- "Note that CodePen.io overrides the Window.open() function, so if you want to open windows using jquery, you will need to target invisible anchor elements like this one: <a target='_blank'&rt;
.",
+ "Note that CodePen.io overrides the Window.open() function, so if you want to open windows using jquery, you will need to target invisible anchor elements like this one: <a target='_blank'>
.",
"Remember to use Read-Search-Ask if you get stuck.",
"When you are finished, click the \"I've completed this challenge\" button and include a link to your CodePen. If you pair programmed, you should also include the Free Code Camp username of your pair.",
"If you'd like immediate feedback on your project, click this button and paste in a link to your CodePen project. Otherwise, we'll review it before you start your nonprofit projects.Click here then add your link to your tweet's text "
From 32eeefa439c8d134257f6a7edb21bf1705c70f82 Mon Sep 17 00:00:00 2001
From: Aryan Jabbari
Date: Mon, 17 Aug 2015 22:19:14 -0400
Subject: [PATCH 052/186] Fixed #1909 #1972
---
seed/challenges/basic-javascript.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed/challenges/basic-javascript.json b/seed/challenges/basic-javascript.json
index 1096e02868..4b72ffdd49 100644
--- a/seed/challenges/basic-javascript.json
+++ b/seed/challenges/basic-javascript.json
@@ -150,7 +150,7 @@
"Bracket notation
is a way to get a character at a specific index
within a string.",
"Computers don't start counting at 1 like humans do. They start at 0.",
"For example, the character at index 0 in the word \"Charles\" is \"C\". So if var firstName = \"Charles\"
, you can get the value of the first letter of the string by using firstName[0]
.",
- "Use bracket notation
to find the first character in a the firstLetterOfLastName
variable.",
+ "Use bracket notation
to find the first character in the firstLetterOfLastName
variable.",
"Try looking at the firstLetterOfFirstName
variable declaration if you get stuck."
],
"tests": [
From db1afbc87bf340d847acd825c171c60dbcd3dd38 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Juan=20Mart=C3=ADnez?=
Date: Tue, 18 Aug 2015 02:20:24 +0000
Subject: [PATCH 053/186] Fixes #1970 (minor typo)
---
seed/challenges/html5-and-css.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed/challenges/html5-and-css.json b/seed/challenges/html5-and-css.json
index 7bdce36cdb..3382085643 100644
--- a/seed/challenges/html5-and-css.json
+++ b/seed/challenges/html5-and-css.json
@@ -3749,7 +3749,7 @@
"description": [
"Another way you can represent colors in CSS is by using rgb
values.",
"RGB values look like this: rgb(0, 0, 0)
for black and rgb(255, 255, 255)
for white.",
- "Instead of using six hexadecimal digits like you do with hex code, with rbg
you specify the brightness of each color with a number between 0 and 255.",
+ "Instead of using six hexadecimal digits like you do with hex code, with rgb
you specify the brightness of each color with a number between 0 and 255.",
"If you do the math, 16 times 16 is 256 total values. So rgb
, which starts counting from zero, has the exact same number of possible values as hex code.",
"Let's replace the hex code in our body
element's background color with the RGB value for black: rgb(0, 0, 0)
"
],
From fa31cdca0e912ce6309758e50b116fefc86e9bcd Mon Sep 17 00:00:00 2001
From: Aryan Jabbari
Date: Mon, 17 Aug 2015 22:21:57 -0400
Subject: [PATCH 054/186] Fixed #1944
---
seed/challenges/basic-javascript.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed/challenges/basic-javascript.json b/seed/challenges/basic-javascript.json
index 1096e02868..a69da47e52 100644
--- a/seed/challenges/basic-javascript.json
+++ b/seed/challenges/basic-javascript.json
@@ -958,7 +958,7 @@
"We can use if statements in JavaScript to only execute code if a certain condition is met.",
"if statements require some sort of boolean condition evaluate.",
"Example:",
- " if (1 == 2) {
",
+ " if (1 === 2) {
",
" return(true);
",
"}
",
"else {
",
From 0e43c46bffd1dac1e72262056b21e043298bd045 Mon Sep 17 00:00:00 2001
From: Aryan Jabbari
Date: Mon, 17 Aug 2015 22:29:35 -0400
Subject: [PATCH 055/186] Fixed #1980
---
seed/challenges/basic-ziplines.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed/challenges/basic-ziplines.json b/seed/challenges/basic-ziplines.json
index 7b7ca96c27..662526a365 100644
--- a/seed/challenges/basic-ziplines.json
+++ b/seed/challenges/basic-ziplines.json
@@ -48,7 +48,7 @@
"Here are the user stories you must enable, and optional bonus user stories:",
"User Story: As a user, I can access all of the portfolio webpage's content just by scrolling.",
"User Story: As a user, I can click different buttons that will take me to the portfolio creator's different social media pages.",
- "User Story: As a user, I can see thumbnail images of different projects the portfolio creator has built (if you don't haven't built any websites before, use placeholders.)",
+ "User Story: As a user, I can see thumbnail images of different projects the portfolio creator has built (if you haven't built any websites before, use placeholders.)",
"Bonus User Story: As a user, I navigate to different sections of the webpage by clicking buttons in the navigation.",
"Don't worry if you don't have anything to showcase on your portfolio yet - you will build several several apps on the next few CodePen challenges, and can come back and update your portfolio later.",
"There are many great portfolio templates out there, but for this challenge, you'll need to build a portfolio page yourself. Using Bootstrap will make this much easier for you.",
From b3875a3d6e3a33ac72765e93baa54dc8f8465ef0 Mon Sep 17 00:00:00 2001
From: Aryan Jabbari
Date: Mon, 17 Aug 2015 22:31:37 -0400
Subject: [PATCH 056/186] Fixed #1982
---
seed/challenges/basic-javascript.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed/challenges/basic-javascript.json b/seed/challenges/basic-javascript.json
index 1096e02868..8ba3870827 100644
--- a/seed/challenges/basic-javascript.json
+++ b/seed/challenges/basic-javascript.json
@@ -755,7 +755,7 @@
"title": "Manipulate JavaScript Objects",
"difficulty":"9.9823",
"description":[
- "There are many ways to add and add and remove properties from objects.",
+ "There are many ways to add and remove properties from objects.",
"For example, we can add properties to objects like this:",
"myObject.myProperty = \"myValue\";
",
"We can also delete them like this:",
From 5d54d98190aa1783af3ca47433ef89fe80f1443f Mon Sep 17 00:00:00 2001
From: Aryan Jabbari
Date: Mon, 17 Aug 2015 22:54:08 -0400
Subject: [PATCH 057/186] Fixes #1924
---
seed/challenges/basic-javascript.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed/challenges/basic-javascript.json b/seed/challenges/basic-javascript.json
index 1096e02868..0c94fc4802 100644
--- a/seed/challenges/basic-javascript.json
+++ b/seed/challenges/basic-javascript.json
@@ -1040,7 +1040,7 @@
],
"challengeSeed":[
"var test = (function() {",
- " var testString = \"There's 3 cats but 4 dogs.\";",
+ " var testString = \"There are 3 cats but 4 dogs.\";",
"",
" // Only change code below this line.",
"",
From c5d07b9e051b4856b5eb67db905a807c29a95413 Mon Sep 17 00:00:00 2001
From: Brett Guillory
Date: Mon, 17 Aug 2015 22:05:16 -0500
Subject: [PATCH 058/186] Potentially missing ;
My browser was throwing an error:
```Uncaught SyntaxError: missing ) after argument list```
That pointed to this line in the console as far as I could tell.
If this is a fix, w00t. If not, ignore this.
---
server/views/partials/universal-head.jade | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/server/views/partials/universal-head.jade b/server/views/partials/universal-head.jade
index da6ed4c914..bc27767eb5 100644
--- a/server/views/partials/universal-head.jade
+++ b/server/views/partials/universal-head.jade
@@ -19,7 +19,7 @@ script.
script(src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.11/angular.js")
script.
if (typeof window.angular === 'undefined') {
- document.write(''));
editor.refresh();
var resetEditor = function resetEditor() {
- editor.setValue(allSeeds);
+ editor.setValue(allSeeds.replace((/fccss/gi), ''));
updatePreview();
codeStorage.updateStorage();
};
From 45bcd32c9c12fa073e40d8fa78e35c57f4af3bd8 Mon Sep 17 00:00:00 2001
From: Matt Trifilo
Date: Wed, 19 Aug 2015 22:48:25 -0500
Subject: [PATCH 113/186] Edited Pull Request #2018
Escaped the double quotation marks on line 418.
---
seed/challenges/jquery.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed/challenges/jquery.json b/seed/challenges/jquery.json
index 166ff7f431..3bc98205b4 100644
--- a/seed/challenges/jquery.json
+++ b/seed/challenges/jquery.json
@@ -415,7 +415,7 @@
"You can also change the non-CSS properties of HTML elements with jQuery. For example, you can disable buttons.",
"When you disable a button, it will become grayed-out and can no longer be clicked.",
"jQuery has a function called .prop()
that allows you to adjust the properties of elements.",
- "Here's how you would disable all buttons: $("button").prop("disabled", true);
",
+ "Here's how you would disable all buttons: $(\"button\").prop(\"disabled\", true);
",
"Disable only the target1
button."
],
"tests": [
From 235b952ff03e9fcd66a914b2e19ce5cd4a0c2b24 Mon Sep 17 00:00:00 2001
From: Manuel Alzadiq Romero
Date: Thu, 20 Aug 2015 07:55:21 -0500
Subject: [PATCH 114/186] change in basic bonfire Mutations
Added an expect to be falsein order to avoid passing with wrong code
---
seed/challenges/basic-bonfires.json | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/seed/challenges/basic-bonfires.json b/seed/challenges/basic-bonfires.json
index 6f1cf7b9d4..f4349f7ca0 100644
--- a/seed/challenges/basic-bonfires.json
+++ b/seed/challenges/basic-bonfires.json
@@ -506,7 +506,8 @@
"expect(mutation(['Mary', 'Army'])).to.be.true;",
"expect(mutation(['Mary', 'Aarmy'])).to.be.true;",
"expect(mutation(['Alien', 'line'])).to.be.true;",
- "expect(mutation(['floor', 'for'])).to.be.true;"
+ "expect(mutation(['floor', 'for'])).to.be.true;",
+ "expect(mutation(['hello', 'neo'])).to.be.false;"
],
"MDNlinks": [
"Array.indexOf()"
From 9cf0f803219ec0b0a93c99ab7c326f0a23c0a0df Mon Sep 17 00:00:00 2001
From: Kian Moretz
Date: Thu, 20 Aug 2015 10:09:33 -0400
Subject: [PATCH 115/186] change div to button in Target an element by ID
jQuery challenge - fix for issue #2309
---
seed/challenges/jquery.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/seed/challenges/jquery.json b/seed/challenges/jquery.json
index 48b47c26e3..59ff49397d 100644
--- a/seed/challenges/jquery.json
+++ b/seed/challenges/jquery.json
@@ -154,7 +154,7 @@
"difficulty": 3.04,
"description": [
"You can also target elements by their id attributes.",
- "First target your div
element with the id target3
by using the $(\"#target3\")
selector.",
+ "First target your button
element with the id target3
by using the $(\"#target3\")
selector.",
"Note that, just like with CSS declarations, you type a #
before the id's name.",
"Then use jQuery's .addClass()
function to add the classes animated
and fadeOut
.",
"Here's how you'd make the button
element with the id target6
fade out: $(\"#target6\").addClass(\"animated fadeOut\")
."
From b001b8f8f2bd1d560206412be541de02d093db45 Mon Sep 17 00:00:00 2001
From: dokkillo
Date: Thu, 20 Aug 2015 16:28:14 +0200
Subject: [PATCH 116/186] issue #2271
---
seed/challenges/html5-and-css.json | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/seed/challenges/html5-and-css.json b/seed/challenges/html5-and-css.json
index b7a82a256c..c2d5578f4d 100644
--- a/seed/challenges/html5-and-css.json
+++ b/seed/challenges/html5-and-css.json
@@ -3430,8 +3430,8 @@
"difficulty": 1.54,
"description": [
"Did you know there are other ways to represent colors in CSS? One of these ways is called hexadecimal code, or hex code
for short.",
- "Decimal
means the numbers zero through nine - the numbers that people use in everyday life. Hexadecimal
includes these 10 numbers, plus the letters A, B, C, D, E and F. This means that Hexidecimal has a total of 16 possible values, instead of the 10 possible values that our normal base-10 number system gives us.",
- "With CSS, we use 6 hexidecimal number to represent colors. For example, #000000
is the lowest possible value, and it represents the color black.",
+ "Decimal
means the numbers zero through nine - the numbers that people use in everyday life. Hexadecimal
includes these 10 numbers, plus the letters A, B, C, D, E and F. This means that Hexadecimal has a total of 16 possible values, instead of the 10 possible values that our normal base-10 number system gives us.",
+ "With CSS, we use 6 hexadecimal number to represent colors. For example, #000000
is the lowest possible value, and it represents the color black.",
"Replace the word black
in our body
element's background-color with its hex code
representation, #000000
. "
],
"tests": [
From 45b53937c8365edc33327a33a79cf47121019175 Mon Sep 17 00:00:00 2001
From: dokkillo
Date: Thu, 20 Aug 2015 16:57:50 +0200
Subject: [PATCH 117/186] issue #2265
---
seed/challenges/html5-and-css.json | 3987 ++++++++++++++++++++++++++++
1 file changed, 3987 insertions(+)
create mode 100644 seed/challenges/html5-and-css.json
diff --git a/seed/challenges/html5-and-css.json b/seed/challenges/html5-and-css.json
new file mode 100644
index 0000000000..3cc32e985d
--- /dev/null
+++ b/seed/challenges/html5-and-css.json
@@ -0,0 +1,3987 @@
+{
+ "name": "HTML5 and CSS",
+ "order": 0.002,
+ "challenges": [
+ {
+ "id": "bd7123c8c441eddfaeb5bdef",
+ "title": "Say Hello to HTML Elements",
+ "difficulty": 1.01,
+ "description": [
+ "Welcome to Free Code Camp's first coding challenge!",
+ "You can edit code
in your text editor
, which we've embedded into this web page.",
+ "Do you see the code in your text editor that says <h1>Hello</h1>
? That's an HTML element
.",
+ "Most HTML elements have an opening tag
and a closing tag
. Opening tags look like this: <h1>
. Closing tags look like this: </h1>
. Note that the only difference between opening tags and closing tags is that closing tags have a slash after their opening angle bracket.",
+ "Once you've completed each challenge, and all its tests are passing, the \"Go to my next challenge\" button will become enabled. Click it - or press control and enter at the same time - to advance to the next challenge.",
+ "To enable the \"Go to my next challenge\" button on this exercise, change your h1
tag's text to say \"Hello World\" instead of \"Hello\"."
+ ],
+ "tests": [
+ "assert.isTrue((/hello(\\s)+world/gi).test($('h1').text()), 'Your h1
element should have the text \"Hello World\".')"
+ ],
+ "challengeSeed": [
+ "Hello "
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "Waypoint: Saluda a los Elementos HTML",
+ "descriptionEs": [
+ "¡Bienvenido/a al primer desafío de programación de Free Code Camp! Haz click en el botón de abajo para tener más instrucciones.",
+ "Genial. Ahora puedes leer el resto de las instrucciones de este desafío.",
+ "Puedes editar tu código
en tu editor de texto
, que hemos incrustado en esta página web.",
+ "¿Ves el código en tu editor de texto que dice <h1>Hello</h1>
? Ese es un elemento
HTML.",
+ "La mayoría de los elementos HTML tienen una etiqueta de apertura
y una etiqueta de cierre
. Las etiquetas de apertura se ven como: <h1>
. Las etiquetas de cierre se ven como: </h1>
. Fíjate que la única diferencia entre las etiquetas de apertura y de cierre es que estas últimas tienen un / después de su signo de apertura (<).",
+ "Una vez que hayas completado cada desafío, y que hayas pasado todas sus pruebas, el botón \"Ir a mi siguiente desafío\" se activará. Haz click en él - o presiona control y enter al mismo tiempo - para avanzar al siguiente desafío.",
+ "Para activar el botón \"Ir a mi siguiente desafío\" de este ejercicio, cambia tu texto de la etiqueta h1
para que diga \"Hello World\" en lugar de \"Hello\"."
+ ],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Begrüße die HTML Elemente",
+ "descriptionDe": [
+ "Willkommen bei der ersten Programmier-Challenge von Free Code Camp! Klicke auf den folgenden Button für weitere Instruktionen.",
+ "Sehr gut. Jetzt kannst du den Rest der Instruktionen für diese Challenge lesen.",
+ "Mithilfe des eingebauten Text Editors
kannst du den Code
bearbeiten.",
+ "Siehst du den Code <h1>Hallo</h1>
im Editor? Das ist ein HTML Element
.",
+ "Die meisten HTML Elemente haben eine öffnende Auszeichnung (Tag)
und eine sich schließende
. Öffnende Tags sehen so aus: <h1>
. Schließende Tags so: </h1>
. Beachte, dass der einzige Unterschied zwischen öffnenden und schließenden Tags in dem Slash besteht, das bei schließenden Tags auf die sich öffnende spitze Klammer folgt.",
+ "Sobald du eine Challenge abgeschlossen hast und alle Tests erfolgreich sind, wird der Button \"Go to my next challenge\" aktiv. Klicke auf diesen – oder drücke Steuerung (Control) und gleichzeitig Enter – um zur nächsten Challenge zu gehen.",
+ "Um den Button \"Go to my next challenge\" dieser Lektion zu aktivieren, ändere den Inhalt des h1
Tags von \"Hello\" zu \"Hello World\"."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf0887a",
+ "title": "Headline with the h2 Element",
+ "difficulty": 1.02,
+ "description": [
+ "Add an h2
tag that says \"CatPhotoApp\" to create a second HTML element
below your \"Hello World\" h1
element.",
+ "The h2
element you enter will create an h2
element on the website.",
+ "This element tells the browser how to render the text that it contains.",
+ "h2
elements are slightly smaller than h1
elements. There are also h3
, h4
, h5
and h6
elements."
+ ],
+ "tests": [
+ "assert(($(\"h2\").length > 0), 'Create an h2
element.')",
+ "assert(editor.match(/<\\/h2>/g) && editor.match(/<\\/h2>/g).length === editor.match(//g).length, 'Make sure your h2
element has a closing tag.')",
+ "assert.isTrue((/cat(\\s)?photo(\\s)?app/gi).test($(\"h2\").text()), 'Your h2
element should have the text \"CatPhotoApp\".')",
+ "assert.isTrue((/hello(\\s)+world/gi).test($(\"h1\").text()), 'Your h1
element should have the text \"Hello World\".')"
+ ],
+ "challengeSeed": [
+ "Hello World "
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "Waypoint: Encabezado con el elemento h2",
+ "descriptionEs": [
+ "Agrega una etiqueta h2
que diga \"CatPhotoApp\" para crear un segundo elemento
HTML debajo de tu elemento h1
\"Hello World\".",
+ "El elemento h2 que ingreses creará un elemento h2 en el sitio web.",
+ "Este elemento le dice al navegador cómo mostrar el texto que contiene.",
+ "Los elementos h2
son ligeramente más pequeños que los elementos h1
. También hay elementos h3
, h4
, h5
y h6
."
+ ],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Überschrift mit dem h2 Element",
+ "descriptionDe": [
+ "Füge unter h1
\"Hello World\" ein zweites HTML Element h2
hinzu, in dem \"CatPhotoApp\" steht.",
+ "Das eingetragene h2
Element wird ein h2
Element auf der Website erzeugen.",
+ "Dieses Element sagt dem Browser, wie der darin enthaltene Text gerendert wird.",
+ "h2
Elemente sind ein wenig kleiner als h2
Elemente. Es gibt auch h3
, h4
, h5
und h6
Elemente."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08801",
+ "title": "Inform with the Paragraph Element",
+ "difficulty": 1.03,
+ "description": [
+ "Create a p
element below your h2
element, and give it the text \"Hello Paragraph\".",
+ "p
elements are the preferred element for normal-sized paragraph text on websites. P is short for \"paragraph\".",
+ "You can create a p
element like so: <p>I'm a p tag!</p>
."
+ ],
+ "tests": [
+ "assert(($(\"p\").length > 0), 'Create a p
element.')",
+ "assert.isTrue((/hello(\\s)+paragraph/gi).test($(\"p\").text()), 'Your p
element should have the text \"Hello Paragraph\".')",
+ "assert(editor.match(/<\\/p>/g) && editor.match(/<\\/p>/g).length === editor.match(/ p
element has a closing tag.')"
+ ],
+ "challengeSeed": [
+ "Hello World ",
+ "CatPhotoApp "
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "Waypoint: Informa con el Elemento Párrafo",
+ "descriptionEs": [
+ "Crea un elemento párrafo debajo de tu elemento h2, y dale el texto \"Hello Paragraph\". Apenas escribas la etiqueta de apertura <p>
, una de nuestras pruebas pasarán (ya que ésta es HTML válido). Asegúrate de cerrar el elemento agregando la etiqueta de cierre </p>
.",
+ "Los elementos párrafo son los principales elementos para los párrafos de texto en tamaño normal en sitios web.",
+ "Tú puedes crear un elemento párrafo como éste: <p>I'm a p tag!</p>
."
+ ],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Informiere mit dem Paragraph Element",
+ "descriptionDe": [
+ "Erstelle ein p
Element unter deinem h2
Element und füge den Text \"Hello Paragraph\" ein.",
+ "p
Elemente sind das bevorzugte Element für normalen Paragraphen-Text auf einer Website. P ist die Abkürzung für \"Paragraph\".",
+ "Du kannst ein p
Element so erzeugen: <p>Ich bin ein p Element!</p>
"
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08802",
+ "title": "Uncomment HTML",
+ "difficulty": 1.04,
+ "description": [
+ "Uncomment your h1
, h2
and p
elements.",
+ "Commenting is a way that you can leave comments within your code without affecting the code itself.",
+ "Commenting is also a convenient way to make code inactive without having to delete it entirely.",
+ "You can start a comment with <!--
and end a comment with -->
."
+ ],
+ "tests": [
+ "assert($(\"h1\").length > 0, 'Make your h1
element visible on your page by uncommenting it.')",
+ "assert($(\"h2\").length > 0, 'Make your h2
element visible on your page by uncommenting it.')",
+ "assert($(\"p\").length > 0, 'Make your p
element visible on your page by uncommenting it.')",
+ "assert(!new RegExp(\"-->\", 'gi').test(editor), 'Be sure to delete all trailing comment tags, i.e. -->
.')"
+ ],
+ "challengeSeed": [
+ ""
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "Waypoint: Quitar comentarios HTML",
+ "descriptionEs": [
+ "Quitar el comentario a los elementos h1
, h2
y p
.",
+ "Crear comentarios es una forma en la que puedes dejar mensajes dentro de tu código sin afectar el resultado.",
+ "Agregar comentarios es también una forma conveniente de desactivar tu código sin tener que borrarlo por completo.",
+ "Puedes comenzar un comentario con <!--
y terminar de comentar con -->
."
+ ],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: HTML entkommentieren",
+ "descriptionDe": [
+ "Entkommentiere deine h1
, h2
und p
Elemente.",
+ "Kommentieren erlaubt dir Kommentare innerhalb des Codes zu hinterlassen, ohne diesen selbst zu beeinflussen.",
+ "Dies ist auch ein guter Weg, um Code inaktiv zu machen ohne diesen komplett löschen zu müssen.",
+ "Du kannst einen Kommentar mit <!--
starten und ihn mit -->
wieder beenden."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08804",
+ "title": "Comment out HTML",
+ "difficulty": 1.05,
+ "description": [
+ "Comment out your h1
element and your p
element, but leave your h2
element uncommented.",
+ "Remember that in order to start a comment, you need to use <!--
and to end a comment, you need to use -->
.",
+ "Here you'll need to end the comment before your h2
element begins."
+ ],
+ "tests": [
+ "assert(($(\"h1\").length === 0), 'Comment out your h1
element so that it is not visible on your page.')",
+ "assert(($(\"h2\").length > 0), 'Leave your h2
element uncommented so that it is visible on your page.')",
+ "assert(($(\"p\").length === 0), 'Comment out your p
element so that it is not visible on your page.')",
+ "assert(editor.match(/-->/g).length > 1, 'Be sure to close each of your comments with -->
.')"
+ ],
+ "challengeSeed": [
+ ""
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "Waypoint: Comenta en HTML",
+ "descriptionEs": [
+ "Comenta el elemento h1
y el elemento p
, pero deja sin comentar el elemento h2
.",
+ "Recuerda que para comenzar un comentario, necesitas usar <!--
y para terminar un comentario, necesitas usar -->
.",
+ "Aquí necesitarás terminar el comentario antes que comience el elemento h2."
+ ],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: HTML auskommentieren",
+ "descriptionDe": [
+ "Kommentiere die Elemente h1
und p
aus, aber lasse dein h2
Element unkommentiert.",
+ "Denk daran, dass du einen Kommentar mit <!--
anfangen und mit -->
wieder beenden kannst.",
+ "Hier wirst du deinen Kommentar vor dem h2
Element beenden müssen."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08833",
+ "title": "Fill in the Blank with Placeholder Text",
+ "difficulty": 1.06,
+ "description": [
+ "Web developers traditionally use lorem ipsum text
as placeholder text. It's called lorem ipsum text
because those are the first two words of a famous passage by Cicero of Ancient Rome.",
+ "lorem ipsum text
has been used as placeholder text by typesetters since the 16th century, and this tradition continues on the web.",
+ "Well, 5 centuries is long enough. Since we're building a CatPhotoApp, let's use something called kitty ipsum text
.",
+ "Replace the text inside your p
element with the first few words of this kitty ipsum text
: Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
"
+ ],
+ "tests": [
+ "assert.isTrue((/Kitty(\\s)+ipsum(\\s)+dolor/gi).test($(\"p\").text()), 'Your p
element should contain the first few words of the provided kitty ipsum text
.')"
+ ],
+ "challengeSeed": [
+ "Hello World ",
+ "",
+ "CatPhotoApp ",
+ "",
+ "Hello Paragraph
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "Waypoint: Llena espacios con texto de relleno",
+ "descriptionEs": [
+ "Cambia el texto en el elemento p
para usar las primeras palabras del texto Kitty Ipsum
.",
+ "Los desarrolladores web tradicionalmente usan Lorem Ipsum
como texto de relleno. Se llama texto Lorem Ipsum porque esas son las primeras dos palabras de una cita famosa de Cicerón de la Roma Antigua.",
+ "El texto Lorem Ipsum ha sido usado como texto de relleno en las imprentas desde el siglo 16, y esta tradición continúa en la web.",
+ "Bueno, 5 siglos es bastante. Ya que estamos construyendo una aplicación de fotos de gatos (CatPhotoApp), ¡usemos algo llamado Kitty Ipsum !",
+ "Aquí están las primeras palabras del texto Kitty Ipsum, que puedes copiar y pegar en la posición correcta: Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
"
+ ],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Fülle die Lücken mit Platzhalter-Text",
+ "descriptionDe": [
+ "Ersetze den Text in deinem p
Element mit den ersten Wörtern des zur Verfügung gestellten \"Kitty Ipsum\" Textes.",
+ "Webentwickler nutzen für gewöhnlich \"Lorem Ipsum\" Text als Platzhalter. Es heißt \"Lorem Ipsum\", weil es die ersten zwei Wörter aus einer bekannten Passage von Cicero des alten Roms sind.",
+ "\"Lorem Ipsum\" Text wurde seit dem 16. Jahrhundert von Schriftsetzern als Platzhalter verwendet. Und diese Tradition setzt sich im Web fort.",
+ "Nun gut, fünf Jahrhunderte sind lange genug. Da wir eine CatPhotoApp entwickeln, lass uns stattdessen lieber \"Kitty Ipsum\" nutzen!",
+ "Hier sind die ersten paar Wörter von \"Kitty Ipsum\", die du kopieren und an die richtige Stelle einfügen kannst: Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
"
+ ]
+ },
+ {
+ "id": "bad87fed1348bd9aedf08833",
+ "title": "Delete HTML Elements",
+ "difficulty": 1.07,
+ "description": [
+ "Delete your h1
element so we can simplify our view.",
+ "Our phone doesn't have much vertical space.",
+ "Let's remove the unnecessary elements so we can start building our CatPhotoApp."
+ ],
+ "tests": [
+ "assert(($(\"h1\").length == 0), 'Delete your h1
element.')",
+ "assert(($(\"h2\").length > 0), 'Leave your h2
element on the page.')",
+ "assert(($(\"p\").length > 0), 'Leave your p
element on the page.')"
+ ],
+ "challengeSeed": [
+ "Hello World ",
+ "",
+ "CatPhotoApp ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "Waypoint: Borra elementos HTML",
+ "descriptionEs": [
+ "Borra los elementos h1 y br para simplificar nuestra vista.",
+ "Nuestro teléfono no tiene mucho espacio para elementos HTML.",
+ "Removamos los elementos innecesarios para que empecemos a construir nuestra CatPhotoApp."
+ ],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Entferne HTML Elemente",
+ "descriptionDe": [
+ "Lösche die Elemente h1
, damit wir etwas Ordnung schaffen.",
+ "Unser Smartphone hat nicht sehr viel vertikalen Raum.",
+ "Lass uns die unwichtigen Elemente entfernen, damit wir unsere CatPhotoApp bauen können."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08803",
+ "title": "Change the Color of Text",
+ "difficulty": 1.08,
+ "description": [
+ "Change your h2
element's style so that its text color is red.",
+ "We can do this by changing the \"style\" of your h2
element.",
+ "The style that is responsible for the color of an element's text is the \"color\" style.",
+ "Here's how you would set your h2
element's text color to blue: <h2 style=\"color: blue\">CatPhotoApp</h2>
."
+ ],
+ "tests": [
+ "assert($(\"h2\").css(\"color\") === \"rgb(255, 0, 0)\", 'Your h2
element should be red.')"
+ ],
+ "challengeSeed": [
+ "CatPhotoApp ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "Waypoint: Cambia el color del texto",
+ "descriptionEs": [
+ "Cambia el estilo del elemento h2
de manera que el color de su texto sea rojo.",
+ "Podemos hacer esto por medio de cambiar el estilo
del elemento h2
.",
+ "El estilo responsable del color de texto de un elemento es el estilo \"color\".",
+ "Así es como podrías volver el color de texto de tu elemento h2
en azul: <h2 style=\"color: blue\">CatPhotoApp</h2>
."
+ ],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Ändere die Farbe des Textes",
+ "descriptionDe": [
+ "Ändere den Style des h2
Elements, damit die Textfarbe Rot ist.",
+ "Wir können das bewerkstelligen, indem wir den \"style\" des h2
Elements ändern.",
+ "So könntest du die Textfarbe des h2
Elements in Blau ändern: <h2 style=\"color: blue\">CatPhotoApp</h2>
."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08805",
+ "title": "Use CSS Selectors to Style Elements",
+ "difficulty": 1.09,
+ "description": [
+ "Delete your h2
element's style attribute and instead create a CSS style
element. Add the necessary CSS to turn all h2
elements blue.",
+ "With CSS, there are hundreds of CSS attributes
that you can use to change the way an element looks on your page.",
+ "When you entered <h2 style=\"color: red\">CatPhotoApp</h2>
, you were giving that individual h2
element an inline style
.",
+ "That's one way to add style to an element, but a better way is by using CSS
, which stands for Cascading Style Sheets
.",
+ "At the top of your code, create a style
element like this: <style></style>
.",
+ "Inside that style element, you can create a CSS selector
for all h2
elements. For example, if you wanted all h2
elements to be red, your style element would look like this: <style>h2 {color: red;}</style>
.",
+ "Note that it's important to have both opening and closing curly braces ({
and }
) around each element's style. You also need to make sure your element's style is between the opening and closing style tags. Finally, be sure to add the semicolon to the end of each of your element's styles."
+ ],
+ "tests": [
+ "assert(!$(\"h2\").attr(\"style\"), 'Remove the style attribute from your h2
element.')",
+ "assert($(\"style\") && $(\"style\").length > 1, 'Create a style
element.')",
+ "assert($(\"h2\").css(\"color\") === \"rgb(0, 0, 255)\", 'Your h2
element should be blue.')",
+ "assert(editor.match(/<\\/style>/g) && editor.match(/<\\/style>/g).length === editor.match(/",
+ "",
+ "CatPhotoApp ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "Waypoint: Utiliza una clase CSS para darle estilo a un elemento",
+ "descriptionEs": [
+ "Crea una clase CSS llamada \"red-text\" y aplicala a tu elemento h2
.",
+ "Las clases son estilos reutilizables que pueden ser añadidos a elementos HTML",
+ "Esta es la anatomía de una clase CSS:",
+ " ",
+ "Puedes ver que hemos creado una clase CSS llamada \"blue-text\" dentro de la etiqueta <style>
.",
+ "Puedes aplicar una clase a un elemento HTML de esta manera: <h2 class=\"blue-text\">CatPhotoApp</h2>
.",
+ "Nota que en el elemento CSS style
, las clases deberían comenzar con un punto. En los elementos HTML, las declaraciones de clase, NO deberían comenzar con punto. ",
+ "En vez de de crear un nuevo elemento style
, prueba remover la declaración de estilo de h2
y reemplazarla por la declaración \"red-text\"."
+ ],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Nutze eine CSS Klasse um ein Element zu gestalten",
+ "descriptionDe": [
+ "Erstelle eine CSS Klasse namens \"red-text\" und füge sie zu deinem h2
Element hinzu.",
+ "Klassen sind wiederverwendbare Styles, die HTML Elementen zugewiesen werden können.",
+ "So sieht eine CSS Klasse aus:",
+ " ",
+ "Du siehst, dass wir die CSS Klasse \"blue-text\" innerhalb von <style>
geschrieben haben.",
+ "Du kannst eine Klasse folgendermaßen einem HTML Element beifügen: <h2 class=\"blue-text\">CatPhotoApp</h2>
.",
+ "Beachte, dass Klassen in deinem CSS style
Element mit einem Punkt beginngen sollten. In deinen Klassen-Deklarationen von HTML Elementen sollten diese nicht mit einem Punkt beginnen.",
+ "Anstatt ein neues style
Element zu erstellen, versuche die h2
Style-Deklaration von deinem bereits bestehenden Style Element zu entfernen und sie mit der Klassen-Deklaration \".red-text\" zu ersetzen."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aefe08806",
+ "title": "Style Multiple Elements with a CSS Class",
+ "difficulty": 1.12,
+ "description": [
+ "Apply the red-text
class to your h2
and p
elements.",
+ "Remember that you can attach classes to HTML elements by using class=\"your-class-here\"
within the relevant element's opening tag.",
+ "Remember that CSS class selectors require a period at the beginning like this: .blue-text { color: blue; }
, but that class declarations don't use a period, like this: <h2 class=\"blue-text\">CatPhotoApp<h2>
."
+ ],
+ "tests": [
+ "assert($(\"h2\").css(\"color\") === \"rgb(255, 0, 0)\", 'Your h2
element should be red.')",
+ "assert($(\"h2\").hasClass(\"red-text\"), 'Your h2
element should have the class red-text
.')",
+ "assert($(\"p\").css(\"color\") === \"rgb(255, 0, 0)\", 'Your p
element should be red.')",
+ "assert($(\"p\").hasClass(\"red-text\"), 'Your p
element should have the class red-text
.')"
+ ],
+ "challengeSeed": [
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "Waypoint: Estila multiples elementos con una clase CSS",
+ "descriptionEs": [
+ "Aplica la clase \"red-text\" a tus elementos h2
y p
.",
+ "Recuerda que puedes agregar clases a elementos HTML utilizando class=\"your-class-here\"
dentro de la tag de entrada del mismo.",
+ "Recuerda que los selectores CSS requieren un punto al principio: .blue-text { color: blue; }
, pero que las declaraciones de clase NO llevan punto: <h2 class=\"blue-text\">CatPhotoApp<h2>
."
+ ],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Gestalte mehrere Elemente mit einer CSS Klasse",
+ "descriptionDe": [
+ "Füge den h2
und p
Elementen die Klasse \"red-text\" hinzu.",
+ "Du kannst Klassen zu HTML Elementen hinzufügen, indem du zum Beispiel class=\"deine-klasse\"
innerhalb des öffnenden Tags schreibst.",
+ "Du weißt, es gehört ein Punkt vor CSS Klassen: .red-text { color: blue; }
. Aber diese Klassen-Deklarationen brauchen keinen Punkt: <h2 class=\"blue-text\">CatPhotoApp<h2>
."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08806",
+ "title": "Change the Font Size of an Element",
+ "difficulty": 1.13,
+ "description": [
+ "Create a second p
element with the following kitty ipsum text
: Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
",
+ "Then, inside your <style>
element, set the font-size
of all p
elements to 16 pixels.",
+ "Font size is controlled by the font-size
CSS attribute, like this: h1 { font-size: 30px; }
.",
+ "See if you can figure out how to give both of your p
elements the font-size of 16 pixels (16px
). You can do this inside the same <style>
tag that we created for your red-text
class."
+ ],
+ "tests": [
+ "assert($(\"p\").length > 1, 'You need 2 p
elements with Kitty Ipsum text.')",
+ "assert(editor.match(/<\\/p>/g) && editor.match(/<\\/p>/g).length === editor.match(/p elements has a closing tag.')",
+ "assert.isTrue((/Purr\\s+jump\\s+eat/gi).test($(\"p\").text()), 'Your p
element should contain the first few words of the provided additional kitty ipsum text
.')",
+ "assert($(\"p\").css(\"font-size\") === \"16px\", 'Give your p
elements the font-size
of 16px.')"
+ ],
+ "challengeSeed": [
+ "",
+ "",
+ "
CatPhotoApp ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "Waypoint: Cambia el tamaño de fuente de un elemento.",
+ "descriptionEs": [
+ "Crea un segundo elemento p
. Luego, dentro de tu elemento <style>
, pon el \"font-size\" de todos los elementos p
a 16 pixeles.",
+ "El tamaño de fuente es controlado por el atributo CSS \"font-size\", como aquí: h1 { font-size: 30px; }
.",
+ "Primero, crea un segundo elemento p
con el siguiente texto Kitty Ipsum: Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
",
+ "Ve si puedes encontrar una manera de darle a ambos elementos p
un font-size de 16 pixeles (16px
). Puedes hacer esto dentro de la misma etiqueta <style>
que creamos para la clase \"red-text\"."
+ ],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Ändere die Schriftgröße eines Elements",
+ "descriptionDe": [
+ "Erstelle ein zweites p
Element. Ändere dann innerhalb deines <style>
Elements die Schriftgröße oder \"font-size\" von allen p
Elementen auf 16 Pixel.",
+ "Schriftgröße wird von dem CSS Attribut \"font-size\" kontrolliert: h1 { font-size: 30px; }
.",
+ "Zuerst erstellst du ein zweites p
Element mit dem folgenden Kitty Ipsum Text: Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
",
+ "Versuche nun beiden p
Elementen die Schriftgröße von 16 Pixeln (16px
) zu geben. Du kannst das innerhalb des selben <style>
Tags machen, welches wir für deine \"red-text\" Klasse erstellt haben."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aede08807",
+ "title": "Set the Font Family of an Element",
+ "difficulty": 1.14,
+ "description": [
+ "Make all of your p
elements use the Monospace
font.",
+ "You can set an element's font by using the font-family
attribute.",
+ "For example, if you wanted to set your h2
element's font to Sans-serif
, you would use the following CSS: h2 { font-family: Sans-serif; }
."
+ ],
+ "tests": [
+ "assert($(\"p\").css(\"font-family\").match(/monospace/i), 'Your p
elements should use the font Monospace
.')"
+ ],
+ "challengeSeed": [
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
",
+ "Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Definiere die Schriftart eines Elements",
+ "descriptionDe": [
+ "Definiere für alle p
Elemente die Schriftart \"Monospace\".",
+ "Du kannst einem Element mit \"font-family\" eine Schriftart zuweisen.",
+ "Wenn du zum Beispiel deinem h2
Element die Schriftart \"Sans-serif\" zuweisen willst, kannst du das mit dem folgenden CSS tun: h2 { font-family: Sans-serif; }
."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08807",
+ "title": "Import a Google Font",
+ "difficulty": 1.15,
+ "description": [
+ "Apply the font-family
of Lobster
to your h2
element.",
+ "First, you'll need to make a call
to Google to grab the Lobster
font and load it into your HTML.",
+ "Copy the following code snippet and paste it into your code editor:",
+ "<link href=\"http://fonts.googleapis.com/css?family=Lobster\" rel=\"stylesheet\" type=\"text/css\">
.",
+ "Now you can set Lobster
as a font-family attribute on your h2
element."
+ ],
+ "tests": [
+ "assert(new RegExp(\"googleapis\", \"gi\").test(editor), 'Import the Lobster
font.')",
+ "assert($(\"h2\").css(\"font-family\").match(/lobster/i), 'Your h2
element should use the font Lobster
.')",
+ "assert($(\"p\").css(\"font-family\").match(/monospace/i), 'Your p
element should still use the font Monospace
.')"
+ ],
+ "challengeSeed": [
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
",
+ "Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Importiere eine Google Font",
+ "descriptionDe": [
+ "Füge dem h2
Element die Schriftart oder font-family
\"Lobster\" hinzu.",
+ "Zuerst musst du Google Fonts in dein HTML einbinden, um auf \"Lobster\" zugreifen zu können.",
+ "Kopiere den folgenden Code und füge diesen in deinen Editor über dem style
Element ein:",
+ "<link href=\"http://fonts.googleapis.com/css?family=Lobster\" rel=\"stylesheet\" type=\"text/css\">
.",
+ "Jetzt kannst du \"Lobster\" als font-family Attribut zu deinem h2
Element hinzufügen."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08808",
+ "title": "Specify How Fonts Should Degrade",
+ "difficulty": 1.16,
+ "description": [
+ "There are several default fonts that are available in all browsers. These include Monospace
, Serif
and Sans-Serif
. Leave Lobster
as the font-family for your h2
elements. Make them \"degrade\" to Monospace
when Lobster
isn't available.",
+ "For example, if you wanted an element to use the Helvetica
font, but also degrade to the Sans-Serif
font when Helvetica
wasn't available, you could use this CSS style: p { font-family: Helvetica, Sans-Serif; }
.",
+ "Now comment out your call to Google Fonts, so that the Lobster
font isn't available. Notice how it degrades to the Monospace
font."
+ ],
+ "tests": [
+ "assert($(\"h2\").css(\"font-family\").match(/^\"?lobster/i), 'Your h2 element should use the font Lobster
.')",
+ "assert($(\"h2\").css(\"font-family\").match(/lobster.*,.*monospace/i), 'Your h2 element should degrade to the font Monospace
when Lobster
is not available.')",
+ "assert(new RegExp(\"\", \"gi\").test(editor), 'Be sure to close your comment by deleting all trailing comment tags, i.e. -->
.')"
+ ],
+ "challengeSeed": [
+ " ",
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
",
+ "Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Spezifiziere die Rangfolge von Schriftarten",
+ "descriptionDe": [
+ "Füge allen h2
Elementen die Schriftart \"Lobster\" hinzu und definiere \"Monospace\" als Ersatzschrift, wenn \"Lobster\" nicht verfügbar ist.",
+ "Du kannst \"Lobster\" als Schriftart deines h2
Elements belassen, aber gleichzeitig dafür sorgen, dass eine alternative Schrift geladen wird, wenn \"Lobster\" nicht zur Verfügung steht.",
+ "Wenn du zum Beispiel einem Element die Schriftart \"Helvetica\" geben möchtest, aber gleichzeitig die alternative Schrift \"Sans-Serif\" laden willst, wenn \"Helvetica\" nicht verfügbar ist, kannst du diesen CSS Style verwenden: p { font-family: Helvetica, Sans-Serif; }
.",
+ "Es gibt verschiedene Schriftarten, die jedem Browser standardmäßig zur Verfügung stehen. Das sind unter anderem \"Monospace\", \"Serif\" und \"Sans-Serif\". Probiere deinem h2
Element gleichzeitig die Schriftart \"Lobster\" und als Alternative \"Monospace\" zu geben.",
+ "Jetzt versuche den Aufruf von Google Fonts in deinem HTML auszukommentieren, sodass \"Lobster\" nicht zur Verfügung steht. Beachte, wie nun die Schriftart \"Monospace\" geladen wird."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08812",
+ "title": "Add Images to your Website",
+ "difficulty": 1.17,
+ "description": [
+ "You can add images to your website by using the img
element, and point to a specific image's URL using the src
attribute.",
+ "An example of this would be <img src=\"www.your-image-source.com/your-image.jpg\">
. Note that in most cases, img
elements are self-closing.",
+ "Try it with this image: https://bit.ly/fcc-relaxing-cat
."
+ ],
+ "tests": [
+ "assert($(\"img\").length > 0, 'Your page should have an image element.')",
+ "assert(new RegExp(\"\\/\\/bit.ly\\/fcc-relaxing-cat\", \"gi\").test($(\"img\").attr(\"src\")), 'Your image should have have a src
attribute that points to the kitten image.')"
+ ],
+ "challengeSeed": [
+ " ",
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
",
+ "Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Füge Bilder zu deiner Website hinzu",
+ "descriptionDe": [
+ "Nutze ein img
Element um das Bild https://bit.ly/fcc-relaxing-cat
einzufügen.",
+ "Du kannst img
Elemente verwenden, um Bilder in deine Website einzubauen. Um zur URL des Bildes zu verweisen, benutzt du das src
Attribut.",
+ "Ein Beispiel dafür wäre <img src=\"www.bild-quelle.com/bild.jpg\"/>
. Beachte, dass img
Elemente in den meisten Fällen selbstschließend sind.",
+ "Versuche es mit diesem Bild: https://bit.ly/fcc-relaxing-cat
."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9acdf08812",
+ "title": "Size your Images",
+ "difficulty": 1.18,
+ "description": [
+ "CSS has an attribute called width
that controls an element's width. Just like with fonts, we'll use px
(pixels) to specify the image's width.",
+ "For example, if we wanted to create a CSS class called larger-image
that gave HTML elements a width of 500 pixels, we'd use: <style> .larger-image { width: 500px; } </style>
.",
+ "Create a class called smaller-image
and use it to resize the image so that it's only 100 pixels wide."
+ ],
+ "tests": [
+ "assert($(\"img\").hasClass(\"smaller-image\"), 'Your img
element should have the class smaller-image
.')",
+ "assert($(\"img\").width() === 100, 'Your image should be 100 pixels wide.')"
+ ],
+ "challengeSeed": [
+ " ",
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ " ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
",
+ "Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Skaliere deine Bilder",
+ "descriptionDe": [
+ "Erstelle eine Klasse mit dem Namen smaller-image
und verwende sie, um dein Bild auf 100 Pixel zu skalieren.",
+ "Die Breite eines Elements wird mit dem CSS Attribut width
kontrolliert. Wie bei Schriftarten verwenden wir Pixel (px) um die Größe zu definieren.",
+ "Wenn wir also die CSS Klasse \"larger-image\" erstellen wollen, um HTML Elementen eine Breite von 500 Pixeln zu verleihen, verwenden wir: <style> .larger-image { width: 500px; } </style>
."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9bedf08813",
+ "title": "Add Borders Around your Elements",
+ "difficulty": 1.19,
+ "description": [
+ "CSS borders have attributes like style
, color
and width
.",
+ "For example, if we wanted to create a red, 5 pixel border around an HTML element, we could use this class: <style> .thin-red-border { border-color: red; border-width: 5px; border-style: solid; } </style>
.",
+ "Create a class called thick-green-border
that puts a 10-pixel-wide green border with a style of solid
around an HTML element, and apply that class to your cat photo."
+ ],
+ "tests": [
+ "assert($(\"img\").hasClass(\"smaller-image\"), 'Your img
element should have the class smaller-image
.')",
+ "assert($(\"img\").hasClass(\"thick-green-border\"), 'Your img
element should have the class thick-green-border
.')",
+ "assert($(\"img\").hasClass(\"thick-green-border\") && parseInt($(\"img\").css(\"border-top-width\")), 'Give your image a border width of 10px
.')",
+ "assert(new RegExp(\"solid\", \"gi\").test(editor), 'Give your image a border style of solid
.')",
+ "assert($(\"img\").css(\"border-left-color\") === \"rgb(0, 128, 0)\", 'The border around your img
element should be green.')"
+ ],
+ "challengeSeed": [
+ " ",
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ " ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
",
+ "Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Füge Rahmen zu deinen Elementen hinzu",
+ "descriptionDe": [
+ "Erstelle die Klasse \"thick-green-border\", welche einen 10 Pixel dicken, grünen Rahmen mit dem Style \"solid\" um ein HTML Element setzt. Füge diese Klasse zu deinem Katzenfoto hinzu.",
+ "CSS Rahmen haben Attribute wie Style, Color und Width.",
+ "Wenn wir nun einen roten, 5 Pixel dicken Rahmen um ein HTML Element setzen wollen, würden wir so vorgehen: <style> .thin-red-border { border-color: red; border-width: 5px; border-style: solid; } </style>
."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08814",
+ "title": "Add Rounded Corners with a Border Radius",
+ "difficulty": 1.20,
+ "description": [
+ "Your cat photo currently has sharp corners. We can round out those corners with a CSS attribute called border-radius
.",
+ "You can specify a border-radius
with pixels. This will affect how rounded the corners are. Add this attribute to your thick-green-border
class and set it to 10px
.",
+ "Give your cat photo a border-radius
of 10px
."
+ ],
+ "tests": [
+ "assert($(\"img\").hasClass(\"thick-green-border\"), 'Your image element should have the class \"thick-green-border\".')",
+ "assert(parseInt($(\"img\").css(\"border-top-left-radius\")) > 8, 'Your image should have a border radius of 10px
')"
+ ],
+ "challengeSeed": [
+ " ",
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ " ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
",
+ "Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Füge abgerundete Ecken mit Border Radius hinzu",
+ "descriptionDe": [
+ "Gib deinem Katzenbild einen border-radius
von 10 Pixeln.",
+ "Das Bild hat nun spitze Ecken. Wir können diese Ecken mit dem CSS Attribut border-radius
abrunden.",
+ "Du kannst einen border-radius
mit Pixeln deklarieren. Das beeinflusst die Rundung der Ecken. Füge dieses Attribut zu deiner thick-green-border
Klasse hinzu und setze es auf 10 Pixel."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08815",
+ "title": "Make Circular Images with a Border Radius",
+ "difficulty": 1.21,
+ "description": [
+ "In addition to pixels, you can also specify a border-radius
using a percentage.",
+ "Give your cat photo a border-radius
of 50%
."
+ ],
+ "tests": [
+ "assert(parseInt($(\"img\").css(\"border-top-left-radius\")) > 48, 'Your image should have a border radius of 50%
, making it perfectly circular.')",
+ "assert(editor.match(/50%/g), 'Be sure to use a percentage instead of a pixel value.')"
+ ],
+ "challengeSeed": [
+ " ",
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ " ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
",
+ "Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Erstelle runde Bilder mit einem Border Radius",
+ "descriptionDe": [
+ "Gib deinem Katzenfoto einen border-radius
von 50 %.",
+ "Du kannst einem border-radius
neben Pixeln auch Prozentwerte zuweisen."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08816",
+ "title": "Link to External Pages with Anchor Elements",
+ "difficulty": 1.22,
+ "description": [
+ "a
elements, also known as anchor
elements, are used to link to content outside of the current page.",
+ "Here's a diagram of an a
element. In this case, the a
element is used in the middle of a paragraph element, which means the link will appear in the middle of a sentence.",
+ " ",
+ "Here's an example: <p>Here's a <a href=\"http://freecodecamp.com\"> link to Free Code Camp</a> for you to follow.</p>
.",
+ "Create an a
element that links to http://catphotoapp.com
and has \"cat photos\" as its anchor text
."
+ ],
+ "tests": [
+ "assert((/cat photos/gi).test($(\"a\").text()), 'Your a
element should have the anchor text
of \"cat photos\"')",
+ "assert(/http:\\/\\/catphotoapp\\.com/gi.test($(\"a\").attr(\"href\")), 'You need an a
element that links to http://catphotoapp.com.')",
+ "assert(editor.match(/<\\/a>/g) && editor.match(/<\\/a>/g).length === editor.match(/a
element has a closing tag.')"
+ ],
+ "challengeSeed": [
+ " ",
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ " ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
",
+ "Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Verlinke externe Seiten mit Anker Elementen",
+ "descriptionDe": [
+ "Erstelle ein a
Element oder \"Anker Element\", das auf http://catphotoapp.com verlinkt und den Link-Text \"cat photos\" oder \"anchor text\" beinhaltet.",
+ "So sieht ein a
Element aus. In diesem Fall wird es innerhalb eines Paragraphen Elements verwendet. Das bedeutet dein Link wird innerhalb des Satzes erscheinen.",
+ " ",
+ "Hier ist ein Beispiel: <p>Hier ist ein <a href=\"http://freecodecamp.com\"> Link zum Free Code Camp</a> für dich zum Folgen.</p>
."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aede08817",
+ "title": "Nest an Anchor Element within a Paragraph",
+ "difficulty": 1.23,
+ "description": [
+ "Again, here's a diagram of an a
element for your reference:",
+ " ",
+ "Here's an example: <p>Here's a <a href=\"http://freecodecamp.com\"> link to Free Code Camp</a> for you to follow.</p>
.",
+ "Nesting
just means putting one element inside of another element.",
+ "Now nest your a
element within a new p
element so that the surrounding paragraph says \"click here for cat photos\", but where only \"cat photos\" is a link, and the rest of the text is rest is plain text."
+ ],
+ "tests": [
+ "assert($(\"a\").attr(\"href\").match(/catphotoapp.com/gi).length > 0, 'You need an a
element that links to \"catphotoapp.com\".')",
+ "assert($(\"a\").text().match(/cat\\sphotos/gi).length > 0, 'Your a
element should have the anchor text of \"cat photos\"')",
+ "assert($(\"p\") && $(\"p\").length > 2, 'Create a new p
element around your a
element.')",
+ "assert($(\"a[href=\\\"http://www.catphotoapp.com\\\"]\").parent().is(\"p\"), 'Your a
element should be nested within your new p
element.')",
+ "assert($(\"p\").text().match(/click\\shere\\sfor/gi), 'Your p
element should have the text \"click here for\".')",
+ "assert(editor.match(/<\\/p>/g) && editor.match(//g).length === editor.match(/
p
elements has a closing tag.')",
+ "assert(editor.match(/<\\/a>/g) && editor.match(//g).length === editor.match(/ a elements has a closing tag.')"
+ ],
+ "challengeSeed": [
+ " ",
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ " cat photos ",
+ "",
+ " ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
",
+ "Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint Umschließe ein Anker Element mit einem Paragraphen",
+ "descriptionDe":[
+ "Jetzt umschließe dein a
Element mit einem p
Element und dem Text \"click here for cat photos\". Nur \"cat photos\" soll ein Link ein – der Rest normaler Text.",
+ "Hier ist nochmal ein Beispiel für ein a
Element: ",
+ "So könnte es aussehen: <p>Hier ist ein <a href=\"http://freecodecamp.com\"> Link zum Free Code Camp</a> für dich zum Folgen.</p>
"
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08817",
+ "title": "Make Dead Links using the Hash Symbol",
+ "difficulty": 1.24,
+ "description": [
+ "Sometimes you want to add a
elements to your website before you know where they will link.",
+ "This is also handy when you're changing the behavior of a link using jQuery
, which we'll learn about later.",
+ "Replace your a
element's href
attribute with a #
, also known as a hash symbol, to turn it into a dead link."
+ ],
+ "tests": [
+ "assert($(\"a\").attr(\"href\") === \"#\", 'Your a
element should be a dead link with a href
attribute set to \"#\".')"
+ ],
+ "challengeSeed": [
+ " ",
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ "Click here for cat photos .
",
+ "",
+ " ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
",
+ "Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Erstelle tote Links mit dem Hash Symbol",
+ "descriptionDe": [
+ "Nutze das Hash Symbol (#) um deine a
Elemente zu toten Links zu machen.",
+ "Manchmal wirst du a
Elemente zu deiner Website hinzufügen möchten, ohne dass du das Ziel des Links kennst.",
+ "Das ist auch nützlich, wenn du die Funktion eines Links mit jQuery
verändern willst. Das werden wir noch behandeln.",
+ "Ersetze den Inhalt des href
Attributs deines a
Elements mit einem Hash Symbol um einen toten Link zu erzeugen."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08820",
+ "title": "Turn an Image into a Link",
+ "difficulty": 1.25,
+ "description": [
+ "You can make elements into links by nesting them within an a
element.",
+ "Nest your image within an a
element. Here's an example: <a href=\"#\"><img src=\"http://bit.ly/fcc-running-cats\"/></a>
.",
+ "Remember to use #
as your a
element's href
property in order to turn it into a dead link.",
+ "Once you've done this, hover over your image with your cursor. Your cursor's normal pointer should become the link clicking pointer. The photo is now a link."
+ ],
+ "tests": [
+ "assert($(\"a\").children(\"img\").length > 0, 'Nest your img
element within an a
element.')",
+ "assert(new RegExp(\"#\").test($(\"a\").children(\"img\").parent().attr(\"href\")), 'Your a
element should be a dead link with a href
attribute set to #
.')",
+ "assert(editor.match(/<\\/a>/g) && editor.match(//g).length === editor.match(/ a elements has a closing tag.')"
+ ],
+ "challengeSeed": [
+ " ",
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ "Click here for cat photos .
",
+ "",
+ " ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
",
+ "Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Verlinke ein Bild",
+ "descriptionDe": [
+ "Umschließe dein img
Element mit einem a
Element als toten Link.",
+ "Du kannst jedes Element in einen Link verwandeln, indem du es mit einem a
Element umschließt.",
+ "Umschließe nun dein Bild mit einem a
Element. Hier ist ein Beispiel: <a href=\"#\"><img src=\"http://bit.ly/fcc-running-cats\"/></a>
.",
+ "Vergewissere dich, dass du ein Hash Symbol (#) innerhalb des href
Attributs des a
Elements nutzt, um daraus einen toten Link zu machen.",
+ "Sobald du das gemacht hast, kannst du mit der Maus über dein Bild fahren. Der normale Mauszeiger sollte nun zu einer Hand für Links werden. Das Bild ist jetzt ein Link."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08818",
+ "title": "Add Alt Text to an Image for Accessibility",
+ "difficulty": 1.26,
+ "description": [
+ "alt
attributes, also known as alt text
, are what browsers will display if they fail to load the image. alt
attributes are also important for blind or visually impaired users to understand what an image portrays. And search engines also look at alt
attributes.",
+ "In short, every image should have an alt
attribute!",
+ "You can add an alt
attribute right in the img element like this: <img src=\"www.your-image-source.com/your-image.jpg\" alt=\"your alt text\"/>
.",
+ "Add an alt
attribute with the text A cute orange cat lying on its back
to our cat photo."
+ ],
+ "tests": [
+ "assert($(\"img\").filter(function(){ return /cat/gi.test(this.alt) }).length > 0, 'Your image element should have an alt
attribute set to A cute orange cat lying on its back
.')"
+ ],
+ "challengeSeed": [
+ " ",
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ "Click here for cat photos .
",
+ "",
+ " ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
",
+ "Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Füge Alt Text für mehr Barrierefreiheit hinzu",
+ "descriptionDe": [
+ "Füge zu unserem Katzen-Bild ein alt
Attribut mit dem Text \"A cute orange cat lying on its back\" hinzu.",
+ "alt
Attribute – auch \"Alt Text\" genannt – werden vom Browser angezeigt, wenn sie ein Bild nicht laden können. Für blinde oder visuell eingeschränkte Menschen sind sie ebenfalls wichtig um zu verstehen, was ein Bild darstellt. Zudem werden diese Texte von Suchmaschinen genutzt.",
+ "Kurz gesagt: Jedes Bild sollte ein alt
Attribut beinhalten!",
+ "alt
Attribute sind nützlich um Personen – und Web Crawlers wie Google – zu sagen was in einem Foto abgebildet wird. Das ist extrem wichtig, damit blinde oder visuell eingeschränkte Menschen den Inhalt der Website verstehen.",
+ "Du kannst das alt
Attribut direkt in das Img Element einfügen: <img src=\"www.bild-quelle.com/bild.jpg\" alt=\"Dein Alt Text.\"/>
."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08827",
+ "title": "Create a Bulleted Unordered List",
+ "difficulty": 1.27,
+ "description": [
+ "HTML has a special element for creating unordered lists
, or bullet point-style lists.",
+ "Unordered lists start with a <ul>
element. Then they contain some number of <li>
elements.",
+ "For example: ",
+ "<ul>
",
+ " <li>milk</li>
",
+ " <li>cheese</li>
",
+ "</ul>
",
+ "would create a bullet point-style list of \"milk\" and \"cheese\".",
+ "Replace your p
elements with an unordered list of three things that cats love."
+ ],
+ "tests": [
+ "assert($(\"ul\").length > 0, 'Create a ul
element.')",
+ "assert($(\"ul li\").length > 2, 'You should have three li
elements within your ul
element.')",
+ "assert(editor.match(/<\\/ul>/g) && editor.match(//g).length === editor.match(/ul element has a closing tag.')",
+ "assert(editor.match(/<\\/li>/g) && editor.match(//g) && editor.match(/<\\/li>/g).length === editor.match(/ /g).length, 'Make sure your li
element has a closing tag.')"
+ ],
+ "challengeSeed": [
+ " ",
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ "Click here for cat photos .
",
+ "",
+ " ",
+ "",
+ "Kitty ipsum dolor sit amet, shed everywhere shed everywhere stretching attack your ankles chase the red dot, hairball run catnip eat the grass sniff.
",
+ "Purr jump eat the grass rip the couch scratched sunbathe, shed everywhere rip the couch sleep in the sink fluffy fur catnip scratched.
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Erstelle eine ungeordnete Liste",
+ "descriptionDe": [
+ "Ersetze deine p
Elemente mit drei Dingen, die Katzen lieben – in einer ungeordneten Liste.",
+ "HTML hat ein spezielles Element zum Erstellen von ungeordneten Listen.",
+ "ungeordnete Listen starten mit einem <ul>
Element. Dann beinhalten sie eine gewisse Anzahl an <li>
Elementen.",
+ "Als Beispiel: <ul><li>Milch</li><li>Käse</li></ul>
würde eine ungeordnete Liste für \"Milch\" und \"Käse\" erstellen."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08828",
+ "title": "Create an Ordered List",
+ "difficulty": 1.28,
+ "description": [
+ "HTML has a special element for creating ordered lists
, or numbered-style lists.",
+ "Ordered lists start with a <ol>
element. Then they contain some number of <li>
elements.",
+ "For example:",
+ "<ol>
",
+ " <li>hydrogen</li>
",
+ " <li>helium</li>
",
+ "</ol>
",
+ "would create a numbered list of \"hydrogen\" and \"helium\".",
+ "Create an ordered list of the top 3 things cats hate the most."
+ ],
+ "tests": [
+ "assert($(\"ul\").length > 0, 'You should have an ul
element on your page.')",
+ "assert($(\"ol\").length > 0, 'You should have an ol
element on your page.')",
+ "assert($(\"ul li\").length > 2, 'You should have three li
elements within your ul
element.')",
+ "assert($(\"ol li\").length > 2, 'You should have three li
elements within your ol
element.')",
+ "assert(editor.match(/<\\/ul>/g) && editor.match(/<\\/ul>/g).length === editor.match(//g).length, 'Make sure your ul
element has a closing tag.')",
+ "assert(editor.match(/<\\/ol>/g) && editor.match(/<\\/ol>/g).length === editor.match(//g).length, 'Make sure your ol
element has a closing tag.')",
+ "assert(editor.match(/<\\/li>/g) && editor.match(//g) && editor.match(/<\\/li>/g).length === editor.match(/ /g).length, 'Make sure your li
element has a closing tag.')"
+ ],
+ "challengeSeed": [
+ " ",
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ "Click here for cat photos .
",
+ "",
+ " ",
+ "",
+ "Things cats love:
",
+ "",
+ " cat nip ",
+ " laser pointers ",
+ " lasagna ",
+ " ",
+ "Top 3 things cats hate:
"
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Erstelle eine geordnete Liste",
+ "descriptionDe": [
+ "Erstelle eine geordnete Liste von den drei Dingen, die Katzen am meisten hassen.",
+ "HTML beinhaltet ein spezielles Element für geordnete Listen.",
+ "Geordnete Listen starten mit einem <ol>
Element. Dann enthalten sie eine gewisse Anzahl an <li>
Elementen.",
+ "Als beispiel: <ol><li>hydrogen</li><li>Helium</li></ol>
würde eine nummerierte Liste aus \"Hydrogen\" und \"Helium\" erstellen."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08829",
+ "title": "Create a Text Field",
+ "difficulty": 1.29,
+ "description": [
+ "Now let's create a web form
.",
+ "Text inputs are a convenient way to get input from your user.",
+ "You can create one like this: <input type=\"text\">
. Note that input
elements are self-closing.",
+ "Create an input
element of type text
below your lists."
+ ],
+ "tests": [
+ "assert($(\"input[type=text]\").length > 0, 'Your app should have an input
element of type text
.')"
+ ],
+ "challengeSeed": [
+ " ",
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ "Click here for cat photos .
",
+ "",
+ " ",
+ "",
+ "Things cats love:
",
+ "",
+ " cat nip ",
+ " laser pointers ",
+ " lasagna ",
+ " ",
+ "Top 3 things cats hate:
",
+ "",
+ " flea treatment ",
+ " thunder ",
+ " other cats ",
+ " "
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Erstelle ein Textfeld",
+ "descriptionDe": [
+ "Nun erstellen wir ein Web Formular. Erstelle ein Textfeld unter deinen Listen.",
+ "Eingabefelder sind ein guter Weg, um Daten von Nutzern zu erhalten.",
+ "So kannst du eines erstellen: <input type=\"text\">
. Beachte, dass input
Elemente selbstschließend sind."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aedf08830",
+ "title": "Add Placeholder Text to a Text Field",
+ "difficulty": 1.30,
+ "description": [
+ "Your placeholder text is what appears in your text input
before your user has inputed anything.",
+ "You can create placeholder text like so: <input type=\"text\" placeholder=\"this is placeholder text\">
.",
+ "Set the placeholder
value of your text input
to \"cat photo URL\"."
+ ],
+ "tests": [
+ "assert($(\"input[placeholder]\").length > 0, 'Add a placeholder
attribute text input
element.')",
+ "assert($(\"input\") && $(\"input\").attr(\"placeholder\") && $(\"input\").attr(\"placeholder\").match(/cat\\s+photo\\s+URL/gi), 'Set the value of your placeholder attribute to \"cat photo URL\".')"
+ ],
+ "challengeSeed": [
+ " ",
+ "",
+ "",
+ "CatPhotoApp ",
+ "",
+ "Click here for cat photos .
",
+ "",
+ " ",
+ "",
+ "Things cats love:
",
+ "",
+ " cat nip ",
+ " laser pointers ",
+ " lasagna ",
+ " ",
+ "Top 3 things cats hate:
",
+ "",
+ " flea treatment ",
+ " thunder ",
+ " other cats ",
+ " ",
+ " "
+ ],
+ "type": "waypoint",
+ "challengeType": 0,
+ "nameCn": "",
+ "descriptionCn": [],
+ "nameFr": "",
+ "descriptionFr": [],
+ "nameRu": "",
+ "descriptionRu": [],
+ "nameEs": "",
+ "descriptionEs": [],
+ "namePt": "",
+ "descriptionPt": [],
+ "nameDe": "Waypoint: Füge Platzhalter zu einem Textfeld hinzu",
+ "descriptionDe": [
+ "Setze bei deinem input
Element den Wert für placeholder
auf \"cat photo URL\".",
+ "Platzhalter erscheinen in input
Feldern, bevor der Nutzer etwas eingibt.",
+ "Du kannst Platzhalter auf folgende Weise erstellen: <input type=\"text\" placeholder=\"Das ist ein Platzhalter.\">
."
+ ]
+ },
+ {
+ "id": "bad87fee1348bd9aede08830",
+ "title": "Create a Form Element",
+ "difficulty": 1.31,
+ "description": [
+ "You can build web forms that actually submit data to a server using nothing more than pure HTML. You can do this by specifying an action on your form
element.",
+ "For example: <form action=\"/url-where-you-want-to-submit-form-data\"></form>
.",
+ "Nest your text field in a form
element. Add the action=\"/submit-cat-photo\"
attribute to this form element."
+ ],
+ "tests": [
+ "assert($(\"form\") && $(\"form\").children(\"input\") && $(\"form\").children(\"input\").length > 0, 'Nest your text input element within a form
element.')",
+ "assert($(\"form\").attr(\"action\"), 'Your form
element should have an action
attribute.')",
+ "assert(editor.match(/<\\/form>/g) && editor.match(/