How to access a page property via macro

I need to access a page property via a (user) macro.

Is this possible?

1 answer

1 accepted

This widget could not be displayed.
Davin Studer Community Champion Jan 28, 2015

Is this what you are looking for?

#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 ($contentPropertyManager=$containerContext.getComponent('contentPropertyManager'))
 
$contentPropertyManager.setStringProperty($content, "myProperty", "Stuff")
$contentPropertyManager.getStringProperty($content, "myProperty")

Thanks. myProperty would be set according to https://confluence.atlassian.com/display/DOC/Page+Properties+Macro (like Deadline in the example in that page), right?

Davin Studer Community Champion Jan 28, 2015

Ah ... got it. You are looking for how to access values within a page properties macro. Not sure you could do it with a user macro. Mainly it is for paring with the page properties report macro.

$content is a reference to the current page objet? Your code showed me how to move forward. In my scenario myProperty is a JIRA issueId associated with a page that display info about that issue.

Adolfo did you succeed in retreiving page properties in a User macro ?

@Adolfo: I also want to display values located in the page properties macro of the current page. Would you mind posting a code snippet of your successful approach here? i take it that Davin pointed you in the right direction but you had to develop the final thing? I would be very interested in what you ended up with. Thanks in Advance

You just need the last two lines of the snippet above. The first one to set a property and the second to read it.

Thanks for the information. i tried it but didnt get any results regarding access to values inside the page properties macro on the same page (i assume that is what you originally asked about?) I guess i need to ask that specific question on my own, huh? :-) Thanks anyway!

That snippet is not for set/get Page Properties macro values, it's for your own values than can be set with a user macro and read within another. I used it to set a JIRA issueid to a confluence page and then use that issueid to query jira with a jiraissue macro.

Thanks David, this worked for me.

Sorry for the newbie question, how would I integrate this, I seem to have the option of a user macro, a macro plugin or a full blown macro.

I have documents with a page property block with things like version and document number.

I want to have the document number and version in a footer.

It would seem a generic macro that just takes one parameter, the name of the property would do.

  $contentPropertyManager.getStringProperty($content, parameter1)

I need to can the solution and pass it to general purpose IT department to install.

TA

Chris

BTW: Am I missing the point, this is such an obvious thing to want to do, is it built in and I missed it?

Suggest an answer

Log in or Sign up to answer
Community showcase
Posted Sep 17, 2018 in Confluence

Why start from scratch? Introducing four new templates for Confluence Cloud

Hi my Community friends!  For those who don't know me, I'm a product marketer on the Confluence Cloud team - nice to meet you! For those of you who do, you know that I've been all up in your Co...

603 views 8 6
Join discussion

Atlassian User Groups

Connect with like-minded Atlassian users at free events near you!

Find a group

Connect with like-minded Atlassian users at free events near you!

Find my local user group

Unfortunately there are no AUG chapters near you at the moment.

Start an AUG

You're one step closer to meeting fellow Atlassian users at your local meet up. Learn more about AUGs

Groups near you