diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 4b2ec8317..f327dd5b6 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -1,5 +1,5 @@ -# redMine - project management software -# Copyright (C) 2006-2007 Jean-Philippe Lang +# Redmine - project management software +# Copyright (C) 2006-2008 Jean-Philippe Lang # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License @@ -31,6 +31,10 @@ class AccountController < ApplicationController @memberships = @user.memberships.select do |membership| membership.project.is_public? || (User.current.member_of?(membership.project)) end + + events = Redmine::Activity::Fetcher.new(User.current, :author => @user).events(nil, nil, :limit => 10) + @events_by_day = events.group_by(&:event_date) + rescue ActiveRecord::RecordNotFound render_404 end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 248704609..5995187d7 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -105,6 +105,18 @@ module ApplicationHelper @time_format ||= (Setting.time_format.blank? ? l(:general_fmt_time) : Setting.time_format) include_date ? local.strftime("#{@date_format} #{@time_format}") : local.strftime(@time_format) end + + def format_activity_title(text) + h(truncate_single_line(text, 100)) + end + + def format_activity_day(date) + date == Date.today ? l(:label_today).titleize : format_date(date) + end + + def format_activity_description(text) + h(truncate(text.to_s, 250).gsub(%r{<(pre|code)>.*$}m, '...')) + end def distance_of_date_in_words(from_date, to_date = 0) from_date = from_date.to_date if from_date.respond_to?(:to_date) diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index cd2e743fe..6f5e03349 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -21,18 +21,6 @@ module ProjectsHelper link_to h(version.name), { :controller => 'versions', :action => 'show', :id => version }, options end - def format_activity_title(text) - h(truncate_single_line(text, 100)) - end - - def format_activity_day(date) - date == Date.today ? l(:label_today).titleize : format_date(date) - end - - def format_activity_description(text) - h(truncate(text.to_s, 250).gsub(%r{<(pre|code)>.*$}m, '...')) - end - def project_settings_tabs tabs = [{:name => 'info', :action => :edit_project, :partial => 'projects/edit', :label => :label_information_plural}, {:name => 'modules', :action => :select_project_modules, :partial => 'projects/settings/modules', :label => :label_module_plural}, diff --git a/app/models/attachment.rb b/app/models/attachment.rb index 95ba8491f..f838076c6 100644 --- a/app/models/attachment.rb +++ b/app/models/attachment.rb @@ -30,12 +30,14 @@ class Attachment < ActiveRecord::Base acts_as_activity_provider :type => 'files', :permission => :view_files, + :author_key => :author_id, :find_options => {:select => "#{Attachment.table_name}.*", :joins => "LEFT JOIN #{Version.table_name} ON #{Attachment.table_name}.container_type='Version' AND #{Version.table_name}.id = #{Attachment.table_name}.container_id " + "LEFT JOIN #{Project.table_name} ON #{Version.table_name}.project_id = #{Project.table_name}.id"} acts_as_activity_provider :type => 'documents', :permission => :view_documents, + :author_key => :author_id, :find_options => {:select => "#{Attachment.table_name}.*", :joins => "LEFT JOIN #{Document.table_name} ON #{Attachment.table_name}.container_type='Document' AND #{Document.table_name}.id = #{Attachment.table_name}.container_id " + "LEFT JOIN #{Project.table_name} ON #{Document.table_name}.project_id = #{Project.table_name}.id"} diff --git a/app/models/changeset.rb b/app/models/changeset.rb index dd38ce757..759d240df 100644 --- a/app/models/changeset.rb +++ b/app/models/changeset.rb @@ -34,6 +34,7 @@ class Changeset < ActiveRecord::Base :date_column => 'committed_on' acts_as_activity_provider :timestamp => "#{table_name}.committed_on", + :author_key => :user_id, :find_options => {:include => {:repository => :project}} validates_presence_of :repository_id, :revision, :committed_on, :commit_date diff --git a/app/models/issue.rb b/app/models/issue.rb index 4701e41f1..7488850af 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -42,7 +42,8 @@ class Issue < ActiveRecord::Base acts_as_event :title => Proc.new {|o| "#{o.tracker.name} ##{o.id}: #{o.subject}"}, :url => Proc.new {|o| {:controller => 'issues', :action => 'show', :id => o.id}} - acts_as_activity_provider :find_options => {:include => [:project, :author, :tracker]} + acts_as_activity_provider :find_options => {:include => [:project, :author, :tracker]}, + :author_key => :author_id validates_presence_of :subject, :description, :priority, :project, :tracker, :author, :status validates_length_of :subject, :maximum => 255 diff --git a/app/models/journal.rb b/app/models/journal.rb index 71a51290b..72e7eb91c 100644 --- a/app/models/journal.rb +++ b/app/models/journal.rb @@ -33,6 +33,7 @@ class Journal < ActiveRecord::Base acts_as_activity_provider :type => 'issues', :permission => :view_issues, + :author_key => :user_id, :find_options => {:include => [{:issue => :project}, :details, :user], :conditions => "#{Journal.table_name}.journalized_type = 'Issue' AND" + " (#{JournalDetail.table_name}.prop_key = 'status_id' OR #{Journal.table_name}.notes <> '')"} diff --git a/app/models/message.rb b/app/models/message.rb index 9a313e822..acb300f46 100644 --- a/app/models/message.rb +++ b/app/models/message.rb @@ -32,7 +32,8 @@ class Message < ActiveRecord::Base :url => Proc.new {|o| {:controller => 'messages', :action => 'show', :board_id => o.board_id}.merge(o.parent_id.nil? ? {:id => o.id} : {:id => o.parent_id, :anchor => "message-#{o.id}"})} - acts_as_activity_provider :find_options => {:include => [{:board => :project}, :author]} + acts_as_activity_provider :find_options => {:include => [{:board => :project}, :author]}, + :author_key => :author_id acts_as_watchable attr_protected :locked, :sticky diff --git a/app/models/news.rb b/app/models/news.rb index 969b37a0d..5949a731b 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -26,7 +26,8 @@ class News < ActiveRecord::Base acts_as_searchable :columns => ['title', "#{table_name}.description"], :include => :project acts_as_event :url => Proc.new {|o| {:controller => 'news', :action => 'show', :id => o.id}} - acts_as_activity_provider :find_options => {:include => [:project, :author]} + acts_as_activity_provider :find_options => {:include => [:project, :author]}, + :author_key => :author_id # returns latest news for projects visible by user def self.latest(user = User.current, count = 5) diff --git a/app/models/wiki_content.rb b/app/models/wiki_content.rb index 4a4c5c270..e958e7b24 100644 --- a/app/models/wiki_content.rb +++ b/app/models/wiki_content.rb @@ -37,6 +37,7 @@ class WikiContent < ActiveRecord::Base acts_as_activity_provider :type => 'wiki_edits', :timestamp => "#{WikiContent.versioned_table_name}.updated_on", + :author_key => "#{WikiContent.versioned_table_name}.author_id", :permission => :view_wiki_edits, :find_options => {:select => "#{WikiContent.versioned_table_name}.updated_on, #{WikiContent.versioned_table_name}.comments, " + "#{WikiContent.versioned_table_name}.#{WikiContent.version_column}, #{WikiPage.table_name}.title, " + diff --git a/app/views/account/show.rhtml b/app/views/account/show.rhtml index 175a11c75..e7b0276f7 100644 --- a/app/views/account/show.rhtml +++ b/app/views/account/show.rhtml @@ -4,6 +4,7 @@
<%= mail_to(h(@user.mail)) unless @user.pref.hide_mail %>
<%=l(:label_reported_issues)%>: <%= Issue.count(:conditions => ["author_id=?", @user.id]) %>
+ +