Create a Macro with Parameters
You can set up a macro that accepts parameters. For example, follow these steps to create a macro that outputs an AUI message.
Create a new script macro by selecting the Custom Script Macro link.
Set the following fields:
Key: message-macro
Name: Message
Description: Renders an AUI message
Body Type: Rich text
Output Type: Black
The completed fields appear in the following image:
Select the + Parameter button and set the following fields on the form that appears:
Parameter Type: string
Name: title
Label: Title
Tick the checkbox for Required
Parameter Type: enum
Name: level
Label: level
Tick the checkbox for Required
The completed fields appear in the following image:
Select the + Enum Value to add the third enum value and fill out the following fields:
Parameter Type: enum
Name: level
Label: level
Tick the checkbox for Required
Steps 3 and 4 determine the body and two arguments of the macro, which allow you to determine the following components of the message:
the title of the message
A string
the severity of the message (info, warning, error)
An enum because only a finite list of level types are accepted
the body of the message
An enum because only a finite list of level types are accepted
Find out more about the different parameter types here.
For the script, you can type in the following code or put it in a file and enter the relative path to the file, under the script root (as usual).
import groovy.xml.MarkupBuilder def writer = new StringWriter() def builder = new MarkupBuilder(writer) builder.div('class': "aui-message aui-message-${parameters.level}") { p('class': 'title') { strong(parameters.title) } mkp.yieldUnescaped(body) } writer.toString()
The
mkp.yieldUnescaped
method is dangerous and should only be used with trusted data. In this particular case, the use ofmkp.yieldUnescaped
is safe because Confluence does not allow script tags or other potentially malicious HTML in the macro’sbody
variable. Other user inputs like the ones you specify as macro parameters are not checked in the same way and should not be trusted. It’s imporant that these inputs are handled securely, as discussed in our documentation on custom macros and security.(Optional) Experiment with changing the parameters in the Edit 'Message' Macro dialog box that appears. This screen appears because parameters were marked as required in steps 3 and 4.