專案

一般

個人資料

動作

Redmine 外掛常見問題

本頁面旨在說明如何在 Redmine 外掛中完成簡單的操作。

判斷模組是否已啟用

如果您的專案在 @project 變數中

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

首先,*模組* 是專案層級的概念。因此,請確保在專案層級操作的動作中進行此項檢查。Redmine 核心通常使用名為 find_projectbefore_filter 來尋找標準動作中的當前專案,並將其填入 @project 變數中。

Redmine 2.3.x 中可用的模組包括:看板、日曆、文件、檔案、甘特圖、議題追蹤、新聞、版本庫、工時追蹤、Wiki。每個外掛都可以新增自己的模組(請參閱新增「投票」模組的 外掛教學)。

變更頁面佈局

變更頁面佈局是透過覆寫其視圖來完成的。Redmine 將其視圖儲存在 app/views/ 中。若要使用外掛變更頁面的視圖,請先將視圖從 app/views/ 複製到 plugins/your_plugin/app/views/,然後修改檔案。

如果多個外掛覆寫同一個視圖,則最後載入的外掛將會是顯示其視圖的外掛。如果您在尋找需要覆寫的視圖時遇到問題,請檢查 config/routes.rb 並尋找與您嘗試修改的頁面的網址相符的模式。這可能會幫助您找到正確的方向。

取得 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.某個設定名稱Setting.某個設定名稱 = "某個值" 的形式自動提供 getter 和 setter 方法。

範例

  • 透過呼叫以下指令來取得內部(Redmine 核心)「歡迎文字」設定的值:
    Setting.welcome_text
    
  • 透過呼叫以下指令來取得「通知預設值」設定的值,如投票外掛「提供」的設定,並記載於外掛教學中:
    Setting.plugin_polls['notification_default']
    

不建議從外掛手動修改(設定)設定值。請改為透過提供的 UI 設定這些值。

要求特定 Redmine 版本

有時外掛需要 Redmine 核心實作的特定功能,或者外掛會覆寫特定檢視,這需要您控制外掛可以在哪些(特定)Redmine 版本上安裝,以確保所需的 Redmine 核心可用。這樣可以防止許多與外掛相容性相關的問題。

以上內容可以透過使用 requires_redmine 方法來完成(請參閱 source:/trunk/lib/redmine/plugin.rb@19983#L227)。使用此方法提供了一種簡單、可靠的方法來建立需要特定 Redmine 版本的外掛,並在未滿足版本需求時設定為停止 Redmine 並顯示有關不支援版本的訊息。

注意:請勿將帶有「分支後綴」(stable/devel)的 Redmine 版本號傳遞給 requires_redmine;這是不支援的。請參閱 #35345 以瞭解關於此問題的討論。

檢視 requires_redmine 方法的使用範例...

要求特定 Redmine 外掛版本

有時外掛需要另一個 Redmine 外掛中實作的特定功能,甚至需要另一個外掛特定版本中實作的功能,這需要您在安裝外掛之前控制其所依賴的相依性,以確保所需的 Redmine 外掛(版本)可用。這樣可以防止許多與(內部)外掛相容性相關的問題。

以上內容可以透過使用 requires_redmine_plugin 方法來完成(請參閱 source:/trunk/lib/redmine/plugin.rb@19983#L274)。使用此方法提供了一種簡單、可靠的方法來建立需要特定 Redmine 外掛(版本)的外掛,並在未滿足版本需求時設定為停止 Redmine 並顯示有關不支援版本的訊息。

檢視 requires_redmine_plugin 方法的使用範例...

Mischa The Evil將近 3 年前 更新 · 8 個版本