summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/controllers/issues_controller.rb5
-rw-r--r--app/helpers/issues_helper.rb2
-rw-r--r--app/views/issues/_form.rhtml4
-rw-r--r--app/views/issues/bulk_edit.rhtml4
-rw-r--r--app/views/issues/show.rhtml4
-rw-r--r--app/views/projects/settings/_members.rhtml8
-rw-r--r--lib/redmine/plugin.rb77
7 files changed, 49 insertions, 55 deletions
diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb
index 75b0c7945..7d36ce88d 100644
--- a/app/controllers/issues_controller.rb
+++ b/app/controllers/issues_controller.rb
@@ -233,9 +233,8 @@ class IssuesController < ApplicationController
issue.start_date = params[:start_date] unless params[:start_date].blank?
issue.due_date = params[:due_date] unless params[:due_date].blank?
issue.done_ratio = params[:done_ratio] unless params[:done_ratio].blank?
- if Redmine::Plugin::Hook.hook_registered?(:issue_bulk_edit_save)
- Redmine::Plugin::Hook.call_hook(:issue_bulk_edit_save, {:params => params, :issue => issue })
- end
+
+ Redmine::Plugin::Hook::Manager.call_hook(:issue_bulk_edit_save, {:params => params, :issue => issue })
# Don't save any change to the issue if the user is not authorized to apply the requested status
if (status.nil? || (issue.status.new_status_allowed_to?(status, current_role, issue.tracker) && issue.status = status)) && issue.save
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 5b1330b6e..009947424 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -87,7 +87,7 @@ module IssuesHelper
label = l(:label_attachment)
end
- Redmine::Plugin::Hook.call_hook(:issues_helper_show_details, {:detail => detail, :label => label, :value => value, :old_value => old_value })
+ Redmine::Plugin::Hook::Manager.call_hook(:issues_helper_show_details, {:detail => detail, :label => label, :value => value, :old_value => old_value })
label ||= detail.prop_key
value ||= detail.value
diff --git a/app/views/issues/_form.rhtml b/app/views/issues/_form.rhtml
index f933a7c35..cdff2e45c 100644
--- a/app/views/issues/_form.rhtml
+++ b/app/views/issues/_form.rhtml
@@ -48,8 +48,6 @@
<p><label><%=l(:label_attachment_plural)%></label><%= render :partial => 'attachments/form' %></p>
<% end %>
-<% if Redmine::Plugin::Hook.hook_registered?(:issue_edit) %>
- <%= Redmine::Plugin::Hook.call_hook(:issue_edit, {:project => @project, :issue => @issue, :form => f }) %>
-<% end %>
+<%= Redmine::Plugin::Hook::Manager.call_hook(:issue_edit, {:project => @project, :issue => @issue, :form => f }) %>
<%= wikitoolbar_for 'issue_description' %>
diff --git a/app/views/issues/bulk_edit.rhtml b/app/views/issues/bulk_edit.rhtml
index 92a340a93..e001e0d87 100644
--- a/app/views/issues/bulk_edit.rhtml
+++ b/app/views/issues/bulk_edit.rhtml
@@ -38,9 +38,7 @@
<label><%= l(:field_done_ratio) %>:
<%= select_tag 'done_ratio', options_for_select([[l(:label_no_change_option), '']] + (0..10).to_a.collect {|r| ["#{r*10} %", r*10] }) %></label>
</p>
-<% if Redmine::Plugin::Hook.hook_registered?(:issue_bulk_edit) %>
- <%= Redmine::Plugin::Hook.call_hook(:issue_bulk_edit, {:project => @project, :issue => @issues }) %>
-<% end %>
+<%= Redmine::Plugin::Hook::Manager.call_hook(:issue_bulk_edit, {:project => @project, :issue => @issues }) %>
</fieldset>
<fieldset><legend><%= l(:field_notes) %></legend>
diff --git a/app/views/issues/show.rhtml b/app/views/issues/show.rhtml
index f72ac6d24..88421862c 100644
--- a/app/views/issues/show.rhtml
+++ b/app/views/issues/show.rhtml
@@ -53,9 +53,7 @@
<%end
end %>
</tr>
-<% if Redmine::Plugin::Hook.hook_registered?(:issue_show) %>
- <%= Redmine::Plugin::Hook.call_hook(:issue_show, {:project => @project, :issue => @issue}) %>
-<% end %>
+<%= Redmine::Plugin::Hook::Manager.call_hook(:issue_show, {:project => @project, :issue => @issue}) %>
</table>
<hr />
diff --git a/app/views/projects/settings/_members.rhtml b/app/views/projects/settings/_members.rhtml
index 0ebe3285f..7f894dfba 100644
--- a/app/views/projects/settings/_members.rhtml
+++ b/app/views/projects/settings/_members.rhtml
@@ -9,9 +9,7 @@
<thead>
<th><%= l(:label_user) %></th>
<th><%= l(:label_role) %></th>
- <% if Redmine::Plugin::Hook.hook_registered?(:project_member_list_header) %>
- <%= Redmine::Plugin::Hook.call_hook(:project_member_list_header, {:project => @project }) %>
- <% end %>
+ <%= Redmine::Plugin::Hook::Manager.call_hook(:project_member_list_header, {:project => @project }) %>
<th style="width:15%"></th>
</thead>
<tbody>
@@ -27,9 +25,7 @@
<% end %>
<% end %>
</td>
- <% if Redmine::Plugin::Hook.hook_registered?(:project_member_list_column_three) %>
- <%= Redmine::Plugin::Hook.call_hook(:project_member_list_column_three, {:project => @project, :member => member }) %>
- <% end %>
+ <%= Redmine::Plugin::Hook::Manager.call_hook(:project_member_list_column_three, {:project => @project, :member => member }) %>
<td align="center">
<%= link_to_remote l(:button_delete), { :url => {:controller => 'members', :action => 'destroy', :id => member},
diff --git a/lib/redmine/plugin.rb b/lib/redmine/plugin.rb
index 3a0375bb1..2366c49ff 100644
--- a/lib/redmine/plugin.rb
+++ b/lib/redmine/plugin.rb
@@ -118,7 +118,7 @@ module Redmine #:nodoc:
end
def add_hook(hook_name, method)
- Redmine::Plugin::Hook.add_listener(hook_name, method)
+ Redmine::Plugin::Hook::Manager.add_listener(hook_name, method)
end
# Returns +true+ if the plugin can be configured.
@@ -128,51 +128,56 @@ module Redmine #:nodoc:
# TODO: Doc
class Hook
-
- # Hooks and the procs added
- @@hooks = {
- :issue_show => [],
- :issue_edit => [],
- :issue_bulk_edit => [],
- :issue_bulk_edit_save => [],
- :issue_update => [],
- :project_member_list_header => [],
- :project_member_list_column_three => [],
- :issues_helper_show_details => []
- }
+ class Manager
+ # Hooks and the procs added
+ @@hooks = {
+ :issue_show => [],
+ :issue_edit => [],
+ :issue_bulk_edit => [],
+ :issue_bulk_edit_save => [],
+ :issue_update => [],
+ :project_member_list_header => [],
+ :project_member_list_column_three => [],
+ :issues_helper_show_details => []
+ }
- cattr_reader :hooks
+ cattr_reader :hooks
- class << self
+ class << self
- # TODO: Doc
- def valid_hook?(hook_name)
- return @@hooks.has_key?(hook_name)
- end
+ # 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}"
+ # 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
- end
- # TODO: Doc
- def call_hook(hook_name, context = { })
- response = ''
- @@hooks[hook_name.to_sym].each do |method|
- response += method.call(context)
+ # TODO: Doc
+ def call_hook(hook_name, context = { })
+ response = ''
+ @@hooks[hook_name.to_sym].each do |method|
+ response += method.call(context)
+ end
+ response
end
- response
- end
- # TODO: Doc
- def hook_registered?(hook_name)
- return @@hooks[hook_name.to_sym].size > 0
+ # TODO: Doc
+ def hook_registered?(hook_name)
+ return @@hooks[hook_name.to_sym].size > 0
+ end
end
end
-
+
+ # Default class for Hooks to subclass
+ class Base
+
+ end
end
end
end