项目

通用

个人资料

操作

关于 Redmine 插件的常见问题

本页旨在记录如何在 Redmine 插件中实现简单的事情。

确定模块是否启用

如果您的项目位于 @project 变量中

if @project.module_enabled?("<module_name>")

首先,模块 是一个项目级别的概念。所以请确保在操作项目级别的动作中执行此检查。Redmine 核心通常使用名为 find_projectbefore_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 来源:RE: 如何从插件中获取配置变量

检索 Redmine 设置值

Redmine 将应用设置值存储在数据库中。这包括任何插件设置。要从插件交互(获取/设置)这些设置值,Redmine 自动为 Setting 模型上的每个设置提供 getter 和 setter 方法,形式为 Setting.some_setting_nameSetting.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 并显示一条关于不支持版本的错误消息。

查看 requires_redmine_plugin 方法的使用示例...

Mischa The Evil 更新 近3年 前 · 8次修订