Create customized links with Scaffolding's Content Options macro
Scenario
By default using Reporting on Scaffolding's Content Options macro will only display content in plain text but if you want the content to be hyperlinked, you may use the following recipe.
Reporting allows you to use regular expressions (regex) to look for specific patterns and get data that's relevant to you. Using regex we will grab metadata from the Content Options macro, specifically the page title and page ID.
The page title is used as the label for the link
Page ID is used as the link URL which has been embedded within the Report Link macro
Reporting contains a Text Supplier and Match Supplier which can be used to manipulate data from a Confluence instance.
In this recipe, the Text Supplier and Match Supplier are used for generating links for the Content Options macro.
Result
Recipe
Apps | Scaffolding Forms & Templates for Confluence Server and Data Center, Reporting for Confluence Server & Data Center |
---|---|
Level | Advanced |
Estimated time | 20 minutes |
Macros | Report Info, Report Link, Report On |
Suppliers | Match Supplier, Scaffold Data Supplier, Text Supplier |
Storage format
You can copy and paste this code into the Confluence Source Editor:
<ac:structured-macro ac:macro-id="9a5cf569-5aa3-48d3-85a8-14148409703d" ac:name="report-on" ac:schema-version="1">
<ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter>
<ac:parameter ac:name="">data:link>join with " ">find ".*?v.*?\\(.*?\\)"</ac:parameter>
<ac:rich-text-body>
<p class="auto-cursor-target">
<br />
</p>
<ac:structured-macro ac:macro-id="2e0d52d0-3a01-4c6e-93b2-0dc95f49fa1b" ac:name="report-link" ac:schema-version="1">
<ac:parameter ac:name="prefix">https://apps-demo.servicerocket.io/confluence-6.15.0/pages/viewpage.action?pageId=</ac:parameter>
<ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter>
<ac:parameter ac:name="">match:value>match "\\u0028(\\d*)\\u0029">group 1</ac:parameter>
<ac:rich-text-body>
<p>
<ac:structured-macro ac:macro-id="6935a64b-831d-452f-9ddd-96d37688547b" ac:name="report-info" ac:schema-version="1">
<ac:parameter ac:name="">match:value>match "page.(.*?)v.*?\\u0028(.*?)\\u0029">group 1</ac:parameter>
</ac:structured-macro>
</p>
</ac:rich-text-body>
</ac:structured-macro>
<p class="auto-cursor-target">
<br />
</p>
</ac:rich-text-body>
</ac:structured-macro>
Â
Macro structure
You can recreate the example in the editor view:
Steps
Add a Report On macro.
Set its Key parameter to "data:content_reporter_name>join with " ">find ".*?v.*?\\(.*?\\)".Within the Report On macro, add a Report Link macro.
Set its Key parameter to "match:value>match "\\u0028(\\d*)\\u0029">group 1" and URL Prefix parameter to "Confluence URL/pages/viewpage.action?pageId=".Add a Report Info macro and set its Key parameter to "match:value>match "page.(.*?)v.*?\\u0028(.*?)\\u0029">group 1".