Changes between Version 1 and Version 2 of TracTicketsCustomFields


Ignore:
Timestamp:
2009/10/03 12:40:44 (14 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • TracTicketsCustomFields

    v1 v2  
    1 = カスタムチケット属性 = 
    2 Trac ではチケットにユーザ定義の属性を追加できます。カスタムチケット属性を使用すると、定型で、プロジェクト特有のプロパティをチケットに持たせることができます。 
     1= カスタムチケット属性 = #CustomTicketFields 
     2Trac ではチケットにユーザ定義の属性を追加できます。カスタムチケット属性を使用すると、型付けされた、プロジェクト特有のプロパティをチケットに持たせることができます。 
    33 
    4 == 設定方法 == 
     4== 設定方法 == #Configuration 
    55カスタムチケット属性を設定するためには、 [wiki:TracIni trac.ini] ファイルを変更します。カスタムフィールドは、 trac.ini ファイルの `[ticket-custom]` セクションに書く必要があります。 
    66 
     
    1313構文の詳細は以下の例を見てください。 
    1414 
    15 === 属性のタイプとオプション === 
     15=== 属性のタイプとオプション === #AvailableFieldTypesandOptions 
    1616 * '''text''': シンプルな(1行の)テキスト。 
    1717   * label: 説明となるラベル 
    1818   * value: デフォルト値 
    19    * order: ソート時の並び順 (フォーム内での相対的位置を決定します。) 
     19   * order: ソート時の並び順 (全てのカスタムフィールドで共通するソートの並び順) 
     20   * format: 通常のテキストを指す `plain` もしくは WikiFormatting として整形を行う `wiki` のいずれかを指定する。 (''0.11.3 以降'') 
    2021 * '''checkbox''': ブーリアン値をもつチェックボックス。 
    2122   * label: 説明となるラベル。 
     
    2526   * label: 説明となるラベル。 
    2627   * options: リストに表示する値を '''|''' (vertical pipe) 区切りで記述。 
    27    * value: デフォルト値 (0から始まるリスト内での番号) 。 
     28   * value: デフォルト値 (options の値から一つを指定) 
    2829   * order: ソート時の並び順 
    2930 * '''radio''': ラジオボタン。 HTML の '''select''' 要素と同じ。 
    3031   * label: 説明となるラベル。 
    3132   * options: リストに表示する値を '''|''' (vertical pipe) 区切りで記述。 
    32    * value: デフォルト値 (0から始まるリスト内での番号) 。 
     33   * value: デフォルト値 (options の値から一つを指定) 
    3334   * order: ソート時の並び順 
    3435 * '''textarea''': 複数行のテキストエリア。 
     
    3839   * rows: 入力領域の行数。 
    3940   * order: ソート時の並び順 
     41   * format: 通常のテキストを指す `plain` もしくは WikiFormatting として整形を行う `wiki` のいずれかを指定する。 (''0.11.3 以降'') 
    4042 
    41 === サンプル === 
     43=== サンプル === #SampleConfig 
    4244{{{ 
    4345[ticket-custom] 
     
    4850test_two = text 
    4951test_two.label = Another text-box 
    50 test_two.value = Just a default value 
     52test_two.value = Default [mailto:joe@nospam.com owner] 
     53test_two.format = wiki 
    5154 
    5255test_three = checkbox 
     
    5760test_four.label = My selectbox 
    5861test_four.options = one|two|third option|four 
    59 test_four.value = 2 
     62test_four.value = two 
    6063 
    6164test_five = radio 
    6265test_five.label = Radio buttons are fun 
    6366test_five.options = uno|dos|tres|cuatro|cinco 
    64 test_five.value = 1 
     67test_five.value = dos 
    6568 
    6669test_six = textarea 
     
    7376''Note: `select` タイプのフィールドを非必須 (optional) にしたい場合、 `フィールド名.options` オプションの先頭に `バーティカルパイプ (|)` を設定してください。'' 
    7477 
    75 === カスタム属性を含むレポート === 
     78=== カスタム属性を含むレポート === #ReportsInvolvingCustomFields 
    7679 
    77 カスタム属性を含む TracReports では比較的 SQL を間違えやすいです。 `ticket_custom` 表の `JOIN` はカスタム属性ごとにそれぞれ必要です。 
     80カスタムチケット属性は `ticket` テーブルに保存されるのではなく、 `ticket_custom` テーブルに保存されます。したがって、レポートのカスタム属性を表示するためには `ticket` と `ticket_custom` の 2 テーブルを join する必要があります。 `progress` と設定されたカスタムチケット属性の使用例を示します。 
    7881 
    79 以下の例は `progress` という名前のカスタム属性を含むレポートです: 
     82{{{ 
     83#!sql 
     84SELECT 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' 
     88AND p.name = t.priority AND p.type = 'priority' 
     89  ORDER BY p.value 
     90}}} 
     91'''Note''' この例は progress が設定されたチケットだけを表示します。'''すべてのチケットを表示するのではありません。'''既にいくつかのチケットを作成した''後で''カスタムチケット属性を定義した場合、既に作成されたチケットにはカスタムチケット属性が定義されません。そのため上記のクエリではチケットが表示されないでしょう。既に作成されたチケットにカスタム属性を設定し直せば、カスタムチケット属性は定義されます。そして、上記のクエリによって表示されるでしょう。 
     92 
     93しかし、すべてのチケットエントリを ( progress が定義されていないエントリーも一緒に ) 表示したいのであれば、クエリにおいてあらゆるカスタムフィールドに `JOIN` を使用する必要があります。 
    8094{{{ 
    8195#!sql 
     
    96110この `LEFT OUTER JOIN` ステートメントに特に注意してください。 
    97111 
     112=== データベースを更新する === #Updatingthedatabase 
     113 
     114上記に記述したとおり、カスタムフィールド設定以前に作成されたチケットには、該当するフィールドの値が定義されていない状態になります。以下のような SQL を Trac のデータベースで直接実行することで、カスタムフィールドの初期値を設定することができます (SQLite 向けの SQL ですので、 DBMS に応じて調整してください)。カスタムフィールド 'request_source' が存在しない、全てのチケットにデフォルト値 'None' が挿入されます: 
     115 
     116{{{ 
     117#!sql 
     118INSERT 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 
     134INSERT 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 
    98146---- 
    99147See also: TracTickets, TracIni