diff --git a/app/assets/javascripts/discourse/components/development.js b/app/assets/javascripts/discourse/components/development.js index 654e614c8..eee9ed0fc 100644 --- a/app/assets/javascripts/discourse/components/development.js +++ b/app/assets/javascripts/discourse/components/development.js @@ -128,9 +128,9 @@ Discourse.Development = { if (this.get('templateName') === templateName) { this.set('templateName', 'empty'); this.rerender(); - return Em.run.next(function() { + Em.run.schedule('afterRender', function() { _this.set('templateName', templateName); - return _this.rerender(); + _this.rerender(); }); } }); diff --git a/app/assets/javascripts/discourse/controllers/application_controller.js b/app/assets/javascripts/discourse/controllers/application_controller.js index dee288bcc..880896cff 100644 --- a/app/assets/javascripts/discourse/controllers/application_controller.js +++ b/app/assets/javascripts/discourse/controllers/application_controller.js @@ -20,7 +20,7 @@ Discourse.ApplicationController = Discourse.Controller.extend({ if (window._gaq === undefined) { return; } if(this.afterFirstHit) { - Em.run.next(function(){ + Em.run.schedule('afterRender', function() { _gaq.push(['_trackPageview']); }); } else { diff --git a/app/assets/javascripts/discourse/controllers/quote_button_controller.js b/app/assets/javascripts/discourse/controllers/quote_button_controller.js index c8a868907..a78d42753 100644 --- a/app/assets/javascripts/discourse/controllers/quote_button_controller.js +++ b/app/assets/javascripts/discourse/controllers/quote_button_controller.js @@ -84,7 +84,8 @@ Discourse.QuoteButtonController = Discourse.Controller.extend({ var markerOffset = $(markerElement).offset(), $quoteButton = $('.quote-button'); - Em.run.next(function(){ + + Em.run.schedule('afterRender', function() { $quoteButton.offset({ top: markerOffset.top - $quoteButton.outerHeight() - 5, left: markerOffset.left diff --git a/app/assets/javascripts/discourse/controllers/topic_controller.js b/app/assets/javascripts/discourse/controllers/topic_controller.js index 8815445c5..29cf64e8e 100644 --- a/app/assets/javascripts/discourse/controllers/topic_controller.js +++ b/app/assets/javascripts/discourse/controllers/topic_controller.js @@ -246,7 +246,7 @@ Discourse.TopicController = Discourse.ObjectController.extend(Discourse.Selected loadPosts: function(opts) { var topicController = this; this.get('content').loadPosts(opts).then(function () { - Em.run.next(function () { topicController.updateBottomBar(); }); + Em.run.scheduleOnce('afterRender', topicController, 'updateBottomBar'); }); }, @@ -276,7 +276,7 @@ Discourse.TopicController = Discourse.ObjectController.extend(Discourse.Selected posts.pushObject(Discourse.Post.create(p, topic)); }); - Em.run.next(function () { topicController.updateBottomBar(); }); + Em.run.scheduleOnce('afterRender', topicController, 'updateBottomBar'); topicController.set('filtered_posts_count', result.filtered_posts_count); topicController.set('loadingBelow', false); diff --git a/app/assets/javascripts/discourse/views/choose_topic_view.js b/app/assets/javascripts/discourse/views/choose_topic_view.js index 31d55821c..e2c75e793 100644 --- a/app/assets/javascripts/discourse/views/choose_topic_view.js +++ b/app/assets/javascripts/discourse/views/choose_topic_view.js @@ -40,7 +40,7 @@ Discourse.ChooseTopicView = Discourse.View.extend({ var topicId = Em.get(topic, 'id'); this.set('selectedTopicId', topicId); - Em.run.next(function() { + Em.run.schedule('afterRender', function () { $('#choose-topic-' + topicId).prop('checked', 'true'); }); diff --git a/app/assets/javascripts/discourse/views/composer_view.js b/app/assets/javascripts/discourse/views/composer_view.js index 7f341843d..f2154519b 100644 --- a/app/assets/javascripts/discourse/views/composer_view.js +++ b/app/assets/javascripts/discourse/views/composer_view.js @@ -91,7 +91,7 @@ Discourse.ComposerView = Discourse.View.extend({ resize: function() { // this still needs to wait on animations, need a clean way to do that - return Em.run.next(null, function() { + return Em.run.schedule('afterRender', function() { var replyControl = $('#reply-control'); var h = replyControl.height() || 0; var sizePx = "" + h + "px"; @@ -263,7 +263,7 @@ Discourse.ComposerView = Discourse.View.extend({ // cf. https://github.com/blueimp/jQuery-File-Upload/wiki/API#how-to-cancel-an-upload var jqXHR = data.xhr(); // need to wait for the link to show up in the DOM - Em.run.next(function() { + Em.run.schedule('afterRender', function() { // bind on the click event on the cancel link $('#cancel-image-upload').on('click', function() { // cancel the upload @@ -334,9 +334,11 @@ Discourse.ComposerView = Discourse.View.extend({ caretPosition = Discourse.Utilities.caretPosition(ctrl), current = this.get('content.reply'); this.set('content.reply', current.substring(0, caretPosition) + text + current.substring(caretPosition, current.length)); - return Em.run.next(function() { - return Discourse.Utilities.setCaretPosition(ctrl, caretPosition + text.length); + + Em.run.schedule('afterRender', function() { + Discourse.Utilities.setCaretPosition(ctrl, caretPosition + text.length); }); + }, // Uses javascript to get the image sizes from the preview, if present diff --git a/app/assets/javascripts/discourse/views/list/list_topics_view.js b/app/assets/javascripts/discourse/views/list/list_topics_view.js index 3919a69d7..dd05ae7b9 100644 --- a/app/assets/javascripts/discourse/views/list/list_topics_view.js +++ b/app/assets/javascripts/discourse/views/list/list_topics_view.js @@ -17,9 +17,7 @@ Discourse.ListTopicsView = Discourse.View.extend(Discourse.Scrolling, { insertedCount: (function() { var inserted; inserted = this.get('controller.inserted'); - if (!inserted) { - return 0; - } + if (!inserted) return 0; return inserted.length; }).property('controller.inserted.@each'), @@ -36,24 +34,26 @@ Discourse.ListTopicsView = Discourse.View.extend(Discourse.Scrolling, { }).property('loading', 'controller.content.more_topics_url'), didInsertElement: function() { - var eyeline, scrollPos, - _this = this; this.bindScrolling(); - eyeline = new Discourse.Eyeline('.topic-list-item'); + var eyeline = new Discourse.Eyeline('.topic-list-item'); + + var listTopicsView = this; eyeline.on('sawBottom', function() { - return _this.loadMore(); + listTopicsView.loadMore(); }); - if (scrollPos = Discourse.get('transient.topicListScrollPos')) { - Em.run.next(function() { - return $('html, body').scrollTop(scrollPos); + + var scrollPos = Discourse.get('transient.topicListScrollPos'); + if (scrollPos) { + Em.run.schedule('afterRender', function() { + $('html, body').scrollTop(scrollPos); }); } else { - Em.run.next(function() { - return $('html, body').scrollTop(0); + Em.run.schedule('afterRender', function() { + $('html, body').scrollTop(0); }); } this.set('eyeline', eyeline); - return this.set('currentTopicId', null); + this.set('currentTopicId', null); }, loadMore: function() { @@ -66,7 +66,9 @@ Discourse.ListTopicsView = Discourse.View.extend(Discourse.Scrolling, { promise.then(function(hasMoreResults) { listTopicsView.set('loadedMore', true); listTopicsView.set('loading', false); - Em.run.next(function() { listTopicsView.saveScrollPos(); }); + Em.run.schedule('afterRender', function() { + listTopicsView.saveScrollPos(); + }); if (!hasMoreResults) { listTopicsView.get('eyeline').flushRest(); } diff --git a/app/assets/javascripts/discourse/views/modal/create_account_view.js b/app/assets/javascripts/discourse/views/modal/create_account_view.js index 3eaca21b3..c19770104 100644 --- a/app/assets/javascripts/discourse/views/modal/create_account_view.js +++ b/app/assets/javascripts/discourse/views/modal/create_account_view.js @@ -278,11 +278,11 @@ Discourse.CreateAccountView = Discourse.ModalBodyView.extend({ didInsertElement: function(e) { // allows the submission the form when pressing 'ENTER' on *any* text input field // but only when the submit button is enabled - var _this = this; - return Em.run.next(function() { - return $("input[type='text'], input[type='password']").keydown(function(e) { - if (_this.get('submitDisabled') === false && e.keyCode === 13) { - return _this.createAccount(); + var createAccountView = this; + Em.run.schedule('afterRender', function() { + $("input[type='text'], input[type='password']").keydown(function(e) { + if (createAccountView.get('submitDisabled') === false && e.keyCode === 13) { + createAccountView.createAccount(); } }); }); diff --git a/app/assets/javascripts/discourse/views/modal/flag_view.js b/app/assets/javascripts/discourse/views/modal/flag_view.js index 6339287ef..7c9ac37d7 100644 --- a/app/assets/javascripts/discourse/views/modal/flag_view.js +++ b/app/assets/javascripts/discourse/views/modal/flag_view.js @@ -35,7 +35,7 @@ Discourse.FlagView = Discourse.ModalBodyView.extend({ this.set('postActionTypeId', action.id); this.set('isCustomFlag', action.is_custom_flag); this.set('selected', action); - Em.run.next(function() { + Em.run.schedule('afterRender', function() { $('#radio_' + action.name_key).prop('checked', 'true'); }); return false; @@ -45,7 +45,7 @@ Discourse.FlagView = Discourse.ModalBodyView.extend({ var _this = this; var action = this.get('selected'); - var postAction = this.get('post.actionByName.' + (action.get('name_key'))); + var postAction = this.get('post.actionByName.' + (action.get('name_key'))); var actionType = Discourse.get('site').postActionTypeById(this.get('postActionTypeId')); if (postAction) { diff --git a/app/assets/javascripts/discourse/views/modal/invite_modal_view.js b/app/assets/javascripts/discourse/views/modal/invite_modal_view.js index e80e814d4..bf5d390f8 100644 --- a/app/assets/javascripts/discourse/views/modal/invite_modal_view.js +++ b/app/assets/javascripts/discourse/views/modal/invite_modal_view.js @@ -33,9 +33,9 @@ Discourse.InviteModalView = Discourse.ModalBodyView.extend({ }).property('email'), didInsertElement: function() { - var _this = this; - Em.run.next(function() { - _this.$('input').focus(); + var inviteModalView = this; + Em.run.schedule('afterRender', function() { + inviteModalView.$('input').focus(); }); }, diff --git a/app/assets/javascripts/discourse/views/modal/invite_private_modal_view.js b/app/assets/javascripts/discourse/views/modal/invite_private_modal_view.js index cbdda9a47..84af53e27 100644 --- a/app/assets/javascripts/discourse/views/modal/invite_private_modal_view.js +++ b/app/assets/javascripts/discourse/views/modal/invite_private_modal_view.js @@ -25,9 +25,9 @@ Discourse.InvitePrivateModalView = Discourse.ModalBodyView.extend({ }).property('saving'), didInsertElement: function() { - var _this = this; - return Em.run.next(function() { - return _this.$('input').focus(); + var invitePrivateModalView = this; + Em.run.schedule('afterRender', function() { + invitePrivateModalView.$('input').focus(); }); }, @@ -39,11 +39,11 @@ Discourse.InvitePrivateModalView = Discourse.ModalBodyView.extend({ this.get('topic').inviteUser(this.get('emailOrUsername')).then(function() { // Success _this.set('saving', false); - return _this.set('finished', true); + _this.set('finished', true); }, function() { // Failure _this.set('error', true); - return _this.set('saving', false); + _this.set('saving', false); }); return false; } diff --git a/app/assets/javascripts/discourse/views/modal/login_view.js b/app/assets/javascripts/discourse/views/modal/login_view.js index 1311b1f5d..8bf21210f 100644 --- a/app/assets/javascripts/discourse/views/modal/login_view.js +++ b/app/assets/javascripts/discourse/views/modal/login_view.js @@ -161,7 +161,7 @@ Discourse.LoginView = Discourse.ModalBodyView.extend({ this.set('loginPassword', $('#hidden-login-form input[name=password]').val()); var loginView = this; - Em.run.next(function() { + Em.run.schedule('afterRender', function() { $('#login-account-password').keydown(function(e) { if (e.keyCode === 13) { loginView.login(); 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 0e4fc66f5..784b4196f 100644 --- a/app/assets/javascripts/discourse/views/modal/modal_body_view.js +++ b/app/assets/javascripts/discourse/views/modal/modal_body_view.js @@ -11,7 +11,9 @@ Discourse.ModalBodyView = Discourse.View.extend({ // Focus on first element didInsertElement: function() { var modalBodyView = this; - Em.run.next(function() { modalBodyView.$('form input:first').focus(); }); + Em.run.schedule('afterRender', function() { + modalBodyView.$('form input:first').focus(); + }); }, // Pass the errors to our errors view diff --git a/app/assets/javascripts/discourse/views/modal/modal_view.js b/app/assets/javascripts/discourse/views/modal/modal_view.js index 7b0b9295f..e5848f97e 100644 --- a/app/assets/javascripts/discourse/views/modal/modal_view.js +++ b/app/assets/javascripts/discourse/views/modal/modal_view.js @@ -26,7 +26,7 @@ Discourse.ModalView = Ember.ContainerView.extend({ var modalView = this; if (view) { $('#modal-alert').hide(); - Em.run.next(function() { modalView.$().modal('show'); }); + Em.run.schedule('afterRender', function() { modalView.$().modal('show'); }); } }.observes('controller.currentView') diff --git a/app/assets/javascripts/discourse/views/post_view.js b/app/assets/javascripts/discourse/views/post_view.js index 76fae5539..faadf48cd 100644 --- a/app/assets/javascripts/discourse/views/post_view.js +++ b/app/assets/javascripts/discourse/views/post_view.js @@ -35,7 +35,9 @@ Discourse.PostView = Discourse.View.extend({ // If the cooked content changed, add the quote controls cookedChanged: function() { var postView = this; - Em.run.next(function() { postView.insertQuoteControls(); }); + Em.run.schedule('afterRender', function() { + postView.insertQuoteControls(); + }); }.observes('post.cooked'), init: function() { diff --git a/app/assets/javascripts/discourse/views/replies_view.js b/app/assets/javascripts/discourse/views/replies_view.js index 1fe08f978..495fb9877 100644 --- a/app/assets/javascripts/discourse/views/replies_view.js +++ b/app/assets/javascripts/discourse/views/replies_view.js @@ -13,14 +13,13 @@ Discourse.RepliesView = Ember.CollectionView.extend({ itemViewClass: Discourse.EmbeddedPostView, repliesShown: (function() { - var $this; - $this = this.$(); + var $this = this.$(); if (this.get('parentView.repliesShown')) { - Em.run.next(function() { + Em.run.schedule('afterRender', function() { $this.slideDown(); }); } else { - Em.run.next(function() { + Em.run.schedule('afterRender', function() { $this.slideUp(); }); } diff --git a/app/assets/javascripts/discourse/views/user/user_stream_view.js b/app/assets/javascripts/discourse/views/user/user_stream_view.js index 1c7045ca8..dc68daa4e 100644 --- a/app/assets/javascripts/discourse/views/user/user_stream_view.js +++ b/app/assets/javascripts/discourse/views/user/user_stream_view.js @@ -29,9 +29,9 @@ Discourse.UserStreamView = Discourse.View.extend(Discourse.Scrolling, { this.set('loading', true); var userStreamView = this; - return this.get('controller.content').loadMoreUserActions().then(function() { + this.get('controller.content').loadMoreUserActions().then(function() { userStreamView.set('loading', false); - Em.run.next(function() { + Em.run.schedule('afterRender', function() { $userStreamBottom.data('loading', null); }); });