Include all child pages
Scenario
This recipe is helpful if you want a parent page to display an aggregated view of all its children in full. It includes an edit link for each section, which will automatically allow the user to edit the listed page.
The steps will guide you on how to include the content of all children of a page, headed by the page title and a link to edit the page.
Result
Recipe
Apps | Linking for Confluence, Reporting for Confluence, Visibility for Confluence |
|---|---|
Level | Advanced |
Estimated time | 30 minutes |
Macros | Content Reporter, Report Block, Report Body, Report Info, Text Sort |
Suppliers | Content Supplier |
Storage format
You can copy and paste this code into the Confluence Source Editor:
<p class="auto-cursor-target">
<br />
</p>
<ac:structured-macro ac:macro-id="9250fecf-e394-4533-aefa-737973f26698" ac:name="report-block" ac:schema-version="1">
<ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter>
<ac:rich-text-body>
<p class="auto-cursor-target">
<br />
</p>
<ac:structured-macro ac:macro-id="a8b07332-112a-468b-aa12-144feaac98f8" ac:name="content-reporter" ac:schema-version="1">
<ac:parameter ac:name="scope">@self > children</ac:parameter>
<ac:rich-text-body>
<ac:structured-macro ac:macro-id="b645edb4-b2ea-4cde-a68b-11b8ad9df2f7" ac:name="text-sort" ac:schema-version="1">
<ac:parameter ac:name="">content:title</ac:parameter>
</ac:structured-macro>
</ac:rich-text-body>
</ac:structured-macro>
<p class="auto-cursor-target">
<br />
</p>
<ac:structured-macro ac:macro-id="a7f431c4-4ce8-44c4-b231-01eb6e988daa" ac:name="report-body" ac:schema-version="1">
<ac:rich-text-body>
<h2>
<ac:structured-macro ac:macro-id="0a1652b8-bff2-4543-a75e-65f24043a7fb" ac:name="report-info" ac:schema-version="1">
<ac:parameter ac:name="link">true</ac:parameter>
<ac:parameter ac:name="">content:title</ac:parameter>
</ac:structured-macro>
</h2>
<ac:structured-macro ac:macro-id="7f427c06-26e1-476c-94ff-f48c14e1c190" ac:name="show-if" ac:schema-version="1">
<ac:parameter ac:name="spacePermission">edit</ac:parameter>
<ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter>
<ac:rich-text-body>
<p>
<em>(<ac:structured-macro ac:macro-id="3adaafeb-d74e-4f39-b4ac-d9e2a8908e24" ac:name="link-to" ac:schema-version="1">
<ac:parameter ac:name="linkText">Edit</ac:parameter>
<ac:parameter ac:name="">page edit</ac:parameter>
</ac:structured-macro>)</em>
</p>
</ac:rich-text-body>
</ac:structured-macro>
<p>
<ac:structured-macro ac:macro-id="649d8ebc-de47-4937-96ae-8a1dd9adc97a" ac:name="report-info" ac:schema-version="1">
<ac:parameter ac:name="render">richtext</ac:parameter>
<ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter>
<ac:parameter ac:name="">content:body</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>
<p class="auto-cursor-target">
<br />
</p>
<ac:structured-macro ac:macro-id="0a6c97bc-a3ba-4fa7-bb6f-5ad1fd3438ff" ac:name="show-if" ac:schema-version="1">
<ac:parameter ac:name="spacePermission">@self:edit</ac:parameter>
<ac:parameter ac:name="atlassian-macro-output-type">INLINE</ac:parameter>
<ac:rich-text-body>
<p>
<ac:structured-macro ac:macro-id="9c7e5a7f-1977-4dca-be02-626118bc427e" ac:name="add-page" ac:schema-version="1">
<ac:parameter ac:name="parent">@self</ac:parameter>
<ac:parameter ac:name="linkText">(+) Add a new section</ac:parameter>
</ac:structured-macro>
</p>
</ac:rich-text-body>
</ac:structured-macro>
<p class="auto-cursor-target">
<br />
</p>
Macro structure
You can recreate the example in the editor view:
Steps
Create a Report Block macro.
Within the Report Block macro, create a Content Reporter macro with the Scope parameter set to
@self > children.Within the Content Reporter, create a Text Sort macro with Key set to
content:title.Within the Report Block macro, under the Content Reporter, create a Report Body macro and select Injected so that we can inject values within the field of Link to Location macro (see step 7).
Within the Report Body macro, create a Report Info with Key set to
content:titleto display the title of each page returned from the Content Reporter macro.Within the Report Body macro, under the Report Info, create a Show If macro (from the Visibility app) with the Space Permissions parameter set to
@self:editoredit.
The Show If macro will only display the contained contents (see step 7) if the current user can edit the current space.Within the Show If macro, create a Link to Location macro (from the Linking app) with the following parameters:
Location:
page edit. The link will go to the edit page of each child page from the Content Reporter macro.Content:
%content:title%. The percentage (%) sign indicates that the enclosed text is injected, that is, the text within will be replaced by the value of the supplier key content:title.Link Text:
Edit
Within the Report Body macro, under the Show If macro, create another Report Info macro with the following parameters:
Key:
content:bodyRender:
richtext
Under the Report Block macro, create another Show If macro (from the Visibility app) with the Space Permissions parameter set to
@self:editoredit.Within the Show If macro, create an Add Page macro (from the Linking app) with the following parameters:
Parent:
@self. The link will create a page under the current page.Link Text:
(+) Add a new section