Tips プラグイン設定画面 » 履歴 » バージョン 1
Mitsuyoshi Yoshida, 2011/05/29 01:58
1 | 1 | Mitsuyoshi Yoshida | |
---|---|---|---|
2 | h1. プラグインの設定画面を作る |
||
3 | |||
4 | プラグインでユーザが設定を変えられるようにしたいことがあります。 |
||
5 | Redmine ではその機能が用意されています。管理ページのプラグインリストのところででてくる [設定] のリンクから開くページです。 |
||
6 | このプラグインの設定ページの追加方法を紹介します。 |
||
7 | |||
8 | !plugin_settings.png! |
||
9 | |||
10 | |||
11 | h2. サンプルコード |
||
12 | |||
13 | * "表示":http://code.google.com/p/myoshida-rp/source/browse/#svn%2Ftrunk%2FTips%2Fmlist%2Fredmine_mailing_list_link |
||
14 | * "ダウンロード":http://code.google.com/p/myoshida-rp/downloads/detail?name=sample-mlist.zip |
||
15 | |||
16 | !sample_mlist.png! |
||
17 | |||
18 | h2. サンプルプラグインの準備 |
||
19 | |||
20 | サンプルはメーリングリストにリンクをはる wiki マクロにします。 |
||
21 | 他の Tips で [[TipsWikiMacro|wikipedia の用語にリンクをはるサンプル]] を紹介しました。 wikipedia はアドレスが固定だったので、アドレスをハードコーディングしてもかまわなかったのですが、メーリングリストはユーザごとにアドレスを変える必要があります。これを設定画面で変更できるようにしています。 |
||
22 | |||
23 | まずはプラグイン名を MailingListLink にしてスケルトンを作成します。今回のプラグインではこのうち init.rb と app/views のディレクトリのみ使います。 |
||
24 | その後 Redmine::Plugin.register の description などを適当に変更しておきます。 |
||
25 | |||
26 | |||
27 | h2. 設定を追加する |
||
28 | |||
29 | それではプラグイン用の設定を追加していきましょう。 |
||
30 | |||
31 | 設定ですから、データベースに値を保存する必要があります。しかし、プラグインの設定の保存は Redmine が自動的にやってくれるので、特にプラグイン側で設定用の Model などを用意する必要はありません。 |
||
32 | resister メソッドの中で *settings* メソッドを呼ぶだけで設定が保存できるようになります。 |
||
33 | |||
34 | <pre><code class="ruby"> |
||
35 | settings :default => { |
||
36 | 'mlist_view_string' => 'ruby-list#', |
||
37 | 'mlist_address' => 'http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/' |
||
38 | }, :partial => 'settings/mlist_settings' |
||
39 | </pre> |
||
40 | |||
41 | 設定はハッシュマップを使って指定します。 2, 3 行目が設定のパラメータを決めているところでハッシュの値はデフォルト値となります。ここではリンクの表示用の文字列とメーリングリストのアドレスをパラメータとしています。 |
||
42 | 4 行目の第 2 引数で設定ページを指定しています。 |
||
43 | |||
44 | デフォルト値は "Ruby のメーリングリスト":http://blade.nagaokaut.ac.jp/ruby/ruby-list/index.shtml にしています。 |
||
45 | |||
46 | |||
47 | h2. 設定ページを追加する |
||
48 | |||
49 | 設定用の model や controller は作る必要はありませんが、設定ページの view は作る必要があります。 |
||
50 | |||
51 | settings メソッドで 'settings/mlist_settings' と指定したので、以下の表示用のファイルを作成します。 |
||
52 | <pre> |
||
53 | app/views/settings/_mlist_settings.html.erb |
||
54 | </pre> |
||
55 | |||
56 | ファイルには設定するパラメータの設定フォームを記述します。 |
||
57 | |||
58 | <pre> |
||
59 | <p> |
||
60 | <table> |
||
61 | <tr><td> View string </td><td> |
||
62 | <%= text_field_tag('settings[mlist_view_string]', @settings['mlist_view_string'])%> |
||
63 | </td></tr> |
||
64 | <tr><td> Addrss </td><td> |
||
65 | <%= text_field_tag('settings[mlist_address]', @settings['mlist_address'], :size => 80)%> |
||
66 | </td></tr> |
||
67 | </table> |
||
68 | </p> |
||
69 | </pre> |
||
70 | |||
71 | 基本的に通常の設定フォームの中身を書く要領で自由に書いてかまいませんが、 submit ボタンなどは Redmine 側で書いてくれるので書く必要はありません。 |
||
72 | |||
73 | !mlist_settings.png! |
||
74 | |||
75 | |||
76 | h2. 設定値を使用する |
||
77 | |||
78 | 設定値を利用してメーリングリストの wiki マクロを作成します。設定値を利用する部分以外はほぼ wikipedia リンクのマクロと同じものです。 |
||
79 | |||
80 | <pre> |
||
81 | Redmine::WikiFormatting::Macros.register do |
||
82 | desc "Mailing list link macro" |
||
83 | macro :mlist do |obj, args| |
||
84 | if (args.size != 1) |
||
85 | raise "this macro is given only one argument." |
||
86 | else |
||
87 | word = args.first.strip |
||
88 | addr = Setting.plugin_redmine_mailing_list_link['mlist_address'] + CGI.escape(word) |
||
89 | viewstr = Setting.plugin_redmine_mailing_list_link['mlist_view_string'] + word |
||
90 | return link_to(viewstr, addr, :class => "external") |
||
91 | end |
||
92 | end |
||
93 | end |
||
94 | </pre> |
||
95 | |||
96 | *Setting.plugin_プラグイン名* で設定値のハッシュにアクセスできます。 |
||
97 | 8 行目で設定値のアドレスを使ってアドレスを決め、 9 行目で表示文字を作っています。 |
||
98 | |||
99 | できたプラグインを使ってみると以下のようになります。 |
||
100 | |||
101 | <pre> |
||
102 | * {{mlist(1)}} |
||
103 | </pre> |
||
104 | |||
105 | !mlist_sample.png! |