Confluence 2.6 has reached end of life
Check out the [latest version] of the documentation
Confluence plugins may define downloadable resources. If your plugin requires Confluence serve additional static files such as images, Javascript or CSS, you will need to use downloadable plugin resources to make them available.
Due to a bug in Confluence versions 1.4 through 1.4.2, downloadable plugin resources only function for plugins that have been deployed by copying them into confluence/WEB-INF/lib. Plugins that have been uploaded dynamically through the web interface, or copied into confluence.home/plugins will not be able to serve resources. This bug is fixed for Confluence 1.4.3.
Defining a Single Downloadable Resource
Downloadable resources are configured to map a name of some downloadable file to its location within the plugin jar-file.
<atlassian-plugin name='IM Presence Macros' key='confluence.extra.impresence'>
<plugin-info>
<description>Macros to show online status for popular Instant Messaging services.</description>
<vendor name="Atlassian Software Systems" url="http://www.atlassian.com"/>
<version>0.1</version>
</plugin-info>
<macro name='aim' class='com.atlassian.confluence.extra.impresence.AIMPresenceMacro' key='aim'>
<description>Displays an AIM status graphic.</description>
<resource type="download" name="aimon.gif" location="templates/extra/impresence/aimon.gif">
<param name="content-type" value="image/gif"/>
</resource>
</macro>
<resource type="download" name="aimoff.gif" location="templates/extra/impresence/aimoff.gif"/>
</atlassian-plugin>
- Resources can be downloaded either within a plugin module, or as a resource of the entire plugin.
- Resources are always looked up relative to a plugin module (see below). If a resource can not be found in the plugin module, it will then be looked for in the plugin itself.
- Each resource must be of
type="download" - The
nameof the resource is how it will be referenced from within the application - The
locationof the resource is where it appears within the plugin itself - An optional
content-typeparameter can be used to supply the file's MIME type- In the absence of a
content-type, the application will attempt to guess the file's type from its file extension. For common file extensions, an explicit content-type is not necessary.
- In the absence of a
Defining a Directory of Downloadable Resources
If your plugin requires a lot of resources, you may wish to expose a directory of files as resources, rather than writing definitions for each individual file.
<resource type="download" name="icons/" location="templates/extra/impresence/icons/"/>
- The
nameandlocationmust both have trailing slashes - Subdirectories are also exposed, so in the example above,
icons/small/mail.gifwill be mapped to the resourcetemplates/extra/impresence/icons/small/mail.gif
Referring to Downloadable Resources
The URL for a downloadable resource is as follows:
{server root}/download/resources/{plugin key}:{module key}/{resource name}
For example:
http://confluence.example.com/download/resources/confluence.extra.impresence:aim/aimon.gif
In a velocity template, you should use the $req.contextPath property to ensure that your resources are always relative to the URL of the Confluence server:
$req.contextPath/download/resources/confluence.extra.impresence:aim/aimon.gif
