OSDN Git Service

Adds atom feed on time entries details (#1479).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 17 Jun 2008 20:01:15 +0000 (20:01 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 17 Jun 2008 20:01:15 +0000 (20:01 +0000)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@1560 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/controllers/timelog_controller.rb
app/models/time_entry.rb
app/views/timelog/details.rhtml
test/functional/timelog_controller_test.rb

index 29c2635..2b76312 100644 (file)
@@ -154,6 +154,14 @@ class TimelogController < ApplicationController
 
           render :layout => !request.xhr?
         }
+        format.atom {
+          entries = TimeEntry.find(:all,
+                                   :include => [:project, :activity, :user, {:issue => :tracker}],
+                                   :conditions => cond.conditions,
+                                   :order => "#{TimeEntry.table_name}.created_on DESC",
+                                   :limit => Setting.feeds_limit.to_i)
+          render_feed(entries, :title => l(:label_spent_time))
+        }
         format.csv {
           # Export all entries
           @entries = TimeEntry.find(:all, 
index b234a8b..61b53d1 100644 (file)
@@ -24,6 +24,11 @@ class TimeEntry < ActiveRecord::Base
   belongs_to :activity, :class_name => 'Enumeration', :foreign_key => :activity_id
   
   attr_protected :project_id, :user_id, :tyear, :tmonth, :tweek
+
+  acts_as_event :title => Proc.new {|o| "#{o.user}: #{lwr(:label_f_hour, o.hours)} (#{(o.issue || o.project).event_title})"},
+                :url => Proc.new {|o| {:controller => 'timelog', :action => 'details', :project_id => o.project}},
+                :author => :user,
+                :description => :comments
   
   validates_presence_of :user_id, :activity_id, :project_id, :hours, :spent_on
   validates_numericality_of :hours, :allow_nil => true
index f02da99..f111cbf 100644 (file)
 \r
 <p class="other-formats">\r
 <%= l(:label_export_to) %>\r
+<span><%= link_to 'Atom', {:issue_id => @issue, :format => 'atom', :key => User.current.rss_key}, :class => 'feed' %></span>\r
 <span><%= link_to 'CSV', params.merge(:format => 'csv'), :class => 'csv' %></span>\r
 </p>\r
 <% end %>\r
 \r
 <% html_title l(:label_spent_time), l(:label_details) %>\r
+\r
+<% content_for :header_tags do %>\r
+    <%= auto_discovery_link_tag(:atom, {:issue_id => @issue, :format => 'atom', :key => User.current.rss_key}, :title => l(:label_spent_time)) %>\r
+<% end %>\r
index c8b47cf..7b4622d 100644 (file)
@@ -210,6 +210,14 @@ class TimelogControllerTest < Test::Unit::TestCase
     assert_equal '2007-04-22'.to_date, assigns(:to)
   end
   
+  def test_details_atom_feed
+    get :details, :project_id => 1, :format => 'atom'
+    assert_response :success
+    assert_equal 'application/atom+xml', @response.content_type
+    assert_not_nil assigns(:items)
+    assert assigns(:items).first.is_a?(TimeEntry)
+  end
+  
   def test_details_csv_export
     get :details, :project_id => 1, :format => 'csv'
     assert_response :success