活動ページにプラグインの履歴を表示する¶
- Table of contents
- 活動ページにプラグインの履歴を表示する
Hudson プラグインを例にとり、プラグインの履歴を表示する方法を紹介します。
準備するもの¶
- 履歴の名前
- 履歴を管理するクラス
Hudson の場合は、
- 履歴の名前: hudson
- 履歴を管理するクラス: HudsonBuild (ビルドを活動の履歴としたいので)
としました。
サイドバーに表示される履歴の名前に、自分のプラグインを追加する¶
1. init.rb で活動ページに参加することを宣言する¶
以下のコードを Redmine::Plugin.register の中に追加します。
activity_provider :[履歴の名前], :class_name => '[履歴を管理するクラス]', :default => false
Hudson の場合は以下のようになります。
default => false は、サイドバーのチェックボックスの状態で、最初表示した時にはチェックされないことを意味します。
activity_provider :hudson, :class_name => 'HudsonBuild', :default => false
2. 権限に view_[履歴の名前] を追加する¶
活動の履歴では権限をチェックします。
現在ログインしているユーザが履歴を閲覧してよいかどうかは、 view_[履歴の名前]権限が許されているかどうか に依存します。
Hudsonプラグインで言うと、履歴の種類が hudson なので、 view_hudson 権限が必要です。
init.rb に記述する権限に view_hudson がないと、権限なしとみなされてサイドバーに履歴の名前が表示されません。
project_module :hudson do
# パーミッション設定。
permission :view_hudson, {:hudson => [:index, :history]} # !!ここ大事!!
permission :build_hudson, {:hudson => [:build]}, :require => :member
permission :edit_hudson_settings, {:hudson_settings => [:edit, :joblist]}
end
3. 言語ファイルに label_[履歴の名前]_plural というエントリを追加する¶
サイドバーに表示する用語は、 label_[履歴の名前]_plural に統一されています。
Hudsonだと label_hudson_plural ですね。
言語ファイルに登録しておかないと label_hudson_plural が表示されるという、格好悪いことになります。
履歴を表示する¶
1. 履歴を管理するクラスに、 project, author のプロパティを用意する¶
履歴を表示する際に、 project, author のプロパティが必要となります。
HudsonBuild には project, author がなかったので、
- project => 親のjobから借りてくる
- author => でっちあげる(caused_by という列を用意して、Redmine Admin(user_id=1)が起動したことにする)
ことにしました。
2. 履歴を管理するクラスに、acts_as_event を追加する¶
コードを参考に追加してみてください。
acts_as_event :title => Proc.new {|o| "#{l(:label_build)} #{o.job.name} #{o.number}: #{o.result}"},
:description => "",
:datetime => :finished_at
:title | 表題に利用されます |
:description | 詳細…斜体で表示されている部分に利用されます |
:datetime | 発生した日時に利用されます |
Proc.new は自分的にはおまじない…(^^; o が表示対象のオブジェクトと考えれば大丈夫なはず。
3. 履歴を管理するクラスに、acts_as_activity_provider を追加する¶
同じくコードを参考に…。
acts_as_activity_provider :type => 'hudson',
:timestamp => "#{HudsonBuild.table_name}.finished_at",
:author_key => "#{HudsonBuild.table_name}.caused_by",
:find_options => {:include => {:job => :project}}
:type | 履歴の名前にあわせましょう |
:timestamp | 発生した日時を表す列 |
:find_options | 多分ですが、プロジェクトを探す方法 |
:find_options ですが、例で言うと、HudsonBuild から job(HudsonJob)をたどって、project(Project)を探してくださいという意味になります。
Updated by Mitsuyoshi Yoshida about 12 years ago · 2 revisions