Merge branch 'master' of github.com:FreeCodeCamp/freecodecamp
This commit is contained in:
@ -330,8 +330,8 @@ exports.storySubmission = function(req, res, next) {
|
|||||||
return next(new Error('Not authorized'));
|
return next(new Error('Not authorized'));
|
||||||
}
|
}
|
||||||
var storyLink = data.headline
|
var storyLink = data.headline
|
||||||
.replace(/\s+/g, ' ')
|
|
||||||
.replace(/[^a-z0-9\s]/gi, '')
|
.replace(/[^a-z0-9\s]/gi, '')
|
||||||
|
.replace(/\s+/g, ' ')
|
||||||
.toLowerCase()
|
.toLowerCase()
|
||||||
.trim();
|
.trim();
|
||||||
var link = data.link;
|
var link = data.link;
|
||||||
@ -389,7 +389,7 @@ exports.storySubmission = function(req, res, next) {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
res.send(JSON.stringify({
|
res.send(JSON.stringify({
|
||||||
storyLink: story.storyLink.replace(/\s/g, '-').toLowerCase()
|
storyLink: story.storyLink.replace(/\s+/g, '-').toLowerCase()
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -6,6 +6,10 @@ var fieldGuideSchema = new mongoose.Schema({
|
|||||||
type: String,
|
type: String,
|
||||||
unique: false
|
unique: false
|
||||||
},
|
},
|
||||||
|
dashedName: {
|
||||||
|
type: String,
|
||||||
|
unique: false
|
||||||
|
},
|
||||||
description: {
|
description: {
|
||||||
type: Array,
|
type: Array,
|
||||||
unique: false
|
unique: false
|
||||||
|
@ -530,7 +530,7 @@
|
|||||||
"expect(mutation(['floor', 'for'])).to.be.true;"
|
"expect(mutation(['floor', 'for'])).to.be.true;"
|
||||||
],
|
],
|
||||||
"MDNlinks": [
|
"MDNlinks": [
|
||||||
"Array.sort()"
|
"Array.indexOf()"
|
||||||
],
|
],
|
||||||
"challengeType": 5,
|
"challengeType": 5,
|
||||||
"nameCn": "",
|
"nameCn": "",
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert(($('h2').length > 0), 'Create an <code>h2</code> element.')",
|
"assert(($('h2').length > 0), 'Create an <code>h2</code> element.')",
|
||||||
"assert(editor.match(/<\\/h2>/g) && editor.match(/<\\/h2>/g).length === editor.match(/<h2>/g).length, 'Be sure that your <code>h2</code> element has a closing tag.')",
|
"assert(editor.match(/<\\/h2>/g) && editor.match(/<\\/h2>/g).length === editor.match(/<h2>/g).length, 'Make sureyour <code>h2</code> element has a closing tag.')",
|
||||||
"assert.isTrue((/cat(\\s)?photo(\\s)?app/gi).test($('h2').text()), 'Your <code>h2</code> element should have the text \"CatPhotoApp\"')",
|
"assert.isTrue((/cat(\\s)?photo(\\s)?app/gi).test($('h2').text()), 'Your <code>h2</code> element should have the text \"CatPhotoApp\"')",
|
||||||
"assert.isTrue((/hello(\\s)+world/gi).test($('h1').text()), 'Your <code>h1</code> element should have the text \"Hello World\"')"
|
"assert.isTrue((/hello(\\s)+world/gi).test($('h1').text()), 'Your <code>h1</code> element should have the text \"Hello World\"')"
|
||||||
],
|
],
|
||||||
@ -89,7 +89,7 @@
|
|||||||
"tests": [
|
"tests": [
|
||||||
"assert(($('p').length > 0), 'Create a <code>p</code> element.')",
|
"assert(($('p').length > 0), 'Create a <code>p</code> element.')",
|
||||||
"assert.isTrue((/hello(\\s)+paragraph/gi).test($('p').text()), 'Your <code>p</code> element should have the text \"Hello Paragraph\".')",
|
"assert.isTrue((/hello(\\s)+paragraph/gi).test($('p').text()), 'Your <code>p</code> element should have the text \"Hello Paragraph\".')",
|
||||||
"assert(new RegExp('</p>', 'gi').test(editor), 'Be sure to complete your <code>p</code> element with a closing tag.')"
|
"assert(editor.match(/<\\/p>/g) && editor.match(/<\\/p>/g).length === editor.match(/<p>/g).length, 'Make sureyour <code>p</code> element has a closing tag.')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<h1>Hello World</h1>",
|
"<h1>Hello World</h1>",
|
||||||
@ -480,7 +480,7 @@
|
|||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($('p').length > 1, 'You need 2 <code>p</code> elements with Kitty Ipsum text.')",
|
"assert($('p').length > 1, 'You need 2 <code>p</code> elements with Kitty Ipsum text.')",
|
||||||
"assert(editor.match(/<\\/p>/g).length > 1, 'Be sure that each of your <code>p</code> elements has a closing tag.')",
|
"assert(editor.match(/<\\/p>/g).length > 1, 'Make sureeach of your <code>p</code> elements has a closing tag.')",
|
||||||
"assert($('p').css('font-size') === '16px', 'Give your <code>p</code> elements the font-size of 16px.')"
|
"assert($('p').css('font-size') === '16px', 'Give your <code>p</code> elements the font-size of 16px.')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
@ -513,7 +513,7 @@
|
|||||||
"description": [
|
"description": [
|
||||||
"Make all of your <code>p</code> elements use the \"Monospace\" font.",
|
"Make all of your <code>p</code> elements use the \"Monospace\" font.",
|
||||||
"You can set an element's font by using the \"font-family\" attribute.",
|
"You can set an element's font by using the \"font-family\" attribute.",
|
||||||
"For example, if you wanted to set your <code>h2</code> element's font to \"Sans-serif\", you would use the following CSS: <code>h2 { font-family: 'Sans-serif'; }</code>"
|
"For example, if you wanted to set your <code>h2</code> element's font to \"Sans-serif\", you would use the following CSS: <code>h2 { font-family: Sans-serif; }</code>"
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($('p').css('font-family').match(/monospace/i), 'Your <code>p</code> elements should use the font \"Monospace\".')"
|
"assert($('p').css('font-family').match(/monospace/i), 'Your <code>p</code> elements should use the font \"Monospace\".')"
|
||||||
@ -645,7 +645,7 @@
|
|||||||
"name": "Waypoint: Override Styles with Important",
|
"name": "Waypoint: Override Styles with Important",
|
||||||
"difficulty": 0.025,
|
"difficulty": 0.025,
|
||||||
"description": [
|
"description": [
|
||||||
"Create a \"blue-text\" class that gives an element the font-color of blue. Also create an \"urgently-red\" class that gives an element the font-color of red, but add <code>!important</code> to the class to ensure the element is rendered as being red. Apply both classes to your <code>h2</code> element.",
|
"Create an \"urgently-red\" class that gives an element the font-color of red, but add <code>!important</code> to the class to ensure the element is rendered as being red. Immediately below your \"urgently-red\" class declaration, create a \"blue-text\" class that gives an element the font-color of blue. Apply both classes to your <code>h2</code> element.",
|
||||||
"You can add more than one class to an element by separating the class declarations with a space, like this: <code><h2 class='green-text giant-text'>This will be giant green text</h2></code>.",
|
"You can add more than one class to an element by separating the class declarations with a space, like this: <code><h2 class='green-text giant-text'>This will be giant green text</h2></code>.",
|
||||||
"Sometimes HTML elements will receive conflicting information from CSS classes as to how they should be styled.",
|
"Sometimes HTML elements will receive conflicting information from CSS classes as to how they should be styled.",
|
||||||
"If there's a conflict in the CSS, the browser will use whichever style declaration is closest to the bottom of the CSS document (whichever declaration comes last). Note that in-line style declarations are the final authority in how an HTML element will be rendered.",
|
"If there's a conflict in the CSS, the browser will use whichever style declaration is closest to the bottom of the CSS document (whichever declaration comes last). Note that in-line style declarations are the final authority in how an HTML element will be rendered.",
|
||||||
@ -1039,9 +1039,9 @@
|
|||||||
"tests": [
|
"tests": [
|
||||||
"assert($('a').attr('href').match(/catphotoapp.com/gi).length > 0, 'You need an <code>a</code> element that links to \"catphotoapp.com\".')",
|
"assert($('a').attr('href').match(/catphotoapp.com/gi).length > 0, 'You need an <code>a</code> element that links to \"catphotoapp.com\".')",
|
||||||
"assert($('a').text().match(/cat\\sphotos/gi).length > 0, 'Your <code>a</code> element should have the anchor text of \"cat photos\"')",
|
"assert($('a').text().match(/cat\\sphotos/gi).length > 0, 'Your <code>a</code> element should have the anchor text of \"cat photos\"')",
|
||||||
"assert($('a').parent().is('p'), 'Your anchor element should be wrapped within a paragraph element.')",
|
"assert($('a[href=\\'http://www.catphotoapp.com\\']').parent().is('p'), 'Your anchor element should be wrapped within a paragraph element.')",
|
||||||
"assert($('p').text().match(/click\\shere\\sfor/gi), 'Your <code>p</code> element should have the text \"click here for\".')",
|
"assert($('p').text().match(/click\\shere\\sfor/gi), 'Your <code>p</code> element should have the text \"click here for\".')",
|
||||||
"assert(editor.match(/<\\/p>/g).length > 2, 'Be sure that each of your <code>p</code> elements has a closing tag.')"
|
"assert(editor.match(/<\\/p>/g).length > 2, 'Make sureeach of your <code>p</code> elements has a closing tag.')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -1168,7 +1168,7 @@
|
|||||||
"tests": [
|
"tests": [
|
||||||
"assert(new RegExp('#').test($('a').children('img').parent().attr('href')), 'Your <code>anchor</code> element should be a dead link with a <code>href</code> attribute set to \"#\".')",
|
"assert(new RegExp('#').test($('a').children('img').parent().attr('href')), 'Your <code>anchor</code> element should be a dead link with a <code>href</code> attribute set to \"#\".')",
|
||||||
"assert($('a').children('img').length > 0, 'Wrap your image element inside an anchor element.')",
|
"assert($('a').children('img').length > 0, 'Wrap your image element inside an anchor element.')",
|
||||||
"assert(editor.match(/<\\/a>/g).length > 1, 'Be sure that each of your <code>a</code> elements has a closing tag.')"
|
"assert(editor.match(/<\\/a>/g).length > 1, 'Make sureeach of your <code>a</code> elements has a closing tag.')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -1295,8 +1295,8 @@
|
|||||||
"tests": [
|
"tests": [
|
||||||
"assert($('ul').length > 0, 'Create a <code>ul</code> element.')",
|
"assert($('ul').length > 0, 'Create a <code>ul</code> element.')",
|
||||||
"assert($('li').length > 2, 'Add three <code>li</code> elements to your <code>ul</code> element.')",
|
"assert($('li').length > 2, 'Add three <code>li</code> elements to your <code>ul</code> element.')",
|
||||||
"assert(editor.match(/<\\/ul>/g), 'Be sure that your <code>ul</code> element has a closing tag.')",
|
"assert(editor.match(/<\\/ul>/g), 'Make sureyour <code>ul</code> element has a closing tag.')",
|
||||||
"assert(editor.match(/<\\/li>/g) && editor.match(/<\\/li>/g).length > 2, 'Be sure that each of your <code>li</code> elements has a closing tag.')"
|
"assert(editor.match(/<\\/li>/g) && editor.match(/<\\/li>/g).length > 2, 'Make sureeach of your <code>li</code> elements has a closing tag.')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -1362,9 +1362,9 @@
|
|||||||
"assert($('ol').length > 0, 'You should have an <code>ol</code> element on your webpage.')",
|
"assert($('ol').length > 0, 'You should have an <code>ol</code> element on your webpage.')",
|
||||||
"assert($('li').length > 5, 'You should have three <code>li</code> elements within your <code>ul</code> element.')",
|
"assert($('li').length > 5, 'You should have three <code>li</code> elements within your <code>ul</code> element.')",
|
||||||
"assert($('li').length > 5, 'You should have three <code>li</code> elements within your <code>ol</code> element.')",
|
"assert($('li').length > 5, 'You should have three <code>li</code> elements within your <code>ol</code> element.')",
|
||||||
"assert(editor.match(/<\\/ol>/g), 'Be sure that your <code>ol</code> element has a closing tag.')",
|
"assert(editor.match(/<\\/ol>/g), 'Make sureyour <code>ol</code> element has a closing tag.')",
|
||||||
"assert(editor.match(/<\\/ul>/g), 'Be sure that your <code>ul</code> element has a closing tag.')",
|
"assert(editor.match(/<\\/ul>/g), 'Make sureyour <code>ul</code> element has a closing tag.')",
|
||||||
"assert(editor.match(/<\\/li>/g).length > 5, 'Be sure that each of your <code>li</code> elements has a closing tag.')"
|
"assert(editor.match(/<\\/li>/g).length > 5, 'Make sureeach of your <code>li</code> elements has a closing tag.')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -1651,7 +1651,7 @@
|
|||||||
"assert($('form').children('button').length > 0, 'Your form should have a button inside it.')",
|
"assert($('form').children('button').length > 0, 'Your form should have a button inside it.')",
|
||||||
"assert($('button').attr('type') === 'submit', 'Your submit button should have be of input type \"submit\".')",
|
"assert($('button').attr('type') === 'submit', 'Your submit button should have be of input type \"submit\".')",
|
||||||
"assert($('button').text().match(/submit/gi), 'Your submit button should have the text \"submit\".')",
|
"assert($('button').text().match(/submit/gi), 'Your submit button should have the text \"submit\".')",
|
||||||
"assert(editor.match(/<\\/button>/g), 'Be sure that your <code>button</code> element has a closing tag.')"
|
"assert(editor.match(/<\\/button>/g), 'Make sureyour <code>button</code> element has a closing tag.')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -2125,7 +2125,7 @@
|
|||||||
"assert($('div').children('ol').length > 0, 'Wrap your <code>ol</code> element inside your <code>div</code> element.')",
|
"assert($('div').children('ol').length > 0, 'Wrap your <code>ol</code> element inside your <code>div</code> element.')",
|
||||||
"assert($('div').children('p').length > 1, 'Wrap your <code>p</code> element inside your <code>div</code> element.')",
|
"assert($('div').children('p').length > 1, 'Wrap your <code>p</code> element inside your <code>div</code> element.')",
|
||||||
"assert($('div').children('ul').length > 0, 'Wrap your <code>ul</code> element inside your <code>div</code> element.')",
|
"assert($('div').children('ul').length > 0, 'Wrap your <code>ul</code> element inside your <code>div</code> element.')",
|
||||||
"assert(editor.match(/<\\/div>/g) && editor.match(/<\\/div>/g).length === editor.match(/<div>/g).length, 'Be sure that your <code>div</code> element has a closing tag.')"
|
"assert(editor.match(/<\\/div>/g) && editor.match(/<\\/div>/g).length === editor.match(/<div>/g).length, 'Make sureyour <code>div</code> element has a closing tag.')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -2537,7 +2537,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": "bad87fee1248bd9aedf08824",
|
"_id": "bad87fee1248bd9aedf08824",
|
||||||
"name": "Waypoint: Add Different a Margin to Each Side of an Element",
|
"name": "Waypoint: Add Different Margins to Each Side of an Element",
|
||||||
"difficulty": 0.068,
|
"difficulty": 0.068,
|
||||||
"description": [
|
"description": [
|
||||||
"Give the green box a margin of 40 pixels on its top and left side, but only 20 pixels on its bottom and right side.",
|
"Give the green box a margin of 40 pixels on its top and left side, but only 20 pixels on its bottom and right side.",
|
||||||
|
@ -180,8 +180,8 @@
|
|||||||
"Bootstrap has its own button styles, which look much better than the plain HTML ones."
|
"Bootstrap has its own button styles, which look much better than the plain HTML ones."
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($('.btn').length > 0, 'your new button should have the class \"btn\".');",
|
"assert($('button').hasClass('btn'), 'Your new button should have the class \"btn\".')",
|
||||||
"assert(new RegExp('like this photo','gi').test($('.btn').text()), 'your button should have the text \"like this photo\"');"
|
"assert(new RegExp('like this photo','gi').test($('button.btn').text()), 'Your button should have the text \"like this photo\".')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -260,11 +260,12 @@
|
|||||||
"difficulty": 0.050,
|
"difficulty": 0.050,
|
||||||
"description": [
|
"description": [
|
||||||
"Add Bootstrap's <code>btn-block</code> class to your Bootstrap button.",
|
"Add Bootstrap's <code>btn-block</code> class to your Bootstrap button.",
|
||||||
"Normally, your buttons are only as wide as the text they contain. By making them <code>block elements</code>, your button will stretch to fill your page's entire horizontal space.",
|
"Normally, your buttons are only as wide as the text they contain. By making them <code>block</code> elements, your button will stretch to fill your page's entire horizontal space.",
|
||||||
"Note that these buttons still need the <code>btn</code> class."
|
"Note that these buttons still need the <code>btn</code> class."
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($('.btn-block').length > 0, 'your new button should have the class \"btn-block\".')"
|
"assert($('button').hasClass('btn'), 'Your button should still have the class \"btn\".')",
|
||||||
|
"assert($('button').hasClass('btn-block'), 'Your button should have the class \"btn-block\".')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -348,8 +349,8 @@
|
|||||||
"Note that this button will still need the <code>btn</code> class."
|
"Note that this button will still need the <code>btn</code> class."
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($('.btn-primary').length > 0, 'Your new button should have the class \"btn-primary\".')",
|
"assert($('button').hasClass('btn-primary'), 'Your button should have the class \"btn-primary\".')",
|
||||||
"assert($('.btn').length > 0, 'Your new button should have the class \"btn\".')"
|
"assert($('button').hasClass('btn-block') && $('button').hasClass('btn'), 'Your button should still have the \"btn\" and \"btn-block\" classes.')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -428,13 +429,14 @@
|
|||||||
"name": "Waypoint: Call out Optional Actions with Button Info",
|
"name": "Waypoint: Call out Optional Actions with Button Info",
|
||||||
"difficulty": 0.052,
|
"difficulty": 0.052,
|
||||||
"description": [
|
"description": [
|
||||||
"Create a new block-level Bootstrap button below your \"like\" button with the text \"Info\", and add Bootstrap's <code>btn-info</code> and <code>btn-block</code> classes to it.",
|
"Create a new block-level Bootstrap button below your \"Like\" button with the text \"Info\", and add Bootstrap's <code>btn-info</code> and <code>btn-block</code> classes to it.",
|
||||||
"Bootstrap comes with several pre-defined colors for buttons. The <code>btn-info</code> class is used to call attention to optional actions that the user can take.",
|
"Bootstrap comes with several pre-defined colors for buttons. The <code>btn-info</code> class is used to call attention to optional actions that the user can take.",
|
||||||
"Note that these buttons still need the <code>btn</code> and <code>btn-block</code> classes."
|
"Note that these buttons still need the <code>btn</code> and <code>btn-block</code> classes."
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($('.btn-info').length > 0, 'your new button should have the class \"btn-info\".')",
|
"assert($('button').hasClass('btn-info'), 'Your new button should have the class \"btn-info\".')",
|
||||||
"assert($('.btn-block').length > 1, 'Both of your Bootstrap buttons should have the class \"btn-block\".')"
|
"assert($('button.btn-block.btn').length > 1, 'Both of your Bootstrap buttons should have the \"btn\" and \"btn-block\" classes.')",
|
||||||
|
"assert(new RegExp('info', 'gi').test($('button.btn-info').text()), 'Your new button should have the text \"Info\".')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -513,13 +515,14 @@
|
|||||||
"name": "Waypoint: Warn your Users of a Dangerous Action",
|
"name": "Waypoint: Warn your Users of a Dangerous Action",
|
||||||
"difficulty": 0.053,
|
"difficulty": 0.053,
|
||||||
"description": [
|
"description": [
|
||||||
"Create a button with the text \"delete\" and give it the class <code>btn-danger</code>.",
|
"Create a button with the text \"Delete\" and give it the class <code>btn-danger</code>.",
|
||||||
"Bootstrap comes with several pre-defined colors for buttons. The <code>btn-danger</code> class is the button color you'll use to notify users that the button performs a destructive action, such as deleting a cat photo.",
|
"Bootstrap comes with several pre-defined colors for buttons. The <code>btn-danger</code> class is the button color you'll use to notify users that the button performs a destructive action, such as deleting a cat photo.",
|
||||||
"Note that these buttons still need the <code>btn</code> and <code>btn-block</code> classes."
|
"Note that these buttons still need the <code>btn</code> and <code>btn-block</code> classes."
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($('.btn-danger').length > 0, 'Your new button should have the class \"btn-danger\".')",
|
"assert($('button').hasClass('btn-danger'), 'Your new button should have the class \"btn-danger\".')",
|
||||||
"assert($('.btn-block').length > 1, 'Both of your Bootstrap buttons should have the class \"btn-block\".')"
|
"assert($('button.btn-block.btn').length > 2, 'All of your Bootstrap buttons should have the \"btn\" and \"btn-block\" classes.')",
|
||||||
|
"assert(new RegExp('delete', 'gi').test($('button.btn-danger').text()), 'Your new button should have the text \"delete\".')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -608,8 +611,8 @@
|
|||||||
"The <code>row</code> class is applied to a <code>div</code>, and the buttons themselves can be wrapped within it."
|
"The <code>row</code> class is applied to a <code>div</code>, and the buttons themselves can be wrapped within it."
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($('.row').length > 0, 'Your new button should be wrapped within a div with the class \"row\".')",
|
"assert($('div.row:has(button)').length > 0, 'Your buttons should be wrapped within a div with the class \"row\".')",
|
||||||
"assert($('.col-xs-4').length > 2, 'Each of your bootstrap buttons should be wrapped in a div with the class \"col-xs-4\".')"
|
"assert($('div.col-xs-4').length > 2, 'Each of your Bootstrap buttons should be wrapped in a div with the class \"col-xs-4\".')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -698,7 +701,7 @@
|
|||||||
"assert(!$('h2').hasClass('red-text'), 'You h2 element should no longer have the class \"red-text\".')",
|
"assert(!$('h2').hasClass('red-text'), 'You h2 element should no longer have the class \"red-text\".')",
|
||||||
"assert($('h2').hasClass('text-primary'), 'You h2 element should now have the class \"text-primary\".')",
|
"assert($('h2').hasClass('text-primary'), 'You h2 element should now have the class \"text-primary\".')",
|
||||||
"assert(!$('p').css('font-family').match(/monospace/i), 'Your paragraph elements should no longer use the font \"Monospace\".')",
|
"assert(!$('p').css('font-family').match(/monospace/i), 'Your paragraph elements should no longer use the font \"Monospace\".')",
|
||||||
"assert($('.img-responsive').length > 1, 'Remove the \"smaller-image\" class from your top image and replace it with the \"img-responsive\" class.')"
|
"assert($('img').hasClass('img-responsive') && !$('img').hasClass('smaller-image'), 'Remove the \"smaller-image\" class from your top image and replace it with the \"img-responsive\" class.')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -788,7 +791,7 @@
|
|||||||
"name": "Waypoint: Create a Custom Heading",
|
"name": "Waypoint: Create a Custom Heading",
|
||||||
"difficulty": 0.056,
|
"difficulty": 0.056,
|
||||||
"description": [
|
"description": [
|
||||||
"Wrap your first image and your h2 element within a single <code><div class='row'></code> element. Wrap your h2 text within a <code><div class='col-xs-8'></code> and your image in a <code><div class='col-xs-4'></code> so that they are on the same line.",
|
"Wrap your first image and your <code>h2</code> element within a single <code><div class='row'></code> element. Wrap your <code>h2</code> text within a <code><div class='col-xs-8'></code> and your image in a <code><div class='col-xs-4'></code> so that they are on the same line.",
|
||||||
"We will make a simple heading for our Cat Photo App by putting them in the same row.",
|
"We will make a simple heading for our Cat Photo App by putting them in the same row.",
|
||||||
"Remember, Bootstrap uses a responsive grid system, which makes it easy to put elements into rows and specify each element's relative width. Most of Bootstrap's classes can be applied to a <code>div</code> element.",
|
"Remember, Bootstrap uses a responsive grid system, which makes it easy to put elements into rows and specify each element's relative width. Most of Bootstrap's classes can be applied to a <code>div</code> element.",
|
||||||
"Here's a diagram of how Bootstrap's 12-column grid layout works:",
|
"Here's a diagram of how Bootstrap's 12-column grid layout works:",
|
||||||
@ -798,9 +801,9 @@
|
|||||||
"Notice how the image is now just the right size to fit along the text?"
|
"Notice how the image is now just the right size to fit along the text?"
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($('.row').length > 1, 'Your h2 and top image elements should both be wrapped together within a div with the class \"row\".')",
|
"assert($('div.row:has(h2)').length > 0 && $('div.row:has(img)').length > 0, 'Your h2 and top image elements should both be wrapped together within a div with the class \"row\".')",
|
||||||
"assert($('.col-xs-4').length > 3, 'Wrap your top image inside a div with the class \"col-xs-4\".')",
|
"assert($('div.col-xs-4:has(img)').length > 0, 'Wrap your top image inside a div with the class \"col-xs-4\".')",
|
||||||
"assert($('.col-xs-8').length > 0, 'Wrap your h2 element inside a div with the class \"col-xs-8\".')"
|
"assert($('div.col-xs-8:has(h2)').length > 0, 'Wrap your h2 element inside a div with the class \"col-xs-8\".')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -881,7 +884,7 @@
|
|||||||
"Go ahead and add a <code><i class=\"fa fa-thumbs-up\"></i></code> within your like button's element."
|
"Go ahead and add a <code><i class=\"fa fa-thumbs-up\"></i></code> within your like button's element."
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($('.fa-thumbs-up').length > 0, 'Add a <code>i</code> element with the classes \"fa\" and \"fa-thumbs-up\".')",
|
"assert($('i').hasClass('fa fa-thumbs-up'), 'Add an <code>i</code> element with the classes \"fa\" and \"fa-thumbs-up\".')",
|
||||||
"assert($('button').children('i').length > 0, 'Wrap your <code>i</code> element within your <code>button</code> element.')",
|
"assert($('button').children('i').length > 0, 'Wrap your <code>i</code> element within your <code>button</code> element.')",
|
||||||
"assert(editor.match(/<\\/i>/g), 'Be sure to close your <code>i</code> element with a closing tag.')"
|
"assert(editor.match(/<\\/i>/g), 'Be sure to close your <code>i</code> element with a closing tag.')"
|
||||||
],
|
],
|
||||||
@ -968,8 +971,8 @@
|
|||||||
"Add <code><i class=\"fa fa-info-circle\"></i></code> within your info button's element, and a <code><i class=\"fa fa-trash\"></i></code> within your delete button."
|
"Add <code><i class=\"fa fa-info-circle\"></i></code> within your info button's element, and a <code><i class=\"fa fa-trash\"></i></code> within your delete button."
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($('.fa-trash').length > 0, 'You should add a <code><i class=\"fa fa-trash\"></i></code> within your delete button element.')",
|
"assert($('i').hasClass('fa fa-trash'), 'You should add a <code><i class=\"fa fa-trash\"></i></code> within your delete button element.')",
|
||||||
"assert($('.fa-info-circle').length > 0, 'You should add a <code><i class=\"fa fa-info-circle\"></i></code> within your info button element.')"
|
"assert($('i').hasClass('fa fa-info-circle'), 'You should add a <code><i class=\"fa fa-info-circle\"></i></code> within your info button element.')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -1053,8 +1056,8 @@
|
|||||||
"You can use Bootstrap's <code>col-xs-*</code> classes on form elements, too! This way, our radio buttons will be evenly spread out across the page, regardless of how wide the screen resolution is."
|
"You can use Bootstrap's <code>col-xs-*</code> classes on form elements, too! This way, our radio buttons will be evenly spread out across the page, regardless of how wide the screen resolution is."
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($('.row').length > 2, 'Wrap your all of your radio buttons inside one div with the class \"row\".')",
|
"assert($('div.row:has(input[type=\\'radio\\'])').length > 0, 'Wrap all of your radio buttons inside one div with the class \"row\".')",
|
||||||
"assert($('.col-xs-6').length > 1, 'Wrap each of your radio buttons inside its own div with the class \"col-xs-6\".')"
|
"assert($('div.col-xs-6:has(input[type=\\'radio\\'])').length > 1, 'Wrap each of your radio buttons inside its own div with the class \"col-xs-6\".')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -1138,8 +1141,8 @@
|
|||||||
"You can use Bootstrap's <code>col-xs-*</code> classes on form elements, too! This way, our checkboxes will be evenly spread out across the page, regardless of how wide the screen resolution is."
|
"You can use Bootstrap's <code>col-xs-*</code> classes on form elements, too! This way, our checkboxes will be evenly spread out across the page, regardless of how wide the screen resolution is."
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($('.row').length > 3, 'Wrap your all of your checkboxes inside one div with the class \"row\".')",
|
"assert($('div.row:has(input[type=\\'checkbox\\'])').length > 0, 'Wrap all of your checkboxes inside one div with the class \"row\".')",
|
||||||
"assert($('.col-xs-4').length > 6, 'Wrap each of your checkboxes inside its own div with the class \"col-xs-4\".')"
|
"assert($('div.col-xs-4:has(input[type=\\'checkbox\\'])').length > 2, 'Wrap each of your checkboxes inside its own div with the class \"col-xs-4\".')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -1229,9 +1232,9 @@
|
|||||||
"Give your form's text input field a class of <code>form-control</code>. Give your form's submit button the classes <code>btn btn-primary</code> and give it the Font Awesome icon of <code>fa-paper-plane</code>."
|
"Give your form's text input field a class of <code>form-control</code>. Give your form's submit button the classes <code>btn btn-primary</code> and give it the Font Awesome icon of <code>fa-paper-plane</code>."
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($('.btn-primary').length > 1, 'Give the submit button in your form the classes \"btn btn-primary\".')",
|
"assert($('button[type=\\'submit\\']').hasClass('btn btn-primary'), 'Give the submit button in your form the classes \"btn btn-primary\".')",
|
||||||
"assert($('.fa-paper-plane').length > 0, 'Add a <code><i class=\"fa fa-paper-plane\"></i></code> within your submit button element.')",
|
"assert($('button[type=\\'submit\\']:has(i.fa.fa-paper-plane)').length > 0, 'Add a <code><i class=\"fa fa-paper-plane\"></i></code> within your submit button element.')",
|
||||||
"assert($('.form-control').length > 0, 'Give the text input field in your form the class \"form-control\".')"
|
"assert($('input[type=\\'text\\']').hasClass('form-control'), 'Give the text input field in your form the class \"form-control\".')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
@ -1332,9 +1335,9 @@
|
|||||||
"This is the last challenge we'll do for our Cat Photo App for now. We hope you've enjoyed learning Font Awesome, Bootstrap, and responsive design!"
|
"This is the last challenge we'll do for our Cat Photo App for now. We hope you've enjoyed learning Font Awesome, Bootstrap, and responsive design!"
|
||||||
],
|
],
|
||||||
"tests": [
|
"tests": [
|
||||||
"assert($('.row').length > 4, 'Wrap your form submission button and text area in a div with class \"row\".')",
|
"assert($('div.row:has(input[type=\\'text\\'])').length > 0 && $('div.row:has(button[type=\\'submit\\'])').length > 0, 'Wrap your form submission button and text area in a div with class \"row\".')",
|
||||||
"assert($('.col-xs-5').length > 0, 'Wrap your form submission button in a div with the class \"col-xs-5\".')",
|
"assert($('div.col-xs-5:has(button[type=\\'submit\\'])').length > 0, 'Wrap your form submission button in a div with the class \"col-xs-5\".')",
|
||||||
"assert($('.col-xs-7').length > 0, 'Wrap your form text area in a div with the class \"col-xs-7\".')"
|
"assert($('div.col-xs-7:has(input[type=\\'text\\'])').length > 0, 'Wrap your form text area in a div with the class \"col-xs-7\".')"
|
||||||
],
|
],
|
||||||
"challengeSeed": [
|
"challengeSeed": [
|
||||||
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
"<link href='http://fonts.googleapis.com/css?family=Lobster' rel='stylesheet' type='text/css'>",
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c441eddfaeb5bdef",
|
"_id": "bd7158d9c441eddfaeb5bdef",
|
||||||
"name": "How do I use this guide?",
|
"name": "How do I use this guide?",
|
||||||
|
"dashedName": "how-do-i-use-this-guide",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3>This guide strives to provide clear answers to common questions about Free Code Camp, learning to code, and getting a coding job.</h3>",
|
" <h3>This guide strives to provide clear answers to common questions about Free Code Camp, learning to code, and getting a coding job.</h3>",
|
||||||
@ -13,6 +14,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c441eddfaeb5bdff",
|
"_id": "bd7158d9c441eddfaeb5bdff",
|
||||||
"name": "What exactly is Free Code Camp?",
|
"name": "What exactly is Free Code Camp?",
|
||||||
|
"dashedName": "what-exactly-is-free-code-camp",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3>We're a community of busy people who learn to code by building projects for nonprofits.</h3>",
|
" <h3>We're a community of busy people who learn to code by building projects for nonprofits.</h3>",
|
||||||
@ -30,6 +32,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c441eddfaeb5bd1f",
|
"_id": "bd7158d9c441eddfaeb5bd1f",
|
||||||
"name": "Why do I need Free Code Camp?",
|
"name": "Why do I need Free Code Camp?",
|
||||||
|
"dashedName": "why-do-i-need-free-code-camp",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3>Learning to code is hard.</h3>",
|
" <h3>Learning to code is hard.</h3>",
|
||||||
@ -47,6 +50,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c441eddfaeb5bd2f",
|
"_id": "bd7158d9c441eddfaeb5bd2f",
|
||||||
"name": "What are the main advantages of Free Code Camp?",
|
"name": "What are the main advantages of Free Code Camp?",
|
||||||
|
"dashedName": "what-are-the-main-advantages-of-free-code-camp",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3>Our main advantage is that we're accessible to busy adults who want to change careers. Specifically, we're:</h3>",
|
" <h3>Our main advantage is that we're accessible to busy adults who want to change careers. Specifically, we're:</h3>",
|
||||||
@ -63,6 +67,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c441eddfaeb5bd3f",
|
"_id": "bd7158d9c441eddfaeb5bd3f",
|
||||||
"name": "How does Free Code Camp work?",
|
"name": "How does Free Code Camp work?",
|
||||||
|
"dashedName": "how-does-free-code-camp-work",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3>Our free, self-paced, browser-based program takes about 1,600 hours to complete.",
|
" <h3>Our free, self-paced, browser-based program takes about 1,600 hours to complete.",
|
||||||
@ -83,7 +88,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"_id": "bd7158d9c441eddfaeb5bd4f",
|
"_id": "bd7158d9c441eddfaeb5bd4f",
|
||||||
"name": "Will I really be able to get a job after Free Code Camp?",
|
"name": "Will I really be able to get software engineering job after Free Code Camp?",
|
||||||
|
"dashedName": "will-i-really-be-able-to-get-a-software-engineering-job-after-free-code-camp",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3 class='text-left'>If you complete this program, <span class='text-info'>you will be able to get a coding job</span>. Many of our campers have already gotten coding jobs.</h3>",
|
" <h3 class='text-left'>If you complete this program, <span class='text-info'>you will be able to get a coding job</span>. Many of our campers have already gotten coding jobs.</h3>",
|
||||||
@ -103,6 +109,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c440eddfaeb5bdef",
|
"_id": "bd7158d9c440eddfaeb5bdef",
|
||||||
"name": "What will I learn, and in what sequence?",
|
"name": "What will I learn, and in what sequence?",
|
||||||
|
"dashedName": "what-will-i-learn-and-in-what-sequence",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
|
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
|
||||||
" <h3>First, you'll learn basic web design tools like:</h3>",
|
" <h3>First, you'll learn basic web design tools like:</h3>",
|
||||||
@ -139,6 +146,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c434eddfaeb5bdef",
|
"_id": "bd7158d9c434eddfaeb5bdef",
|
||||||
"name": "How long does Free Code Camp take?",
|
"name": "How long does Free Code Camp take?",
|
||||||
|
"dashedName": "how-long-does-free-code-camp-take",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
|
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
|
||||||
" <h3>It takes about 1,600 hours of coding to develop the skills you'll need to get an entry level software engineering job.</h3>",
|
" <h3>It takes about 1,600 hours of coding to develop the skills you'll need to get an entry level software engineering job.</h3>",
|
||||||
@ -176,6 +184,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c438eddfaeb5bdef",
|
"_id": "bd7158d9c438eddfaeb5bdef",
|
||||||
"name": "Why does Free Code Camp use JavaScript instead of Ruby or Python?",
|
"name": "Why does Free Code Camp use JavaScript instead of Ruby or Python?",
|
||||||
|
"dashedName": "why-does-free-code-camp-use-javascript-instead-of-ruby-or-python",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
|
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
|
||||||
" <p class='large-p'>Like JavaScript, Ruby and Python are high-level scripting languages that can be used for full stack web development.</p>",
|
" <p class='large-p'>Like JavaScript, Ruby and Python are high-level scripting languages that can be used for full stack web development.</p>",
|
||||||
@ -189,6 +198,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c437eddfaeb5bdef",
|
"_id": "bd7158d9c437eddfaeb5bdef",
|
||||||
"name": "What is pair programming, and why is it special?",
|
"name": "What is pair programming, and why is it special?",
|
||||||
|
"dashedName": "what-is-pair-programming-and-why-is-it-special",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
|
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
|
||||||
" <h3>Pair programming is where two people code together on one computer.</h3>",
|
" <h3>Pair programming is where two people code together on one computer.</h3>",
|
||||||
@ -201,6 +211,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c436eddfaeb5bd2f",
|
"_id": "bd7158d9c436eddfaeb5bd2f",
|
||||||
"name": "How do I get help when I get stuck?",
|
"name": "How do I get help when I get stuck?",
|
||||||
|
"dashedName": "how-do-i-get-help-when-i-get-stuck",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3>When you get stuck, remember: RSAP.</h3>",
|
" <h3>When you get stuck, remember: RSAP.</h3>",
|
||||||
@ -223,6 +234,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c436eddfaeb5bd3f",
|
"_id": "bd7158d9c436eddfaeb5bd3f",
|
||||||
"name": "Can I jump around in this guide?",
|
"name": "Can I jump around in this guide?",
|
||||||
|
"dashedName": "can-i-jump-around-in-this-guide",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3>This guide was designed as a reference for you. You shouldn't try to read it all today.</h3>",
|
" <h3>This guide was designed as a reference for you. You shouldn't try to read it all today.</h3>",
|
||||||
@ -234,6 +246,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c436eddfaeb5bdef",
|
"_id": "bd7158d9c436eddfaeb5bdef",
|
||||||
"name": "If Free Code Camp is free, how does it make money?",
|
"name": "If Free Code Camp is free, how does it make money?",
|
||||||
|
"dashedName": "if-free-code-camp-is-free-how-does-it-make-money",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
|
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
|
||||||
" <h3>We are completely free for both students and for nonprofits.</h3>",
|
" <h3>We are completely free for both students and for nonprofits.</h3>",
|
||||||
@ -246,6 +259,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c435eddfaeb5bdef",
|
"_id": "bd7158d9c435eddfaeb5bdef",
|
||||||
"name": "Does Free Code Camp have an application process?",
|
"name": "Does Free Code Camp have an application process?",
|
||||||
|
"dashedName": "does-free-code-camp-have-an-application-process",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
|
"<div class=\"text-left col-xs-12 col-md-10 col-md-offset-1\">",
|
||||||
" <h3>Unlike coding bootcamps, anyone can study at Free Code Camp.</h3>",
|
" <h3>Unlike coding bootcamps, anyone can study at Free Code Camp.</h3>",
|
||||||
@ -257,6 +271,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c436eddfaeb5bd3b",
|
"_id": "bd7158d9c436eddfaeb5bd3b",
|
||||||
"name": "How can I stream my live coding sessions on Free Code Camp's Twitch.tv channel?",
|
"name": "How can I stream my live coding sessions on Free Code Camp's Twitch.tv channel?",
|
||||||
|
"dashedName": "how-can-i-stream-my-live-coding-sessions-on-free-code-camps-twitch-tv-channel",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3>If you're interested in coding JavaScript live in front of dozens of people on our popular <a href='http://twitch.tv/freecodecamp' target='_blank'>twitch.tv channel</a>, we'd love to have you.</h3>",
|
" <h3>If you're interested in coding JavaScript live in front of dozens of people on our popular <a href='http://twitch.tv/freecodecamp' target='_blank'>twitch.tv channel</a>, we'd love to have you.</h3>",
|
||||||
@ -277,6 +292,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c436eddfaeb5bd3d",
|
"_id": "bd7158d9c436eddfaeb5bd3d",
|
||||||
"name": "How can I find other Free Code Camp campers in my city?",
|
"name": "How can I find other Free Code Camp campers in my city?",
|
||||||
|
"dashedName": "how-can-i-find-other-free-code-camp-campers-in-my-city",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3>Find your city below and join their group. This is a great way to hang out with other coders, share insights, and pair program.</h3>",
|
" <h3>Find your city below and join their group. This is a great way to hang out with other coders, share insights, and pair program.</h3>",
|
||||||
@ -468,6 +484,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c436eddfaeb5bd3e",
|
"_id": "bd7158d9c436eddfaeb5bd3e",
|
||||||
"name": "Does Free Code Camp have an alumni network?",
|
"name": "Does Free Code Camp have an alumni network?",
|
||||||
|
"dashedName": "does-free-code-camp-have-an-alumni-network",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3>We have a growing <a href='https://www.linkedin.com/grp/home?gid=6966827' target='_blank'>alumni network on LinkedIn</a>. Once you've finished Free Code Camp and have gotten a coding job, we'd love to include you in this group, too!</h3>",
|
" <h3>We have a growing <a href='https://www.linkedin.com/grp/home?gid=6966827' target='_blank'>alumni network on LinkedIn</a>. Once you've finished Free Code Camp and have gotten a coding job, we'd love to include you in this group, too!</h3>",
|
||||||
@ -477,6 +494,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c442eddfaeb5b2ef",
|
"_id": "bd7158d9c442eddfaeb5b2ef",
|
||||||
"name": "Why doesn't Free Code Camp teach technical interviewing skills?",
|
"name": "Why doesn't Free Code Camp teach technical interviewing skills?",
|
||||||
|
"dashedName": "why-doesnt-free-code-camp-teach-technical-interviewing-skills",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3>The skills you'll need to succeed in the job interview are quite different from the skills you'll need to succeed on the job.</h3><br>",
|
" <h3>The skills you'll need to succeed in the job interview are quite different from the skills you'll need to succeed on the job.</h3><br>",
|
||||||
@ -492,6 +510,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c442eddfaeb5bdef",
|
"_id": "bd7158d9c442eddfaeb5bdef",
|
||||||
"name": "How do I best use the Global Control Shortcuts for Mac?",
|
"name": "How do I best use the Global Control Shortcuts for Mac?",
|
||||||
|
"dashedName": "how-do-i-best-use-the-global-control-shortcuts-for-mac",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3>These Global Control Shortcuts for Mac will save you hours by speeding up your typing.</h3><br>",
|
" <h3>These Global Control Shortcuts for Mac will save you hours by speeding up your typing.</h3><br>",
|
||||||
@ -516,6 +535,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c445eddfaeb5bdef",
|
"_id": "bd7158d9c445eddfaeb5bdef",
|
||||||
"name": "How can I get to Inbox Zero with Gmail shortcuts?",
|
"name": "How can I get to Inbox Zero with Gmail shortcuts?",
|
||||||
|
"dashedName": "how-can-i-get-to-inbox-zero-with-gmail-shortcuts",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3>These Gmail Shortcuts will save you hours and help you get to Inbox Zero.</h3><br/>",
|
" <h3>These Gmail Shortcuts will save you hours and help you get to Inbox Zero.</h3><br/>",
|
||||||
@ -544,6 +564,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c445eddfaeb5bdff",
|
"_id": "bd7158d9c445eddfaeb5bdff",
|
||||||
"name": "How can I deploy a website without writing any code at all?",
|
"name": "How can I deploy a website without writing any code at all?",
|
||||||
|
"dashedName": "how-can-i-deploy-a-website-without-writing-any-code-at-all",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3>It's possible to build dynamic, mobile-responsive websites without writing any code at all, in just a few minutes.</h3><br/>",
|
" <h3>It's possible to build dynamic, mobile-responsive websites without writing any code at all, in just a few minutes.</h3><br/>",
|
||||||
@ -566,6 +587,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c446eddfaeb5bdef",
|
"_id": "bd7158d9c446eddfaeb5bdef",
|
||||||
"name": "How do Free Code Camp's Nonprofit Projects work?",
|
"name": "How do Free Code Camp's Nonprofit Projects work?",
|
||||||
|
"dashedName": "how-do-free-code-camps-nonprofit-projects-work",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
|
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
|
||||||
" <p class='large-p'>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.</p>",
|
" <p class='large-p'>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.</p>",
|
||||||
@ -640,6 +662,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c447eddfaeb5bdef",
|
"_id": "bd7158d9c447eddfaeb5bdef",
|
||||||
"name": "How do I install Screenhero?",
|
"name": "How do I install Screenhero?",
|
||||||
|
"dashedName": "how-do-i-install-screenhero",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
|
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
|
||||||
" <h3><a href=\"http://links.screenhero.com/e/c/eyJlbWFpbF9pZCI6Ik1qQTNNem9XQkNJQ1pBQUNjd0FYQVZrVEdnRkxNamtfX0JWZEdGVEpSZkVCWlRwbFpXRTBNamM0WVMxaE56SmlMVEV4WlRRdE9HUXpZUzFpWXpVNE1HRTJNalkxTldNNk1UUTJNVEEyQUE9PSIsInBvc2l0aW9uIjowLCJocmVmIjoiaHR0cDovL2RsLnNjcmVlbmhlcm8uY29tL3NtYXJ0ZG93bmxvYWQvZklYQU1UUUJBTEtQQkhQTC9TY3JlZW5oZXJvLnppcD9zb3VyY2U9d2ViIn0=\">Download for Mac</a></h3>",
|
" <h3><a href=\"http://links.screenhero.com/e/c/eyJlbWFpbF9pZCI6Ik1qQTNNem9XQkNJQ1pBQUNjd0FYQVZrVEdnRkxNamtfX0JWZEdGVEpSZkVCWlRwbFpXRTBNamM0WVMxaE56SmlMVEV4WlRRdE9HUXpZUzFpWXpVNE1HRTJNalkxTldNNk1UUTJNVEEyQUE9PSIsInBvc2l0aW9uIjowLCJocmVmIjoiaHR0cDovL2RsLnNjcmVlbmhlcm8uY29tL3NtYXJ0ZG93bmxvYWQvZklYQU1UUUJBTEtQQkhQTC9TY3JlZW5oZXJvLnppcD9zb3VyY2U9d2ViIn0=\">Download for Mac</a></h3>",
|
||||||
@ -651,6 +674,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c451eddfaeb5bded",
|
"_id": "bd7158d9c451eddfaeb5bded",
|
||||||
"name": "What is the style guide for Bonfires?",
|
"name": "What is the style guide for Bonfires?",
|
||||||
|
"dashedName": "what-is-the-style-guide-for-bonfires",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
|
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
|
||||||
" <h3>Writing Bonfire challenges is a great way to exercise your own problem solving and testing abilities. Follow this process closely to maximize the chances of us accepting your bonfire.</h3>",
|
" <h3>Writing Bonfire challenges is a great way to exercise your own problem solving and testing abilities. Follow this process closely to maximize the chances of us accepting your bonfire.</h3>",
|
||||||
@ -686,6 +710,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c451eddfaeb5bdee",
|
"_id": "bd7158d9c451eddfaeb5bdee",
|
||||||
"name": "What is the Free Code Camp Code of Conduct?",
|
"name": "What is the Free Code Camp Code of Conduct?",
|
||||||
|
"dashedName": "what-is-the-free-code-camp-code-of-conduct",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
|
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
|
||||||
" <h3>Free Code Camp is friendly place to learn to code. We're committed to keeping it that way.</h3>",
|
" <h3>Free Code Camp is friendly place to learn to code. We're committed to keeping it that way.</h3>",
|
||||||
@ -710,6 +735,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c451eddfaeb5bdef",
|
"_id": "bd7158d9c451eddfaeb5bdef",
|
||||||
"name": "What is the Free Code Camp Privacy Policy?",
|
"name": "What is the Free Code Camp Privacy Policy?",
|
||||||
|
"dashedName": "what-is-the-free-code-camp-privacy-policy",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
|
"<div class='col-xs-12 col-sm-10 col-sm-offset-1'>",
|
||||||
" <p class='large-p'>Free Code Camp is committed to respecting the privacy of visitors to our web sites and web applications. The guidelines below explain how we protect the privacy of visitors to FreeCodeCamp.com and its features.</p>",
|
" <p class='large-p'>Free Code Camp is committed to respecting the privacy of visitors to our web sites and web applications. The guidelines below explain how we protect the privacy of visitors to FreeCodeCamp.com and its features.</p>",
|
||||||
@ -751,6 +777,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c436eddfaeb5bd3c",
|
"_id": "bd7158d9c436eddfaeb5bd3c",
|
||||||
"name": "How can I reach the Free Code Camp team to interview them for my publication?",
|
"name": "How can I reach the Free Code Camp team to interview them for my publication?",
|
||||||
|
"dashedName": "how-can-i-reach-the-free-code-camp-team-to-interview-them-for-my-publication",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h3>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:</h3>",
|
" <h3>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:</h3>",
|
||||||
@ -769,6 +796,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c436eddfaeb5dd3b",
|
"_id": "bd7158d9c436eddfaeb5dd3b",
|
||||||
"name": "What other resources does Free Code Camp recommend to nonprofits?",
|
"name": "What other resources does Free Code Camp recommend to nonprofits?",
|
||||||
|
"dashedName": "what-other-resources-does-free-code-camp-recommend-to-nonprofits",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <h2>Here are some excellent resources for nonprofits.</h2>",
|
" <h2>Here are some excellent resources for nonprofits.</h2>",
|
||||||
@ -810,6 +838,7 @@
|
|||||||
{
|
{
|
||||||
"_id": "bd7158d9c436eddfadb5bd3e",
|
"_id": "bd7158d9c436eddfadb5bd3e",
|
||||||
"name": "How can I contribute to this guide?",
|
"name": "How can I contribute to this guide?",
|
||||||
|
"dashedName": "how-can-i-contribute-to-this-guide",
|
||||||
"description": [
|
"description": [
|
||||||
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
"<div class=\"col-xs-12 col-sm-10 col-sm-offset-1\">",
|
||||||
" <p class='large-p'>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:</p>",
|
" <p class='large-p'>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:</p>",
|
||||||
|
@ -18,8 +18,8 @@ function storyLinkCleanup(cb) {
|
|||||||
console.log(i++);
|
console.log(i++);
|
||||||
this.pause();
|
this.pause();
|
||||||
story.storyLink = story.storyLink.
|
story.storyLink = story.storyLink.
|
||||||
replace(/\s+/g, ' ').
|
|
||||||
replace(/[^a-z0-9\s]/gi, '').
|
replace(/[^a-z0-9\s]/gi, '').
|
||||||
|
replace(/\s+/g, ' ').
|
||||||
toLowerCase().
|
toLowerCase().
|
||||||
trim();
|
trim();
|
||||||
story.save(function (err) {
|
story.save(function (err) {
|
||||||
|
Reference in New Issue
Block a user