FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Add Modules.SaveProgress, add to comment/feedback forms · alainyog/JavaScript.com@5760b5d · GitHub

Repository navigation

Commit 5760b5d

Browse files
committed
Add Modules.SaveProgress, add to comment/feedback forms
1 parent 5ee21f1 commit 5760b5d

4 files changed

Lines changed: 111 additions & 5 deletions

File tree

‎client/javascripts/application.js‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ jQuery(function($) {
4444

4545
JS.Modules.Console.init();
4646
JS.Modules.LoadStories.init();
47+
JS.Modules.SaveProgress.init();
4748
JS.Modules.Video.init();
4849

4950
JS.Modules.Counter.init({
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
// *************************************
2+
//
3+
// Save Progress
4+
// -> Save input text in Local Storage
5+
//
6+
// *************************************
7+
//
8+
// @param $element { jQuery object }
9+
// @param $container { jQuery object }
10+
// @param dataAttribute { string }
11+
//
12+
// *************************************
13+
14+
JS.Modules.SaveProgress = (function() {
15+
16+
// -------------------------------------
17+
// Private Variables
18+
// -------------------------------------
19+
20+
var _settings = {};
21+
22+
// -------------------------------------
23+
// Initialize
24+
// -------------------------------------
25+
26+
var init = function(options) {
27+
_settings = $.extend({
28+
$element : $('.js-saveProgress'),
29+
$container : $('.js-saveProgress-container'),
30+
dataAttribute : 'saveprogress'
31+
}, options);
32+
33+
_restoreProgress();
34+
_setEventHandlers();
35+
};
36+
37+
// -------------------------------------
38+
// Erase Progress
39+
// -------------------------------------
40+
41+
var _eraseProgress = function(container) {
42+
container.find(_settings.$element).each(function() {
43+
var key = $(this).data(_settings.dataAttribute);
44+
45+
localStorage.removeItem(key);
46+
});
47+
};
48+
49+
// -------------------------------------
50+
// Restore Progress
51+
// -------------------------------------
52+
53+
var _restoreProgress = function() {
54+
_settings.$element.each(function() {
55+
var $element = $(this),
56+
key = $element.data(_settings.dataAttribute),
57+
value = localStorage.getItem(key);
58+
59+
$element.val(value);
60+
});
61+
};
62+
63+
// -------------------------------------
64+
// Set Event Handlers
65+
// -------------------------------------
66+
67+
var _setEventHandlers = function() {
68+
_settings.$element.on('input', function() {
69+
var $element, key, value;
70+
var $element = $(this),
71+
key = $element.data(_settings.dataAttribute),
72+
value = $element.val();
73+
74+
_storeProgress(key, value);
75+
});
76+
77+
_settings.$container.on('submit', function(event) {
78+
_eraseProgress($(this));
79+
});
80+
};
81+
82+
// -------------------------------------
83+
// Store Progress
84+
// -------------------------------------
85+
86+
var _storeProgress = function(key, value) {
87+
localStorage.setItem(key, value);
88+
};
89+
90+
// -------------------------------------
91+
// Public Methods
92+
// -------------------------------------
93+
94+
return {
95+
init: init
96+
};
97+
98+
})();
99+
100+
// -------------------------------------
101+
// Usage
102+
// -------------------------------------
103+
//
104+
// JS.Modules.SaveProgress.init()
105+
//

‎views/feedback/index.jade‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ block content
2121
| .
2222
p For any other site feedback or assistance, please submit your request below.
2323

24-
form.form.js-formValidator(id='form70' name='form70' accept-charset='UTF-8' autocomplete='off' enctype='multipart/form-data' method='post' action='https://codeschool.wufoo.com/forms/p14727kn1c9coto/#public')
24+
form.form.js-formValidator.js-saveProgress-container(id='form70' name='form70' accept-charset='UTF-8' autocomplete='off' enctype='multipart/form-data' method='post' action='https://codeschool.wufoo.com/forms/p14727kn1c9coto/#public')
2525
fieldset.form-field
2626
label.form-label(for='email' id='Field4') Email
27-
input.form-input.js-formValidator-input(name='Field4' id='Field4' type='email' required='true' data-validate='required')
27+
input.form-input.js-formValidator-input.js-saveProgress(name='Field4' id='Field4' type='email' required='true' data-validate='required' data-saveprogress='feedback_email')
2828

2929
fieldset.form-field
3030
label.form-label(for='type' id='Field5') Type of Feedback
@@ -37,7 +37,7 @@ block content
3737

3838
fieldset.form-field
3939
label.form-label(for='comment' id='Field1') Give us your feedback to help us improve the site.
40-
textarea.form-input.js-formValidator-input(name='Field1' id='Field1' rows='10' required='true' data-validate='required')
40+
textarea.form-input.js-formValidator-input.js-saveProgress(name='Field1' id='Field1' rows='10' required='true' data-validate='required' data-saveprogress='feedback_content')
4141

4242
input.btn.js-formValidator-submit(id='saveForm' name='saveForm' type='submit' value='Submit')
4343

‎views/news/show.jade‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,13 @@ block content
6060

6161
if user.authenticated
6262

63-
form.form.js-formValidator(action='/news/'+flow.slug+'/comment' method='POST')
63+
form.form.js-formValidator.js-saveProgress-container(action='/news/'+flow.slug+'/comment' method='POST')
6464
.bucket
6565
.bucket-media
6666
img.thumb(src=user.avatar_url width=50)
6767
.bucket-content
6868
fieldset.form-field
69-
textarea.form-input.form-textatrea.js-formValidator-input(name='body' data-validate='required' required='true')
69+
textarea.form-input.form-textatrea.js-formValidator-input.js-saveProgress(name='body' data-saveprogress='comment' data-validate='required' required='true')
7070

7171
input(type='hidden' name='_csrf' value=token)
7272
input.btn.btn--a.form-btn.js-formValidator-submit(type='submit' value='Submit')

0 commit comments

Comments
 (0)

Back | FazBrowse Home | New Git URL