I'm building up documentation that shows examples of an SDK in multiple languages. Each language gets a tab. So we end up with a template that looks like this:
<tabs>
<tab>
<language>
<code>
</tab>
</tabs>
...with a repeat on the "tab" section obviously, for each language we support. The issue is that I need to have editable content (that's extensive - a single-line textbox is not enough) in each <code> area. So multiple rich-content areas. I'd love to have my macro spit out (for example) a panel for each language or something.
Here's my template as it exists right now. This technically works, but you'd have to edit your code in a single-line text field - obviously not usable.
## Macro title: Code Tabs
## @param csharp:title=C#|type=string|desc=C#
## @param java:title=Java|type=string|desc=Java
<ac:structured-macro ac:name="sp-tabs">
<ac:rich-text-body>
<ac:structured-macro ac:name="sp-tab">
<ac:parameter ac:name="title">C#</ac:parameter>
<ac:rich-text-body>
<ac:structured-macro ac:name="code">
<ac:parameter ac:name="language">c#</ac:parameter>
<ac:plain-text-body><![CDATA[ $!paramcsharp ]]></ac:pain-text-body>
</ac:structured-macro>
</ac:rich-text-body>
</ac:structured-macro>
<ac:structured-macro ac:name="sp-tab">
<ac:parameter ac:name="title">Java</ac:parameter>
<ac:rich-text-body>
<ac:structured-macro ac:name="code">
<ac:parameter ac:name="language">java</ac:parameter>
<ac:plain-text-body><![CDATA[ $!paramjava ]]></ac:pain-text-body>
</ac:structured-macro>
</ac:rich-text-body>
</ac:structured-macro>
</ac:rich-text-body>
</ac:structured-macro>
Is there a way I can just let that <code> macro render as a sub-editor in my macro somehow?
I don't think so. $body (in place of, e.g., $!paramcsharp) is what you want to give you an editing block (in page edit view), but you need three blocks. I am not aware of any editing block capability inside the macro browser/IF.
BUT, if you create your own markdown, you could have an editing block on the page, and have all three code blocks in a single editing block, THEN parse them into each of your parameters. That is how I would do it. For example
!CSHARP
<some code>
!JAVA
<some code>
!VTL
<some code>
Of course, you would need to create a man page to explain how to properly enter the source in the body.
Not a bad plan. I'd need to have a way to force the $body to be plain text though, or it'll end up giving me pre-parsed html content, will it not?
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.