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..0e21c3548f --- /dev/null +++ b/app/views/messages/_latest_messages.html.erb @@ -0,0 +1,22 @@ +<% if messages && messages.any? %> + + + + + + + + + + <% messages.each do |message| %> + + + + + + + <% end %> + +
<%= l(:label_board) %><%= l(:field_subject) %><%= l(:field_content) %><%= l(:field_author) %><%= l(:field_created_on) %>
<%= 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) %><%= message.content %><%= link_to_user(message.author) %><%= format_time(message.created_on) %>
+<% 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 0aeafe516b..3c99288c3d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -902,6 +902,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 2bf8b3516f..bd65464228 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,