From 06e83c9e6a8eb3aa52c4ceb8a9d8013ac34681c2 Mon Sep 17 00:00:00 2001 From: Robin Ward <robin.ward@gmail.com> Date: Thu, 6 Jun 2013 12:06:43 -0400 Subject: [PATCH] FIX: Hitting enter while the invite dialog is up should submit the form, not refresh the entire page :) --- .../discourse/controllers/invite_controller.js | 2 ++ .../discourse/controllers/invite_private_controller.js | 3 +++ .../discourse/templates/modal/invite.js.handlebars | 6 ++---- .../templates/modal/invite_private.js.handlebars | 6 ++---- .../discourse/views/modal/invite_private_view.js | 10 ++++------ .../javascripts/discourse/views/modal/invite_view.js | 10 ++++------ .../discourse/views/modal/modal_body_view.js | 2 +- 7 files changed, 18 insertions(+), 21 deletions(-) diff --git a/app/assets/javascripts/discourse/controllers/invite_controller.js b/app/assets/javascripts/discourse/controllers/invite_controller.js index 6f5a87cad..3eea5785d 100644 --- a/app/assets/javascripts/discourse/controllers/invite_controller.js +++ b/app/assets/javascripts/discourse/controllers/invite_controller.js @@ -26,6 +26,8 @@ Discourse.InviteController = Discourse.ObjectController.extend(Discourse.ModalFu }.property('email'), createInvite: function() { + if (this.get('disabled')) return; + var inviteController = this; this.set('saving', true); this.set('error', false); diff --git a/app/assets/javascripts/discourse/controllers/invite_private_controller.js b/app/assets/javascripts/discourse/controllers/invite_private_controller.js index 7e5e0f60a..61fac5b72 100644 --- a/app/assets/javascripts/discourse/controllers/invite_private_controller.js +++ b/app/assets/javascripts/discourse/controllers/invite_private_controller.js @@ -20,6 +20,9 @@ Discourse.InvitePrivateController = Discourse.ObjectController.extend(Discourse. }.property('saving'), invite: function() { + + if (this.get('disabled')) return; + var invitePrivateController = this; this.set('saving', true); this.set('error', false); diff --git a/app/assets/javascripts/discourse/templates/modal/invite.js.handlebars b/app/assets/javascripts/discourse/templates/modal/invite.js.handlebars index e64b1d59e..b26089d98 100644 --- a/app/assets/javascripts/discourse/templates/modal/invite.js.handlebars +++ b/app/assets/javascripts/discourse/templates/modal/invite.js.handlebars @@ -9,10 +9,8 @@ {{#if finished}} {{{successMessage}}} {{else}} - <form> - <label>{{i18n topic.invite_reply.email}}</label> - {{textField value=email placeholderKey="topic.invite_reply.email_placeholder"}} - </form> + <label>{{i18n topic.invite_reply.email}}</label> + {{textField value=email placeholderKey="topic.invite_reply.email_placeholder"}} {{/if}} </div> <div class="modal-footer"> diff --git a/app/assets/javascripts/discourse/templates/modal/invite_private.js.handlebars b/app/assets/javascripts/discourse/templates/modal/invite_private.js.handlebars index 1f073c693..4f6b5df10 100644 --- a/app/assets/javascripts/discourse/templates/modal/invite_private.js.handlebars +++ b/app/assets/javascripts/discourse/templates/modal/invite_private.js.handlebars @@ -9,10 +9,8 @@ {{#if finished}} {{i18n topic.invite_private.success}} {{else}} - <form> - <label>{{i18n topic.invite_private.email_or_username}}</label> - {{textField value=emailOrUsername placeholderKey="topic.invite_private.email_or_username_placeholder"}} - </form> + <label>{{i18n topic.invite_private.email_or_username}}</label> + {{textField value=emailOrUsername placeholderKey="topic.invite_private.email_or_username_placeholder"}} {{/if}} </div> <div class="modal-footer"> diff --git a/app/assets/javascripts/discourse/views/modal/invite_private_view.js b/app/assets/javascripts/discourse/views/modal/invite_private_view.js index da59ac861..312c7ae05 100644 --- a/app/assets/javascripts/discourse/views/modal/invite_private_view.js +++ b/app/assets/javascripts/discourse/views/modal/invite_private_view.js @@ -10,12 +10,10 @@ Discourse.InvitePrivateView = Discourse.ModalBodyView.extend({ templateName: 'modal/invite_private', title: Em.String.i18n('topic.invite_private.title'), - didInsertElement: function() { - this._super(); - var invitePrivateModalView = this; - Em.run.schedule('afterRender', function() { - invitePrivateModalView.$('input').focus(); - }); + keyUp: function(e) { + // Add the invitee if they hit enter + if (e.keyCode === 13) { this.get('controller').invite(); } + return false; } }); diff --git a/app/assets/javascripts/discourse/views/modal/invite_view.js b/app/assets/javascripts/discourse/views/modal/invite_view.js index 3c1bbf4bd..472a330ba 100644 --- a/app/assets/javascripts/discourse/views/modal/invite_view.js +++ b/app/assets/javascripts/discourse/views/modal/invite_view.js @@ -10,13 +10,11 @@ Discourse.InviteView = Discourse.ModalBodyView.extend({ templateName: 'modal/invite', title: Em.String.i18n('topic.invite_reply.title'), - didInsertElement: function() { - this._super(); - var inviteModalView = this; - Em.run.schedule('afterRender', function() { - inviteModalView.$('input').focus(); - }); + keyUp: function(e) { + // Add the invitee if they hit enter + if (e.keyCode === 13) { this.get('controller').createInvite(); } + return false; } }); diff --git a/app/assets/javascripts/discourse/views/modal/modal_body_view.js b/app/assets/javascripts/discourse/views/modal/modal_body_view.js index 065ee3b37..41a2789de 100644 --- a/app/assets/javascripts/discourse/views/modal/modal_body_view.js +++ b/app/assets/javascripts/discourse/views/modal/modal_body_view.js @@ -15,7 +15,7 @@ Discourse.ModalBodyView = Discourse.View.extend({ var modalBodyView = this; Em.run.schedule('afterRender', function() { - modalBodyView.$('form input:first').focus(); + modalBodyView.$('input:first').focus(); }); var title = this.get('title');