summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/timelog_controller.rb8
-rw-r--r--app/models/time_entry.rb5
-rw-r--r--app/views/timelog/details.rhtml5
-rw-r--r--test/functional/timelog_controller_test.rb8
4 files changed, 26 insertions, 0 deletions
diff --git a/app/controllers/timelog_controller.rb b/app/controllers/timelog_controller.rb
index 29c2635d6..2b763129e 100644
--- a/app/controllers/timelog_controller.rb
+++ b/app/controllers/timelog_controller.rb
@@ -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,
diff --git a/app/models/time_entry.rb b/app/models/time_entry.rb
index b234a8b21..61b53d1c0 100644
--- a/app/models/time_entry.rb
+++ b/app/models/time_entry.rb
@@ -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
diff --git a/app/views/timelog/details.rhtml b/app/views/timelog/details.rhtml
index f02da9959..f111cbfc0 100644
--- a/app/views/timelog/details.rhtml
+++ b/app/views/timelog/details.rhtml
@@ -24,8 +24,13 @@
<p class="other-formats">
<%= l(:label_export_to) %>
+<span><%= link_to 'Atom', {:issue_id => @issue, :format => 'atom', :key => User.current.rss_key}, :class => 'feed' %></span>
<span><%= link_to 'CSV', params.merge(:format => 'csv'), :class => 'csv' %></span>
</p>
<% end %>
<% html_title l(:label_spent_time), l(:label_details) %>
+
+<% content_for :header_tags do %>
+ <%= auto_discovery_link_tag(:atom, {:issue_id => @issue, :format => 'atom', :key => User.current.rss_key}, :title => l(:label_spent_time)) %>
+<% end %>
diff --git a/test/functional/timelog_controller_test.rb b/test/functional/timelog_controller_test.rb
index c8b47cf8d..7b4622daa 100644
--- a/test/functional/timelog_controller_test.rb
+++ b/test/functional/timelog_controller_test.rb
@@ -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