Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in
Celebration

Earn badges and make progress

You're on your way to the next level! Join the Kudos program to earn points and save your progress.

Deleted user Avatar
Deleted user

Level 1: Seed

25 / 150 points

Next: Root

Avatar

1 badge earned

Collect

Participate in fun challenges

Challenges come and go, but your rewards stay with you. Do more to earn more!

Challenges
Coins

Gift kudos to your peers

What goes around comes around! Share the love by gifting kudos to your peers.

Recognition
Ribbon

Rise up in the ranks

Keep earning points to reach the top of the leaderboard. It resets every quarter so you always have a chance!

Leaderboard

Come for the products,
stay for the community

The Atlassian Community can help you and your team get more value out of Atlassian products and practices.

Atlassian Community about banner
4,463,279
Community Members
 
Community Events
176
Community Groups

User Macro and Properties Report

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

1 vote
Answer accepted

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

Thanks for this quick answer. It works perfectly !

Like Davin Studer likes this

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

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

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!

Suggest an answer

Log in or Sign up to answer
TAGS

Atlassian Community Events