I have written a Confluence Macro that needs the admin to setup a default value that will be system wide. My macro will then need to pull this default value and use it. At the moment I have simply hard coded it in my Macro. Obviously this is not desirable as I would have to modify the Macro for every system that uses it.
I believe that this should be done using the 'configure' button from the Add-Ons page for my Macro.
I have been looking for some sample code of a Macro that has this in it but can't find any and am at a loss as to how to find out how to do this.
Can anyone give me some tips/hints/ideas where I might find out how to do this?
Hi Stephen
Take a look at the Markdown for Confluence add-on, particularly the ConfigurationServlet and the soy template md-configure.soy:
ConfigurationServlet:
https://bitbucket.org/dvdsmpsn/markdown-for-confluence/src/6f97807fc7abc919cb325dc3e1a2d0e8b12c884c/src/main/java/me/davidsimpson/confluence/addon/markdown/servlet/ConfigurationServlet.java?at=master
md-configure.soy:
https://bitbucket.org/dvdsmpsn/markdown-for-confluence/src/6f97807fc7abc919cb325dc3e1a2d0e8b12c884c/src/main/resources/soy/md-configure.soy?at=master
atlassian-plugin.xml:
https://bitbucket.org/dvdsmpsn/markdown-for-confluence/src/6f97807fc7abc919cb325dc3e1a2d0e8b12c884c/src/main/resources/atlassian-plugin.xml?at=master#cl-65
In the plugin xml file look at the following (I've stripped out the bits that aren't for the config page):
<?xml version="1.0" encoding="UTF-8"?> <atlassian-plugin key="${project.groupId}.${project.artifactId}" name="${project.name}" plugins-version="2"> <plugin-info> ... ... <param name="configure.url">/plugins/servlet/markdown-for-confluence/configure</param><-- the link in the UPM --> </plugin-info> ... ... <!-- the servelet --> <servlet name="Configuration Servlet" i18n-name-key="configuration-servlet.name" key="configuration-servlet" class="me.davidsimpson.confluence.addon.markdown.servlet.ConfigurationServlet"> <description key="configuration-servlet.description">The Configuration Servlet Plugin</description> <condition class="com.atlassian.confluence.plugin.descriptor.web.conditions.ConfluenceAdministratorCondition" /> <url-pattern>/markdown-for-confluence/configure</url-pattern> </servlet> <!-- soy template for the servlet --> <web-resource key="configure-soy"> <transformation extension="soy"> <transformer key="soyTransformer"/> </transformation> <resource type="download" name="md-configure.js" location="soy/md-configure.soy"/> </web-resource> <!-- link in the left hand navigation of the confluence admin section --> <web-item key="markdown-for-confluence.configure" name="Markdown Configure Link" weight="10000" section="system.admin/configuration"> <description>Link to configure action</description> <label key="me.davidsimpson.confluence.addon.markdown-for-confluence.configure.web-item"/> <link>/plugins/servlet/markdown-for-confluence/configure</link> <condition class="com.atlassian.confluence.plugin.descriptor.web.conditions.ConfluenceAdministratorCondition" /> </web-item> <!-- Some plumbing to help out --> <component-import key="loginUriProvider" interface="com.atlassian.sal.api.auth.LoginUriProvider"/> <component-import key="pluginSettingsFactory" interface="com.atlassian.sal.api.pluginsettings.PluginSettingsFactory"/> <component-import key="soyTemplateRenderer" interface="com.atlassian.soy.renderer.SoyTemplateRenderer"/> <component-import key="templateRenderer" interface="com.atlassian.templaterenderer.TemplateRenderer"/> ... ... </atlassian-plugin>
Traditionally people used velocity for configuration screens, but servlets + Soy means that you can use the same kind of code in Confluence, JIRA and other add-ons, so it's quite nice.
Online forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.