Patch by Pavel Rosický. git-svn-id: http://svn.redmine.org/redmine/trunk@20148 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/4.2.0
acts_as_activity_provider :type => 'files', | acts_as_activity_provider :type => 'files', | ||||
:permission => :view_files, | :permission => :view_files, | ||||
:author_key => :author_id, | :author_key => :author_id, | ||||
:scope => select("#{Attachment.table_name}.*"). | |||||
:scope => proc { | |||||
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 " + | 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 OR ( #{Attachment.table_name}.container_type='Project' AND #{Attachment.table_name}.container_id = #{Project.table_name}.id )") | "LEFT JOIN #{Project.table_name} ON #{Version.table_name}.project_id = #{Project.table_name}.id OR ( #{Attachment.table_name}.container_type='Project' AND #{Attachment.table_name}.container_id = #{Project.table_name}.id )") | ||||
} | |||||
acts_as_activity_provider :type => 'documents', | acts_as_activity_provider :type => 'documents', | ||||
:permission => :view_documents, | :permission => :view_documents, | ||||
:author_key => :author_id, | :author_key => :author_id, | ||||
:scope => select("#{Attachment.table_name}.*"). | |||||
:scope => proc { | |||||
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 " + | 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") | "LEFT JOIN #{Project.table_name} ON #{Document.table_name}.project_id = #{Project.table_name}.id") | ||||
} | |||||
cattr_accessor :storage_path | cattr_accessor :storage_path | ||||
@@storage_path = Redmine::Configuration['attachments_storage_path'] || File.join(Rails.root, "files") | @@storage_path = Redmine::Configuration['attachments_storage_path'] || File.join(Rails.root, "files") |
acts_as_activity_provider :timestamp => "#{table_name}.committed_on", | acts_as_activity_provider :timestamp => "#{table_name}.committed_on", | ||||
:author_key => :user_id, | :author_key => :user_id, | ||||
:scope => preload(:user, {:repository => :project}) | |||||
:scope => proc { preload(:user, {:repository => :project}) } | |||||
validates_presence_of :repository_id, :revision, :committed_on, :commit_date | validates_presence_of :repository_id, :revision, :committed_on, :commit_date | ||||
validates_uniqueness_of :revision, :scope => :repository_id | validates_uniqueness_of :revision, :scope => :repository_id |
acts_as_event :title => Proc.new {|o| "#{l(:label_document)}: #{o.title}"}, | acts_as_event :title => Proc.new {|o| "#{l(:label_document)}: #{o.title}"}, | ||||
:author => Proc.new {|o| o.attachments.reorder("#{Attachment.table_name}.created_on ASC").first.try(:author) }, | :author => Proc.new {|o| o.attachments.reorder("#{Attachment.table_name}.created_on ASC").first.try(:author) }, | ||||
:url => Proc.new {|o| {:controller => 'documents', :action => 'show', :id => o.id}} | :url => Proc.new {|o| {:controller => 'documents', :action => 'show', :id => o.id}} | ||||
acts_as_activity_provider :scope => preload(:project) | |||||
acts_as_activity_provider :scope => proc { preload(:project) } | |||||
validates_presence_of :project, :title, :category | validates_presence_of :project, :title, :category | ||||
validates_length_of :title, :maximum => 255 | validates_length_of :title, :maximum => 255 |
:url => Proc.new {|o| {:controller => 'issues', :action => 'show', :id => o.id}}, | :url => Proc.new {|o| {:controller => 'issues', :action => 'show', :id => o.id}}, | ||||
:type => Proc.new {|o| 'issue' + (o.closed? ? '-closed' : '')} | :type => Proc.new {|o| 'issue' + (o.closed? ? '-closed' : '')} | ||||
acts_as_activity_provider :scope => preload(:project, :author, :tracker, :status), | |||||
acts_as_activity_provider :scope => proc { preload(:project, :author, :tracker, :status) }, | |||||
:author_key => :author_id | :author_key => :author_id | ||||
DONE_RATIO_OPTIONS = %w(issue_field issue_status) | DONE_RATIO_OPTIONS = %w(issue_field issue_status) |
acts_as_activity_provider :type => 'issues', | acts_as_activity_provider :type => 'issues', | ||||
:author_key => :user_id, | :author_key => :user_id, | ||||
:scope => preload({:issue => :project}, :user). | |||||
:scope => proc { | |||||
preload({:issue => :project}, :user). | |||||
joins("LEFT OUTER JOIN #{JournalDetail.table_name} ON #{JournalDetail.table_name}.journal_id = #{Journal.table_name}.id"). | joins("LEFT OUTER JOIN #{JournalDetail.table_name} ON #{JournalDetail.table_name}.journal_id = #{Journal.table_name}.id"). | ||||
where("#{Journal.table_name}.journalized_type = 'Issue' AND" + | where("#{Journal.table_name}.journalized_type = 'Issue' AND" + | ||||
" (#{JournalDetail.table_name}.prop_key = 'status_id' OR #{Journal.table_name}.notes <> '')").distinct | " (#{JournalDetail.table_name}.prop_key = 'status_id' OR #{Journal.table_name}.notes <> '')").distinct | ||||
} | |||||
before_create :split_private_notes | before_create :split_private_notes | ||||
after_create_commit :send_notification | after_create_commit :send_notification |
end) | end) | ||||
} | } | ||||
acts_as_activity_provider :scope => preload({:board => :project}, :author), | |||||
acts_as_activity_provider :scope => proc { preload({:board => :project}, :author) }, | |||||
:author_key => :author_id | :author_key => :author_id | ||||
acts_as_watchable | acts_as_watchable | ||||
acts_as_searchable :columns => ['title', 'summary', "#{table_name}.description"], | acts_as_searchable :columns => ['title', 'summary', "#{table_name}.description"], | ||||
:preload => :project | :preload => :project | ||||
acts_as_event :url => Proc.new {|o| {:controller => 'news', :action => 'show', :id => o.id}} | acts_as_event :url => Proc.new {|o| {:controller => 'news', :action => 'show', :id => o.id}} | ||||
acts_as_activity_provider :scope => preload(:project, :author), | |||||
acts_as_activity_provider :scope => proc { preload(:project, :author) }, | |||||
:author_key => :author_id | :author_key => :author_id | ||||
acts_as_watchable | acts_as_watchable | ||||
acts_as_activity_provider :timestamp => "#{table_name}.created_on", | acts_as_activity_provider :timestamp => "#{table_name}.created_on", | ||||
:author_key => :user_id, | :author_key => :user_id, | ||||
:scope => joins(:project).preload(:project) | |||||
:scope => proc { joins(:project).preload(:project) } | |||||
validates_presence_of :author_id, :user_id, :activity_id, :project_id, :hours, :spent_on | validates_presence_of :author_id, :user_id, :activity_id, :project_id, :hours, :spent_on | ||||
validates_presence_of :issue_id, :if => lambda { Setting.timelog_required_fields.include?('issue_id') } | validates_presence_of :issue_id, :if => lambda { Setting.timelog_required_fields.include?('issue_id') } |
:timestamp => "#{table_name}.updated_on", | :timestamp => "#{table_name}.updated_on", | ||||
:author_key => "#{table_name}.author_id", | :author_key => "#{table_name}.author_id", | ||||
:permission => :view_wiki_edits, | :permission => :view_wiki_edits, | ||||
:scope => select("#{table_name}.updated_on, #{table_name}.comments, " + | |||||
:scope => proc { | |||||
select("#{table_name}.updated_on, #{table_name}.comments, " + | |||||
"#{table_name}.version, #{WikiPage.table_name}.title, " + | "#{table_name}.version, #{WikiPage.table_name}.title, " + | ||||
"#{table_name}.page_id, #{table_name}.author_id, " + | "#{table_name}.page_id, #{table_name}.author_id, " + | ||||
"#{table_name}.id"). | "#{table_name}.id"). | ||||
joins("LEFT JOIN #{WikiPage.table_name} ON #{WikiPage.table_name}.id = #{table_name}.page_id " + | joins("LEFT JOIN #{WikiPage.table_name} ON #{WikiPage.table_name}.id = #{table_name}.page_id " + | ||||
"LEFT JOIN #{Wiki.table_name} ON #{Wiki.table_name}.id = #{WikiPage.table_name}.wiki_id " + | "LEFT JOIN #{Wiki.table_name} ON #{Wiki.table_name}.id = #{WikiPage.table_name}.wiki_id " + | ||||
"LEFT JOIN #{Project.table_name} ON #{Project.table_name}.id = #{Wiki.table_name}.project_id") | "LEFT JOIN #{Project.table_name} ON #{Project.table_name}.id = #{Wiki.table_name}.project_id") | ||||
} | |||||
after_destroy :page_update_after_destroy | after_destroy :page_update_after_destroy | ||||
:url => Proc.new {|o| {:controller => 'meetings', :action => 'show', :id => o.id}} | :url => Proc.new {|o| {:controller => 'meetings', :action => 'show', :id => o.id}} | ||||
acts_as_activity_provider :timestamp => 'scheduled_on', | acts_as_activity_provider :timestamp => 'scheduled_on', | ||||
:scope => includes(:project), | |||||
:scope => proc { includes(:project) }, | |||||
:permission => nil | :permission => nil | ||||
end | end |
provider_options = activity_provider_options[event_type] | provider_options = activity_provider_options[event_type] | ||||
raise "#{self.name} can not provide #{event_type} events." if provider_options.nil? | raise "#{self.name} can not provide #{event_type} events." if provider_options.nil? | ||||
scope = (provider_options[:scope] || self) | |||||
scope = provider_options[:scope] | |||||
if !scope | |||||
scope = self | |||||
elsif scope.respond_to?(:call) | |||||
scope = scope.call | |||||
else | |||||
ActiveSupport::Deprecation.warn "acts_as_activity_provider with implicit :scope option is deprecated. Please pass a scope on the #{self.name} as a proc." | |||||
end | |||||
if from && to | if from && to | ||||
scope = scope.where("#{provider_options[:timestamp]} BETWEEN ? AND ?", from, to) | scope = scope.where("#{provider_options[:timestamp]} BETWEEN ? AND ?", from, to) |