1 parent
5564dfbbd5
commit
404e6164cb
1 file changed
+51
@@ -117,9 +117,60 @@ module Redmine #:nodoc:
|
|||||||
@project_module = nil
|
@project_module = nil
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def add_hook(hook_name, method)
|
||||||
|
Redmine::Plugin::Hook.add_listener(hook_name, method)
|
||||||
|
end
|
||||||
|
|
||||||
# Returns +true+ if the plugin can be configured.
|
# Returns +true+ if the plugin can be configured.
|
||||||
def configurable?
|
def configurable?
|
||||||
settings && settings.is_a?(Hash) && !settings[:partial].blank?
|
settings && settings.is_a?(Hash) && !settings[:partial].blank?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
# TODO: Doc
|
||||||
|
class Hook
|
||||||
|
|
||||||
|
# Hooks and the procs added
|
||||||
|
@@hooks = {
|
||||||
|
:issue_show => [],
|
||||||
|
:issue_edit => [],
|
||||||
|
:issue_bulk_edit => [],
|
||||||
|
:issue_update => [],
|
||||||
|
:project_member_list_header => [],
|
||||||
|
:project_member_list_column_three => []
|
||||||
|
}
|
||||||
|
|
||||||
|
cattr_reader :hooks
|
||||||
|
|
||||||
|
class << self
|
||||||
|
|
||||||
|
# TODO: Doc
|
||||||
|
def valid_hook?(hook_name)
|
||||||
|
return @@hooks.has_key?(hook_name)
|
||||||
|
end
|
||||||
|
|
||||||
|
# TODO: Doc
|
||||||
|
def add_listener(hook_name, method)
|
||||||
|
if valid_hook?(hook_name)
|
||||||
|
@@hooks[hook_name.to_sym] << method
|
||||||
|
puts "Listener added for #{hook_name.to_s}"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
# TODO: Doc
|
||||||
|
def call_hook(hook_name, context = { })
|
||||||
|
response = ''
|
||||||
|
@@hooks[hook_name.to_sym].each do |method|
|
||||||
|
response += method.call(context)
|
||||||
|
end
|
||||||
|
response
|
||||||
|
end
|
||||||
|
|
||||||
|
# TODO: Doc
|
||||||
|
def hook_registered?(hook_name)
|
||||||
|
return @@hooks[hook_name.to_sym].size > 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
Reference in new issue
Block a user