;]
[askyou.git] / lib / redmine / activity.rb
blob565a53f365bedf3924f0447a591dbf5954612f17
1 # Redmine - project management software
2 # Copyright (C) 2006-2008  Jean-Philippe Lang
4 # This program is free software; you can redistribute it and/or
5 # modify it under the terms of the GNU General Public License
6 # as published by the Free Software Foundation; either version 2
7 # of the License, or (at your option) any later version.
8
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18 module Redmine
19   module Activity
20   
21     mattr_accessor :available_event_types, :default_event_types, :providers
22     
23     @@available_event_types = []
24     @@default_event_types = []
25     @@providers = Hash.new {|h,k| h[k]=[] }
27     class << self
28       def map(&block)
29         yield self
30       end
31       
32       # Registers an activity provider
33       def register(event_type, options={})
34         options.assert_valid_keys(:class_name, :default)
35         
36         event_type = event_type.to_s
37         providers = options[:class_name] || event_type.classify
38         providers = ([] << providers) unless providers.is_a?(Array)
39         
40         @@available_event_types << event_type unless @@available_event_types.include?(event_type)
41         @@default_event_types << event_type unless options[:default] == false
42         @@providers[event_type] += providers
43       end
44     end
45   end
46 end