Skip to content

Commit 856233e

Browse files
committed
Merge branch 'master' into ajax_comments
- routes/news.js - views/news/index.jade
2 parents 5a78ae3 + 28dfd0c commit 856233e

18 files changed

Lines changed: 270 additions & 71 deletions

File tree

File renamed without changes.

client/javascriptcom/services/jsChallengeProgress.js renamed to client/javascriptcom/services/jsChallengeProgress.factory.js

File renamed without changes.

client/javascripts/application.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ JS.Inbox = {};
2626
// -------------------------------------
2727

2828
JS.Globals = {
29-
homepageChallengeAnswer : /^['"][A-z-\.\s]*['"](;)?/
29+
homepageChallengeAnswer : /^['"][A-z-\.\s]*['"](;)?/,
30+
userNameCookie : 'try_name'
3031
};
3132

3233
// -------------------------------------
@@ -52,14 +53,10 @@ jQuery(function($) {
5253
// Inbox
5354
// -------------------------------------
5455

55-
$('a:contains("Next Challenge")').on('click', function() {
56-
var name = $('.js-inlineConsole-input').val().replace(/['";]/g, '');
57-
58-
document.cookie = 'try_name=' + name;
59-
});
60-
6156
jQuery(function($) {
57+
6258
$('.js-courseLayout-toggle').on('click', function(event) {
6359
$('.js-courseLayout').toggleClass('is-active')
6460
});
61+
6562
});

client/javascripts/components/dispatcher/home.js

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ JS.Pages.Home = function() {
1212
// -------------------------------------
1313

1414
JS.Modules.Console.init();
15+
JS.Modules.Newsletter.init();
1516
JS.Modules.Video.init();
1617

1718
// -------------------------------------
@@ -23,4 +24,14 @@ JS.Pages.Home = function() {
2324
elementNode : '.js-alert'
2425
});
2526

27+
// -------------------------------------
28+
// Local
29+
// -------------------------------------
30+
31+
$('.js-inlineConsole-btn').on('click', function(event) {
32+
var name = $('.js-inlineConsole-input').val().replace(/['";]/g, '');
33+
34+
document.cookie = JS.Globals.userNameCookie + '=' + name;
35+
});
36+
2637
};

client/javascripts/components/dispatcher/news.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ JS.Pages.News = function() {
1818
// -------------------------------------
1919

2020
JS.Modules.LoadStories.init();
21+
JS.Modules.Newsletter.init();
2122
JS.Modules.SaveProgress.init();
2223

2324
// -------------------------------------

client/javascripts/components/modules/loadStories.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,9 @@ JS.Modules.LoadStories = (function() {
110110
// -------------------------------------
111111

112112
var _toggleButton = function(data) {
113-
var stories = data.flow;
113+
var isMoreStories = data.more;
114114

115-
if (stories.length < _settings.increment) {
115+
if (!isMoreStories) {
116116
_settings.$button.addClass(_settings.hiddenClass);
117117
}
118118
};
Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
// *************************************
2+
//
3+
// Newsletter Form
4+
// -> Email signup
5+
//
6+
// *************************************
7+
8+
JS.Modules.Newsletter = (function() {
9+
10+
// -------------------------------------
11+
// Private Variables
12+
// -------------------------------------
13+
14+
var _settings = {};
15+
16+
// -------------------------------------
17+
// Initialize
18+
// -------------------------------------
19+
20+
var init = function(options) {
21+
_settings = $.extend({
22+
$element : $('.js-newsletter'),
23+
$form : $('.js-newsletter-form'),
24+
submittedClass : 'is-submitted',
25+
newsletterTextClass : 'newsletter-text',
26+
newsletterTextCopy : "Thanks! You're all set to receive the latest JavaScript&nbsp;news."
27+
}, options);
28+
29+
_setEventHandlers();
30+
};
31+
32+
// -------------------------------------
33+
// Submit Form
34+
// -------------------------------------
35+
36+
var _submitForm = function() {
37+
$.post('/subscribe', _settings.$element.serialize());
38+
};
39+
40+
// -------------------------------------
41+
// Update Interface
42+
// -------------------------------------
43+
44+
var _updateInterface = function() {
45+
_settings.$form.find('input').prop('disabled', true);
46+
47+
_settings.$element.addClass(_settings.submittedClass);
48+
_settings.$element.append("<p class='" + _settings.newsletterTextClass + "'>" + _settings.newsletterTextCopy + "</p>");
49+
};
50+
51+
// -------------------------------------
52+
// Set Event Handlers
53+
// -------------------------------------
54+
55+
var _setEventHandlers = function() {
56+
_settings.$form.on('submit', function(event){
57+
event.preventDefault();
58+
59+
_submitForm();
60+
_updateInterface();
61+
});
62+
};
63+
64+
// -------------------------------------
65+
// Public Methods
66+
// -------------------------------------
67+
68+
return {
69+
init : init
70+
};
71+
72+
})();
73+
74+
// -------------------------------------
75+
// Usage
76+
// -------------------------------------
77+
//
78+
// JS.Modules.LoadStories.init()
79+
//

client/stylesheets/application.sass

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
@import 'structures/label'
5757
@import 'structures/link'
5858
@import 'structures/message'
59+
@import 'structures/newsletter'
5960
@import 'structures/state'
6061
@import 'structures/video'
6162

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
// *************************************
2+
//
3+
// Newsletter
4+
// -> Description
5+
//
6+
// -------------------------------------
7+
// Template (Haml)
8+
// -------------------------------------
9+
//
10+
// (.has-newsletter)
11+
//
12+
// .newsletter[modifier](state)
13+
// .newsletter-scaffolding
14+
//
15+
// *************************************
16+
17+
.newsletter
18+
position: relative
19+
20+
// -------------------------------------
21+
// Modifiers
22+
// -------------------------------------
23+
24+
// .newsletter--modifier
25+
26+
// -------------------------------------
27+
// States
28+
// -------------------------------------
29+
30+
// ----- Submitted ----- //
31+
32+
.newsletter.is-submitted
33+
34+
.newsletter-form
35+
opacity: 0
36+
37+
// -------------------------------------
38+
// Context
39+
// -------------------------------------
40+
41+
// .has-newsletter
42+
43+
// -------------------------------------
44+
// Scaffolding
45+
// -------------------------------------
46+
47+
// ----- Form ----- //
48+
49+
.newsletter-form
50+
transition: $b-transition
51+
52+
// ----- Text ----- //
53+
54+
.newsletter-text
55+
animation: newsletter-text 0.4s 0.15s ease-in-out both
56+
background: $c-success
57+
border-radius: $b-borderRadius
58+
box-sizing: border-box
59+
color: $c-text-invert
60+
font-weight: $b-fontWeight-semibold
61+
left: 50%
62+
padding: $b-space-s $b-space
63+
position: absolute
64+
text-align: center
65+
top: 50%
66+
transform: translate(-50%, -50%)
67+
width: 100%
68+
69+
// -------------------------------------
70+
// Animations
71+
// -------------------------------------
72+
73+
// ----- Text ----- //
74+
75+
@keyframes newsletter-text
76+
from
77+
opacity: 0
78+
transform: translate(-50%, 0)
79+
to
80+
opacity: 1
81+
transform: translate(-50%, -50%)
82+

courses/intro/6_numbers.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ failures = {
6060
module.exports = {
6161
'id': 6,
6262
'title': 'Numbers',
63-
'instructions': `Just as before, the alert box displayed your name. This time, though, it received your name from a variable instead of a string!
63+
'instructions': `Great! Notice how your name printed out on the screen below, showing you the value inside the variable.
6464
6565
So far we have only worked with 1 value type (strings), but JavaScript has many! Another example of a value type is a number. Pass any number of your choosing into the alert method. Just like a method, a number does not get quotations.
6666

0 commit comments

Comments
 (0)