Redmineのプラグインを作成するプロセスは、非常に不十分に文書化されています。 この記事の目的は、小さいながらも有用なプラグインを作成する際の成功体験について話すことで、このギャップを部分的に埋めることです。
重要な注意。 RedmineはRuby on Railsで記述されています。独自のプラグインを作成する予定がある場合は、これに備える必要があります:)
最初のタスク
当社では、Redmineをメインタスクトラッカーとして使用しています。 私はその長所と短所を考慮せず、タスクの変更で彼が送信する文字数にのみ焦点を当てます。 この「ノイズ」では、新しいタスクや重要なコメントが失われることがあります。
もちろん、開発者はこの点に関して多くの設定を提供しましたが、それらはかなり少ないです。 特定の変更の通知を構成できるようにしたいと思います。

タスクのステータスを「タスクが閉じられました」に変更することに関する通知は、特に迷惑でした。 開発者として、彼らは私にとって重要ではありません。 タスクに改善がある場合、タスクに再び「新規」のステータスが割り当てられ、何らかのコメントが書き込まれ、通知を受け取って解決に進みます。
このような手紙のメールにフィルターを構成できます(言う)が、プロセスのすべての参加者(実行者、作成者、オブザーバー)にこれらの通知を調整できる独自のプラグインを作成する方がはるかに興味深いものでした。
そのため、タスク:「タスクが閉じられたときに通知しない」設定をユーザーのアカウントに追加するプラグインを作成します。
ソリューションの説明
プラグインのテンプレートの作成は省略しますが、これについては
redmine.orgの 対応するセクションで詳しく説明されています。
「自分で行った変更について通知しない」のようなチェックマークを追加します。 これを行うには、
\ app \ views \ users \ _mail_notifications.html.erbテンプレートをプラグインにコピーし、必要なhtmlコードを追加します。
これはあまり正しくありませんが、ユーザーフォームへの標準的なフック
:view_users_formは、間違った場所にチェックボックスを表示します。 Redmineは新しいバージョンごとにますます多くの
フックをサポートしていますが、それらは常に不十分であり、この場合も例外ではありません。
次に、3つのメソッドを「パッチ」します。これは、ユーザーadminを作成および編集し、アカウントページで編集します。 これらのメソッドにもフックはありません。そのため、「箱から出してすぐに
使えるフック」である
alias_methodと
alias_method_chainが助けになりました。 彼らの仕事の論理は、チェーンの名前、リンクメソッド、リンクメソッドから明らかです。
コントローラーアカウントは、
アカウントメソッドである
my_controllerコントローラーを担当し
ます 。 プラグイン
\ lib \ patch \ my_controller_patch.rbのサブディレクトリにファイルを作成して、
パッチを適用します。module Patches module MyControllerPatch def self.included(base)
同様に、管理者による作成と編集。
次に、通知を受け取るユーザーのリストを作成するときに設定値を読み取る必要があります。
問題モデル、
受信者メソッド、および
watcher_recipientsがこれを担当し、それらを
\ lib \ patch \ issue_patch.rbにコピーして、自分で変更します。
module Patches module IssuePatch def self.included(base) … base.class_eval do unloadable
そして残された最も重要なことは、パッチを接続することです。 プラグインのルートである
init.rbファイルに、次を追加します。
/ vendor / plugins /フォルダーにプラグインをインストールし、redmineを再起動します。 これで、通知を管理できるようになり、不要なメールを受信しなくなりました。 したがって、Redmineのメソッドの動作を変更し、作業を自動化および促進する独自のプラグインを作成できます。
ソースへのリンク
https://github.com/parshukovvv/redmine_notice