TipsOriginalImage » History » Version 5
Mitsuyoshi Yoshida, 06/27/2011 01:24 AM
| 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 |