diff --git a/lib/redmine/activity.rb b/lib/redmine/activity.rb index 144ce95ed..565a53f36 100644 --- a/lib/redmine/activity.rb +++ b/lib/redmine/activity.rb @@ -30,14 +30,6 @@ module Redmine end # Registers an activity provider - # - # Options: - # * :class_name - one or more model(s) that provide these events (inferred from event_type by default) - # * :default - setting this option to false will make the events not displayed by default - # - # Examples: - # register :issues - # register :myevents, :class_name => 'Meeting' def register(event_type, options={}) options.assert_valid_keys(:class_name, :default) diff --git a/lib/redmine/plugin.rb b/lib/redmine/plugin.rb index 36632c13e..cf6c194a2 100644 --- a/lib/redmine/plugin.rb +++ b/lib/redmine/plugin.rb @@ -116,6 +116,32 @@ module Redmine #:nodoc: self.instance_eval(&block) @project_module = nil end + + # Registers an activity provider. + # + # Options: + # * :class_name - one or more model(s) that provide these events (inferred from event_type by default) + # * :default - setting this option to false will make the events not displayed by default + # + # A model can provide several activity event types. + # + # Examples: + # register :news + # register :scrums, :class_name => 'Meeting' + # register :issues, :class_name => ['Issue', 'Journal'] + # + # Retrieving events: + # Associated model(s) must implement the find_events class method. + # ActiveRecord models can use acts_as_activity_provider as a way to implement this class method. + # + # The following call should return all the scrum events visible by current user that occured in the 5 last days: + # Meeting.find_events('scrums', User.current, 5.days.ago, Date.today) + # Meeting.find_events('scrums', User.current, 5.days.ago, Date.today, :project => foo) # events for project foo only + # + # Note that :view_scrums permission is required to view these events in the activity view. + def activity_provider(*args) + Redmine::Activity.register(*args) + end # Returns +true+ if the plugin can be configured. def configurable?