From 062a2d6f5d6ebdc74d5586cb151fd07a219b1b31 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Tue, 17 Jun 2008 20:01:15 +0000 Subject: [PATCH] Adds atom feed on time entries details (#1479). git-svn-id: http://redmine.rubyforge.org/svn/trunk@1560 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/timelog_controller.rb | 8 ++++++++ app/models/time_entry.rb | 5 +++++ app/views/timelog/details.rhtml | 5 +++++ test/functional/timelog_controller_test.rb | 8 ++++++++ 4 files changed, 26 insertions(+) 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 @@

<%= l(:label_export_to) %> +<%= link_to 'Atom', {:issue_id => @issue, :format => 'atom', :key => User.current.rss_key}, :class => 'feed' %> <%= link_to 'CSV', params.merge(:format => 'csv'), :class => 'csv' %>

<% 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