プロジェクト

全般

プロフィール

GuideSampleSpec » 履歴 » バージョン 2

Mitsuyoshi Yoshida, 2011/06/26 00:12

1 1 Mitsuyoshi Yoshida
h1. サンプルプラグインの仕様
2
3
まず、説明に使うサンプルをどんなプラグインにするか考えてみましょう。
4
5
h2. プラグインのタイプ
6
7
プラグインのタイプは大きく分けて 2 つのタイプが考えられます。
8
9
# チケットや文書といった既存のもの以外のデータを管理、表示できるようにする
10
# Redmine の既存の機能を拡張する
11
12
1 番目は FAQ や 用語集といった新たなデータを扱えるようにするプラグインで、 2 番目は wiki のコードハイライトのタイプを増やしたり、 CSV からチケットを一斉に登録したりといったプラグインがこれにあたります。
13
14
新たなデータの管理するプラグインは基本的な Rails アプリの構造と同じ構造になります。このタイプのプラグインが作れるようになれば、Rails アプリの基本構造を理解できると思います。 そこで、サンプルとしては 1 のタイプにします。 また、2 のタイプは内容によってはかなり Redmine の中身を知っておく必要があるのでが、Rails アプリの基本構造がわかれば Redmine のソースも読みやすくなり、2 のタイプ作成にも役立つと思います。
15
16
Rails アプリの構造と同じになるといっても作りようにようっては結構変わってくるので、Redmine のチケットなどを参考にしてなるべく標準的なものにしましょう。ただ、サンプルなので分かりやすいように機能を削って簡単なものにします。
17
18
19
h2. 呼び出しメニュー
20
21 2 Mitsuyoshi Yoshida
まず、プラグインを使うには、プラグインの機能をどこからか呼び出す必要があります。Redmine ではこの機能を呼び出すためのメニューとして次の 4 つが用意されています。
22 1 Mitsuyoshi Yoshida
* トップメニュー
23
* アカウントメニュー
24
* プロジェクトメニュー
25
* アプリケーションメニュー
26
27
*トップメニュー* ページの一番上に表示されます。
28
*アカウントメニュー* は一番上の右側に表示されているメニューで [個人設定] などのメニュー項目があります。
29
*プロジェクトメニュー* はプロジェクトのタイトルのメニューの下に表示されているもので、プロジェクトを選択しているときに表示されます。
30
*アプリケーションメニュー* はプロジェクトメニューと同じところに表示され、プロジェクトを選択していないときだけ表示します。そのため、 [ホーム] や [マイページ] を表示していないと選択することが出来ません。
31
32
!menu_desc.png!
33
34
使いわけは以下のような感じになると思います。
35
|_. メニュー |_. 用途 |
36
| トップメニュー | Redmine 全体に対する機能で、プロジェクトに属さないデータを扱う |
37
| アカウントメニュー | 個人設定などのユーザ個人向けの機能 |
38
| プロジェクトメニュー | プロジェクト個別の機能 |
39
| アプリケーションメニュー | トップメニューと同じ用途だが、使いづらいのであまり使用されない |
40
41
チケットなどのように Redmine ではデータは基本的にプロジェクトごとに管理されています。
42
今回はなるべく標準ということでプロジェクトごとにデータを管理し、メニューもプロジェクトメニューに追加します。
43
44
45
h2. プラグインのアクション
46
47
サンプルのプラグインではチケットのように何らかのデータを表示、管理するものにしました。
48
49
チケットではまずチケットの一覧が表示されます。
50
一覧のリスト項目から一つ選ぶとチケットの詳細が表示され、そのチケットに対していろいろな編集などの操作が出来ます。
51
また、チケットの追加はよく使われるので、特に別のプロジェクトメニューになっていますが、他のニュース、文書などでは一覧画面の右上に新規作成のリンクがあることが多いです。プラグインでもそちらに新規追加のメニューをつけることにします。
52
53
Rails ではユーザから行われる操作をアクションと呼びます。サンプルに必要なアクションをまとめると次のような感じです。
54
* データ一覧表示
55
** データの新規作成
56
** 1 つのデータの詳細表示
57
*** データの編集
58
*** データの削除
59
60
61
h2. 必要な画面
62
63
このサンプルに必要な画面は次のものです。
64
* 一覧表示
65
* 新規作成
66
* 詳細表示
67
* 編集
68
69
必要な画面とアクションは基本的に対応するものですが、データの削除は今回はただ消すだけなので削除用のページは必要ないでしょう。
70
71
!view_transfer.png(画面遷移)!
72
73
74
h2. データの構成
75
76
プラグインに使うデータは特定の例にするのではなく、ちょっと抽象的なものを考えましょう。
77
78
データレコードの要素は、一覧表示と詳細表示が必要な最小の構成ということで以下の 2 つにします。
79
* 題名
80
* 説明
81
82
83
h2. アクセス制限
84
85
サンプルとしてなるべく機能は削って簡単なものにしたいところですが、ロールのアクセス権限を設定できるようにすることはセキュリティ上重要です。そのため、これはできるようにしておきます。最低限ということで次の 2 つにします。
86
* データの表示(一覧、詳細)
87
* データの管理(新規作成、編集、削除)
88
89
90
次回からこの決めた仕様でプラグインを実装していきます。
91
92
----
93
94
| [[プラグイン開発ガイド|^]] | [[GuideRails|<<]] | [[GuideSkeleton|>>]] |