关于 Redmine 插件的常见问题¶
本页旨在记录如何在 Redmine 插件中实现简单的事情。
确定模块是否启用¶
如果您的项目位于 @project
变量中
if @project.module_enabled?("<module_name>")
首先,模块 是一个项目级别的概念。所以请确保在操作项目级别的动作中执行此检查。Redmine 核心通常使用名为 find_project
的 before_filter
在标准动作中查找当前项目,该动作填充了 @project
变量。
截至 Redmine 2.3.x 版本的可用模块有:看板、日历、文档、文件、甘特图、问题跟踪、新闻、仓库、时间跟踪、维基。每个插件都可以添加自己的模块(请参阅 Plugin_Tutorial,它添加了一个“投票”模块)。
更改页面布局¶
更改页面布局是通过覆盖其视图来完成的。Redmine 将其视图存储在 app/views/
。要使用插件更改页面的视图,首先将视图从 app/views/
复制到 plugins/your_plugin/app/views/
,然后修改文件。
如果多个插件覆盖了相同的视图,则最后加载的插件将显示其视图。如果您难以确定需要覆盖的视图,请检查 config/routes.rb
并查找与您要修改的页面 URL 匹配的模式。这可能有助于您找到正确的方向。
检索 Redmine 应用配置值¶
Redmine 将应用配置值存储在名为 config/configuration.yml
的文件中。要从插件检索(获取)这些配置值,Redmine 提供了 getter 方法 []
,该方法是定义为 Redmine::Configuration
上的类方法。
示例1
考虑以下示例配置
email_delivery:
delivery_method: :smtp
smtp_settings:
address: "myaddress.com"
port: 25
domain: "mydomain.com"
然后可以通过调用以下方式检索 address
配置键的值
Redmine::Configuration['email_delivery']['smtp_settings'][:address]
1 来源:
检索 Redmine 设置值¶
Redmine 将应用设置值存储在数据库中。这包括任何插件设置。要从插件交互(获取/设置)这些设置值,Redmine 自动为 Setting
模型上的每个设置提供 getter 和 setter 方法,形式为 Setting.some_setting_name
和 Setting.some_setting_name = "some value"
。
示例
- 通过调用以下方式检索内部(Redmine 核心)'欢迎文本'设置的值
Setting.welcome_text
- 检索 'notification_default' 设置的值,该值由 Polls 插件“提供”,如插件教程中所述,通过调用
Setting.plugin_polls['notification_default']
不建议手动修改(设置)插件中的设置值。相反,请通过提供的UI设置这些值。
需要特定版本的 Redmine¶
有时插件需要 Redmine 核心中实现的具体功能,或者插件覆盖了特定的视图,这要求您控制插件可以安装的(特定)Redmine 版本,以确保所需的核心可用。这样可以防止许多关于插件兼容性的问题。
可以通过使用 requires_redmine
方法(见 源代码:/trunk/lib/redmine/plugin.rb@19983#L227)来实现上述功能。使用该方法提供了一种简单、可靠的方式来创建需要特定 Redmine 版本的插件,并设置在版本要求不满足时停止 Redmine 并显示一条关于不支持版本的错误消息。
注意:不要将带有 分支后缀(stable
/devel
)的 Redmine 版本号传递给 requires_redmine
;这不受支持。有关此问题的讨论,请参阅#35345。
查看 requires_redmine 方法的使用示例...
需要特定版本的 Redmine 插件¶
有时插件需要另一个 Redmine 插件中实现的具体功能,甚至可能需要另一个特定版本的插件中实现的功能,这要求您在安装插件之前控制其依赖关系,以确保所需的插件(版本)可用。这样可以防止许多关于(交互)插件兼容性的问题。
可以通过使用 requires_redmine_plugin
方法(见 源代码:/trunk/lib/redmine/plugin.rb@19983#L274)来实现上述功能。使用该方法提供了一种简单、可靠的方式来创建需要特定(Redmine 插件版本)的插件,并设置在版本要求不满足时停止 Redmine 并显示一条关于不支持版本的错误消息。
由 Mischa The Evil 更新 近3年 前 · 8次修订