Hi, I am creating my own custom macro dialog using a soy template. I've followed this tutorial but I keep getting this error:
Uncaught (in promise) ReferenceError: Mermaid is not defined
Here is my code:
Soy Template:
{namespace Mermaid.Plugin.Custom}
{template .editor}
<section id='mermaid-macro-dialog' class='aui-dialog2 aui-dialog2-large aui-layer' role='dialog' aria-hidden='true'>
<header class='aui-dialog2-header'>
<h2 class='aui-dialog2-header-main'>Mermaid Editor</h2>
<button id='close-btn' class='aui-close-button' type='button' aria-label='close'></button>
</header>
<div class='aui-dialo g2-content aui-group'>
<div class='aui-item' style='border-right: 2px solid grey;'>
<div style='display: block; margin-bottom: 1vh; margin-left: 1vw;'>
<aui-label for='theme'>Theme</aui-label>
<form id='theme' class='aui' style='display: inline;'>
<select id='select2-example2'>
<option value='dark'>Dark</option>
<option selected='selected' value='default'>Default</option>
<option value='forest'>Forest</option>
<option value='neutral'>Neutral</option>
</select>
</form>
</div>
<div style='display: block; margin-bottom: 1vh; margin-left: 1vw;'>
<aui-label for='width'>Width</aui-label>
<input id='width' name='width'></input>
</div>
<aui-label for='code' style='margin-left: 1vw;'>Code</aui-label>
<textarea rows='12' cols='40' id='code' name='code' style='resize: none; overflow: scroll; margin: 0 auto; display: block;'></textarea>
</div>
<div class='aui-item'>
<h3 style='text-align: center; margin-top: 0;'>Preview</h3>
</div>
</div>
<footer class='aui-dialog2-footer'>
<div class='aui-dialog2-footer-actions'>
<button class='aui-button'>Preview</button>
<button id='dialog-submit-button' class='aui-button aui-button-primary'>Submit</button>
</div>
</footer>
</section>
{/template}
atlassian-plugin.xml:
<web-resource key="mermaid-plugin-resources" name="mermaid-plugin Web Resources"> <dependency>com.atlassian.auiplugin:ajs</dependency>
<transformation extension="js">
<transformation key="jsI18n"/>
</transformation>
<!-- transform Soy templates into JS -->
<transformation extension="soy">
<transformer key="soyTransformer">
<functions>com.atlassian.confluence.plugins.soy:soy-core-functions</functions>
</transformer>
</transformation>
<resource type="download" name="mermaid.js" location="/js/mermaid.js" />
<resource type="download" name="mermaid-plugin.js" location="/js/mermaid-plugin.js" />
<resource type="download" name="custom-editor.js" location="/js/custom-editor.js" />
<resource type="download" name="editor-soy.js" location="/soy/editor.soy" />
<context>editor</context>
</web-resource>
Javscript:
AJS.bind("init.rte", function() {
var dialog = Mermaid.Plugin.Custom.editor();
AJS.MacroBrowser.setMacroJsOverride("mermaid-macro", {
opener: function() {
$("body").append(dialog);
AJS.dialog2("#mermaid-macro-dialog").show();
}
})
})
Hello,
I've not written soy templates for some time, but when I wrote this article for Atlassian, and other times, I only ever used the namespaces with a prefix of Confluence.Templates. e.g. Confluence.Templates.SoyTutorial.
Also, looking at more recent examples in Confluence 7.10.1 source code, I see that the transformer is a little different from that from my tutorial (which was originally written in 2012).
More modern versions seem to have web resources like so:
<web-resource key="soy-resources">
<transformation extension="soy">
<transformer key="soyTransformer"/>
</transformation>
<resource type="download" name="xxx.js" location="soy/xxx.soy"/>
</web-resource>
Notice that the <functions>...</functions> bit is missing.
It looks like the documentation could be out of date.
Also, try asking your question in https://community.developer.atlassian.com/ if this isn't the correct answer. Confusingly, developers have a separate community.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Aha! As described in my tutorial ;)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
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.