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 Bamboo, 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.

Have questions? Visit the Atlassian Community to connect, share, and learn with other Atlassian users and experts, including Adaptavist staff.

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

Want to learn more? Check out courses on Adaptavist Learn, an online platform to onboard and train new users for Atlassian solutions.