Redmine 外掛常見問題¶
本頁面旨在說明如何在 Redmine 外掛中完成簡單的操作。
判斷模組是否已啟用¶
如果您的專案在 @project
變數中
if @project.module_enabled?("<module_name>")
首先,*模組* 是專案層級的概念。因此,請確保在專案層級操作的動作中進行此項檢查。Redmine 核心通常使用名為 find_project
的 before_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 並顯示有關不支援版本的訊息。
由 Mischa The Evil 於 將近 3 年前 更新 · 8 個版本