プロジェクト

全般

プロフィール

TipsOriginalImage » 履歴 » バージョン 5

Mitsuyoshi Yoshida, 2011/06/27 01:24

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