The Atlassian Community Forums are currently in read-only mode. We will be relaunching on a new platform on September 22 (read more here). We apologize for the extended downtime. For concerns or questions, please email communitymanagers@atlassian.com. See you on the other side, on the new Atlassian Community Forums! :)

×

Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

User Macro and Properties Report

Couleur_Connection
September 18, 2019

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 !

2 answers

1 accepted

Comments for this post are closed

Community moderators have prevented the ability to post new answers.

1 vote
Answer accepted
Davin Studer
Rising Star
Rising Star
Rising Stars are recognized for providing high-quality answers to other users. Rising Stars receive a certificate of achievement and are on the path to becoming Community Champions.
September 18, 2019

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
Couleur_Connection
September 18, 2019

Thanks for this quick answer. It works perfectly !

Like Davin Studer likes this
Ulrik Schoth
Contributor
November 3, 2021

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).

  • Do you have a tip as to what this could be?
  • Perhaps Atlassian has changed the classes?

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

Ulrik Schoth
Contributor
November 3, 2021

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

0 votes
Robert Eiser
Contributor
January 20, 2021

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!

TAGS
AUG Leaders

Atlassian Community Events