diff --git a/app/assets/javascripts/app/controllers/ticket_zoom.coffee b/app/assets/javascripts/app/controllers/ticket_zoom.coffee index a00848f1c..8346c892d 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom.coffee @@ -107,9 +107,6 @@ class App.TicketZoom extends App.Controller if !@shown - # inital load of highlights - @loadHighlighter() - # trigger shown to article App.Event.trigger('ui::ticket::shown', { ticket_id: @ticket_id } ) @@ -271,12 +268,6 @@ class App.TicketZoom extends App.Controller @scrollPageHeader.css('transform', "translateY(#{top}px)") - loadHighlighter: => - return if !@highligher - return if @highlighed - @highlighed = true - @highligher.loadHighlights() - render: => # update taskbar with new meta data @@ -320,17 +311,18 @@ class App.TicketZoom extends App.Controller ui: @ ) - @article_view = new App.TicketZoomArticleView( - ticket: @ticket - el: @el.find('.ticket-article') - ui: @ - ) - @highligher = new App.TicketZoomHighlighter( el: @$('.highlighter') ticket_id: @ticket.id ) + @article_view = new App.TicketZoomArticleView( + ticket: @ticket + el: @el.find('.ticket-article') + ui: @ + highligher: @highligher + ) + # rerender whole sidebar if customer or organization has changed if @ticketLastAttributes.customer_id isnt @ticket.customer_id || @ticketLastAttributes.organization_id isnt @ticket.organization_id new App.WidgetAvatar( @@ -350,13 +342,6 @@ class App.TicketZoom extends App.Controller ) # show article - if !@article_view - @article_view = new App.TicketZoomArticleView( - ticket: @ticket - el: @el.find('.ticket-article') - ui: @ - ) - @article_view.execute( ticket_article_ids: @ticket_article_ids ) @@ -374,9 +359,6 @@ class App.TicketZoom extends App.Controller if @shown && !@initDone @initDone = true - # inital load of highlights - @loadHighlighter() - # scroll to end of page @scrollToBottom() diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/article_view.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/article_view.coffee index bfe06603d..09dffc996 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/article_view.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/article_view.coffee @@ -14,12 +14,13 @@ class App.TicketZoomArticleView extends App.Controller ticket_article_id: ticket_article_id el: el ui: @ui + highligher: @highligher ) all.push el @el.append( all ) class ArticleViewItem extends App.Controller - hasChangedAttributes: ['from', 'to', 'cc', 'subject', 'body', 'internal'] + hasChangedAttributes: ['from', 'to', 'cc', 'subject', 'body', 'internal', 'preferences'] elements: '.textBubble-content': 'textBubbleContent' @@ -42,10 +43,17 @@ class ArticleViewItem extends App.Controller @bind( 'ui::ticket::shown' (data) => + return if data.ticket_id.toString() isnt @ticket.id.toString() + + # set highlighter + @highligher.loadHighlights(@ticket_article_id) + if !@shown - if data.ticket_id.toString() is @ticket.id.toString() - @setSeeMore() - @shown = true + + # set see more + @setSeeMore() + + @shown = true ) # subscribe to changes @@ -117,6 +125,9 @@ class ArticleViewItem extends App.Controller # set see more option @setSeeMore() + # set highlighter + @highligher.loadHighlights(@ticket_article_id) + # set see more options setSeeMore: => maxHeight = 560 diff --git a/app/assets/javascripts/app/controllers/ticket_zoom/higlighter.coffee b/app/assets/javascripts/app/controllers/ticket_zoom/higlighter.coffee index 9f71af42f..2bab9bf95 100644 --- a/app/assets/javascripts/app/controllers/ticket_zoom/higlighter.coffee +++ b/app/assets/javascripts/app/controllers/ticket_zoom/higlighter.coffee @@ -49,11 +49,6 @@ class App.TicketZoomHighlighter extends App.Controller # store original highlight css data @storeOriginalHighlight() - update = => - @loadHighlights() - @refreshObserver() - App.Delay.set( update, 800 ) - render: -> @html App.view('ticket_zoom/highlighter') colors: @colors @@ -93,14 +88,14 @@ class App.TicketZoomHighlighter extends App.Controller articles.on('mouseup', @onMouseUp) #future: touchend # for testing purposes the highlights get stored in localStorage - loadHighlights: -> + loadHighlights: (ticket_article_id) -> return if !@isRole('Agent') - @el.closest('.content').find('.textBubble-content').each( (index, element) => - article_id = $(element).data('id') - article = App.TicketArticle.find(article_id) - if article.preferences && article.preferences['highlight'] - @highlighter.deserialize(article.preferences['highlight']) - ) + article = App.TicketArticle.find(ticket_article_id) + return if !article.preferences + return if !article.preferences.highlight + return if _.isEmpty(article.preferences.highlight) + return if article.preferences.highlight is 'type:TextRange' + @highlighter.deserialize(article.preferences['highlight']) # the serialization creates one string for the entiery ticket # containing the offsets and the highlight classes