From: Jean-Philippe Lang Date: Sun, 16 Mar 2008 12:21:54 +0000 (+0000) Subject: Add a time tracking block for 'My page' (#615). X-Git-Tag: 0.7.0-RC1~46 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=a8fcf8487d4165741cf8bffe71ce6302c6aab4e2;p=redmine.git Add a time tracking block for 'My page' (#615). It lists current user's time entries for the last 7 days across all projects, grouped by day with subtotals for each day, and a grand total. git-svn-id: http://redmine.rubyforge.org/svn/trunk@1260 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb index cb326bc93..ff3393e90 100644 --- a/app/controllers/my_controller.rb +++ b/app/controllers/my_controller.rb @@ -26,7 +26,8 @@ class MyController < ApplicationController 'issueswatched' => :label_watched_issues, 'news' => :label_news_latest, 'calendar' => :label_calendar, - 'documents' => :label_document_plural + 'documents' => :label_document_plural, + 'timelog' => :label_spent_time }.freeze DEFAULT_LAYOUT = { 'left' => ['issuesassignedtome'], diff --git a/app/controllers/timelog_controller.rb b/app/controllers/timelog_controller.rb index 38c1fb04c..d767037eb 100644 --- a/app/controllers/timelog_controller.rb +++ b/app/controllers/timelog_controller.rb @@ -216,6 +216,8 @@ class TimelogController < ApplicationController render_403 and return unless @time_entry.editable_by?(User.current) @time_entry.destroy flash[:notice] = l(:notice_successful_delete) + redirect_to :back + rescue RedirectBackError redirect_to :action => 'details', :project_id => @time_entry.project end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index be0b808d2..aa19ce7d4 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -37,8 +37,8 @@ module ApplicationHelper user ? link_to(user, :controller => 'account', :action => 'show', :id => user) : 'Anonymous' end - def link_to_issue(issue) - link_to "#{issue.tracker.name} ##{issue.id}", :controller => "issues", :action => "show", :id => issue + def link_to_issue(issue, options={}) + link_to "#{issue.tracker.name} ##{issue.id}", {:controller => "issues", :action => "show", :id => issue}, options end def toggle_link(name, id, options={}) diff --git a/app/views/my/blocks/_timelog.rhtml b/app/views/my/blocks/_timelog.rhtml new file mode 100644 index 000000000..a3f74e54d --- /dev/null +++ b/app/views/my/blocks/_timelog.rhtml @@ -0,0 +1,52 @@ +

<%=l(:label_spent_time)%> (<%= l(:label_last_n_days, 7) %>)

+<% +entries = TimeEntry.find(:all, + :conditions => ["#{TimeEntry.table_name}.user_id = ? AND #{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", @user.id, Date.today - 6, Date.today], + :include => [:activity, :project, {:issue => [:tracker, :status]}], + :order => "#{TimeEntry.table_name}.spent_on DESC, #{Project.table_name}.name ASC, #{Tracker.table_name}.position ASC, #{Issue.table_name}.id ASC") +entries_by_day = entries.group_by(&:spent_on) +%> + +
+

<%= l(:label_total) %>: <%= html_hours("%.2f" % entries.sum(&:hours).to_f) %>

+
+ +<% if entries.any? %> + + + + + + + + + +<% entries_by_day.keys.sort.reverse.each do |day| %> + + + + + + + <% entries_by_day[day].each do |entry| -%> + + + + + + + + <% end -%> +<% end -%> + +
<%= l(:label_activity) %><%= l(:label_project) %><%= l(:field_comments) %><%= l(:field_hours) %>
<%= day == Date.today ? l(:label_today).titleize : format_date(day) %><%= html_hours("%.2f" % entries_by_day[day].sum(&:hours).to_f) %>
<%=h entry.activity %><%=h entry.project %> <%= ' - ' + link_to_issue(entry.issue, :title => h("#{entry.issue.subject} (#{entry.issue.status})")) if entry.issue %><%=h entry.comments %><%= html_hours("%.2f" % entry.hours) %> + <% if entry.editable_by?(@user) -%> + <%= link_to image_tag('edit.png'), {:controller => 'timelog', :action => 'edit', :id => entry}, + :title => l(:button_edit) %> + <%= link_to image_tag('delete.png'), {:controller => 'timelog', :action => 'destroy', :id => entry}, + :confirm => l(:text_are_you_sure), + :method => :post, + :title => l(:button_delete) %> + <% end -%> +
+<% end %> diff --git a/public/stylesheets/application.css b/public/stylesheets/application.css index 1fd7881df..816cd05a2 100644 --- a/public/stylesheets/application.css +++ b/public/stylesheets/application.css @@ -113,9 +113,9 @@ tr.user.locked, tr.user.registered { color: #aaa; } tr.user.locked a, tr.user.registered a { color: #aaa; } tr.time-entry { text-align: center; white-space: nowrap; } -tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; } -tr.time-entry td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; } -tr.time-entry .hours-dec { font-size: 0.9em; } +tr.time-entry td.subject, tr.time-entry td.comments { text-align: left; white-space: normal; } +td.hours { text-align: right; font-weight: bold; padding-right: 0.5em; } +td.hours .hours-dec { font-size: 0.9em; } table.list tbody tr:hover { background-color:#ffffdd; } table td {padding:2px;}