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

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&gt;join with " "&gt;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&gt;match "\\u0028(\\d*)\\u0029"&gt;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&gt;match "page.(.*?)v.*?\\u0028(.*?)\\u0029"&gt;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

  1. Add a Report On macro.
    Set its Key parameter to "data:content_reporter_name>join with " ">find ".*?v.*?\\(.*?\\)".

  2. 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=".

  3. Add a Report Info macro and set its Key parameter to "match:value>match "page.(.*?)v.*?\\u0028(.*?)\\u0029">group 1".