From 04434cd6efa5665a983a2b8acde20b898fcf28c0 Mon Sep 17 00:00:00 2001 From: Eric Davis Date: Tue, 10 Jun 2008 15:08:44 -0700 Subject: [PATCH] Changed Hook API to use a Manager class. #1296 --- app/controllers/issues_controller.rb | 5 +- app/helpers/issues_helper.rb | 2 +- app/views/issues/_form.rhtml | 4 +- app/views/issues/bulk_edit.rhtml | 4 +- app/views/issues/show.rhtml | 4 +- app/views/projects/settings/_members.rhtml | 8 +-- lib/redmine/plugin.rb | 77 ++++++++++++---------- 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 @@

<%= render :partial => 'attachments/form' %>

<% 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 @@

-<% 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 }) %>
<%= l(:field_notes) %> 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 %> -<% 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}) %>
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 @@ <%= l(:label_user) %> <%= l(:label_role) %> - <% 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 }) %> @@ -27,9 +25,7 @@ <% end %> <% end %> - <% 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 }) %> <%= 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 -- 2.39.5