summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2016-10-30 08:32:31 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2016-10-30 08:32:31 +0000
commitdb5bd2b2de4733b3c900468edf4eb35896e4f723 (patch)
treed6f86917faf3374f1a878f2566857b57b19852d8 /app
parentf7782c46480f8d5ab995c988ea265d12eb7ad0a9 (diff)
downloadredmine-db5bd2b2de4733b3c900468edf4eb35896e4f723.tar.gz
redmine-db5bd2b2de4733b3c900468edf4eb35896e4f723.zip
My page - Spent time: configurable number of days to display (#8761).
git-svn-id: http://svn.redmine.org/redmine/trunk@15942 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app')
-rw-r--r--app/controllers/my_controller.rb11
-rw-r--r--app/helpers/my_helper.rb14
-rw-r--r--app/models/user_preference.rb18
-rw-r--r--app/views/my/blocks/_timelog.html.erb29
-rw-r--r--app/views/my/update_page.js.erb3
5 files changed, 66 insertions, 9 deletions
diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb
index a01d4e0ea..5cf677a2d 100644
--- a/app/controllers/my_controller.rb
+++ b/app/controllers/my_controller.rb
@@ -130,6 +130,17 @@ class MyController < ApplicationController
redirect_to my_account_path
end
+ def update_page
+ @user = User.current
+ block_settings = params[:settings] || {}
+
+ block_settings.each do |block, settings|
+ @user.pref.update_block_settings(block, settings)
+ end
+ @user.pref.save
+ @updated_blocks = block_settings.keys
+ end
+
# User's page layout configuration
def page_layout
@user = User.current
diff --git a/app/helpers/my_helper.rb b/app/helpers/my_helper.rb
index d8fe9f5eb..20abc5f3c 100644
--- a/app/helpers/my_helper.rb
+++ b/app/helpers/my_helper.rb
@@ -45,8 +45,9 @@ module MyHelper
return
end
+ settings = user.pref.my_page_settings(block)
begin
- render(:partial => "my/blocks/#{block}", :locals => {:user => user})
+ render(:partial => "my/blocks/#{block}", :locals => {:user => user, :settings => settings})
rescue ActionView::MissingTemplate
Rails.logger.warn("Template missing for block \"#{block}\" found in #{user.login} (id=#{user.id}) preferences")
return nil
@@ -107,13 +108,18 @@ module MyHelper
to_a
end
- def timelog_items
- TimeEntry.
- where("#{TimeEntry.table_name}.user_id = ? AND #{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", User.current.id, User.current.today - 6, User.current.today).
+ def timelog_items(settings)
+ days = settings[:days].to_i
+ days = 7 if days < 1 || days > 365
+
+ entries = TimeEntry.
+ where("#{TimeEntry.table_name}.user_id = ? AND #{TimeEntry.table_name}.spent_on BETWEEN ? AND ?", User.current.id, User.current.today - (days - 1), User.current.today).
joins(:activity, :project).
references(:issue => [:tracker, :status]).
includes(: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").
to_a
+
+ return entries, days
end
end
diff --git a/app/models/user_preference.rb b/app/models/user_preference.rb
index f492ac139..26f8e4ea2 100644
--- a/app/models/user_preference.rb
+++ b/app/models/user_preference.rb
@@ -91,6 +91,19 @@ class UserPreference < ActiveRecord::Base
self[:my_page_layout] = arg
end
+ def my_page_settings(block=nil)
+ s = self[:my_page_settings] ||= {}
+ if block
+ s[block] ||= {}
+ else
+ s
+ end
+ end
+
+ def my_page_settings=(arg)
+ self[:my_page_settings] = arg
+ end
+
def remove_block(block)
block = block.to_s.underscore
%w(top left right).each do |f|
@@ -108,4 +121,9 @@ class UserPreference < ActiveRecord::Base
my_page_layout['top'] ||= []
my_page_layout['top'].unshift(block)
end
+
+ def update_block_settings(block, settings)
+ block_settings = my_page_settings(block).merge(settings.symbolize_keys)
+ my_page_settings[block] = block_settings
+ end
end
diff --git a/app/views/my/blocks/_timelog.html.erb b/app/views/my/blocks/_timelog.html.erb
index 47865b0f0..566831132 100644
--- a/app/views/my/blocks/_timelog.html.erb
+++ b/app/views/my/blocks/_timelog.html.erb
@@ -1,18 +1,37 @@
<%
-entries = timelog_items
+entries, days = timelog_items(settings)
entries_by_day = entries.group_by(&:spent_on)
%>
-<% if User.current.allowed_to?(:log_time, nil, :global => true) %>
+
<div class="contextual">
- <%= link_to l(:button_log_time), new_time_entry_path, :class => "icon icon-add" %>
+ <%= link_to l(:button_log_time), new_time_entry_path, :class => "icon icon-add" if User.current.allowed_to?(:log_time, nil, :global => true) %>
+ <%= link_to_function l(:label_options), "$('#timelog-settings').toggle();", :class => 'icon-only icon-settings' %>
</div>
-<% end %>
<h3>
<%= link_to l(:label_spent_time), time_entries_path(:user_id => 'me') %>
- (<%= l(:label_last_n_days, 7) %>: <%= l_hours_short entries.sum(&:hours) %>)
+ (<%= l(:label_last_n_days, days) %>: <%= l_hours_short entries.sum(&:hours) %>)
</h3>
+
+<div id="timelog-settings" style="display:none;">
+ <%= form_tag({}, :remote => true) do %>
+ <div class="box">
+ <p>
+ <label>
+ <%= l(:button_show) %>:
+ <%= text_field_tag 'settings[timelog][days]', days, :size => 6 %>
+ <%= l(:label_day_plural) %>
+ </label>
+ </p>
+ </div>
+ <p>
+ <%= submit_tag l(:button_save) %>
+ <%= link_to_function l(:button_cancel), "$('#timelog-settings').toggle();" %>
+ </p>
+ <% end %>
+</div>
+
<% if entries.any? %>
<%= form_tag({}, :data => {:cm_url => time_entries_context_menu_path}) do %>
<table class="list time-entries">
diff --git a/app/views/my/update_page.js.erb b/app/views/my/update_page.js.erb
new file mode 100644
index 000000000..5329f77af
--- /dev/null
+++ b/app/views/my/update_page.js.erb
@@ -0,0 +1,3 @@
+<% @updated_blocks.each do |block| %>
+ $("#block-<%= block %>").html("<%= escape_javascript render_block_content(block.to_s, @user) %>");
+<% end %>