commit 35b838056c07f3debff35c80cb3ed6118e6e4254 Author: Aleksei Gusev Date: Wed Oct 29 18:29:19 2008 +0200 added ability to choose time period for 'Spent time' and count of 'Watched issues'. diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb index 1cfa3e5..4bb7453 100644 --- a/app/controllers/my_controller.rb +++ b/app/controllers/my_controller.rb @@ -33,6 +33,9 @@ class MyController < ApplicationController 'right' => ['issuesreportedbyme'] }.freeze + DEFAULT_TIMELOG_DAYS_COUNT = 7 + DEFAULT_WATCHED_ISSUES_COUNT = 10 + verify :xhr => true, :session => :page_layout, :only => [:add_block, :remove_block, :order_blocks] @@ -46,6 +49,8 @@ class MyController < ApplicationController def page @user = User.current @blocks = @user.pref[:my_page_layout] || DEFAULT_LAYOUT + @timelog_days_count = @user.pref[:timelog_days_count] || DEFAULT_TIMELOG_DAYS_COUNT + @watched_issues_count = @user.pref[:watched_issues_count] || DEFAULT_WATCHED_ISSUES_COUNT end # Edit user's account @@ -104,6 +109,8 @@ class MyController < ApplicationController def page_layout @user = User.current @blocks = @user.pref[:my_page_layout] || DEFAULT_LAYOUT.dup + @timelog_days_count = @user.pref[:timelog_days_count] || DEFAULT_TIMELOG_DAYS_COUNT + @watched_issues_count = @user.pref[:watched_issues_count] || DEFAULT_WATCHED_ISSUES_COUNT session[:page_layout] = @blocks %w(top left right).each {|f| session[:page_layout][f] ||= [] } @block_options = [] @@ -148,6 +155,7 @@ class MyController < ApplicationController end render :nothing => true end + # Save user's page layout def page_layout_save @@ -157,4 +165,21 @@ class MyController < ApplicationController session[:page_layout] = nil redirect_to :action => 'page' end + + def change_timelog_days_count + @user = User.current + @user.pref[:timelog_days_count] = Integer( params[:timelog_days_count]) + @user.pref.save + @timelog_days_count = @user.pref[:timelog_days_count] || DEFAULT_TIMELOG_DAYS_COUNT + render :partial => 'my/blocks/timelog' + end + + def change_watched_issues_count + @user = User.current + @user.pref[:watched_issues_count] = Integer( params[:watched_issues_count]) + @user.pref.save + @watched_issues_count = @user.pref[:watched_issues_count] || DEFAULT_WATCHED_ISSUES_COUNT + render :partial => 'my/blocks/issueswatched', :locals => { :user => @user } + end + end diff --git a/app/views/my/blocks/_issueswatched.rhtml b/app/views/my/blocks/_issueswatched.rhtml index e5c2f23..4c7a13d 100644 --- a/app/views/my/blocks/_issueswatched.rhtml +++ b/app/views/my/blocks/_issueswatched.rhtml @@ -1,10 +1,22 @@ -

<%=l(:label_watched_issues)%>

+
+ +
+ <% form_remote_tag :url => { :action => "change_watched_issues_count", :id => "watched-issues-customization-form" }, + :update => 'watched-issues' do %> + <%= text_field_tag 'watched_issues_count', @watched_issues_count, :size => 3 %> + <%= submit_tag l(:button_save), :class => 'icon icon-save' %> + <% end %> +
+ +

<%=l(:label_watched_issues)%>

+ <% watched_issues = Issue.find(:all, :include => [:status, :project, :tracker, :watchers], - :limit => 10, + :limit => @watched_issues_count, :conditions => ["#{Watcher.table_name}.user_id = ? AND #{Project.table_name}.status=#{Project::STATUS_ACTIVE}", user.id], :order => "#{Issue.table_name}.updated_on DESC") %> <%= render :partial => 'issues/list_simple', :locals => { :issues => watched_issues } %> <% if watched_issues.length > 0 %>

<%=lwr(:label_last_updates, watched_issues.length)%>

<% end %> +
diff --git a/app/views/my/blocks/_timelog.rhtml b/app/views/my/blocks/_timelog.rhtml index a3f74e5..e343f55 100644 --- a/app/views/my/blocks/_timelog.rhtml +++ b/app/views/my/blocks/_timelog.rhtml @@ -1,7 +1,18 @@ -

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

+
+ +
+ <% form_remote_tag :url => { :action => "change_timelog_days_count", :id => "timelog-customization-form" }, + :update => 'timelog' do %> + <%= text_field_tag 'timelog_days_count', @timelog_days_count, :size => 2 %> + <%= submit_tag l(:button_save), :class => 'icon icon-save' %> + <% end %> +
+ +

<%=l(:label_spent_time)%> (<%= l(:label_last_n_days, @timelog_days_count) %>)

<% 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], + :conditions => + ["#{TimeEntry.table_name}.user_id = ? AND #{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", @user.id, Date.today - @timelog_days_count - 1, 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) @@ -49,4 +60,5 @@ entries_by_day = entries.group_by(&:spent_on) <% end -%> +
<% end %>