summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/projects_controller.rb17
-rw-r--r--app/views/projects/activity.rhtml5
-rw-r--r--lang/bg.yml1
-rw-r--r--lang/ca.yml1
-rw-r--r--lang/cs.yml1
-rw-r--r--lang/da.yml1
-rw-r--r--lang/de.yml1
-rw-r--r--lang/en.yml1
-rw-r--r--lang/es.yml1
-rw-r--r--lang/fi.yml1
-rw-r--r--lang/fr.yml3
-rw-r--r--lang/he.yml1
-rw-r--r--lang/hu.yml1
-rw-r--r--lang/it.yml1
-rw-r--r--lang/ja.yml1
-rw-r--r--lang/ko.yml1
-rw-r--r--lang/lt.yml1
-rw-r--r--lang/nl.yml1
-rw-r--r--lang/no.yml1
-rw-r--r--lang/pl.yml1
-rw-r--r--lang/pt-br.yml1
-rw-r--r--lang/pt.yml1
-rw-r--r--lang/ro.yml1
-rw-r--r--lang/ru.yml1
-rw-r--r--lang/sk.yml1
-rw-r--r--lang/sr.yml1
-rw-r--r--lang/sv.yml1
-rw-r--r--lang/th.yml1
-rw-r--r--lang/tr.yml1
-rw-r--r--lang/uk.yml1
-rw-r--r--lang/vn.yml1
-rw-r--r--lang/zh-tw.yml1
-rw-r--r--lang/zh.yml1
-rw-r--r--lib/redmine/activity/fetcher.rb10
-rw-r--r--test/functional/projects_controller_test.rb18
35 files changed, 76 insertions, 7 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb
index a7efa4695..43e1ae035 100644
--- a/app/controllers/projects_controller.rb
+++ b/app/controllers/projects_controller.rb
@@ -227,10 +227,13 @@ class ProjectsController < ApplicationController
@date_to ||= Date.today + 1
@date_from = @date_to - @days
@with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
+ @author = (params[:user_id] ? User.find_active(params[:user_id]) : nil)
- @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project, :with_subprojects => @with_subprojects)
+ @activity = Redmine::Activity::Fetcher.new(User.current, :project => @project,
+ :with_subprojects => @with_subprojects,
+ :author => @author)
@activity.scope_select {|t| !params["show_#{t}"].nil?}
- @activity.default_scope! if @activity.scope.empty?
+ @activity.scope = (@author.nil? ? :default : :all) if @activity.scope.empty?
events = @activity.events(@date_from, @date_to)
@@ -240,10 +243,18 @@ class ProjectsController < ApplicationController
render :layout => false if request.xhr?
}
format.atom {
- title = (@activity.scope.size == 1) ? l("label_#{@activity.scope.first.singularize}_plural") : l(:label_activity)
+ title = l(:label_activity)
+ if @author
+ title = @author.name
+ elsif @activity.scope.size == 1
+ title = l("label_#{@activity.scope.first.singularize}_plural")
+ end
render_feed(events, :title => "#{@project || Setting.app_title}: #{title}")
}
end
+
+ rescue ActiveRecord::RecordNotFound
+ render_404
end
private
diff --git a/app/views/projects/activity.rhtml b/app/views/projects/activity.rhtml
index 5157dda7a..d067a6753 100644
--- a/app/views/projects/activity.rhtml
+++ b/app/views/projects/activity.rhtml
@@ -1,4 +1,4 @@
-<h2><%= l(:label_activity) %></h2>
+<h2><%= @author.nil? ? l(:label_activity) : l(:label_user_activity, @author.to_s) %></h2>
<p class="subtitle"><%= "#{l(:label_date_from)} #{format_date(@date_to - @days)} #{l(:label_date_to).downcase} #{format_date(@date_to-1)}" %></p>
<div id="activity">
@@ -52,8 +52,9 @@
<p><label><%= check_box_tag 'with_subprojects', 1, @with_subprojects %> <%=l(:label_subproject_plural)%></label></p>
<%= hidden_field_tag 'with_subprojects', 0 %>
<% end %>
+<%= hidden_field_tag 'user_id', params[:user_id] %>
<p><%= submit_tag l(:button_apply), :class => 'button-small', :name => nil %></p>
<% end %>
<% end %>
-<% html_title(l(:label_activity)) -%>
+<% html_title(l(:label_activity), @author) -%>
diff --git a/lang/bg.yml b/lang/bg.yml
index 17afe9eb4..40a7b6c8c 100644
--- a/lang/bg.yml
+++ b/lang/bg.yml
@@ -692,3 +692,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/ca.yml b/lang/ca.yml
index 4179aa441..66805c45d 100644
--- a/lang/ca.yml
+++ b/lang/ca.yml
@@ -693,3 +693,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/cs.yml b/lang/cs.yml
index 189f47244..e458b31b8 100644
--- a/lang/cs.yml
+++ b/lang/cs.yml
@@ -697,3 +697,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/da.yml b/lang/da.yml
index d1b569713..d4bce1d50 100644
--- a/lang/da.yml
+++ b/lang/da.yml
@@ -693,3 +693,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/de.yml b/lang/de.yml
index b23edd9c3..ee38db54e 100644
--- a/lang/de.yml
+++ b/lang/de.yml
@@ -694,3 +694,4 @@ default_activity_development: Entwicklung
enumeration_issue_priorities: Ticket-Prioritäten
enumeration_doc_categories: Dokumentenkategorien
enumeration_activities: Aktivitäten (Zeiterfassung)
+label_user_activity: "%s's activity"
diff --git a/lang/en.yml b/lang/en.yml
index 80751f0ab..1d5a66443 100644
--- a/lang/en.yml
+++ b/lang/en.yml
@@ -344,6 +344,7 @@ label_last_updates_plural: %d last updated
label_registered_on: Registered on
label_activity: Activity
label_overall_activity: Overall activity
+label_user_activity: "%s's activity"
label_new: New
label_logged_as: Logged in as
label_environment: Environment
diff --git a/lang/es.yml b/lang/es.yml
index 74c3d496e..65d08b2ce 100644
--- a/lang/es.yml
+++ b/lang/es.yml
@@ -677,3 +677,4 @@ text_user_mail_option: "En los proyectos no seleccionados, sólo recibirá notif
text_user_wrote: '%s escribió:'
text_wiki_destroy_confirmation: ¿Seguro que quiere borrar el wiki y todo su contenido?
text_workflow_edit: Seleccionar un flujo de trabajo para actualizar
+label_user_activity: "%s's activity"
diff --git a/lang/fi.yml b/lang/fi.yml
index b028fd1f5..fb245412b 100644
--- a/lang/fi.yml
+++ b/lang/fi.yml
@@ -692,3 +692,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/fr.yml b/lang/fr.yml
index 1c2bce3ca..730a43d26 100644
--- a/lang/fr.yml
+++ b/lang/fr.yml
@@ -170,7 +170,6 @@ field_start_page: Page de démarrage
field_subproject: Sous-projet
field_hours: Heures
field_activity: Activité
-label_overall_activity: Activité globale
field_spent_on: Date
field_identifier: Identifiant
field_is_filter: Utilisé comme filtre
@@ -344,6 +343,8 @@ label_last_updates: Dernière mise à jour
label_last_updates_plural: %d dernières mises à jour
label_registered_on: Inscrit le
label_activity: Activité
+label_overall_activity: Activité globale
+label_user_activity: "Activité de %s"
label_new: Nouveau
label_logged_as: Connecté en tant que
label_environment: Environnement
diff --git a/lang/he.yml b/lang/he.yml
index e32259ba5..87d3b0851 100644
--- a/lang/he.yml
+++ b/lang/he.yml
@@ -692,3 +692,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/hu.yml b/lang/hu.yml
index 61831cedb..af91e1b4b 100644
--- a/lang/hu.yml
+++ b/lang/hu.yml
@@ -693,3 +693,4 @@ label_example: Példa
text_repository_usernames_mapping: "Állítsd be a felhasználó összerendeléseket a Redmine, és a tároló logban található felhasználók között.\nAz azonos felhasználó nevek összerendelése automatikusan megtörténik."
permission_edit_own_messages: Saját üzenetek szerkesztése
permission_delete_own_messages: Saját üzenetek törlése
+label_user_activity: "%s's activity"
diff --git a/lang/it.yml b/lang/it.yml
index d40b487f7..1ee5b72bb 100644
--- a/lang/it.yml
+++ b/lang/it.yml
@@ -692,3 +692,4 @@ label_example: Esempio
text_repository_usernames_mapping: "Seleziona per aggiornare la corrispondenza tra gli utenti Redmine e quelli presenti nel log del repository.\nGli utenti Redmine e repository con lo stesso username o email sono mappati automaticamente."
permission_edit_own_messages: Modifica propri messaggi
permission_delete_own_messages: Elimina propri messaggi
+label_user_activity: "%s's activity"
diff --git a/lang/ja.yml b/lang/ja.yml
index 8d106bf64..3e9240330 100644
--- a/lang/ja.yml
+++ b/lang/ja.yml
@@ -693,3 +693,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/ko.yml b/lang/ko.yml
index 65a5f4434..b3cc59793 100644
--- a/lang/ko.yml
+++ b/lang/ko.yml
@@ -692,3 +692,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/lt.yml b/lang/lt.yml
index 535f0416b..2e2018f47 100644
--- a/lang/lt.yml
+++ b/lang/lt.yml
@@ -694,3 +694,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/nl.yml b/lang/nl.yml
index f138fc89b..216f238f6 100644
--- a/lang/nl.yml
+++ b/lang/nl.yml
@@ -694,3 +694,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/no.yml b/lang/no.yml
index db4a320d2..6cde8edc6 100644
--- a/lang/no.yml
+++ b/lang/no.yml
@@ -693,3 +693,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/pl.yml b/lang/pl.yml
index 64457b5fb..01025a686 100644
--- a/lang/pl.yml
+++ b/lang/pl.yml
@@ -711,3 +711,4 @@ text_user_wrote: '%s napisał:'
text_wiki_destroy_confirmation: Jesteś pewien, że chcesz usunąć to wiki i całą jego zawartość ?
text_workflow_edit: Zaznacz rolę i typ zagadnienia do edycji przepływu
+label_user_activity: "%s's activity"
diff --git a/lang/pt-br.yml b/lang/pt-br.yml
index b6fdf9d02..7083d9680 100644
--- a/lang/pt-br.yml
+++ b/lang/pt-br.yml
@@ -693,3 +693,4 @@ label_example: Exemplo
text_repository_usernames_mapping: "Seleciona ou atualiza os usuários do Redmine mapeando para cada usuário encontrado no log do repositório.\nUsuários com o mesmo login ou email no Redmine e no repositório serão mapeados automaticamente."
permission_edit_own_messages: Editar próprias mensagens
permission_delete_own_messages: Excluir próprias mensagens
+label_user_activity: "%s's activity"
diff --git a/lang/pt.yml b/lang/pt.yml
index 604f5dad1..1ada0675b 100644
--- a/lang/pt.yml
+++ b/lang/pt.yml
@@ -694,3 +694,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/ro.yml b/lang/ro.yml
index 6527442e2..f3a59b20d 100644
--- a/lang/ro.yml
+++ b/lang/ro.yml
@@ -692,3 +692,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/ru.yml b/lang/ru.yml
index 24b580d49..a96b5cadb 100644
--- a/lang/ru.yml
+++ b/lang/ru.yml
@@ -725,3 +725,4 @@ text_user_mail_option: "Для невыбранных проектов, Вы б
text_user_wrote: '%s написал(а):'
text_wiki_destroy_confirmation: Вы уверены, что хотите удалить данную Wiki и все ее содержимое?
text_workflow_edit: Выберите роль и трекер для редактирования последовательности состояний
+label_user_activity: "%s's activity"
diff --git a/lang/sk.yml b/lang/sk.yml
index 2237be519..09a5f6b5c 100644
--- a/lang/sk.yml
+++ b/lang/sk.yml
@@ -698,3 +698,4 @@ label_example: Príklad
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
+label_user_activity: "%s's activity"
diff --git a/lang/sr.yml b/lang/sr.yml
index fdfa411d2..702dad7a2 100644
--- a/lang/sr.yml
+++ b/lang/sr.yml
@@ -693,3 +693,4 @@ setting_gravatar_enabled: Use Gravatar user icons
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
text_repository_usernames_mapping: "Select or update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
+label_user_activity: "%s's activity"
diff --git a/lang/sv.yml b/lang/sv.yml
index b50fc0c42..8c9b6f6ef 100644
--- a/lang/sv.yml
+++ b/lang/sv.yml
@@ -693,3 +693,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/th.yml b/lang/th.yml
index 129982dfa..3611b790c 100644
--- a/lang/th.yml
+++ b/lang/th.yml
@@ -695,3 +695,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/tr.yml b/lang/tr.yml
index ba9b4b625..8b6ccc6c9 100644
--- a/lang/tr.yml
+++ b/lang/tr.yml
@@ -693,3 +693,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/uk.yml b/lang/uk.yml
index 3934e9ad2..b84392c16 100644
--- a/lang/uk.yml
+++ b/lang/uk.yml
@@ -694,3 +694,4 @@ label_example: Example
text_repository_usernames_mapping: "Select ou update the Redmine user mapped to each username found in the repository log.\nUsers with the same Redmine and repository username or email are automatically mapped."
permission_edit_own_messages: Edit own messages
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/vn.yml b/lang/vn.yml
index d1885d9b4..ecdfba533 100644
--- a/lang/vn.yml
+++ b/lang/vn.yml
@@ -695,3 +695,4 @@ permission_delete_own_messages: Xóa bài viết cá nhân
label_example: Ví dụ
text_repository_usernames_mapping: "Chọn hoặc cập nhật ánh xạ người dùng hệ thống với người dùng trong kho lưu trữ.\nNhững trường hợp trùng hợp về tên và email sẽ được tự động ánh xạ."
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lang/zh-tw.yml b/lang/zh-tw.yml
index cdc54176c..879e47ca3 100644
--- a/lang/zh-tw.yml
+++ b/lang/zh-tw.yml
@@ -694,3 +694,4 @@ default_activity_development: 開發
enumeration_issue_priorities: 項目優先權
enumeration_doc_categories: 文件分類
enumeration_activities: 活動 (時間追蹤)
+label_user_activity: "%s's activity"
diff --git a/lang/zh.yml b/lang/zh.yml
index 6c0499010..9159974c5 100644
--- a/lang/zh.yml
+++ b/lang/zh.yml
@@ -695,3 +695,4 @@ enumeration_issue_priorities: 问题优先级
enumeration_doc_categories: 文档类别
enumeration_activities: 活动(时间跟踪)
permission_delete_own_messages: Delete own messages
+label_user_activity: "%s's activity"
diff --git a/lib/redmine/activity/fetcher.rb b/lib/redmine/activity/fetcher.rb
index b12caa441..1d0bd8a16 100644
--- a/lib/redmine/activity/fetcher.rb
+++ b/lib/redmine/activity/fetcher.rb
@@ -48,8 +48,16 @@ module Redmine
end
# Sets the scope
+ # Argument can be :all, :default or an array of event types
def scope=(s)
- @scope = s & event_types
+ case s
+ when :all
+ @scope = event_types
+ when :default
+ default_scope!
+ else
+ @scope = s & event_types
+ end
end
# Resets the scope to the default scope
diff --git a/test/functional/projects_controller_test.rb b/test/functional/projects_controller_test.rb
index 1b36a9d6b..d1810b3d4 100644
--- a/test/functional/projects_controller_test.rb
+++ b/test/functional/projects_controller_test.rb
@@ -203,6 +203,24 @@ class ProjectsControllerTest < Test::Unit::TestCase
}
end
+ def test_user_activity
+ get :activity, :user_id => 2
+ assert_response :success
+ assert_template 'activity'
+ assert_not_nil assigns(:events_by_day)
+
+ assert_tag :tag => "h3",
+ :content => /#{3.day.ago.to_date.day}/,
+ :sibling => { :tag => "dl",
+ :child => { :tag => "dt",
+ :attributes => { :class => /issue/ },
+ :child => { :tag => "a",
+ :content => /#{Issue.find(1).subject}/,
+ }
+ }
+ }
+ end
+
def test_activity_atom_feed
get :activity, :format => 'atom'
assert_response :success