如何在 Redmine 项目设置中添加新的设置选项卡?
How can I add a new setting tab into the Redmine project settings?
我创建了一个插件。我想将它的任何设置添加到项目设置中。我想在 redmine 项目设置中创建一个包含我的设置的新选项卡。我用的是redmine 3.1.0.devel版本。我能为此做什么?
更新:
这是我在@General Failure 的帮助下创建的代码
require 'projects_helper'
module ProjectsHelperPatch
def self.included(base)
base.send(:include, InstanceMethods)
base.send(:include, ApplicationHelper)
base.class_eval do
unloadable
alias_method_chain :project_settings_tabs, :sph
end
end
module InstanceMethods
def project_settings_tabs_with_sph
abort('asdasd')
tabs = project_settings_tabs_without_sph
tabs.push({ :name => 'some_name',
:action => :some_action,
:partial => 'projects/settings/some_page',
:label => :label_some_label })
return tabs
end
end
end
ProjectsHelper.send:包括,ProjectsHelperPatch
init.rb:
require_relative '../../plugins/sph/app/patches/controllers/projects_helper_patch'
但是它的代码不起作用。为什么?
您可以修补 ProjectsHelper
class 并将 alias_method_chain 添加到 project_settings_tabs
方法,请参阅 Redmine 论坛的 topic。
在:partial => 'projects/settings/some_page'
中,部分值是您在插件中视图的相对路径,也必须添加到routes.rb
。
如果您还有任何问题,请在评论中提问。
更新:
我的 Redmine 补丁(没有添加设置选项卡,只是补丁示例):
require_dependency 'issues_controller'
module IssuesControllerPatch
def self.included(base) # :nodoc:
base.send(:include, InstanceMethods)
base.send(:include, ApplicationHelper) # You can use helpers in patches
base.class_eval do
unloadable # Send unloadable so it will not be unloaded in development
alias_method_chain :new, :patch
end
end
module InstanceMethods
def new_with_patch
my_action # my code
new_without_land_using # call original method
end
end
end
end
IssuesController.send :include, IssuesControllerPatch
和init.rb
行:
require 'patches/controllers/issues_controller_patch'
我创建了一个插件。我想将它的任何设置添加到项目设置中。我想在 redmine 项目设置中创建一个包含我的设置的新选项卡。我用的是redmine 3.1.0.devel版本。我能为此做什么?
更新:
这是我在@General Failure 的帮助下创建的代码
require 'projects_helper'
module ProjectsHelperPatch
def self.included(base)
base.send(:include, InstanceMethods)
base.send(:include, ApplicationHelper)
base.class_eval do
unloadable
alias_method_chain :project_settings_tabs, :sph
end
end
module InstanceMethods
def project_settings_tabs_with_sph
abort('asdasd')
tabs = project_settings_tabs_without_sph
tabs.push({ :name => 'some_name',
:action => :some_action,
:partial => 'projects/settings/some_page',
:label => :label_some_label })
return tabs
end
end
end
ProjectsHelper.send:包括,ProjectsHelperPatch
init.rb:
require_relative '../../plugins/sph/app/patches/controllers/projects_helper_patch'
但是它的代码不起作用。为什么?
您可以修补 ProjectsHelper
class 并将 alias_method_chain 添加到 project_settings_tabs
方法,请参阅 Redmine 论坛的 topic。
在:partial => 'projects/settings/some_page'
中,部分值是您在插件中视图的相对路径,也必须添加到routes.rb
。
如果您还有任何问题,请在评论中提问。
更新:
我的 Redmine 补丁(没有添加设置选项卡,只是补丁示例):
require_dependency 'issues_controller'
module IssuesControllerPatch
def self.included(base) # :nodoc:
base.send(:include, InstanceMethods)
base.send(:include, ApplicationHelper) # You can use helpers in patches
base.class_eval do
unloadable # Send unloadable so it will not be unloaded in development
alias_method_chain :new, :patch
end
end
module InstanceMethods
def new_with_patch
my_action # my code
new_without_land_using # call original method
end
end
end
end
IssuesController.send :include, IssuesControllerPatch
和init.rb
行:
require 'patches/controllers/issues_controller_patch'