プロジェクト

全般

プロフィール

TipsOriginalImage » 履歴 » バージョン 1

Mitsuyoshi Yoshida, 2011/05/25 00:40

1 1 Mitsuyoshi Yoshida
2
h1. プラグイン独自のアイコンを使用する
3
4
前節でアイコンの使い方を説明しました。プラグインでアイコンを使いたい場合、テーマなどでアイコンも変えたりするので基本的にそれらの元から用意されているアイコンを使った方がいいのですが、望みのものがなくて自分で作ったものを使いたい時があります。その場合の方法も紹介します。
5
6
サンプルコード
7
* "表示":http://code.google.com/p/myoshida-rp/source/browse/trunk/Tips/#Tips%2Foriginal_image%2Fredmine_original_image
8
* "ダウンロード":http://code.google.com/p/myoshida-rp/downloads/detail?name=sample-orgimg.zip
9
10
プラグインを作る場合、まずスケルトンを生成すると思いますがそのとき @asset@ ディレクトリが出来ます。その構成は以下のようになってます
11
<pre>
12
asset
13
  ├ images
14
  ├ javascripts
15
  └ stylesheets
16
</pre>
17
プラグインで使いたい 画像、 javascript, css ファイルがある場合、それぞれの名前のディレクトリに格納します。 Redmine(Rails) は起動すると各プラグインの asset ディレクトリの中身を次のディレクトリにコピーします。
18
<pre>
19
    plugin_assets/プラグイン名
20
</pre>
21
プラグイン名というのは、プラグインのディレクトリ名であり、 init.rb の register メソッドで指定する名前です。この名前が一致していないとプラグインの画像ファイルなどが使えなくなるので、注意してください。
22
23
独自のアイコンを使いたい場合、まずアイコン画像とそれを使うための css ファイルを用意します。
24
サンプルでは @R@ と書いただけの簡単な画像とそれを icon-rimg というクラス名で定義した @bar.css@ を作っています。
25
26
で、そのアイコンを実際に使ってみます。
27
サンプルはアプリケーションメニューからただ表示するだけのページにしています。定義されたクラスを使うには css ファイルを html のヘッダタグ内で link を使った指定する必要があります。その部分は以下のようになります。
28
<pre>
29
<% content_for :header_tags do %>
30
<%= stylesheet_link_tag 'bar.css', :plugin => 'redmine_original_image' %>
31
<% end %>
32
</pre>
33
*content_for* はブロックの中身を第一引数で指定したところに挿入する rails のメソッドです。*:header_tags* でヘッダ内を指定したことになります。
34
そのブロック内で *stylesheet_link_tag* を使って css ファイルを指定します。このメソッドはスタイルシート用の link_to のようなもので、第一引数で css ファイル名を指定し、第二引数のオプションでプラグイン名を指定します。これでメソッド内で plugin_assets/... のパスを考えて link タグとして返してくれます。
35
36
この定義したクラスを使う例は次のようになります。
37
38
<pre><code class="html">
39
<span class='icon icon-rimg'> test1 </span> <br />
40
<%= link_to "test2", {:controller => :foo, :action => :show}, :class => 'icon icon-rimg' %>
41
</pre>
42