My purpose is to write a user macro to display the "about me" section of a user's profile.
Using the $action.remoteUser class I can get only the name and the email. What about the other fields (location website etc)?
Especially I want to get the "About Me" field since it can contain markup and there I can render more info about the user.
There is also the $req.userPrincipal class but I'd like to know what properties are exposed except the "name"?
Thanks
Finally I got it. Some reverse engineering (thx to spring) helped me render "About Me" as wiki markup. Yupi! this is exactly what I wanted.
I hope it works for you.
#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($userDetailsManager = $containerContext.getComponent('userDetailsManager')) #set($personalInformationManager = $containerContext.getComponent('personalInformationManager')) #set($wikiStyleRenderer = $containerContext.getComponent('wikiStyleRenderer')) #set($pi = $personalInformationManager.getPersonalInformation($action.remoteUser)) #set($renderedAboutMe = $wikiStyleRenderer.convertWikiToXHtml($pi.toPageContext(), $pi.getBodyAsString())) <div> <b>$action.getText('confluence.user.profile.website'): </b> $userDetailsManager.getStringProperty($action.remoteUser, 'website') </div> <div> <b>$action.getText('confluence.user.profile.location'): </b> $userDetailsManager.getStringProperty($action.remoteUser, 'location') </div> <div> <b>$action.getText('personal.info'): </b> <div id="profile-about-me-content">$renderedAboutMe</div> </div>
Have a look at the Confluence source code, particularly:
Adapt what you find :)
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks David, this is what I was looking for.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
This User Macro works fine to get the user profile data of a given user.
Only the email address I can't figure out.
I mean this:
$action.getText('confluence.user.profile.email') $userDetailsManager.getStringProperty($user, 'email')
Any idea?
## @param Username:title=Username|type=string|required=false|desc=Username #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($userDetailsManager = $containerContext.getComponent('userDetailsManager')) #set($personalInformationManager = $containerContext.getComponent('personalInformationManager')) #set($wikiStyleRenderer = $containerContext.getComponent('wikiStyleRenderer')) #if($paramUsername!="") #set( $user = $userAccessor.getUserIfAvailable($paramUsername) ) #else #set( $user = $action.remoteUser) #end #set($pi = $personalInformationManager.getPersonalInformation($user)) #set($renderedAboutMe = $wikiStyleRenderer.convertWikiToXHtml($pi.toPageContext(), $pi.getBodyAsString())) <b>Profildaten von User $user.fullName ($user.name)</b> <div> <b>$action.getText('confluence.user.profile.website'): </b> $userDetailsManager.getStringProperty($user, 'website') </div> <div> <b>$action.getText('confluence.user.profile.location'): </b> $userDetailsManager.getStringProperty($user, 'location') </div> <div> <b>$action.getText('confluence.user.profile.position'): </b> $userDetailsManager.getStringProperty($user, 'position') </div> <div> <b>$action.getText('confluence.user.profile.phone'): </b> $userDetailsManager.getStringProperty($user, 'phone') </div> <div> <b>$action.getText('confluence.user.profile.department'): </b> $userDetailsManager.getStringProperty($user, 'department') </div> <div> <b>$action.getText('confluence.user.profile.email'): </b> $userDetailsManager.getStringProperty($user, 'email') </div> <div> <b>$action.getText('personal.info'): </b> $renderedAboutMe </div>
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
$user.email
Don't know about the label, (confluence.user.profile.email) you can use your own
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Atlassian Government Cloud has achieved FedRAMP Authorization at the Moderate level! Join our webinar to learn how you can accelerate mission success and move work forward faster in cloud, all while ensuring your critical data is secure.
Register NowOnline forums and learning are now in one easy-to-use experience.
By continuing, you accept the updated Community Terms of Use and acknowledge the Privacy Policy. Your public name, photo, and achievements may be publicly visible and available in search engines.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.