diff --git a/app/assets/javascripts/app/controllers/ticket_zoom.coffee b/app/assets/javascripts/app/controllers/ticket_zoom.coffee index 8dab3778c..a4403010e 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom.coffee @@ -203,9 +203,22 @@ class App.TicketZoom extends App.Controller # set all notifications to seen App.OnlineNotification.seen('Ticket', @ticket_id) + scrollToPosition = (position, delay) => + scrollToDelay = => + if position is 'article' + @scrollToArticle(@last_article_id) + return + @scrollToBottom() + @delay(scrollToDelay, delay, 'scrollToPosition') + + # scroll to article if given + if params.article_id && params.article_id isnt @last_article_id + @last_article_id = params.article_id + scrollToPosition('article', 300) + # if controller is executed twice, go to latest article (e. g. click on notification) if @activeState - @scrollToBottom() + scrollToPosition('bottom', 300) return @activeState = true @@ -217,7 +230,7 @@ class App.TicketZoom extends App.Controller App.Event.trigger('ui::ticket::shown', { ticket_id: @ticket_id }) # scroll to end of page - @scrollToBottom() + scrollToPosition('bottom', 100) @positionPageHeaderStart() @autosaveStart() @@ -434,7 +447,8 @@ class App.TicketZoom extends App.Controller if @shown # scroll to article if given - if @article_id + if @article_id && @article_id isnt @last_article_id + @last_article_id = @article_id scrollTo = => @scrollToArticle(@article_id) @delay(scrollTo, 300)