From 87a671ce75fd2b1d402b96df4fb92f55e6009fd4 Mon Sep 17 00:00:00 2001 From: Go MAEDA Date: Wed, 11 Jul 2018 14:51:07 +0000 Subject: Add my activities to my page (#2471). Patch by Mizuki ISHIKAWA. git-svn-id: http://svn.redmine.org/redmine/trunk@17443 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/controllers/my_controller.rb | 1 + app/helpers/my_helper.rb | 6 ++++++ app/views/activities/_activities.html.erb | 17 +++++++++++++++++ app/views/activities/index.html.erb | 20 ++------------------ app/views/my/blocks/_activity.html.erb | 5 +++++ app/views/users/show.html.erb | 16 +--------------- lib/redmine/my_page.rb | 3 ++- test/functional/my_controller_test.rb | 18 ++++++++++++++++++ 8 files changed, 52 insertions(+), 34 deletions(-) create mode 100644 app/views/activities/_activities.html.erb create mode 100644 app/views/my/blocks/_activity.html.erb diff --git a/app/controllers/my_controller.rb b/app/controllers/my_controller.rb index 4e9f67d7d..0a1d40349 100644 --- a/app/controllers/my_controller.rb +++ b/app/controllers/my_controller.rb @@ -28,6 +28,7 @@ class MyController < ApplicationController helper :users helper :custom_fields helper :queries + helper :activities def index page diff --git a/app/helpers/my_helper.rb b/app/helpers/my_helper.rb index 9acc9e644..8320749fc 100644 --- a/app/helpers/my_helper.rb +++ b/app/helpers/my_helper.rb @@ -164,4 +164,10 @@ module MyHelper render :partial => 'my/blocks/timelog', :locals => {:block => block, :entries => entries, :entries_by_day => entries_by_day, :days => days} end + + def render_activity_block(block, settings) + events_by_day = Redmine::Activity::Fetcher.new(User.current, :author => User.current).events(nil, nil, :limit => 10).group_by(&:event_date) + + render :partial => 'my/blocks/activity', :locals => {:events_by_day => events_by_day} + end end diff --git a/app/views/activities/_activities.html.erb b/app/views/activities/_activities.html.erb new file mode 100644 index 000000000..2a1f46cd7 --- /dev/null +++ b/app/views/activities/_activities.html.erb @@ -0,0 +1,17 @@ +
+<% events_by_day.keys.sort.reverse_each do |day| %> +

<%= format_activity_day(day) %>

+
+<% sort_activity_events(events_by_day[day]).each do |e, in_group| -%> +
<%= User.current.logged? && e.respond_to?(:event_author) && User.current == e.event_author ? 'me' : nil %>"> + <%= avatar(e.event_author, :size => "24") if e.respond_to?(:event_author) %> + <%= format_time(e.event_datetime, false) %> + <%= content_tag('span', e.project, :class => 'project') if @project.nil? || @project != e.project %> + <%= link_to format_activity_title(e.event_title), e.event_url %> +
+
"><%= format_activity_description(e.event_description) %> + <%= link_to_user(e.event_author) if e.respond_to?(:event_author) %>
+<% end -%> +
+<% end -%> +
diff --git a/app/views/activities/index.html.erb b/app/views/activities/index.html.erb index 196984d64..64f7f6a85 100644 --- a/app/views/activities/index.html.erb +++ b/app/views/activities/index.html.erb @@ -1,24 +1,8 @@

<%= @author.nil? ? l(:label_activity) : l(:label_user_activity, link_to_user(@author)).html_safe %>

-

<%= l(:label_date_from_to, :start => format_date(@date_to - @days), :end => format_date(@date_to-1)) %>

-
-<% @events_by_day.keys.sort.reverse_each do |day| %> -

<%= format_activity_day(day) %>

-
-<% sort_activity_events(@events_by_day[day]).each do |e, in_group| -%> -
<%= User.current.logged? && e.respond_to?(:event_author) && User.current == e.event_author ? 'me' : nil %>"> - <%= avatar(e.event_author, :size => "24") if e.respond_to?(:event_author) %> - <%= format_time(e.event_datetime, false) %> - <%= content_tag('span', e.project, :class => 'project') if @project.nil? || @project != e.project %> - <%= link_to format_activity_title(e.event_title), e.event_url %> -
-
"><%= format_activity_description(e.event_description) %> - <%= link_to_user(e.event_author) if e.respond_to?(:event_author) %>
-<% end -%> -
-<% end -%> -
+

<%= l(:label_date_from_to, :start => format_date(@date_to - @days), :end => format_date(@date_to-1)) %>

+<%= render :partial => 'activities/activities', :locals => {:events_by_day => @events_by_day} %> <%= content_tag('p', l(:label_no_data), :class => 'nodata') if @events_by_day.empty? %> diff --git a/app/views/my/blocks/_activity.html.erb b/app/views/my/blocks/_activity.html.erb new file mode 100644 index 000000000..40f43559f --- /dev/null +++ b/app/views/my/blocks/_activity.html.erb @@ -0,0 +1,5 @@ +

<%= link_to l(:label_activity), :controller => 'activities', + :action => 'index', :id => nil, :user_id => User.current, + :from => events_by_day.keys.first %>

+ +<%= render :partial => 'activities/activities', :locals => {:events_by_day => events_by_day} %> diff --git a/app/views/users/show.html.erb b/app/views/users/show.html.erb index 3907d6192..84e95ead5 100644 --- a/app/views/users/show.html.erb +++ b/app/views/users/show.html.erb @@ -51,21 +51,7 @@

<%= link_to l(:label_activity), :controller => 'activities', :action => 'index', :id => nil, :user_id => @user, :from => @events_by_day.keys.first %>

- -
-<% @events_by_day.keys.sort.reverse_each do |day| %> -

<%= format_activity_day(day) %>

-
-<% sort_activity_events(@events_by_day[day]).each do |e, in_group| -%> -
<%= User.current.logged? && e.respond_to?(:event_author) && User.current == e.event_author ? 'me' : nil %>"> - <%= format_time(e.event_datetime, false) %> - <%= content_tag('span', e.project, :class => 'project') %> - <%= link_to format_activity_title(e.event_title), e.event_url %>
-
"><%= format_activity_description(e.event_description) %> -<% end -%> -
-<% end -%> -
+<%= render :partial => 'activities/activities', :locals => {:events_by_day => @events_by_day} %> <% other_formats_links do |f| %> <%= f.link_to 'Atom', :url => {:controller => 'activities', :action => 'index', :id => nil, :user_id => @user, :key => User.current.rss_key} %> diff --git a/lib/redmine/my_page.rb b/lib/redmine/my_page.rb index 1bbefe493..4bec1c29f 100644 --- a/lib/redmine/my_page.rb +++ b/lib/redmine/my_page.rb @@ -29,7 +29,8 @@ module Redmine 'news' => {:label => :label_news_latest}, 'calendar' => {:label => :label_calendar}, 'documents' => {:label => :label_document_plural}, - 'timelog' => {:label => :label_spent_time} + 'timelog' => {:label => :label_spent_time}, + 'activity' => {:label => :label_activity} } def self.groups diff --git a/test/functional/my_controller_test.rb b/test/functional/my_controller_test.rb index 6a618c4a3..026129399 100644 --- a/test/functional/my_controller_test.rb +++ b/test/functional/my_controller_test.rb @@ -198,6 +198,24 @@ class MyControllerTest < Redmine::ControllerTest end end + def test_page_with_activity + user = User.find(2) + user.pref.my_page_layout = {'top' => ['activity']} + user.pref.save! + + get :page + assert_response :success + + assert_select 'div#block-activity' do + assert_select 'h3' do + assert_select 'a[href=?]', activity_path(from: Date.today, user_id: user.id), :text => 'Activity' + end + assert_select 'div#activity' do + assert_select 'dt', 10 + end + end + end + def test_page_with_all_blocks blocks = Redmine::MyPage.blocks.keys preferences = User.find(2).pref -- cgit v1.2.3