Showing the Latest Modification Dates for All Spaces
Scenario
As administrator or content manager on a Confluence instance with a lot of content, there may be a need to know which spaces are becoming obsolete.
This recipe allows you to show the dates and times of all spaces when it was last touched by a user (commented/new additions/modified, etc).
Be aware that this recipe may take a while to load results if your instance has a large number or spaces or pages. You may want to limit it to specific spaces.
Result
Â
Recipe
Apps | Reporting for Confluence Server & Data Center |
---|---|
Level | Easy |
Estimated time | 15 minutes |
Macros | Combining Reporter, Content Reporter, Date Sort, Repeat Filter, Report Column, Report Info, Report Table, Text Filter, 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="356f269f-552c-405b-aa59-61745bdb8ec6" ac:name="report-table" ac:schema-version="1">
<ac:rich-text-body>
<p class="auto-cursor-target">
<br />
</p>
<ac:structured-macro ac:macro-id="4ac2f5e5-7886-438f-b9c5-c2944b6fd13a" ac:name="combining-reporter" ac:schema-version="1">
<ac:rich-text-body>
<p class="auto-cursor-target">
<br />
</p>
<ac:structured-macro ac:macro-id="d0fe9fa9-e108-49fd-9d8f-c8e49ee89113" ac:name="content-reporter" ac:schema-version="1">
<ac:parameter ac:name="spaces">
<ri:space ri:space-key="@all" />
</ac:parameter>
<ac:rich-text-body>
<ac:structured-macro ac:macro-id="6d3596e9-dcfa-4cb9-bc7d-c4c09d7a7d1f" ac:name="text-filter" ac:schema-version="1">
<ac:parameter ac:name="required">true</ac:parameter>
<ac:parameter ac:name="">content:space</ac:parameter>
</ac:structured-macro> <ac:structured-macro ac:macro-id="c9ab9f36-23d1-4d68-8d8c-f75cfed676af" ac:name="text-sort" ac:schema-version="1">
<ac:parameter ac:name="">content:space</ac:parameter>
</ac:structured-macro> <ac:structured-macro ac:macro-id="42de1ec7-6f7f-44f0-87cc-602169f783a6" ac:name="date-sort" ac:schema-version="1">
<ac:parameter ac:name="order">descending</ac:parameter>
<ac:parameter ac:name="">content:modification date</ac:parameter>
</ac:structured-macro>
</ac:rich-text-body>
</ac:structured-macro>
<p class="auto-cursor-target">
<ac:structured-macro ac:macro-id="04e44dce-093b-40ad-9a80-13f2c75f4ca7" ac:name="repeat-filter" ac:schema-version="1">
<ac:parameter ac:name="match">first</ac:parameter>
<ac:parameter ac:name="">content:space</ac:parameter>
</ac:structured-macro>
</p>
</ac:rich-text-body>
</ac:structured-macro>
<p class="auto-cursor-target">
<br />
</p>
<ac:structured-macro ac:macro-id="cb214b42-0a70-4e25-8da6-b31706d843ed" ac:name="report-column" ac:schema-version="1">
<ac:parameter ac:name="title">Space</ac:parameter>
<ac:rich-text-body>
<p>
<ac:structured-macro ac:macro-id="eee7d0e3-5e13-465f-8ca7-e76db7f39d3e" ac:name="report-info" ac:schema-version="1">
<ac:parameter ac:name="">content:space</ac:parameter>
</ac:structured-macro>
</p>
</ac:rich-text-body>
</ac:structured-macro>
<p class="auto-cursor-target">
<br />
</p>
<ac:structured-macro ac:macro-id="c0f72f1f-1726-404d-8aab-f1027d2950be" ac:name="report-column" ac:schema-version="1">
<ac:parameter ac:name="title">Content</ac:parameter>
<ac:rich-text-body>
<p>
<ac:structured-macro ac:macro-id="fb4d86ec-569b-4cde-813f-4bdf059ef140" ac:name="report-info" ac:schema-version="1">
<ac:parameter ac:name="">content:title</ac:parameter>
</ac:structured-macro>
</p>
</ac:rich-text-body>
</ac:structured-macro>
<p class="auto-cursor-target">
<br />
</p>
<ac:structured-macro ac:macro-id="61388a67-c993-4758-bcf9-7f40b3cba10e" ac:name="report-column" ac:schema-version="1">
<ac:parameter ac:name="title">Last Modified</ac:parameter>
<ac:rich-text-body>
<p>
<ac:structured-macro ac:macro-id="1c68f34e-3c40-4751-af75-242764d7054c" ac:name="report-info" ac:schema-version="1">
<ac:parameter ac:name="">content:modification date</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>
Â
Macro structure
You can recreate the example in the editor view:
Â
Â
Steps
Steps | Description |
---|---|
1 | The report will be formatted as a table with Report Table. |
2 | Combining Reporter is used to enclose the Content Reporter in #2. It takes the results list of contents retrieved from Content Reporter to be filtered via Repeat Filter in #7. |
3 | All contents from all spaces are retrieved from Content Reporter by setting spaces parameter to '@all'. Be aware that using '@all' may cause performance issues if your instance has a large number or spaces or pages. You may want to limit it to specific spaces keys. |
4 | The contents from Content Reporter is first filtered to ensure they have valid spaces. This is done via Text Filter, setting supplier key to 'Content Supplier', and setting required parameter to 'true'. |
5 | The contents are then sorted according to space name via Text Sort, setting supplier key to 'Content Supplier'. |
6 | The contents are then sorted according to date of last modification via Date Sort, setting supplier key to 'Content Supplier'. The order is set to 'descending'. |
7 | The sorted and filtered list of contents from Content Reporter is then filtered again, taking out contents with same spaces, and only include the first content for each space. This is done via Repeat Filter, setting supplier key to 'Content Supplier'. |
8 | Each column of the table is outlined using Report Column. The three column titles are 'Space', 'Content' and 'Last Modified', in that order. |
9 | The space name of each content retrieved from Combining Reporter is displayed via Report Info, setting supplier key to 'Content Supplier'. |
10 | The content name of each content retrieved from Combining Reporter is displayed via Report Info, setting supplier key to 'Content Supplier'. |
11 | The date of last modification of each content retrieved from Combining Reporter is displayed via Report Info setting supplier key to 'Content Supplier'. |
Â
Line-by-Line Explanation
N/A