Exploring the Future Potential of AI-Enabled Smartphone Processors
No Coding Necessary: Building Confluence User Macros Cheat Sheet - Atlassian Summit 2010
1. Macro Definition Referencing Confluence Objects
Macro has a body Anything the user types within $body The body of the macro
the body of the macro will be $param0-n The parameters passed to your
available in the macro in the macro (as available)
$body variable. $param<name> Named parameters passed to your
Use unprocessed The body of the macro will be macro (as available)
macro body output exactly as entered, $config The BootstrapManager object,
including any HTML markup. useful for retrieving Confluence
For example if the macro body is properties
'<b>body</b>', it will be $content The current ContentEntity object
displayed as 'body' in the page. that this macro is a included in (if
Escape HTML in The body of the macro will be available)
macro body output with HTML markup $space The Space object that this content
escaped. So if the macro body is object is located in (if relevant)
'<b>body</b>', it will be $generalUtil A GeneralUtil object, with useful
displayed as '<b>body</b>' in utility methods for URL encoding
the page. etc
Convert macro body The body of the macro will be $action A blank ConfluenceActionSupport
wiki markup to HTML converted from wiki text to object, useful for retrieving i18n
HTML markup. So if the macro text if needed
body is '*body*', it will be $webwork A VelocityWebWorkUtil object, for
displayed as 'body' in the page. its htmlEncode() method
Output - Macro Choose this if you want to write $req The current HttpServletRequest
generates HTML markup your macro with HTML object (if the page is rendered as a
elements. result of an HTTP request)
Output - Macro Choose this if you want to write $res The corresponding
generates wiki markup your macro with wiki markup. HttpServletResponse object (not
Velocity Markup recommended to be played with)
$userAccessor For retrieving users, groups and
## Some text A comment checking membership
#var1 A variable $permissionHelper For determining user rights
#set($var1=”abc”) Setting a variable Examples
#if ($var1 == “abc”) Simple if-else statement
… ${content.id} Page id of current page
#else [$762573668] Markup to create link to
… page with that id
#end $action.getHelper() Referencing another user
<a Embedding a variable within .renderConfluenceMacro macro
href="viewpage.action? wiki markup ("{anothermacro}")
pageId=$pageid">$linkb
ody</a> Recent Confluence versions & dependencies
#set($page = "$ Using formal references to refer Confluence jQuery Velocity
{prefix}ref$pageid") to a variable within a string 2.8 1.2.3 1.5
2.9 1.2.3 1.5
jQuery tips
2.10 1.2.3 1.5
Must access as jQuery not $ 3.0 1.2.6 1.6.1
3.1 1.3.2 1.6.1
<script type="text/javascript">
jQuery(document).ready(function() 3.2 1.3.2 1.6.1
{
jQuery calls here
});
</script>
References
Confluence manual: Working with macros http://confluence.atlassian.com/x/eyAC
Confluence development: User macros http://confluence.atlassian.com/x/hRE
Confluence Shared user macro library http://confluence.atlassian.com/x/KoCjAg
Confluence objects accessible from Velocity http://confluence.atlassian.com/x/EBQD
Atlassian Confluence forum http://forums.atlassian.com/forum.jspa?forumID=96
jQuery http://jquery.com/
Firebug http://getfirebug.com/
Adaptavist jQuery versions article https://www.adaptavist.com/display/jQuery/Versions
2. Macro 1: Response time
Example usage: {response-time}
Please see this page for full listing: http://confluence.atlassian.com/display/DISC/Response+Time
Macro 2: color-table (final version)
Example usage: {color-table:A2C1D5|BFEBEF}
## Macro name: color-table
## Macro has a body: N
## Body format: n/a
## Output: HTML
##
## Developed by: Charles Hall
## Developed for: All users
## Date created: 23/02/2010
## Installed by: Charles Hall
## Apply coloring to alternate rows of any tables with the class of confluenceTable.
#set($oddcolor= $param0)
#set($evencolor= $param1)
## Check for valid odd color, otherwise use default
#if (!$oddcolor)
#set ($oddcolor="ffffff")
#end
## Check for valid even color, otherwise use default
#if (!$evencolor)
#set ($evencolor="ededed")
#end
<script type="text/javascript" defer="defer">
jQuery(document).ready(function()
{
//colour code odd and even table rows
jQuery("table.confluenceTable tr:nth-child(odd)").css("background-color", "#$oddcolor");
jQuery("table.confluenceTable tr:nth-child(even)").css("background-color", "#$evencolor");
});
</script>
Macro 3: watermark (final version)
Example usage: {watermark: logo.gif|no-repeat|1000}
3. ## Macro name: astrium-watermark
## Macro has a body: N
## Body format: n/a
## Output: HTML
##
## Developed by: Charles Hall
## Developed for: Astrium wiki
## Date created: 31/03/2010
## Installed by: Charles Hall
## define a watermark image for the current page
#set($image= $param0)
#set($repeat = $param1)
#set($minheight= $param2 + 'px')
<script type="text/javascript" defer="defer">
jQuery(document).ready(function() {
/*Default theme*/
if (jQuery("#header-menu-bar").length)
{
jQuery('#content').css('background-image', 'url($config.getBaseUrl()
$content.getAttachmentNamed("$image").getDownloadPath())');
## Add the specified repeat behaviour
#if ($repeat)
jQuery('#content').css('background-repeat', '$repeat');
#end
## Check for a specified minimum height
#if ($minheight)
jQuery('#content').css('height', '$minheight');
#end
jQuery('#content').css('vertical-align', 'top');
}
/*Left nav theme*/
if (jQuery(".sidebar div.leftnav").length)
{
jQuery('#mainViewPane').css('background-image', 'url($config.getBaseUrl()
$content.getAttachmentNamed("$image").getDownloadPath())');
## Add the specified repeat behaviour
#if ($repeat)
jQuery('#mainViewPane').css('background-repeat', '$repeat');
#end
## Check for a specified minimum height
#if ($minheight)
jQuery('#mainViewPane').css('height', '$minheight');
#end
jQuery('#mainViewPane').css('vertical-align', 'top');
}
/*Clickr theme*/
if (jQuery("#MegaFooter").length)
{
4. jQuery('#main').css('background-image', 'url($config.getBaseUrl()
$content.getAttachmentNamed("$image").getDownloadPath())');
## Add the specified repeat behaviour
#if ($repeat)
jQuery('#main').css('background-repeat', '$repeat');
#end
## Check for a specified minimum height
#if ($minheight)
jQuery('#main').css('height', '$minheight');
#end
jQuery('#main').css('vertical-align', 'top');
}
});
</script>
Macro 4: draft-watermark
Example usage: {draft-watermark}
## Macro name: draft-watermark
## Macro has a body: N
## Body format: n/a
## Output: HTML
##
## Developed by: Charles Hall
## Developed for: All users
## Date created: 19/04/2010
## Installed by: Charles Hall
## inserts a Draft watermark image for the current page
## N.B. Calls the watermark user macro
## draft.gif must reside in "company" space
#set($url="http://globalcorp.com/confluence/download/attachments/74416134/draft.gif")
$action.getHelper().renderConfluenceMacro("{watermark:$url|no-repeat|1000}")