VirtualBox

自定义工单字段

Trac 支持在工单模块中添加自定义的用户定义字段。通过自定义字段,您可以为工单添加类型化、站点特定的属性。

配置

在 trac.ini 的 [ticket-custom] 部分配置自定义工单字段。

每个字段定义的语法是

 FIELD_NAME = TYPE
 (FIELD_NAME.OPTION = VALUE)
 ...

下面的示例有助于解释其语法。

字段名称

字段名称只能包含小写字母 a-z、大写字母 A-Z 或数字 0-9,并且不能以数字开头。

以下字段名称为保留名称,不能用于自定义字段

  • cc
  • changetime
  • col
  • comment
  • component
  • desc
  • description
  • format
  • group
  • groupdesc
  • id
  • keywords
  • max
  • milestone
  • order
  • owner
  • page
  • priority
  • report
  • reporter
  • resolution
  • row
  • severity
  • status
  • summary
  • time
  • type
  • verbose
  • version

可用字段类型和选项

  • text: 一个简单的(单行)文本字段。
    • label: 描述性标签。
    • value: 默认值。
    • order: 相对于其他自定义字段的排序位置。
    • max_size: 允许的最大字符数(自 1.3.2 版起)。
    • format: 以下之一
      • plain 用于纯文本
      • wiki 用于 wiki 格式化的内容
      • reference 将内容视为可查询的值
      • list 将内容解释为以空格分隔的可查询值列表
  • checkbox: 一个布尔值复选框。
    • label: 描述性标签。
    • value: 默认值,0 或 1。
    • order: 排序位置。
  • select: 下拉选择框。使用值列表。
    • label: 描述性标签。
    • options: 值列表,以 | (竖线) 分隔。
    • value: 默认值(选项中的一个值)。
    • order: 排序位置。
  • radio: 单选按钮。本质上与 select 相同。
    • label: 描述性标签。
    • options: 值列表,以 | (竖线) 分隔。
    • value: 默认值,选项中的一个值。
    • order: 排序位置。
  • textarea: 多行文本区域。
    • label: 描述性标签。
    • value: 默认文本。
    • rows: 高度(行数)。
    • order: 排序位置。
    • max_size: 允许的最大字符数(自 1.3.2 版起)。
    • format: plain 用于纯文本,或 wiki 用于将内容解释为 WikiFormatting
  • time: 日期和时间选择器。(自 1.1.1 版起
    • label: 描述性标签。
    • value: 默认日期。
    • order: 排序位置。
    • format: 以下之一
      • relative 用于相对日期。
      • date 用于绝对日期。
      • datetime 用于绝对日期和时间值。

如果未指定 label,它将通过将自定义字段名称首字母大写并用空格替换下划线来创建。

使用 wiki 格式渲染 textarea 字段时会展开宏,但使用 wiki 格式渲染 text 字段时不会。

示例配置

[ticket-custom]

test_one = text
test_one.label = Just a text box

test_two = text
test_two.label = Another text-box
test_two.value = Default [mailto:joe@nospam.com owner]
test_two.format = wiki

test_three = checkbox
test_three.label = Some checkbox
test_three.value = 1

test_four = select
test_four.label = My selectbox
test_four.options = one|two|third option|four
test_four.value = two

test_five = radio
test_five.label = Radio buttons are fun
test_five.options = |uno|dos|tres|cuatro|cinco
test_five.value = dos

test_six = textarea
test_six.label = This is a large textarea
test_six.value = Default text
test_six.cols = 60
test_six.rows = 30

test_seven = time
test_seven.label = A relative date
test_seven.format = relative
test_seven.value = now

test_eight = time
test_eight.label = An absolute date
test_eight.format = date
test_eight.value = yesterday

test_nine = time
test_nine.label = A date and time
test_nine.format = datetime
test_nine.value = in 2 hours

注意: 要使 select 类型字段可选,请在 fieldname.options 中指定一个开头的 |(例如 test_five)。

涉及自定义字段的报告

自定义工单字段存储在 ticket_custom 表中,而不是 ticket 表中。因此,要在报告中显示自定义字段的值,您需要对这两个表进行连接(join)。让我们以一个名为 progress 的自定义工单字段为例。

SELECT p.value AS __color__,
   id AS ticket, summary, owner, c.value AS progress
  FROM ticket t, enum p, ticket_custom c
  WHERE status IN ('assigned') AND t.id = c.ticket AND c.name = 'progress'
AND p.name = t.priority AND p.type = 'priority'
  ORDER BY p.value

注意: 这只会显示已设置进度的工单。这不等同于显示所有工单。如果您在已创建一些工单之后才创建此自定义工单字段,则这些工单将不会定义该字段,因此它们永远不会在此工单查询中显示。如果您返回并修改这些工单,该字段将被定义,并且它们将出现在查询中。

但是,如果您想显示所有工单条目(无论是否定义了进度),您需要为查询中的每个自定义字段使用 JOIN

SELECT p.value AS __color__,
   id AS ticket, summary, component, version, milestone, severity,
   (CASE status WHEN 'assigned' THEN owner||' *' ELSE owner END) AS owner,
   time AS created,
   changetime AS _changetime, description AS _description,
   reporter AS _reporter,
   (CASE WHEN c.value = '0' THEN 'None' ELSE c.value END) AS progress
  FROM ticket t
     LEFT OUTER JOIN ticket_custom c ON (t.id = c.ticket AND c.name = 'progress')
     JOIN enum p ON p.name = t.priority AND p.type='priority'
  WHERE status IN ('new', 'assigned', 'reopened')
  ORDER BY p.value, milestone, severity, time

特别注意这里的 LEFT OUTER JOIN 语句。

请注意,trac.ini 中的选项名称不区分大小写,因此即使您的选项名称包含大写字符

[ticket-custom]
Progress_Type = text

您必须在 SQL 中使用小写AND c.name = 'progress_type'


另请参阅:TracTickets, TracIni

上次修改 2 年前 上次修改时间:2023年06月02日 10:32:55 AM
注意: 查看 TracWiki 获取使用维基的帮助。

© 2025 Oracle 支持 隐私 / 请勿出售我的信息 使用条款 商标政策 自动化访问礼仪