Hi,
I'm trying to develop a Blueprint that will include in the rendered page a macro choosen by the user in a list or by auto-completion
I know how to do it in Java (using com.atlassian.confluence.macro.browser.MacroMetadataManager)
But I don't know how to create a custom list in soy template with dynamic content (provided by a Java class ?)
I spent a lot of time on this forum:
1) I tried to implement com.atlassian.soy.renderer.SoyServerFunction as describe here: https://answers.atlassian.com/questions/89158/getting-a-soy-function-to-work-in-a-stash-plugin
Content of my .soy template{namespace MyPlugin.Blueprints.Simple} {template .macros} Hello {SoyMacrosFunction()} {/template}- but it always return error: Uncaught Error: atlassian-plugin.xml blueprint wizard points to a non-existent Soy template 'MyPlugin.Blueprints.Simple.loop'.
- If I remove instruction {SoyMacrosFunction()}, the template works
2) I tried to use classes autocomplete-multiselect in my soy template. It doesn't work
Any adivse would be much appreciated.Cheers,Xavier
My previous comment was not recognized by the Atlassian email robot. So I answer to my own question:
I'm now able to display the list of existing macros in the dialog-page of a Blueprint. But I used a REST API in conjunction with javascript hook as described in my comment. I was not able to implement a SoyMacroFunction
Hi Xavier,
please try to add a SoyDoc before your template:
{namespace MyPlugin.Blueprints.Simple} /** * This is a SoyDoc example */ {template .macros} Hello {SoyMacrosFunction()} {/template}
See: https://developer.atlassian.com/display/CONFDEV/Writing+Soy+Templates+in+Your+Plugin (For templates that need parameters, these must be declared in JavaDoc style immediately before the template)
I hope I could help.
Cheers,
Raffy.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
There is already a SoyDoc in my .soy file but I didn't copy it my this example.
Anyway, I changed the way of doing:
I created a REST API based on this tutorial to retrieve all installed Confluence macros and I added the following code in the javascript file associated to my blueprint based on this tutorial
Confluence.Blueprint.setWizard('com.xxx.confluence.macrodoc:macro-documentation-blueprint-item', function(wizard) { wizard.on('post-render.macroDocumentation', function(e, state) { fetchAndDisplayMacros = function() { $macrosContainer = $("#macroName"); $macrosContainer.append("<option value='Loading'> Loading...</option>"); $.ajax({ type: 'GET', url: AJS.contextPath() + '/rest/macro/1.0/macros', contentType:'application/json' }).done(function(macros) { $macrosContainer.empty(); for (var i = 0; i < macros.length; ++i) { var macro = macros[i]; $macrosContainer.append("<option value='" + macro.macroName+ "'>" + macro.titleText + "</option>"); } if ($macrosContainer.find("option").length == 0) { $macrosContainer.html("<p>No macro have been defined.</p>"); } }).fail(function() { clearMessages(); AJS.messages.error("#aui-message-bar", { body: "<p>Failed to fetch macros.</p>", closeable: true, shadowed: true }); }); }; // Fetch macros on page load fetchAndDisplayMacros(); }); });
Now it works perfectly but the use of SoyFunction still doesn't work !!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Plan, prioritize, and deliver marketing projects seamlessly. See how Jira supports your team's success. Start today!
Start now! 🚦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.