All of the built-in scripts produce XML that is similar, but not interchangeable with, the XML found in a plugin descriptor. You will notice that, for usability reasons, the forms do not provide all the possible configuration elements available in plugins. As an example, the web-item built-in script does not give you the option to provide a tooltip for the web-item link, or a velocity context provider, or an icon URL.

You can work around this limitation by using this built-in script. First of all, get the required XML from one of the other fragment built-in scripts by filling out the form, then clicking the Preview button. Do not click the Save/Update button.

You can then copy the emitted XML into the Raw XML module built-in script, and make any modifications as required.

For example, let’s say we have created a link in the Browse Projects menu, now we wish to menu add a tooltip and icon to the web item. Enter the XML:

<web-item key='link-to-myprojects' name='ScriptRunner generated web item - link-to-myprojects' section='browse_link/project_view_all' weight='50'>
  <label>My Projects</label>
  <link linkId='link-to-myprojects'></link>
  <tooltip>Show only my projects</tooltip>
  <icon height="16" width="16">
    <link>/images/icons/print.gif</link>
  </icon>
</web-item>
Although the example here is for JIRA, similar XML is applicable to Bitbucket and Confluence.

and verify the menu item appears as:

xml

Using Multiple Items

The other reason for using this built-in script is it allows you to make multiple modifications that belong as a single unit in a single script, which you can enable and disable en bloc.

The XML below allows us to create the following structure, which consists of:

  • a drop-down menu in the top navigation bar

  • a web section activated by that menu item, which has a heading

  • a simple web item

  • a web item provider which creates further items in that section

xml multi

This is produced by the following XML:

<web-item key='toppy' name='ScriptRunner generated web item - toppy' section='system.top.navigation.bar' weight='70'>
  <label>Toppy</label>
  <link linkId='toppy'></link>
</web-item>

<web-section key='top-menu-section' name='ScriptRunner generated web item - top-menu-section' location='toppy' weight='70'>
  <label>Subby</label>
  <param name='lazy' value='true' />
</web-section>

<web-item key='x-other' name='ScriptRunner generated web item - x-other' section='toppy/top-menu-section' weight='1'>
  <label>Sub-menu item</label>
  <link linkId='x-other'>/</link>
</web-item>

<web-item-provider key='custom-drop-history-factory' name='ZCreate sub-task for this issue'
    section='toppy/top-menu-section' class='com/onresolve/jira/groovy/test/fragments/SampleWebItemProvider.groovy' />
XML aficianados will note that the above XML is not technically correct as it does not have a root element, but in this case, a root element will be automatically added for you.

For how-to questions please ask on Atlassian Answers where there is a very active community. Adaptavist staff are also likely to respond there.

Ask a question about ScriptRunner for JIRA, for for Bitbucket Server, or for Confluence.