diff --git a/app/helpers/my_helper.rb b/app/helpers/my_helper.rb
index aece653b2d..9668c9a442 100644
--- a/app/helpers/my_helper.rb
+++ b/app/helpers/my_helper.rb
@@ -163,6 +163,19 @@ module MyHelper
render :partial => 'my/blocks/news', :locals => {:block => block, :news => news}
end
+ def render_forum_block(block, settings)
+ messages = Message.visible.
+ joins(:board).
+ where("#{Board.table_name}.project_id" => User.current.projects).
+ limit(5).
+ includes(:author).
+ references(:author).
+ order("#{Message.table_name}.created_on DESC").
+ to_a
+
+ render :partial => 'my/blocks/forum', :locals => {:block => block, :messages => messages}
+ end
+
def render_timelog_block(block, settings)
days = settings[:days].to_i
days = 7 if days < 1 || days > 365
diff --git a/app/views/messages/_latest_messages.html.erb b/app/views/messages/_latest_messages.html.erb
new file mode 100644
index 0000000000..63aaffc0e8
--- /dev/null
+++ b/app/views/messages/_latest_messages.html.erb
@@ -0,0 +1,20 @@
+<% if messages && messages.any? %>
+
+
+ <%= l(:label_board) %> |
+ <%= l(:field_subject) %> |
+ <%= l(:field_author) %> |
+ <%= l(:field_created_on) %> |
+
+
+ <% messages.each do |message| %>
+
+ <%= link_to message.board.name, project_board_path(message.board.project, message.board), :class => "board" %>
+ | <%= link_to message.subject, board_message_path(message.board, message) %> |
+ <%= link_to_user(message.author) %> |
+ <%= format_time(message.created_on) %> |
+
+ <% end %>
+
+
+<% end %>
diff --git a/app/views/my/blocks/_forum.html.erb b/app/views/my/blocks/_forum.html.erb
new file mode 100644
index 0000000000..7b064852b4
--- /dev/null
+++ b/app/views/my/blocks/_forum.html.erb
@@ -0,0 +1,3 @@
+<%=l(:label_message_latest)%>
+
+<%= render :partial => 'messages/latest_messages', :locals => {:messages => messages} %>
diff --git a/config/locales/en.yml b/config/locales/en.yml
index 952138bf4e..392d8f18a8 100644
--- a/config/locales/en.yml
+++ b/config/locales/en.yml
@@ -904,6 +904,7 @@ en:
label_topic_plural: Topics
label_message_plural: Messages
label_message_last: Last message
+ label_message_latest: Latest Message
label_message_new: New message
label_message_posted: Message added
label_reply_plural: Replies
diff --git a/lib/redmine/my_page.rb b/lib/redmine/my_page.rb
index 4f42344dad..6b609533bf 100644
--- a/lib/redmine/my_page.rb
+++ b/lib/redmine/my_page.rb
@@ -30,6 +30,7 @@ module Redmine
'issueswatched' => {:label => :label_watched_issues},
'issuequery' => {:label => :label_issue_plural, :max_occurs => 3},
'news' => {:label => :label_news_latest},
+ 'forum' => {:label => :label_message_latest},
'calendar' => {:label => :label_calendar},
'documents' => {:label => :label_document_plural},
'timelog' => {:label => :label_spent_time},
diff --git a/test/functional/my_controller_test.rb b/test/functional/my_controller_test.rb
index 6e93e3303b..f956f05cbb 100644
--- a/test/functional/my_controller_test.rb
+++ b/test/functional/my_controller_test.rb
@@ -24,7 +24,7 @@ class MyControllerTest < Redmine::ControllerTest
:roles, :projects, :members, :member_roles,
:issues, :issue_statuses, :trackers, :enumerations,
:custom_fields, :auth_sources, :queries, :enabled_modules,
- :journals, :projects_trackers
+ :journals, :projects_trackers, :boards, :messages
def setup
@request.session[:user_id] = 2
@@ -459,6 +459,23 @@ class MyControllerTest < Redmine::ControllerTest
end
end
+ def test_page_with_forum
+ user = User.find(2)
+ user.pref.my_page_layout = {'top' => ['forum']}
+ user.pref.time_zone = 'UTC'
+ user.pref.save!
+
+ get :page
+ assert_response :success
+
+ assert_select 'div#block-forum' do
+ assert_select 'h3', :text => /Latest Message/
+ assert_select 'table#latest_message' do
+ assert_select 'tbody tr', 5
+ end
+ end
+ end
+
def test_update_account
put(
:account,