Changes between Version 1 and Version 2 of TracTicketsCustomFields
- Timestamp:
- May 13, 2012, 9:15:45 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
TracTicketsCustomFields
v1 v2 1 = カスタムチケット属性 = 2 Trac ではチケットにユーザ定義の属性を追加できます。カスタムチケット属性を使用すると、 定型で、プロジェクト特有のプロパティをチケットに持たせることができます。1 = カスタムチケット属性 = #CustomTicketFields 2 Trac ではチケットにユーザ定義の属性を追加できます。カスタムチケット属性を使用すると、型付けされた、プロジェクト特有のプロパティをチケットに持たせることができます。 3 3 4 == 設定方法 == 4 == 設定方法 == #Configuration 5 5 カスタムチケット属性を設定するためには、 [wiki:TracIni trac.ini] ファイルを変更します。カスタムフィールドは、 trac.ini ファイルの `[ticket-custom]` セクションに書く必要があります。 6 6 … … 13 13 構文の詳細は以下の例を見てください。 14 14 15 === 属性のタイプとオプション === 15 === 属性のタイプとオプション === #AvailableFieldTypesandOptions 16 16 * '''text''': シンプルな(1行の)テキスト。 17 17 * label: 説明となるラベル 18 18 * value: デフォルト値 19 * order: ソート時の並び順 (フォーム内での相対的位置を決定します。) 19 * order: ソート時の並び順 (全てのカスタムフィールドで共通するソートの並び順) 20 * format: 通常のテキストを指す `plain` もしくは WikiFormatting として整形を行う `wiki` のいずれかを指定する。 (''0.11.3 以降'') 20 21 * '''checkbox''': ブーリアン値をもつチェックボックス。 21 22 * label: 説明となるラベル。 … … 25 26 * label: 説明となるラベル。 26 27 * options: リストに表示する値を '''|''' (vertical pipe) 区切りで記述。 27 * value: デフォルト値 ( 0から始まるリスト内での番号) 。28 * value: デフォルト値 (options の値から一つを指定) 28 29 * order: ソート時の並び順 29 30 * '''radio''': ラジオボタン。 HTML の '''select''' 要素と同じ。 30 31 * label: 説明となるラベル。 31 32 * options: リストに表示する値を '''|''' (vertical pipe) 区切りで記述。 32 * value: デフォルト値 ( 0から始まるリスト内での番号) 。33 * value: デフォルト値 (options の値から一つを指定) 33 34 * order: ソート時の並び順 34 35 * '''textarea''': 複数行のテキストエリア。 … … 38 39 * rows: 入力領域の行数。 39 40 * order: ソート時の並び順 41 * format: 通常のテキストを指す `plain` もしくは WikiFormatting として整形を行う `wiki` のいずれかを指定する。 (''0.11.3 以降'') 40 42 41 === サンプル === 43 === サンプル === #SampleConfig 42 44 {{{ 43 45 [ticket-custom] … … 48 50 test_two = text 49 51 test_two.label = Another text-box 50 test_two.value = Just a default value 52 test_two.value = Default [mailto:joe@nospam.com owner] 53 test_two.format = wiki 51 54 52 55 test_three = checkbox … … 57 60 test_four.label = My selectbox 58 61 test_four.options = one|two|third option|four 59 test_four.value = 262 test_four.value = two 60 63 61 64 test_five = radio 62 65 test_five.label = Radio buttons are fun 63 66 test_five.options = uno|dos|tres|cuatro|cinco 64 test_five.value = 167 test_five.value = dos 65 68 66 69 test_six = textarea … … 73 76 ''Note: `select` タイプのフィールドを非必須 (optional) にしたい場合、 `フィールド名.options` オプションの先頭に `バーティカルパイプ (|)` を設定してください。'' 74 77 75 === カスタム属性を含むレポート === 78 === カスタム属性を含むレポート === #ReportsInvolvingCustomFields 76 79 77 カスタム 属性を含む TracReports では比較的 SQL を間違えやすいです。 `ticket_custom` 表の `JOIN` はカスタム属性ごとにそれぞれ必要です。80 カスタムチケット属性は `ticket` テーブルに保存されるのではなく、 `ticket_custom` テーブルに保存されます。したがって、レポートのカスタム属性を表示するためには `ticket` と `ticket_custom` の 2 テーブルを join する必要があります。 `progress` と設定されたカスタムチケット属性の使用例を示します。 78 81 79 以下の例は `progress` という名前のカスタム属性を含むレポートです: 82 {{{ 83 #!sql 84 SELECT p.value AS __color__, 85 id AS ticket, summary, owner, c.value AS progress 86 FROM ticket t, enum p, ticket_custom c 87 WHERE status IN ('assigned') AND t.id = c.ticket AND c.name = 'progress' 88 AND p.name = t.priority AND p.type = 'priority' 89 ORDER BY p.value 90 }}} 91 '''Note''' この例は progress が設定されたチケットだけを表示します。'''すべてのチケットを表示するのではありません。'''既にいくつかのチケットを作成した''後で''カスタムチケット属性を定義した場合、既に作成されたチケットにはカスタムチケット属性が定義されません。そのため上記のクエリではチケットが表示されないでしょう。既に作成されたチケットにカスタム属性を設定し直せば、カスタムチケット属性は定義されます。そして、上記のクエリによって表示されるでしょう。 92 93 しかし、すべてのチケットエントリを ( progress が定義されていないエントリーも一緒に ) 表示したいのであれば、クエリにおいてあらゆるカスタムフィールドに `JOIN` を使用する必要があります。 80 94 {{{ 81 95 #!sql … … 96 110 この `LEFT OUTER JOIN` ステートメントに特に注意してください。 97 111 112 === データベースを更新する === #Updatingthedatabase 113 114 上記に記述したとおり、カスタムフィールド設定以前に作成されたチケットには、該当するフィールドの値が定義されていない状態になります。以下のような SQL を Trac のデータベースで直接実行することで、カスタムフィールドの初期値を設定することができます (SQLite 向けの SQL ですので、 DBMS に応じて調整してください)。カスタムフィールド 'request_source' が存在しない、全てのチケットにデフォルト値 'None' が挿入されます: 115 116 {{{ 117 #!sql 118 INSERT INTO ticket_custom 119 (ticket, name, value) 120 SELECT 121 id AS ticket, 122 'request_source' AS name, 123 'None' AS value 124 FROM ticket 125 WHERE id NOT IN ( 126 SELECT ticket FROM ticket_custom 127 ); 128 }}} 129 130 複数のカスタムフィールドを追加している場合、 {{{ticket}}} 表への副問合わせで対象となるカスタムフィールドの名前を指定しなければなりません (訳注: 通常は上記の例ではなく、こちらを使うといいでしょう): 131 132 {{{ 133 #!sql 134 INSERT INTO ticket_custom 135 (ticket, name, value) 136 SELECT 137 id AS ticket, 138 'request_source' AS name, 139 'None' AS value 140 FROM ticket 141 WHERE id NOT IN ( 142 SELECT ticket FROM ticket_custom WHERE name = 'request_source' 143 ); 144 }}} 145 98 146 ---- 99 147 See also: TracTickets, TracIni