OSDN Git Service

Better event feed for dashboard
authorrandx <dmitriy.zaporozhets@gmail.com>
Thu, 5 Jul 2012 23:16:41 +0000 (02:16 +0300)
committerrandx <dmitriy.zaporozhets@gmail.com>
Thu, 5 Jul 2012 23:16:41 +0000 (02:16 +0300)
app/decorators/event_decorator.rb [new file with mode: 0644]
app/views/dashboard/index.atom.builder

diff --git a/app/decorators/event_decorator.rb b/app/decorators/event_decorator.rb
new file mode 100644 (file)
index 0000000..50aaa61
--- /dev/null
@@ -0,0 +1,25 @@
+class EventDecorator < ApplicationDecorator
+  decorates :event
+
+  def feed_title
+    if self.issue?
+      "#{self.author_name} #{self.action_name} issue ##{self.target_id}:" + self.issue_title
+    elsif self.merge_request?
+      "#{self.author_name} #{self.action_name} MR ##{self.target_id}:" + self.merge_request_title
+    elsif self.push?
+      "#{self.author_name} #{self.push_action_name} #{self.ref_type} " + self.ref_name
+    else 
+      ""
+    end
+  end
+
+  def feed_url
+    if self.issue?
+      h.project_issue_url(self.project, self.issue)
+    elsif self.merge_request?
+      h.project_merge_request_url(self.project, self.merge_request)
+    elsif self.push?
+      h.project_commits_url(self.project, :ref => self.ref_name)
+    end
+  end
+end
index 706b808..fa3bfad 100644 (file)
@@ -8,17 +8,10 @@ xml.feed "xmlns" => "http://www.w3.org/2005/Atom", "xmlns:media" => "http://sear
 
   @events.each do |event|
     if event.allowed?
+      event = EventDecorator.decorate(event)
       xml.entry do
-        if event.issue?
-          event_link  = project_issue_url(event.project, event.issue)
-          event_title = event.issue_title
-        elsif event.merge_request?
-          event_link  = project_merge_request_url(event.project, event.merge_request)
-          event_title = event.merge_request_title
-        elsif event.push?
-          event_link  = project_commits_url(event.project, :ref => event.ref_name)
-          event_title = event.ref_name
-        end
+        event_link = event.feed_url
+        event_title = event.feed_title
 
         xml.id      "tag:#{request.host},#{event.created_at.strftime("%Y-%m-%d")}:#{event.id}"
         xml.link    :href => event_link