diff --git a/bower.json b/bower.json
index cd8cfd5cf3..1f833167fc 100644
--- a/bower.json
+++ b/bower.json
@@ -26,6 +26,7 @@
"moment": "~2.10.2",
"angular-bootstrap": "~0.13.0",
"ramda": "~0.13.0",
- "jshint": "~2.7.0"
+ "jshint": "~2.7.0",
+ "lightbox2": "~2.8.1"
}
}
diff --git a/client/less/main.less b/client/less/main.less
index 6d6260aac7..e21023754e 100644
--- a/client/less/main.less
+++ b/client/less/main.less
@@ -212,6 +212,10 @@ ul {
font-size: 24px;
}
+.map-p {
+ font-size: 20px;
+}
+
.large-li {
font-size: 24px;
}
@@ -282,6 +286,10 @@ ul {
margin-bottom: -6px;
}
+.lb-container {
+ padding: 0px;
+}
+
.btn-social {
width: 250px;
margin: auto;
diff --git a/seed/challenges/bootstrap.json b/seed/challenges/bootstrap.json
index 78116911dd..fb4f864474 100644
--- a/seed/challenges/bootstrap.json
+++ b/seed/challenges/bootstrap.json
@@ -347,7 +347,7 @@
"description": [
"Normally, your button
elements are only as wide as the text that they contain. By making them block elements, your button will stretch to fill your page's entire horizontal space.",
"This image illustrates the difference between inline
elements and block-level
elements:",
- "
",
+ "
",
"Note that these buttons still need the btn
class.",
"Add Bootstrap's btn-block
class to your Bootstrap button."
],
@@ -700,7 +700,7 @@
"description": [
"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 div
element.",
"Here's a diagram of how Bootstrap's 12-column grid layout works:",
- "
",
+ "
",
"Note that in this illustration, the col-md-*
class is being used. Here, md
means medium, and *
is a number specifying how many columns wide the element should be. In this case, the column width of an element on a medium-sized screen, such as a laptop, is being specified.",
"In the Cat Photo App that we're building, we'll use col-xs-*
, where xs
means extra small (like an extra-small mobile phone screen), and *
is the number of columns specifying how many columns wide the element should be.",
"Put the Like
, Info
and Delete
buttons side-by-side by nesting all three of them within one <div class=\"row\">
element, then each of them within a <div class=\"col-xs-4\">
element.",
@@ -895,7 +895,7 @@
"description": [
"You can use spans to create inline elements. Remember when we used the btn-block
class to make the button fill the entire row?",
"This image illustrates the difference between inline
elements and block-level
elements:",
- "
",
+ "
",
"By using the span
element, you can put several elements together, and even style different parts of the same element differently.",
"Nest the word \"love\" in your \"Things cats love\" element below within a span
element. Then give that span
the class text-danger
to make the text red.",
"Here's how you would do this with the \"Top 3 things cats hate\" element: <p>Top 3 things cats <span class = \"text-danger\">hate</span></p>
"
@@ -984,7 +984,7 @@
"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 div
element.",
"Here's a diagram of how Bootstrap's 12-column grid layout works:",
- "
",
+ "
",
"Note that in this illustration, the col-md-*
class is being used. Here, md
means medium, and *
is a number specifying how many columns wide the element should be. In this case, the column width of an element on a medium-sized screen, such as a laptop, is being specified.",
"In the Cat Photo App that we're building, we'll use col-xs-*
, where xs
means extra small (like an extra-small mobile phone screen), and *
is the number of columns specifying how many columns wide the element should be.",
"Nest your first image and your h2
element within a single <div class=\"row\">
element. Nest your h2
text within a <div class=\"col-xs-8\">
and your image in a <div class=\"col-xs-4\">
so that they are on the same line.",
diff --git a/seed/challenges/html5-and-css.json b/seed/challenges/html5-and-css.json
index fcd98e70f5..1871088811 100644
--- a/seed/challenges/html5-and-css.json
+++ b/seed/challenges/html5-and-css.json
@@ -866,7 +866,8 @@
"description": [
"CSS borders have properties 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. You can apply multiple classes to elements by separating them with a space within the class
attribute. For example, <element class=\"class1 class2\"></element>
"
+ "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.",
+ "Remember that you can apply multiple classes to an element by separating each class with a space within its class
attribute. For example: <img class=\"class1 class2\">
"
],
"tests": [
"assert($(\"img\").hasClass(\"smaller-image\"), 'Your img
element should have the class smaller-image
.')",
@@ -1060,7 +1061,7 @@
"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://freecatphotoapp.com
and has \"cat photos\" as its anchor text
."
],
@@ -1130,7 +1131,7 @@
"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 existing 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."
diff --git a/seed/challenges/jquery.json b/seed/challenges/jquery.json
index 5d39cce4e5..815265450a 100644
--- a/seed/challenges/jquery.json
+++ b/seed/challenges/jquery.json
@@ -58,7 +58,7 @@
"This is important because without your document ready function
, your code may run before your HTML is rendered, which would cause bugs.",
"Now let's write our first jQuery statement. All jQuery functions start with a $
, usually referred to as a dollar sign operator
, or simply as bling
.",
"jQuery often selects an HTML element with a selector
, then does something to that element.",
- "For example, let's make all of your button
elements bounce. Just add this code inside your document ready function
: $(\"button\").addClass(\"animated bounce\")
.",
+ "For example, let's make all of your button
elements bounce. Just add this code inside your document ready function: $(\"button\").addClass(\"animated bounce\")
.",
"Note that we've already included both the jQuery library and the Animate.css library in your code editor. So you are using jQuery to apply the Animate.css bounce
class to your button
elements."
],
"tests": [
diff --git a/server/views/challengeMap/show.jade b/server/views/challengeMap/show.jade
index fc984e1c23..05d591b010 100644
--- a/server/views/challengeMap/show.jade
+++ b/server/views/challengeMap/show.jade
@@ -1,11 +1,5 @@
extends ../layout
block content
- .panel
- h3.text-center Your friends won't hear about our open source community unless you tell them.
- .row
- .col-xs-12.col-sm-10.col-sm-offset-1.col-md-8.col-md-offset-2
- a.btn.btn-lg.btn-primary.btn-block(href="https://www.facebook.com/sharer/sharer.php?u=http://freecodecamp.com" target='_blank') Share our open source community on Facebook
- .spacer
.panel.panel-info
.panel-heading.text-center
h1 Challenge Map
@@ -15,7 +9,7 @@ block content
audio(autoplay src='https://s3.amazonaws.com/freecodecamp/t-rex-roar.mp3')
else
img.img-responsive.img-center.border-radius-5(src='https://s3.amazonaws.com/freecodecamp/wide-social-banner.png')
- .col-xs-12.col-md-10.col-md-offset-1
+ .col-xs-12.col-md-8.col-md-offset-2
h2.text-center
span.text-primary #{camperCount}
| campers have joined our community
@@ -23,7 +17,7 @@ block content
| since we launched
span.text-primary #{daysRunning}
| days ago.
- .spacer
+ a.btn.btn-lg.signup-btn.btn-block(href="https://www.facebook.com/sharer/sharer.php?u=http://freecodecamp.com" target='_blank') Share our open source community on Facebook and help us grow.
.row
.col-xs-12.col-sm-8.col-sm-offset-2
h3 800 Hours of Practice:
@@ -32,22 +26,22 @@ block content
.row
if (user)
if (challengeBlock.completed === 100)
- .hidden-xs.col-sm-3.col-md-2.text-primary.ion-checkmark-circled.padded-ionic-icon.text-center.large-p.negative-10
+ .hidden-xs.col-sm-3.col-md-2.text-primary.ion-checkmark-circled.padded-ionic-icon.text-center.map-p.negative-10
.col-xs-12.col-sm-9.col-md-10
- li.large-p.faded.negative-10
+ li.map-p.faded.negative-10
a(href='#' + challengeBlock.dashedName)= challengeBlock.name
else
.hidden-xs.col-sm-3.col-md-2
.progress.progress-bar-padding.text-center.thin-progress-bar
.progress-bar(role='progressbar', aria-valuenow=(challengeBlock.completed), aria-valuemin='0', aria-valuemax='100', style='width: ' + challengeBlock.completed + '%;')
.col-xs-12.col-sm-9.col-md-10
- li.large-p.negative-10
+ li.map-p.negative-10
a(href='#' + challengeBlock.dashedName)= challengeBlock.name
else
.hidden-xs.col-sm-3.col-md-2
span.negative-10
.col-xs-12.col-sm-9.col-md-10
- li.large-p.negative-10
+ li.map-p.negative-10
a(href='#' + challengeBlock.dashedName)= challengeBlock.name
.row
@@ -57,21 +51,21 @@ block content
| :
ol
.row
- .hidden-xs.col-sm-3.col-md-2.ion-locked.padded-ionic-icon.text-center.large-p.negative-10
+ .hidden-xs.col-sm-3.col-md-2.ion-locked.padded-ionic-icon.text-center.map-p.negative-10
.col-xs-12.col-sm-9.col-md-10
- li.large-p.negative-10 100-hour Nonprofit Project
+ li.map-p.negative-10 100-hour Nonprofit Project
.row
- .hidden-xs.col-sm-3.col-md-2.ion-locked.padded-ionic-icon.text-center.large-p.negative-10
+ .hidden-xs.col-sm-3.col-md-2.ion-locked.padded-ionic-icon.text-center.map-p.negative-10
.col-xs-12.col-sm-9.col-md-10
- li.large-p.negative-10 200-hour Nonprofit Project #1
+ li.map-p.negative-10 200-hour Nonprofit Project #1
.row
- .hidden-xs.col-sm-3.col-md-2.ion-locked.padded-ionic-icon.text-center.large-p.negative-10
+ .hidden-xs.col-sm-3.col-md-2.ion-locked.padded-ionic-icon.text-center.map-p.negative-10
.col-xs-12.col-sm-9.col-md-10
- li.large-p.negative-10 200-hour Nonprofit Project #2
+ li.map-p.negative-10 200-hour Nonprofit Project #2
.row
- .hidden-xs.col-sm-3.col-md-2.ion-locked.padded-ionic-icon.text-center.large-p.negative-10
+ .hidden-xs.col-sm-3.col-md-2.ion-locked.padded-ionic-icon.text-center.map-p.negative-10
.col-xs-12.col-sm-9.col-md-10
- li.large-p.negative-10 300-hour Nonprofit Project
+ li.map-p.negative-10 300-hour Nonprofit Project
hr
for challengeBlock in blocks
@@ -88,9 +82,9 @@ block content
for challenge in challengeBlock.challenges
if challenge.completed
.row
- .hidden-xs.col-sm-3.col-md-2.text-primary.ion-checkmark-circled.padded-ionic-icon.text-center.large-p.negative-10
+ .hidden-xs.col-sm-3.col-md-2.text-primary.ion-checkmark-circled.padded-ionic-icon.text-center.map-p.negative-10
.col-xs-12.col-sm-9.col-md-10
- li.faded.large-p.negative-10
+ li.faded.map-p.negative-10
a(href="/challenges/#{challenge.dashedName}")
span.capitalize= challenge.type + ': '
span= challenge.title
@@ -102,7 +96,7 @@ block content
.hidden-xs.col-sm-3.col-md-2
span.negative-10
.col-xs-12.col-sm-9.col-md-10
- li.large-p.negative-10
+ li.map-p.negative-10
a(href="/challenges/#{challenge.dashedName}")
span.capitalize= challenge.type + ': '
span= challenge.title
diff --git a/server/views/partials/scripts.jade b/server/views/partials/scripts.jade
index 537aee61ec..26ecf3e6bf 100644
--- a/server/views/partials/scripts.jade
+++ b/server/views/partials/scripts.jade
@@ -28,6 +28,7 @@ script.
script(src=rev('/js', 'main.js'))
script(src="/bower_components/angular-bootstrap/ui-bootstrap-tpls.min.js")
script(src="/bower_components/ramda/dist/ramda.min.js")
+script(src='/bower_components/lightbox2/dist/js/lightbox.min.js')
script.
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
diff --git a/server/views/partials/stylesheets.jade b/server/views/partials/stylesheets.jade
index 609bf882b5..da6d843378 100644
--- a/server/views/partials/stylesheets.jade
+++ b/server/views/partials/stylesheets.jade
@@ -1,4 +1,5 @@
link(rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Lato:400|Inconsolata")
link(rel="stylesheet" type="text/css" href="/bower_components/cal-heatmap/cal-heatmap.css")
link(rel='stylesheet', href='/bower_components/font-awesome/css/font-awesome.min.css')
+link(rel='stylesheet', href='/bower_components/lightbox2/dist/css/lightbox.css')
link(rel='stylesheet', href=rev('/css', 'main.css'))