From 97f8425c3700555a7d1fe4b9451704dadcdbbfee Mon Sep 17 00:00:00 2001 From: Martin Edenhofer Date: Mon, 7 Oct 2013 09:00:26 +0200 Subject: [PATCH] Improved object lookup for activity stream. --- .../_dashboard/activity_stream.js.coffee | 15 ++++++--------- .../app/models/_application_model.js.coffee | 3 +++ .../app/models/ticket_article.js.coffee | 12 ++++++++++++ app/models/user.rb | 1 + lib/core_ext/string.rb | 4 ++++ 5 files changed, 26 insertions(+), 9 deletions(-) diff --git a/app/assets/javascripts/app/controllers/_dashboard/activity_stream.js.coffee b/app/assets/javascripts/app/controllers/_dashboard/activity_stream.js.coffee index cf1d6c656..009f97be1 100644 --- a/app/assets/javascripts/app/controllers/_dashboard/activity_stream.js.coffee +++ b/app/assets/javascripts/app/controllers/_dashboard/activity_stream.js.coffee @@ -44,17 +44,14 @@ class App.DashboardActivityStream extends App.Controller item.link = '' item.title = '???' - if item.object is 'Ticket::Article' - item.object = 'Article' - article = App.TicketArticle.find( item.o_id ) - ticket = App.Ticket.find( article.ticket_id ) - item.title = article.subject || ticket.title - item.link = article.uiUrl() + # convert backend name space to local name space + item.object = item.object.replace("::", '') if App[item.object] - object = App[item.object].find( item.o_id ) - item.link = object.uiUrl() - item.title = object.displayName() + object = App[item.object].find( item.o_id ) + item.link = object.uiUrl() + item.title = object.displayName() + item.object = object.objectDisplayName() item.created_by = App.User.find( item.created_by_id ) diff --git a/app/assets/javascripts/app/models/_application_model.js.coffee b/app/assets/javascripts/app/models/_application_model.js.coffee index 2e0340f5b..1459e27c3 100644 --- a/app/assets/javascripts/app/models/_application_model.js.coffee +++ b/app/assets/javascripts/app/models/_application_model.js.coffee @@ -16,6 +16,9 @@ class App.Model extends Spine.Model uiUrl: -> '#' + objectDisplayName: -> + @constructor.className + displayName: -> return @name if @name if @realname diff --git a/app/assets/javascripts/app/models/ticket_article.js.coffee b/app/assets/javascripts/app/models/ticket_article.js.coffee index 4870f4d4d..09360a160 100644 --- a/app/assets/javascripts/app/models/ticket_article.js.coffee +++ b/app/assets/javascripts/app/models/ticket_article.js.coffee @@ -17,6 +17,9 @@ class App.TicketArticle extends App.Model uiUrl: -> '#ticket/zoom/' + @ticket_id + '/' + @id + objectDisplayName: -> + 'Article' + @_fillUp: (data) -> # add created & updated @@ -31,3 +34,12 @@ class App.TicketArticle extends App.Model data + + displayName: -> + if @subject + return @subject + if App.Ticket.exists( @ticket_id ) + ticket = App.Ticket.find( @ticket_id ) + if ticket + return ticket.title + '???' \ No newline at end of file diff --git a/app/models/user.rb b/app/models/user.rb index 78efd4c64..c75f59ff1 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -111,6 +111,7 @@ returns # get related objects assets = {} activity_stream.each {|item| + require item['object'].to_filename record = Kernel.const_get( item['object'] ).find( item['o_id'] ) assets = record.assets(assets) } diff --git a/lib/core_ext/string.rb b/lib/core_ext/string.rb index 1a293d2fe..6ada19ba0 100644 --- a/lib/core_ext/string.rb +++ b/lib/core_ext/string.rb @@ -19,4 +19,8 @@ class String line.length > options[:line_width] ? line.gsub(/(.{1,#{options[:line_width]}})(\s+|$)/, "\\1\n").strip : line end * "\n" end + def to_filename + camel_cased_word = self.to_s + camel_cased_word.gsub(/::/, '/').downcase + end end