Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Confluence Blueprint: How to choose blueprint template/xml file dynamically based on a condition selected in wizard

Mukul June 13, 2014

Hello,

I am writing a Confluence Blueprint. I have to have a wizard page to let user provide inputs. Here is what I did and I am able to see my template/xml being rendered on a page.

<blueprint key="custom-blueprint"
               create-result="edit"
               index-template-key="custom-blueprint-index"
               index-title-key="custom.blueprint.index.page.title"
               index-key="custom-blueprint"
               i18n-name-key="custom.blueprint.name">

        <content-template ref="custom-blueprint-content-template"/>

        <dialog-wizard key="file-list-blueprint-wizard">
            <dialog-page id="pickOptionSelectionPageId"
                         template-key="Custom.Blueprints.OptionSelectionTemplate"
                         title-key="custom.blueprint.dialog.option.select.template.title"
                         description-header-key="custom.blueprint.dialog.option.select.template.heading"
                         description-content-key="custom.blueprint.dialog.option.select.template.description"/>
            <dialog-page id="nextPageId"
                         template-key="..."
                         title-key="..."
                         description-header-key="..."
                         description-content-key="..."
                         last="true"/>
        </dialog-wizard>

    </blueprint>

    <content-template key="custom-blueprint-content-template"
                      i18n-name-key="custom.blueprint.content.template">
        <description key="custom.blueprint.content.template.description"/>
        <resource name="template" type="download" location="templates/custom-template.xml"/>
        <context-provider class="com.foo.CustomBPContextProvider"/>
    </content-template>

My requirement is to have few conditions on my wizard page, and based on the condition I need to select right template/xml file. I see xml template file is hardcoded within <content-template/> element in plugin.xml file.

Is there a way to select template file based on some condition ? OR if I can rewrite the xml file content on the fly to the existing template file.

Appreciate your help!

Thanks

1 answer

1 accepted

1 vote
Answer accepted
Mukul July 2, 2014

I acheived it by having a placeholder variable in my xml template file, and replacing the placeholder with the new xml on the fly.

template.xml:

&lt;at:var at:name="templatePlaceHolder" at:rawxhtml="true"/&gt;

MyContextProvider.java

if (includeA) {
            templatePlaceHolder = getTemplateFileAsString("/templates/A.xml");
        } else {
            templatePlaceHolder = getTemplateFileAsString("/templates/B.xml");
        }
...

blueprintContext.put("templatePlaceHolder", templatePlaceHolder);

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events