I try to use the User Macro given in this question : https://community.atlassian.com/t5/Answers-Developer-Questions/Get-incoming-links-with-in-a-user-macro/qaq-p/538128
It works fine on the page but if I put the macro in a [Page Property] macro, the links are not visible on the page properties report.
I modify the code to display the content of $incLinks variable : it contains links on the page (even inside Page Property macro) but it's empty in the page properties index.
Anyone has an idea ?
Thanks !
This is one I wrote a couple years ago. I works for me with page properties and the report macro.
Macro Name:
referring_content
Macro Title:
Referring Content
Macro Body Processing:
No macro body
Template:
## Developed by: Davin Studer ## Date created: 06/26/2014 ## @noparams #set($containerManagerClass=$content.class.forName('com.atlassian.spring.container.ContainerManager')) #set($getInstanceMethod=$containerManagerClass.getDeclaredMethod('getInstance',null)) #set($containerManager=$getInstanceMethod.invoke(null,null)) #set($containerContext=$containerManager.containerContext) #set($linkManager=$containerContext.getComponent('linkManager')) #set($pages = $linkManager.getReferringContent($content)) #if($pages.size() > 0) <ul class="referring-content-links"> #foreach($page in $pages) #if (!$page.isDeleted()) <li><a href="$page.getUrlPath()">$page.getTitle()</a></li> #end #end </ul> #end
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Davin,
since I also have the problem that the Incoming links are not displayed in the Page Properties Report when using the solution provided in another thread, I was very happy to see your solution. Unfortunately, it doesn't seem to work in the Confluence version I'm using (7.13.0 DC).
It seems, that already the first #set command does not work. I added some lines to the code after the first five #set commands which all result in "... not defined!".
#set($containerManagerClass=$content.class.forName('com.atlassian.spring.container.ContainerManager'))
#set($getInstanceMethod=$containerManagerClass.getDeclaredMethod('getInstance',null))
#set($containerManager=$getInstanceMethod.invoke(null,null))
#set($containerContext=$containerManager.containerContext)
#set($linkManager=$containerContext.getComponent('linkManager'))
#if (!$containerManagerClass) <div>containerManagerClass is not defined!</div> #end
#if (!$getInstanceMethod) <div>getInstanceMethod is not defined!</div> #end
#if (!$containerContext) <div>containerContext is not defined!</div> #end
#if (!$containerManager) <div>containerManager is not defined!</div> #end
#if (!$linkManager) <div>linkManager is not defined!</div> #end
Thanks a lot and best regards,
Ulrik
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi Davin,
I'm afraid I've just found the root cause by myself:
According to issue CONFSERVER-59935, as of Confluence version 7.0.1, the security settings have been tightened. After that the use of class.forName() is no longer possible.
This is really frustrating... :-(
Regards,
Ulrik
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Here is a user macro solution to get incoming links based on the page property reports - where you can show the metadata that has been identified from the source page on the destination page of a link. It is a little hacky as it relies on matching the page title with the contents of the source page:
This could be enhanced by adding parameters to identify the labels, but I haven't tested that yet.
## Macro title: Incoming link with page properties
## Macro has a body: Y
## Body processing: Rendered
## Output: A list of incoming pages including the identified page properties from the source pages
##
## Developed by: Roberte
## Date created: 20/01/2021
## Installed by: Roberte
##
<p>
<ac:structured-macro ac:name="detailssummary" ac:schema-version="2" ac:macro-id="39fcccb8-78b8-4341-afb1-e5fd86a9f38e">
<ac:parameter ac:name="firstcolumn">Page title</ac:parameter>
<ac:parameter ac:name="headings">YOUR DESIRED PAGE PROPERY FIELDS</ac:parameter>
<ac:parameter ac:name="cql">label = "LABELNAME" and text ~ "$content.title"</ac:parameter>
</ac:rich-text-body>
</ac:structured-macro>
</p>
Just wanted to share this as I have often used solutions from within this forum. Hope it will be useful for others!
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.