The following Jelly tag libraries are defined in this project.

Namespace URIDescription
/lib/form

/lib/form

/lib/hudson

/lib/hudson

/lib/test

/lib/test

/lib/hudson/project

Tag files used in project pages

/lib/layout

Tag library that defines the basic layout of Hudson pages.

/lib/hudson/newFromList

These tags provide a higher level primitive for building a form page for creating a new item from a list of descriptors.Used in "create new job" page, for an example.

/lib/form

/lib/form

This tag library is also available as an XML Schema

Tag NameDescription
advanced

Expandable section that shows "advanced..." button by default. Upon clicking it, a section unfolds, and the HTML rendered by the body of this tag appears.

apply

"Apply" button that submits the form but without a page transition. See hudson.util.FormApply for the server-side code.

block

Full-width space in the form table that can be filled with arbitrary HTML.

booleanRadio

Binds a boolean field to two radio buttons that say Yes/No OK/Cancel Top/Bottom.

breadcrumb-config-outline

Adds one more in-page breadcrumb that jumps to sections in the page. Put this tag right before <l:main-panel>

checkbox

<input type="checkbox"> tag that takes true/false for @checked, which is more Jelly friendly.

combobox

Editable drop-down combo box that supports the data binding and AJAX updates. Your descriptor should have the 'doFillXyzItems' method, which returns a ComboBoxModel representation of the items in your combo box, and your instance field should hold the current value.

description

Renders a row that shows description text below an input field.

descriptorList

Generate config pages from a list of Descriptors into a section.

descriptorRadioList

Generate config pages from a list of Descriptors into a section.

dropdownDescriptorSelector

Renders a single <select> control for choosing a Describable. Depending on the currently selected value, its config.jelly will be rendered below <select, allowing the user to configure Describable.

dropdownList

Foldable block expanded when the corresponding item is selected in the drop-down list.

dropdownListBlock

Foldable block expanded when the corresponding item is selected in the drop-down list.

editableComboBox

Editable drop-down combo box. Deprecated as of 1.356. Use f:combobox and databinding instead.

editableComboBoxValue

Used inside <f:editableComboBox/> to specify one value of a combobox. Normally one would use multiple values.

entry

An entry of the <f:form>, which is one logical row (that consists of several <TR> tags.

One entry normally host one control.

enum

Binds an enum field to a <select> element. The body of this tag is evaluated for each enum value, which is passed as 'it'.

enumSet

Binds a set of Enum to a list of checkboxes, each with the label taken from enum Enum.toString() Should be used inside an <f:entry field='...'> element.

expandableTextbox

single-line textbox that can be expanded into a multi-line textarea.

This control is useful for a field that expects multiple whitespaec-separated tokens (such as URLs, glob patterns, etc.) When the user only enters a few tokens, they can keep it as a single line to save space, but to enter a large number of values, this can be turned into textarea for better visibility.

If the initial value is already multi-line text, the control starts with textarea.

On the server side, your program is responsible for treating ' ', \t, \r, and \n for separators. (StringTokenizer would do this.)

form

Outer-most tag of the entire form taglib, that generates <form> element.

helpArea

Place holder to lazy-load help text via AJAX.

hetero-list

Outer most tag for creating a heterogeneous list, where the user can choose arbitrary number of arbitrary items from the given list of descriptors, and configure them independently.

The submission can be data-bound into List<T> where T is the common base type for the describable instances.

hetero-radio

Sibling of hetero-list, which only allows the user to pick one type from the list of descriptors and configure it.

invisibleEntry

Invisible <f:entry> type. Useful for adding hidden field values.

nested
number

Generates an input field to be used inside <f:entry/>

option

<option> tag for the <select> element that takes true/false for selected.

optionalBlock

Foldable block that can be expanded to show more controls by checking the checkbox.

optionalProperty

Renders inline an optional single-value nested data-bound property of the current instance, by using a <f:optionalBlock>

This is useful when your object composes another data-bound object, and when that's optional, where the absence of the value is signified as null (in which case the optionalBlock will be drawn unchecked), and the presence of the value.

password

Glorified <input type="password">

prepareDatabinding

Modifies the 'attrs.field' of the parent to inherit @field from the enclosing <f:entry> if available. Also computes the @checkUrl attribute.

property

Renders inline a single-value nested data-bound property of the current instance. This is useful when your object composes another data-bound object as a nested object, yet your UI would still like to render it

radio

<input type="radio"> tag that takes true/false for @checked, which is more Jelly friendly.

Note that safari doesn't support onchange.

radioBlock

on Radio button with a label that hides additional controls. When checked, those additional controls are displayed. This is useful for presenting mutually exclusive options, where each option comes with a sub-form that provides additional configuration.

readOnlyTextbox

Generates an input field to be used inside <f:entry/>

repeatable

Repeatable blocks used to present UI where the user can configure multiple entries of the same kind (see the Java installations configuration in the system config.)

This tag works like <j:forEach> and repeatedly evaluate the body so that initially all the items get their own copy. This tag also evaluate the body once more with var=null to create a 'master copy', which is the template entry used when a new copy is inserted.

HTML structure

this tag mainly produces the nested DIVs with CSS classes as follows:

      <div class="repeated-container">   // container for the whole thing
        <div class="repeated-chunk">
          ... copy 1 ...
        <div class="repeated-chunk">
          ... copy 2 ...
        ...
      

The 'repeated-chunk' DIVs will also have additional CSS classes that represent their positions among siblings:

first : first chunk among the siblings last : last chunk among the siblings middle: neither first nor last only : it is the only chunk (automatically get first and last at the same time)

Usage Note

The caller of this tag should define a button to add a new copy and delete the current copy. Such buttons should have 'repeatable-add' CSS class and 'repeatable-delete' CSS class respectively (it can have other CSS classes), so that their event handlers get properly wired up.

The positional CSS classes on 'repeated-chunk' DIVs (as explained above) can be used to control the visibility of such buttons. For example, this allows you to hide 'delete' button if there's only one item, or only show 'add' button on the last row. There are a few CSS classes already defined in style.css for this purpose.

repeatableDeleteButton

Delete button for the <repeatable> tag.

repeatableProperty

] Data-bound only version of <f:repeatable> that assumes the type pointed by the property is data-bound as well. The nested property type must be Describable and it needs to have config.jelly.

The nested configuration fragment normally needs to have a delete button by adding a fragment like this:

<f:entry title=""> <div align="right"> <f:repeatableDeleteButton /> </div> </f:entry>

richtextarea

Rich HTML editor from http://developer.yahoo.com/yui/editor/ All the attributes are those of the <textarea> tag.

rowSet

Adds @nameRef to all table rows inside this tag, so that when the form is submitted, it gets grouped in one JSON object.

section

Section header in the form table.

select

Glorified <select> control that supports the data binding and AJAX updates. Your descriptor should have the 'doFillXyzItems' method, which returns a ListBoxModel representation of the items in your drop-down list box, and your instance field should hold the current value.

slave-mode

listbox for choosing the slave's usage.

submit

Submit button themed by YUI. This should be always used instead of the plain <input tag.

textarea

<textarea> tag on steroids. The textarea will be rendered to fit the content. It also gets the resize handle.

textbox

Generates an input field to be used inside <f:entry/>

validateButton

See http://wiki.jenkins-ci.org/display/JENKINS/Jelly+form+controls for the reference.

withCustomDescriptorByName

Execute the body with a temporary currentDescriptorByNameUrl value

advanced

Expandable section that shows "advanced..." button by default. Upon clicking it, a section unfolds, and the HTML rendered by the body of this tag appears.

Attribute NameTypeDescription
align-

'left' or 'center' to align the button to left or center.

style-

Additional styles

title-

Caption of the button. By default "Advanced"

apply

"Apply" button that submits the form but without a page transition. See hudson.util.FormApply for the server-side code.

This tag does not accept any child elements/text.

block

Full-width space in the form table that can be filled with arbitrary HTML.

booleanRadio

Binds a boolean field to two radio buttons that say Yes/No OK/Cancel Top/Bottom.

Attribute NameTypeDescription
false-

Text to be displayed for the 'false' value. Defaults to 'No'.

field-

Databinding field.

true-

Text to be displayed for the 'true' value. Defaults to 'Yes'.

This tag does not accept any child elements/text.

breadcrumb-config-outline

Adds one more in-page breadcrumb that jumps to sections in the page. Put this tag right before <l:main-panel>

This tag does not accept any child elements/text.

checkbox

<input type="checkbox"> tag that takes true/false for @checked, which is more Jelly friendly.

Attribute NameTypeDescription
checked-
class-
default-

The default value of the check box, in case both @checked and @instance are null. If this attribute is unspecified or null, it defaults to unchecked, otherwise checked.

field-

Used for databinding. TBD.

id-
json-

Normally, the submitted JSON will be boolean indicating whether the checkbox was checked or not. This is sometimes inconvenient if you have a UI that lets user select a subset of a set. If this attribute is present, the submitted JSON will have this as a string value if the checkbox is checked, and none otherwise, making the subset selection easier.

name-
negative-
onclick-
title-

If specified, this human readable text will follow the checkbox, and clicking this text also toggles the checkbox.

value-

This tag does not accept any child elements/text.

combobox

Editable drop-down combo box that supports the data binding and AJAX updates. Your descriptor should have the 'doFillXyzItems' method, which returns a ComboBoxModel representation of the items in your combo box, and your instance field should hold the current value.

Attribute NameTypeDescription
clazz-

Additional CSS classes that the control gets.

field-

Used for databinding.

This tag does not accept any child elements/text.

description

Renders a row that shows description text below an input field.

descriptorList

Generate config pages from a list of Descriptors into a section.

Attribute NameTypeDescription
descriptors (required)-

hudson.model.Descriptor collection whose configuration page is rendered.

field-

Either @field or @instances are required (or @field needs to be inherited from the ancestor <entry> elemetn. If field is specified, instances are assumed to be instancefield.

When this attribute is specified, JSON structure is properly set up so that the databinding can set the field (or pass this collection as a constructor parameter of the same name.

This is more modern way of doing databinding, and thus preferred approach.

forceRowSet-

If specified, instead of a sequence of <f:optionalBlock>s, draw a sequence of <rowSet>s.

instances-

Map<Descriptor,Describable> that defines current instances of those descriptors. These are used to fill initial values. Other classes that define the get(Descriptor) method works fine, too, such as DescribableList.

targetType-

the type for which descriptors will be configured. default to ${it.class}

title-

Human readable title of the section to be rendered in HTML.

descriptorRadioList

Generate config pages from a list of Descriptors into a section.

Attribute NameTypeDescription
descriptors (required)-

hudson.model.Descriptor collection whose configuration page is rendered.

instance (required)-

The currently configured instance used to fill the initial values of the form.

targetType-

the type for which descriptors will be configured. default to ${it.class}

title (required)-

Human readable title of the section to be rendered in HTML.

varName (required)-

Used as a variable name as well as block name.

dropdownDescriptorSelector

Renders a single <select> control for choosing a Describable. Depending on the currently selected value, its config.jelly will be rendered below <select, allowing the user to configure Describable.

Attribute NameTypeDescription
default-

If specified, this will be chosen as the default value in case the current selection is null.

descriptors-

Collection that lists up all the valid candidate descriptors. If unspecified, inferred from the type of the field.

field (required)-

form field name. Used for databinding.

title (required)-

Human readable title of this control.

dropdownList

Foldable block expanded when the corresponding item is selected in the drop-down list.

Attribute NameTypeDescription
help-

Path to the inline help. See <f:entry help="..." />

name (required)-

name of the drop-down list.

title-

Human readable title text of this drop-down listbox. Shown in the same position as <f:entry title="..." />

dropdownListBlock

Foldable block expanded when the corresponding item is selected in the drop-down list.

Attribute NameTypeDescription
lazy-

If specified, the content of the dropdownListBlock will be rendered lazily when it first becomes visible. The attribute value must be the variables to be captured. See the @capture of <renderOnDemand> tag.

selectedboolean

is this value initially selected?

staplerClass-

provide hint for stapler data binding. typically set to ${descriptor.clazz.name} if dropdownList is for a list of descriptors.

title (required)-

human readable text displayed for this list item.

value (required)-

value of the list item. set to <option value="...">

editableComboBox

Editable drop-down combo box. Deprecated as of 1.356. Use f:combobox and databinding instead.

Attribute NameTypeDescription
clazz-

Additional CSS classes that the control gets.

field-

Used for databinding.

items-

List of possible values. Either this or nested <f:editableComboBoxValue/>s are required.

editableComboBoxValue

Used inside <f:editableComboBox/> to specify one value of a combobox. Normally one would use multiple values.

Attribute NameTypeDescription
value (required)-

This tag does not accept any child elements/text.

entry

An entry of the <f:form>, which is one logical row (that consists of several <TR> tags.

One entry normally host one control.

Attribute NameTypeDescription
description-

If it's not obvious to the user as to what the control expects, specify some description text (which currently gets rendered as small text under the control, but that may change.)

This text shouldn't get too long, and in recent Hudson, this feature is somewhat de-emphasized, in favor of the inline foldable help page specified via @help.

field-

Used for the databinding. TBD. When this attribute is specified, @help is inferred, and nested input controls don't need the @field nor @name.

help-

URL to the HTML page. When this attribute is specified, the entry gets a (?) icon on the right, and if the user clicks it, the contents of the given URL is rendered as a box below the entry.

The URL should return an HTML document wrapped in a <div> tag. The URL is interpreted to be rooted at the context path of Hudson, so it's normally something like "/plugin/foobar/help/abc.html".

title-

Name of the entry. Think of this like a label for the control.

enum

Binds an enum field to a <select> element. The body of this tag is evaluated for each enum value, which is passed as 'it'.

Attribute NameTypeDescription
field-

Used for databinding. TBD.

enumSet

Binds a set of Enum to a list of checkboxes, each with the label taken from enum Enum.toString() Should be used inside an <f:entry field='...'> element.

Attribute NameTypeDescription
field-

Used for databinding.

This tag does not accept any child elements/text.

expandableTextbox

single-line textbox that can be expanded into a multi-line textarea.

This control is useful for a field that expects multiple whitespaec-separated tokens (such as URLs, glob patterns, etc.) When the user only enters a few tokens, they can keep it as a single line to save space, but to enter a large number of values, this can be turned into textarea for better visibility.

If the initial value is already multi-line text, the control starts with textarea.

On the server side, your program is responsible for treating ' ', \t, \r, and \n for separators. (StringTokenizer would do this.)

Attribute NameTypeDescription
field-

Used for databinding. TBD.

name-

This becomes @name of the <input> tag. If @field is specified, this value is inferred from it.

value-

The initial value of the field. This becomes the @value of the <input> tag. If @field is specified, the current property from the "instance" object will be set as the initial value automatically, which is the recommended approach.

This tag does not accept any child elements/text.

form

Outer-most tag of the entire form taglib, that generates <form> element.

Attribute NameTypeDescription
action (required)-

@action of the form field. The URL where the submission is sent.

enctype-

@enctype of the <form> HTML element.

method (required)-

Submission method. Either post or get.

name (required)-

@name of the form. In HTML this is not a mandatory attribute, but in Hudson you should have it for testing and page scraping, so this attribute is marked required.

tableClass-

Optional class attribute for <table> that is created in the form.

target-

@target of the <form> HTML element. Works like <a target="..."> and controls which window the result of the submission goes to.

helpArea

Place holder to lazy-load help text via AJAX.

This tag does not accept any child elements/text.

hetero-list

Outer most tag for creating a heterogeneous list, where the user can choose arbitrary number of arbitrary items from the given list of descriptors, and configure them independently.

The submission can be data-bound into List<T> where T is the common base type for the describable instances.

Attribute NameTypeDescription
addCaption-

caption of the 'add' button.

deleteCaption-

caption of the 'delete' button.

descriptors (required)-

all types that the user can add.

hasHeader-

For each item, add a caption from descriptor.getDisplayName(). This also activates drag&drop (where the header is a grip), and help text support.

honorOrder-

If true, insert new addition by default to their 'desired' location, which is the order induced by the descriptors.

items (required)java.util.Collection

existing items to be displayed. Something iterable, such as array or collection.

menuAlign-

Menu alignment against the button. Defaults to tl-bl

name (required)-

form name that receives an array for all the items in the heterogeneous list.

oneEach-

If true, only allow up to one instance per descriptor.

targetType-

the type for which descriptors will be configured. Defaults to ${it.class} (optional)

hetero-radio

Sibling of hetero-list, which only allows the user to pick one type from the list of descriptors and configure it.

Attribute NameTypeDescription
descriptors (required)-

all types that the user can add.

field (required)-

Field name in the parent object where databinding happens.

This tag does not accept any child elements/text.

invisibleEntry

Invisible <f:entry> type. Useful for adding hidden field values.

nested

number

Generates an input field to be used inside <f:entry/>

Attribute NameTypeDescription
checkMessage-

Override the default error message when client-side validation fails, as with clazz="required", etc.

checkUrl-

If specified, the value entered in this input field will be checked (via AJAX) against this URL, and errors will be rendered under the text field.

If @field is specified, this will be inferred automatically, which is the recommended approach.

clazz-

Additional CSS class(es) to add (such as client-side validation clazz="required", "number" or "positive-number"; these may be combined, as clazz="required number").

default-

The default value of the text box, in case both @value is and 'instancefield' is null.

field-

Used for databinding. TBD.

name-

This becomes @name of the <input> tag. If @field is specified, this value is inferred from it.

value-

The initial value of the field. This becomes the @value of the <input> tag. If @field is specified, the current property from the "instance" object will be set as the initial value automatically, which is the recommended approach.

This tag does not accept any child elements/text.

option

<option> tag for the <select> element that takes true/false for selected.

Attribute NameTypeDescription
selectedboolean

If true, the option value appears as selected.

value-

The value to be sent when the form is submitted. If omitted, the body of the tag will be placed in the value attribute as well (due to the browser incompatibility between IE and Firefox, value attribute must be included).

optionalBlock

Foldable block that can be expanded to show more controls by checking the checkbox.

Attribute NameTypeDescription
checked-

initial checkbox status. true/false.

field-

Used for databinding. TBD. Either this or @name/@title combo is required.

help-

If present, the (?) icon will be rendered on the right to show inline help. See @help for <f:entry>.

inline-

if present, the foldable section will not be grouped into a separate JSON object upon submission

name-

Name of the checkbox. Can be used by the server to determine if the block is collapsed or expanded at the time of submission.

Note that when the block is collapsed, none of its child controls will send the values to the server (unlike <f:advanced>)

negative-

if present, the foldable section expands when the checkbox is unchecked.

title-

Human readable text that follows the checkbox.

If this field is null, the checkbox degrades to a <f:rowSet>, which provides a grouping at JSON level but on the UI there's no checkbox (and you always see the body of it.)

optionalProperty

Renders inline an optional single-value nested data-bound property of the current instance, by using a <f:optionalBlock>

This is useful when your object composes another data-bound object, and when that's optional, where the absence of the value is signified as null (in which case the optionalBlock will be drawn unchecked), and the presence of the value.

Attribute NameTypeDescription
field (required)-
title (required)-

This tag does not accept any child elements/text.

password

Glorified <input type="password">

Attribute NameTypeDescription
checkUrl-

If specified, the value entered in this input field will be checked (via AJAX) against this URL, and errors will be rendered under the text field.

If @field is specified, this will be inferred automatically, which is the recommended approach.

clazz-

Additional CSS class(es) to add (such as client-side validation clazz="required", "number" or "positive-number"; these may be combined, as clazz="required number").

field-

Used for databinding. TBD.

name-

This becomes @name of the <input> tag. If @field is specified, this value is inferred from it.

value-

The initial value of the field. This becomes the @value of the <input> tag. If @field is specified, the current property from the "instance" object will be set as the initial value automatically, which is the recommended approach.

This tag does not accept any child elements/text.

prepareDatabinding

Modifies the 'attrs.field' of the parent to inherit @field from the enclosing <f:entry> if available. Also computes the @checkUrl attribute.

This tag does not accept any child elements/text.

property

Renders inline a single-value nested data-bound property of the current instance. This is useful when your object composes another data-bound object as a nested object, yet your UI would still like to render it

Attribute NameTypeDescription
field (required)-
propertyDescriptor-

If specified, bypass the item descriptor inference and use this instead.

This tag does not accept any child elements/text.

radio

<input type="radio"> tag that takes true/false for @checked, which is more Jelly friendly.

Note that safari doesn't support onchange.

Attribute NameTypeDescription
checked-
id-
name-
onclick-
title-

If specified, this human readable text will follow the radio, and clicking this text also toggles the radio.

value-

This tag does not accept any child elements/text.

radioBlock

on Radio button with a label that hides additional controls. When checked, those additional controls are displayed. This is useful for presenting mutually exclusive options, where each option comes with a sub-form that provides additional configuration.

Attribute NameTypeDescription
checked (required)boolean

Should this control be initially checked or not?

help-

If specified, the (?) help icon will be rendered on the right, for in place help text. See <f:entry> for the details.

inline-

if present, the folded section will not be grouped into a separate JSON object upon submission.

name (required)-

Name of the radio button group. Radio buttons that are mutually exclusive need to have the same name.

title (required)-

Human readable label text to be rendered next to the radio button.

value (required)-

@value of the <input> element.

readOnlyTextbox

Generates an input field to be used inside <f:entry/>

Attribute NameTypeDescription
checkMessage-

Override the default error message when client-side validation fails, as with clazz="required", etc.

checkUrl-

If specified, the value entered in this input field will be checked (via AJAX) against this URL, and errors will be rendered under the text field.

If @field is specified, this will be inferred automatically, which is the recommended approach.

clazz-

Additional CSS class(es) to add (such as client-side validation clazz="required", "number" or "positive-number"; these may be combined, as clazz="required number").

default-

The default value of the text box, in case both @value is and 'instancefield' is null.

field-

Used for databinding. TBD.

name-

This becomes @name of the <input> tag. If @field is specified, this value is inferred from it.

value-

The initial value of the field. This becomes the @value of the <input> tag. If @field is specified, the current property from the "instance" object will be set as the initial value automatically, which is the recommended approach.

This tag does not accept any child elements/text.

repeatable

Repeatable blocks used to present UI where the user can configure multiple entries of the same kind (see the Java installations configuration in the system config.)

This tag works like <j:forEach> and repeatedly evaluate the body so that initially all the items get their own copy. This tag also evaluate the body once more with var=null to create a 'master copy', which is the template entry used when a new copy is inserted.

HTML structure

this tag mainly produces the nested DIVs with CSS classes as follows:

      <div class="repeated-container">   // container for the whole thing
        <div class="repeated-chunk">
          ... copy 1 ...
        <div class="repeated-chunk">
          ... copy 2 ...
        ...
      

The 'repeated-chunk' DIVs will also have additional CSS classes that represent their positions among siblings:

first : first chunk among the siblings last : last chunk among the siblings middle: neither first nor last only : it is the only chunk (automatically get first and last at the same time)

Usage Note

The caller of this tag should define a button to add a new copy and delete the current copy. Such buttons should have 'repeatable-add' CSS class and 'repeatable-delete' CSS class respectively (it can have other CSS classes), so that their event handlers get properly wired up.

The positional CSS classes on 'repeated-chunk' DIVs (as explained above) can be used to control the visibility of such buttons. For example, this allows you to hide 'delete' button if there's only one item, or only show 'add' button on the last row. There are a few CSS classes already defined in style.css for this purpose.

Attribute NameTypeDescription
add-

If specified, this text will replace the standard "Add" text.

default-

Use this collection for items if items or @field is null

field-

Used for the data binding.

header-

For each item, add this header. This also activates drag&drop (where the header is a grip).

items-

The item collection to loop over. Required unless @field is given.

minimum-

At least provide this number of copies initially. minimum="1" is useful to make sure there's always at least one entry for the user to fill in.

name-

name used in the structured form submission. Defaults to the same name as @var.

noAddButton-

true if the default 'add' button (that adds a new copy) shouldn't be displayed. When you use this attribute,

var-

variable that receives the item of the current iteration. Accessible from the body. Required unless @field is given.

varStatus-

Status variable that indicates the loop status.

repeatableDeleteButton

Delete button for the <repeatable> tag.

Attribute NameTypeDescription
value-

Caption of the button. Defaults to 'Delete'.

This tag does not accept any child elements/text.

repeatableProperty

] Data-bound only version of <f:repeatable> that assumes the type pointed by the property is data-bound as well. The nested property type must be Describable and it needs to have config.jelly.

The nested configuration fragment normally needs to have a delete button by adding a fragment like this:

<f:entry title=""> <div align="right"> <f:repeatableDeleteButton /> </div> </f:entry>

Attribute NameTypeDescription
add-

If specified, this text will replace the standard "Add" text.

default-

The default value to use for this collection when 'instancefield' is null.

field-

Used for the data binding.

header-

For each item, add this header. This also activates drag&drop (where the header is a grip).

minimum-

At least provide this number of copies initially. minimum="1" is useful to make sure there's always at least one entry for the user to fill in.

noAddButton-

true if the default 'add' button (that adds a new copy) shouldn't be displayed. When you use this attribute,

This tag does not accept any child elements/text.

richtextarea

Rich HTML editor from http://developer.yahoo.com/yui/editor/ All the attributes are those of the <textarea> tag.

Attribute NameTypeDescription
id-
name (required)-
style-
value (required)-

This tag does not accept any child elements/text.

rowSet

Adds @nameRef to all table rows inside this tag, so that when the form is submitted, it gets grouped in one JSON object.

Attribute NameTypeDescription
name-

if the group head is not available outside, use this attribute to specify the name. @name and @ref are mutually exclusive.

ref-

id of the thing that serves as the group head, if that's available separately

section

Section header in the form table.

Attribute NameTypeDescription
name-

Optional attribute to create a JSON object from this section.

title (required)-

The section header text. If null is given, the entire <f:section> tag becomes no-op.

select

Glorified <select> control that supports the data binding and AJAX updates. Your descriptor should have the 'doFillXyzItems' method, which returns a ListBoxModel representation of the items in your drop-down list box, and your instance field should hold the current value.

Attribute NameTypeDescription
clazz-

Additional CSS classes that the control gets.

default-

The default value of the text box, in case both @value is and 'instancefield' is null.

field-

Used for databinding.

This tag does not accept any child elements/text.

slave-mode

listbox for choosing the slave's usage.

Attribute NameTypeDescription
name-

Name of the <select> element.

node-

Node object.

This tag does not accept any child elements/text.

submit

Submit button themed by YUI. This should be always used instead of the plain <input tag.

Attribute NameTypeDescription
name-

If specified, becomes the value of the name attribute. When you have more than one submit button on the form, this can be used to determine which button is pressed, as the server will get a parameter by this name.

value (required)-

The text of the submit button. Something like "submit", "OK", etc.

This tag does not accept any child elements/text.

textarea

<textarea> tag on steroids. The textarea will be rendered to fit the content. It also gets the resize handle.

Attribute NameTypeDescription
checkMethod-

If specified, the HTTP method to use for input field will be checked (via AJAX)

checkUrl-

If specified, the value entered in this input field will be checked (via AJAX) against this URL, and errors will be rendered under the text field.

If @field is specified, this will be inferred automatically, which is the recommended approach.

codemirror-config-

Specifies additional key/value pairs in the JSON format (except the start and end bracket) to be passed as CodeMirror option object.

codemirror-mode-

Turns this text area into CodeMirror-assisted code editing text area. This attribute specifies the mode of CodeMirror, such as "text/x-java". See http://codemirror.net/ for more details.

default-

The default value of the text box, in case both @value is and 'instancefield' is null.

field-

Used for databinding. TBD.

name-

This becomes @name of the <textarea> tag. If @field is specified, this value is inferred from it.

previewEndpoint-

If specified, this text area has preview feature. The previewEndpoint is used to obtain formatted html.

value-

The initial value of the field. This becomes the value of the <textarea> tag. If @field is specified, the current property from the "instance" object will be set as the initial value automatically, which is the recommended approach.

This tag does not accept any child elements/text.

textbox

Generates an input field to be used inside <f:entry/>

Attribute NameTypeDescription
autoCompleteDelimChar-

A single character that can be used as a delimiter for autocompletion. Normal autocomplete will replace the entire content of the text box with the autocomplete selection. With this attribute set, the selection will be appended with the delimiter to the existing value of the text box.

autoCompleteField-

Used for determining the autocomplete URL. If @field is specified, that will be used for this.

checkMessage-

Override the default error message when client-side validation fails, as with clazz="required", etc.

checkUrl-

If specified, the value entered in this input field will be checked (via AJAX) against this URL, and errors will be rendered under the text field.

If @field is specified, this will be inferred automatically, which is the recommended approach.

clazz-

Additional CSS class(es) to add (such as client-side validation clazz="required", "number" or "positive-number"; these may be combined, as clazz="required number").

default-

The default value of the text box, in case both @value is and 'instancefield' is null.

field-

Used for databinding. TBD.

name-

This becomes @name of the <input> tag. If @field is specified, this value is inferred from it.

value-

The initial value of the field. This becomes the @value of the <input> tag. If @field is specified, the current property from the "instance" object will be set as the initial value automatically, which is the recommended approach.

This tag does not accept any child elements/text.

validateButton

See http://wiki.jenkins-ci.org/display/JENKINS/Jelly+form+controls for the reference.

Attribute NameTypeDescription
method (required)-

Server-side method that handles the validation. For example, if this is 'foo', you need "doFoo" on your descriptor class.

progress-

Caption of the text shown while the AJAX call is in progress. For example, "checking..."

title (required)-

Caption of the validate button. Should be internationalized.

with-

','-separated list of fields that are sent to the server.

This tag does not accept any child elements/text.

withCustomDescriptorByName

Execute the body with a temporary currentDescriptorByNameUrl value

Attribute NameTypeDescription
value (required)-

/lib/hudson

/lib/hudson

This tag library is also available as an XML Schema

Tag NameDescription
abstractItemLink

Displays a link when given an AbstractItem. It is assumed that that Abstract Item is passed in ${it}

actions

Shows a list of tasks.

artifactList

Generates a listing of the build artifacts. Depending on the size of the artifact, this will either produce a list or a link to the directory view.

ballColorTd

Display the ball in a TD.

buildCaption
buildEnvVar

Renders a help entry for one environment variable. See EnvironmentContributor. The body of this tag renders the content.

buildHealth
buildLink
buildListTable

Creates a table of builds.

buildProgressBar

Progress bar for a build in progress.

buildRangeLink
buildStatusSummary
editTypeIcon
editableDescription

Renders ${it.description} and then allow it to be editable in place, if the current user has the specified permission.

executors

Displays the status of executors.

help
iconSize
jobLink

Generates a link to a job.

listScmBrowsers

List browser SCMs

node

Displays a link to a node.

progressBar
progressiveText
projectView

Renders a list of jobs and their key information.

projectViewNested
projectViewRow
propertyTable

Dispaly sortable table of properties.

queue

Displays the build queue as <l:pane>

rssBar
rssBar-with-iconSize
scriptConsole
setIconSize
summary

Displays a link with a large icon. Used in the project top page.

test-result

Evaluates to a sstring that reports the test result number in text, like "(5 failures / +3)".

thirdPartyLicenses

abstractItemLink

Displays a link when given an AbstractItem. It is assumed that that Abstract Item is passed in ${it}

This tag does not accept any child elements/text.

actions

Shows a list of tasks.

Attribute NameTypeDescription
actions-

List of actions. Defaults to "it.actions"

This tag does not accept any child elements/text.

artifactList

Generates a listing of the build artifacts. Depending on the size of the artifact, this will either produce a list or a link to the directory view.

Attribute NameTypeDescription
baseURL-

If the hyperlink to artifacts are at another URL, specify the prefix.

build (required)hudson.model.Build

Build object for which the artifacts are displayed

caption (required)-

Human readable title text

This tag does not accept any child elements/text.

ballColorTd

Display the ball in a TD.

Attribute NameTypeDescription
ithudson.model.BallColor

Color of the ball or null to skip drawing.

style-

Additional CSS styles to apply.

This tag does not accept any child elements/text.

buildCaption

buildEnvVar

Renders a help entry for one environment variable. See EnvironmentContributor. The body of this tag renders the content.

Attribute NameTypeDescription
name (required)-

Name of the environment variable.

buildHealth

This tag does not accept any child elements/text.

buildLink

This tag does not accept any child elements/text.

buildListTable

Creates a table of builds.

Attribute NameTypeDescription
builds (required)-

A collection of builds to be displayed.

jobBaseUrl (required)-

The base URL of all job/build links. Normally ${rootURL}/

This tag does not accept any child elements/text.

buildProgressBar

Progress bar for a build in progress.

Attribute NameTypeDescription
build (required)hudson.model.Queue.Executable

Build in progress.

executor-

Executor that's carrying out the build. If null, defaults to "build.executor"

This tag does not accept any child elements/text.

buildRangeLink

This tag does not accept any child elements/text.

buildStatusSummary

This tag does not accept any child elements/text.

editTypeIcon

This tag does not accept any child elements/text.

editableDescription

Renders ${it.description} and then allow it to be editable in place, if the current user has the specified permission.

Attribute NameTypeDescription
permission (required)-

If the current user doesn't have this permission, the description is not editable.

This tag does not accept any child elements/text.

executors

Displays the status of executors.

Attribute NameTypeDescription
computers-

If specified, this is the list of computers whose executors are rendered. If omitted, all the computers in the system will be rendered.

This tag does not accept any child elements/text.

help

This tag does not accept any child elements/text.

iconSize

jobLink

Generates a link to a job.

Attribute NameTypeDescription
job (required)hudson.model.Job

Job object to be displayed.

This tag does not accept any child elements/text.

listScmBrowsers

List browser SCMs

Attribute NameTypeDescription
name (required)-

form field name.

This tag does not accept any child elements/text.

node

Displays a link to a node.

Attribute NameTypeDescription
value (required)Node
valueStrString

This tag does not accept any child elements/text.

progressBar

This tag does not accept any child elements/text.

progressiveText

This tag does not accept any child elements/text.

projectView

Renders a list of jobs and their key information.

Attribute NameTypeDescription
columnExtensionsCollection<hudson.views.ListViewColumn>

List view columns to render. If omitted, the default ones from ListView.getDefaultColumns() are used.

indenterhudson.Indenter

Optional Indenter instance used to indent items.

jobBaseUrlString

The base URL of all job links. Normally ${rootURL}/

jobs (required)-

Items to disable.

showViewTabsboolean

If the caller rendered a view tabes, set this attribute so that CSS is adjusted accordingly.

viewsCollection<View>

If non-null, render nested views.

projectViewNested

This tag does not accept any child elements/text.

projectViewRow

This tag does not accept any child elements/text.

propertyTable

Dispaly sortable table of properties.

Attribute NameTypeDescription
items (required)-

A Map object that gets rendered as a table.

This tag does not accept any child elements/text.

queue

Displays the build queue as <l:pane>

Attribute NameTypeDescription
items (required)-

Queue items to be displayed. Normally you should specify ${app.queue.items}, but for example you can specify a sublist after some filtering to narrow down the list.

This tag does not accept any child elements/text.

rssBar

This tag does not accept any child elements/text.

rssBar-with-iconSize

This tag does not accept any child elements/text.

scriptConsole

setIconSize

This tag does not accept any child elements/text.

summary

Displays a link with a large icon. Used in the project top page.

Attribute NameTypeDescription
href-

where the summary icon links to.

icon (required)-

link to the icon image. relative paths will be resolved against images/48x48, and absolute paths (that start with '/') will be resolved against the context root of Hudson

iconOnlyboolean

if true, hyperlink will only cover the icon, not the body.

permissionhudson.security.Permission

permission object. If specified, the link will be displayed only if you have a permission

test-result

Evaluates to a sstring that reports the test result number in text, like "(5 failures / +3)".

Attribute NameTypeDescription
itAbstractTestResultAction

Either the "it" has to be available in the context or specified as an attribute.

This tag does not accept any child elements/text.

thirdPartyLicenses

/lib/test

/lib/test

This tag library is also available as an XML Schema

Tag NameDescription
bar

bar

This tag does not accept any child elements/text.

/lib/hudson/project

Tag files used in project pages

This tag library is also available as an XML Schema

Tag NameDescription
build-permalink
config-blockWhenDownstreamBuilding
config-blockWhenUpstreamBuilding
config-buildWrappers
config-builders
config-concurrentBuild
config-customWorkspace
config-disableBuild
config-publishers

Deprecated as of 1.463. Use <config-publishers2> and update your code to do publishers.rebuildHetero(req, json, Publisher.all(), "publisher");

config-publishers2
config-quietPeriod
config-retryCount
config-scm
config-trigger
config-upstream-pseudo-trigger
matrix

Generate configuration matrix and invoke body with 'p' as the instance of T (of Layouter<T>)

projectActionFloatingBox
upstream-downstream

build-permalink

This tag does not accept any child elements/text.

config-blockWhenDownstreamBuilding

This tag does not accept any child elements/text.

config-blockWhenUpstreamBuilding

This tag does not accept any child elements/text.

config-buildWrappers

This tag does not accept any child elements/text.

config-builders

This tag does not accept any child elements/text.

config-concurrentBuild

This tag does not accept any child elements/text.

config-customWorkspace

This tag does not accept any child elements/text.

config-disableBuild

This tag does not accept any child elements/text.

config-publishers

Deprecated as of 1.463. Use <config-publishers2> and update your code to do publishers.rebuildHetero(req, json, Publisher.all(), "publisher");

This tag does not accept any child elements/text.

config-publishers2

This tag does not accept any child elements/text.

config-quietPeriod

This tag does not accept any child elements/text.

config-retryCount

This tag does not accept any child elements/text.

config-scm

This tag does not accept any child elements/text.

config-trigger

config-upstream-pseudo-trigger

This tag does not accept any child elements/text.

matrix

Generate configuration matrix and invoke body with 'p' as the instance of T (of Layouter<T>)

Attribute NameTypeDescription
autoRefresh-

If specified, the content of the matrix will be automatically updated via AJAX. (This happens by requesting URL "./ajaxMatrix", so the caller needs "ajaxMatrix.jelly" to serve this request.)

projectActionFloatingBox

This tag does not accept any child elements/text.

upstream-downstream

This tag does not accept any child elements/text.

/lib/layout

Tag library that defines the basic layout of Hudson pages.

This tag library is also available as an XML Schema

Tag NameDescription
ajax
breadcrumb

Used inside <l:layout> to render additional breadcrumb items.

breadcrumbBar

Generates the bar that shows breadcrumbs, along with its associated dynamic behaviours. This tag is used by l:layout and not expected to be used by anyone else, but it's written as separate tag for better readability of code.

To render additional breadcrumb items (for example to provide in-page navigations), use the <l:breadcrumb> tag.

copyButton

Creates a small button that lets the user copies a text into clipboard

expandButton
hasPermission

Renders the body only if the current user has the specified permission

header

Header portion of the HTML page, that gets rendered into the <head> tag. Multiple <l:header> elements can be specified, and can even come after <l:main-panel>.

This tag can be placed inside <l:layout>.

isAdmin
isAdminOrTest
layout

Outer-most tag for a normal (non-AJAX) HTML rendering. This is used with nested <header>, <side-panel>, and <main-panel> to form Jenkins's basic HTML layout.

main-panel

Generates the body as the main content part of a Jenkins page.

pane

Used in the <l:side-panel> to draw a box with a title.

The box is drawn as a table, and the body of this tag is expected to draw a series of <TR>s to fill in the contents of the box.

progressiveRendering
renderOnDemand
rightspace

Creates a space for the right-hand side of the page. This sticks to the right of the page even when the content overflows.

side-panel
tab
tabBar
task

This tag inside <l:tasks> tag renders the left navigation bar of Hudson. Each <task> tag gets an icon and link.

tasks
yui

Load Yahoo UI module.

ajax

breadcrumb

Used inside <l:layout> to render additional breadcrumb items.

Attribute NameTypeDescription
href-

URL that the breadcrumb item links to. Can be omitted.

id-

If specified, this ID will be assigned to the LI element. This is useful for programmatically adding the context menu

title (required)-

Display name of the breadcrumb.

This tag does not accept any child elements/text.

breadcrumbBar

Generates the bar that shows breadcrumbs, along with its associated dynamic behaviours. This tag is used by l:layout and not expected to be used by anyone else, but it's written as separate tag for better readability of code.

To render additional breadcrumb items (for example to provide in-page navigations), use the <l:breadcrumb> tag.

copyButton

Creates a small button that lets the user copies a text into clipboard

Attribute NameTypeDescription
container-

Specify the CSS selector (like ".foo") that points to the ancestor block element that has "positive:relative". According to ZeroClipboard documentation, having such container would improve the accuracy of invisible flash overlay.

message (required)-

Confirmation message to be shown once the text is copied. This is required as in some browsers, button doesn't properly provide feedback to user actions due to the nature of the hack needed to make copy work.

text (required)-

Text to be copied into the clipboard.

tooltip-

Tooltip of the button. Currently this doesn't work as reliably as we'd like. More ZeroClipboard hacking is likely necessary.

This tag does not accept any child elements/text.

expandButton

hasPermission

Renders the body only if the current user has the specified permission

Attribute NameTypeDescription
permission (required)Permission

permission object to check. If this is null, the body will be also rendered.

header

Header portion of the HTML page, that gets rendered into the <head> tag. Multiple <l:header> elements can be specified, and can even come after <l:main-panel>.

This tag can be placed inside <l:layout>.

isAdmin

isAdminOrTest

layout

Outer-most tag for a normal (non-AJAX) HTML rendering. This is used with nested <header>, <side-panel>, and <main-panel> to form Jenkins's basic HTML layout.

Attribute NameTypeDescription
css (deprecated)-

specify path that starts from "/" for loading additional CSS stylesheet. path is interprted as relative to the context root. e.g.,

<l:layout css="/plugin/mysuperplugin/css/myneatstyle.css">

This was originally added to allow plugins to load their stylesheets, but the use of thie attribute is discouraged now. plugins should now do so by inserting <style> elements and/or <script> elements in <l:header/> tag.

norefresh-

If non-null, auto refresh is disabled on this page. This is necessary for pages that include forms.

permission-

If given, this page is only made available to users that has the specified permission. (The permission will be checked against the "it" object.)

title (required)-

Title of the HTML page. Rendered into <title> tag.

main-panel

Generates the body as the main content part of a Jenkins page.

pane

Used in the <l:side-panel> to draw a box with a title.

The box is drawn as a table, and the body of this tag is expected to draw a series of <TR>s to fill in the contents of the box.

Attribute NameTypeDescription
id-

@id of the table, if specified.

title (required)-

Title of the box. Can include HTML.

width (required)-

Specify the number of columns in the table (so that the title can stretch to the entire table width.

progressiveRendering

Attribute NameTypeDescription
callback (required)-

JavaScript expression that evaluates to the function taking one JSON-valued parameter which renders results as they come.

handler (required)-

Instance of jenkins.util.ProgressiveRendering.

tooltip-

Optional tooltip for progress bar.

This tag does not accept any child elements/text.

renderOnDemand

Attribute NameTypeDescription
capture-

','-separated list of variables to capture and make available when later evaluating the body.

clazz-

Additional CSS class names, so that you can discover this tag more easily from your JavaScript.

tag-

Place holder HTML tag. By default it's DIV, but depending on where this is used, you might need other tags (e.g., inside a table.)

This tag does not accept any child elements/text.

rightspace

Creates a space for the right-hand side of the page. This sticks to the right of the page even when the content overflows.

side-panel

tab

This tag does not accept any child elements/text.

tabBar

task

This tag inside <l:tasks> tag renders the left navigation bar of Hudson. Each <task> tag gets an icon and link.

Attribute NameTypeDescription
contextMenuboolean

If "false", remove this item from the context menu.

enabled-

If specified, then this controls whether the task is enabled or not.

href (required)-

Link target. Relative to the current page.

icon (required)-

URL to the icon, which should be 24x24 in size. It's relative to the context path of Hudson.

The common values include:

# "images/24x24/..." then points to the stock icon resources # "plugin/foobar/abc/def.png" that points to "src/main/webapp/abc/def.png" in your plugin resources

permission-

If specified, the link will be only displayed when the current user has the specified permission against the "it" object.

This is useful for showing links to restricted pages, as showing them to unprivileged users don't make sense.

title (required)-

Human readable text that follows the icon.

tasks

yui

Load Yahoo UI module.

Attribute NameTypeDescription
module (required)-

YUI module name to load.

This tag does not accept any child elements/text.

/lib/hudson/newFromList

These tags provide a higher level primitive for building a form page for creating a new item from a list of descriptors.Used in "create new job" page, for an example.

This tag library is also available as an XML Schema

Tag NameDescription
form

Generates a form for creating something out of descriptors by (1) selecting a descriptor and specifying a name. This also presents a copy option. This should be placed inside <l:main-panel>.

form

Generates a form for creating something out of descriptors by (1) selecting a descriptor and specifying a name. This also presents a copy option. This should be placed inside <l:main-panel>.

Attribute NameTypeDescription
action-

Specify where the form will be submitted to. Defaults to 'createItem'.

checkUrl (required)-

relative URL that point to the check method that validates the new name.

descriptors (required)-

Collection of Descriptors to be rendered.

nameTitle (required)-

Caption of the text box to receive the name of the newly created item. Something like "Job name"

This tag does not accept any child elements/text.