Patch #1677 » hook.rb
1 |
module Redmine |
---|---|
2 |
module Hook |
3 |
HOOKS = %w(issue_show project_member_list_header project_member_list_row).collect {|h| h.to_sym} |
4 |
|
5 |
@@listener_classes = [] |
6 |
@@listeners = nil |
7 |
@@hook_listeners = {} |
8 |
|
9 |
class << self |
10 |
def add_listener(klass) |
11 |
@@listener_classes << klass |
12 |
end
|
13 |
|
14 |
def listeners |
15 |
@@listeners ||= @@listener_classes.collect {|listener| listener.instance} |
16 |
end
|
17 |
|
18 |
def hook_listeners(hook) |
19 |
@@hook_listeners[hook] ||= listeners.select {|listener| listener.respond_to?(hook)} |
20 |
end
|
21 |
|
22 |
def call_hook(hook, context={}) |
23 |
response = '' |
24 |
hook_listeners(hook).each do |listener| |
25 |
response << listener.send(hook, context).to_s |
26 |
end
|
27 |
response
|
28 |
end
|
29 |
end
|
30 |
|
31 |
class Listener |
32 |
include Singleton |
33 |
|
34 |
def self.inherited(child) |
35 |
Redmine::Hook.add_listener(child) |
36 |
super
|
37 |
end
|
38 |
end
|
39 |
|
40 |
class ViewExtensionListener < Listener |
41 |
include ERB::Util |
42 |
include ActionView::Helpers::TagHelper |
43 |
include ActionView::Helpers::FormHelper |
44 |
include ActionView::Helpers::FormTagHelper |
45 |
include ActionView::Helpers::FormOptionsHelper |
46 |
include ActionView::Helpers::JavaScriptHelper |
47 |
include ActionView::Helpers::PrototypeHelper |
48 |
include ActionView::Helpers::NumberHelper |
49 |
include ActionView::Helpers::UrlHelper |
50 |
include ActionController::UrlWriter |
51 |
include ApplicationHelper |
52 |
end
|
53 |
|
54 |
module Helper |
55 |
def call_hook(hook, context={}) |
56 |
Redmine::Hook.call_hook(hook, context) |
57 |
end
|
58 |
end
|
59 |
end
|
60 |
end
|
61 |
|
62 |
ApplicationHelper.send(:include, Redmine::Hook::Helper) |
63 |
|
- « Previous
- 1
- 2
- 3
- Next »