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.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.