From 2a00a79ffc04ff4ff54564fd148697254fec8a0f Mon Sep 17 00:00:00 2001 From: terakilobyte Date: Thu, 23 Apr 2015 19:30:24 -0400 Subject: [PATCH 1/4] Fixes issue #353, add control-enter functionality to display modal as well as submit completion. Added bonus is to remove event listener. --- views/coursewares/showVideo.jade | 8 ++++++++ views/coursewares/showZiplineOrBasejump.jade | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/views/coursewares/showVideo.jade b/views/coursewares/showVideo.jade index fa6f96da70..8fa56db777 100644 --- a/views/coursewares/showVideo.jade +++ b/views/coursewares/showVideo.jade @@ -45,6 +45,13 @@ block content span.completion-icon.ion-checkmark-circled.text-primary - if (user) a.animated.fadeIn.btn.btn-lg.btn-primary.btn-block#next-courseware-button(name='_csrf', value=_csrf) On to my next challenge (ctrl + enter) + script. + $('#complete-courseware-dialog').on('keypress', function(e) { + $('body').unbind('keypress'); + if (e.ctrlKey && e.keyCode == 13) { + $('#next-courseware-button').click(); + } + }); - if (user.progressTimestamps.length > 2) a.animated.fadeIn.btn.btn-lg.btn-block.btn-twitter(href="https://twitter.com/intent/tweet?text=I%20just%20#{verb}%20%40FreeCodeCamp%20Bonfire:%20#{name}&url=http%3A%2F%2Ffreecodecamp.com/bonfires/#{dashedName}&hashtags=LearnToCode, JavaScript" target="_blank") i.fa.fa-twitter   @@ -54,6 +61,7 @@ block content h1 #{name} script. $('body').on('keypress', function(e) { + $('body').unbind('keypress'); if (e.ctrlKey && e.keyCode == 13) { $('#complete-courseware-dialog').modal('show'); } diff --git a/views/coursewares/showZiplineOrBasejump.jade b/views/coursewares/showZiplineOrBasejump.jade index e7936304fc..1b4b4feead 100644 --- a/views/coursewares/showZiplineOrBasejump.jade +++ b/views/coursewares/showZiplineOrBasejump.jade @@ -62,6 +62,13 @@ block content if (user) a.animated.fadeIn.btn.btn-lg.btn-primary.btn-block#next-courseware-button(name='_csrf', value=_csrf, ng-disabled='completedWithForm.$invalid && existingUser.length > 0') Go to my next challenge (ctrl + enter) + script. + $('#complete-zipline-or-basejump-dialog').on('keypress', function (e) { + $('body').unbind('keypress'); + if (e.ctrlKey && e.keyCode == 13) { + $('#next-courseware-button').click(); + } + }); - if (user.progressTimestamps.length > 2) a.animated.fadeIn.btn.btn-lg.btn-block.btn-twitter(target="_blank") @@ -71,6 +78,7 @@ block content a.animated.fadeIn.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress script. $('body').on('keypress', function(e) { + $('body').unbind('keypress'); if (e.ctrlKey && e.keyCode == 13) { $('#complete-zipline-or-basejump-dialog').modal('show'); } From a4164276dee5bea3ac68563ffd8c7724eb099e55 Mon Sep 17 00:00:00 2001 From: terakilobyte Date: Thu, 23 Apr 2015 19:39:20 -0400 Subject: [PATCH 2/4] Remove unnecessary unbinds. --- views/coursewares/showVideo.jade | 1 - views/coursewares/showZiplineOrBasejump.jade | 1 - 2 files changed, 2 deletions(-) diff --git a/views/coursewares/showVideo.jade b/views/coursewares/showVideo.jade index 8fa56db777..e7d8e2cd94 100644 --- a/views/coursewares/showVideo.jade +++ b/views/coursewares/showVideo.jade @@ -47,7 +47,6 @@ block content a.animated.fadeIn.btn.btn-lg.btn-primary.btn-block#next-courseware-button(name='_csrf', value=_csrf) On to my next challenge (ctrl + enter) script. $('#complete-courseware-dialog').on('keypress', function(e) { - $('body').unbind('keypress'); if (e.ctrlKey && e.keyCode == 13) { $('#next-courseware-button').click(); } diff --git a/views/coursewares/showZiplineOrBasejump.jade b/views/coursewares/showZiplineOrBasejump.jade index 1b4b4feead..0289466614 100644 --- a/views/coursewares/showZiplineOrBasejump.jade +++ b/views/coursewares/showZiplineOrBasejump.jade @@ -64,7 +64,6 @@ block content a.animated.fadeIn.btn.btn-lg.btn-primary.btn-block#next-courseware-button(name='_csrf', value=_csrf, ng-disabled='completedWithForm.$invalid && existingUser.length > 0') Go to my next challenge (ctrl + enter) script. $('#complete-zipline-or-basejump-dialog').on('keypress', function (e) { - $('body').unbind('keypress'); if (e.ctrlKey && e.keyCode == 13) { $('#next-courseware-button').click(); } From 98785184efe1404e0d5c4b259faa6a5a6e7872eb Mon Sep 17 00:00:00 2001 From: terakilobyte Date: Thu, 23 Apr 2015 19:55:33 -0400 Subject: [PATCH 3/4] Improve functionality and allow rebinding if user doesn't hit control-enter --- views/coursewares/showVideo.jade | 32 +++++++++++++------- views/coursewares/showZiplineOrBasejump.jade | 30 +++++++++++------- 2 files changed, 40 insertions(+), 22 deletions(-) diff --git a/views/coursewares/showVideo.jade b/views/coursewares/showVideo.jade index e7d8e2cd94..83b3ab759f 100644 --- a/views/coursewares/showVideo.jade +++ b/views/coursewares/showVideo.jade @@ -34,6 +34,24 @@ block content var passedCoursewareName = challengeName; var started = Math.floor(Date.now()); var challengeType = !{JSON.stringify(challengeType)}; + var controlEnterHandler = function(e) { + $('body').unbind('keypress'); + if (e.ctrlKey && e.keyCode == 13) { + $('#complete-courseware-dialog').modal('show'); + } else { + $('body').bind('keypress', controlEnterHandler); + } + }; + var modalControlEnterHandler = function(e) { + $('#complete-courseware-dialog').unbind('keypress'); + if (e.ctrlKey && e.keyCode == 13) { + $('#next-courseware-button').click(); + } else { + $('#complete-courseware-dialog').bind('keypress', modalControlEnterHandler); + } + }; + + #complete-courseware-dialog.modal(tabindex='-1') .modal-dialog.animated.zoomIn.fast-animation .modal-content @@ -46,11 +64,8 @@ block content - if (user) a.animated.fadeIn.btn.btn-lg.btn-primary.btn-block#next-courseware-button(name='_csrf', value=_csrf) On to my next challenge (ctrl + enter) script. - $('#complete-courseware-dialog').on('keypress', function(e) { - if (e.ctrlKey && e.keyCode == 13) { - $('#next-courseware-button').click(); - } - }); + $('#complete-courseware-dialog').bind('keypress', modalControlEnterHandler); + - if (user.progressTimestamps.length > 2) a.animated.fadeIn.btn.btn-lg.btn-block.btn-twitter(href="https://twitter.com/intent/tweet?text=I%20just%20#{verb}%20%40FreeCodeCamp%20Bonfire:%20#{name}&url=http%3A%2F%2Ffreecodecamp.com/bonfires/#{dashedName}&hashtags=LearnToCode, JavaScript" target="_blank") i.fa.fa-twitter   @@ -59,9 +74,4 @@ block content a.animated.fadeIn.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress h1 #{name} script. - $('body').on('keypress', function(e) { - $('body').unbind('keypress'); - if (e.ctrlKey && e.keyCode == 13) { - $('#complete-courseware-dialog').modal('show'); - } - }); + $('body').bind('keypress', controlEnterHandler); diff --git a/views/coursewares/showZiplineOrBasejump.jade b/views/coursewares/showZiplineOrBasejump.jade index 0289466614..51baf54b7f 100644 --- a/views/coursewares/showZiplineOrBasejump.jade +++ b/views/coursewares/showZiplineOrBasejump.jade @@ -32,6 +32,23 @@ block content var passedCoursewareName = challengeName; var started = Math.floor(Date.now()); var challengeType = !{JSON.stringify(challengeType)}; + var controlEnterHandler = function (e) { + $('body').unbind('keypress'); + if (e.ctrlKey && e.keyCode == 13) { + $('#complete-courseware-dialog').modal('show'); + } else { + $('body').bind('keypress', controlEnterHandler); + } + }; + var modalControlEnterHandler = function (e) { + $('#complete-courseware-dialog').unbind('keypress'); + if (e.ctrlKey && e.keyCode == 13) { + $('#next-courseware-button').click(); + } else { + $('#complete-courseware-dialog').bind('keypress', modalControlEnterHandler); + } + }; + #complete-zipline-or-basejump-dialog.modal(tabindex='-1') .modal-dialog.animated.zoomIn.fast-animation .modal-content @@ -63,11 +80,7 @@ block content if (user) a.animated.fadeIn.btn.btn-lg.btn-primary.btn-block#next-courseware-button(name='_csrf', value=_csrf, ng-disabled='completedWithForm.$invalid && existingUser.length > 0') Go to my next challenge (ctrl + enter) script. - $('#complete-zipline-or-basejump-dialog').on('keypress', function (e) { - if (e.ctrlKey && e.keyCode == 13) { - $('#next-courseware-button').click(); - } - }); + $('#complete-zipline-or-basejump-dialog').on('keypress', modalControlEnterHandler); - if (user.progressTimestamps.length > 2) a.animated.fadeIn.btn.btn-lg.btn-block.btn-twitter(target="_blank") @@ -76,9 +89,4 @@ block content - else a.animated.fadeIn.btn.btn-lg.signup-btn.btn-block(href='/login') Sign in so you can save your progress script. - $('body').on('keypress', function(e) { - $('body').unbind('keypress'); - if (e.ctrlKey && e.keyCode == 13) { - $('#complete-zipline-or-basejump-dialog').modal('show'); - } - }); + $('body').on('keypress', controlEnterHandler); From 4b2c04dd593a52ac2996c02762f5d3e8fcb69ddc Mon Sep 17 00:00:00 2001 From: terakilobyte Date: Thu, 23 Apr 2015 20:14:20 -0400 Subject: [PATCH 4/4] Improve functionality and allow rebinding if user doesn't hit control-enter --- views/coursewares/showZiplineOrBasejump.jade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/views/coursewares/showZiplineOrBasejump.jade b/views/coursewares/showZiplineOrBasejump.jade index 51baf54b7f..73fe8564e7 100644 --- a/views/coursewares/showZiplineOrBasejump.jade +++ b/views/coursewares/showZiplineOrBasejump.jade @@ -45,7 +45,7 @@ block content if (e.ctrlKey && e.keyCode == 13) { $('#next-courseware-button').click(); } else { - $('#complete-courseware-dialog').bind('keypress', modalControlEnterHandler); + $('#complete-zipline-or-basejump-dialog').on('keypress', modalControlEnterHandler); } };