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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.