The macro defined below works as intended in it's source page (such as footer) but when the footer is rendered in a page which includes the footer it fails. It appears the script cannot detect the context. Any ideas why this doesn't work.
## Macro title: Space Administrators ## Macro has a body: Y or N (N) ## Body processing: Selected body processing option ## Output: Selected output option ## ## Developed by: Andrew Frayling ## Date created: 28/04/2012 ## Installed by: <your name> ## Macro to list all users and groups with the permission to administer the current space. ## @noparams <h3>Space Adminstrators</h3> <p>The following users and groups have permission to administer the <strong>$space.getName()</strong> Space.</p> <h4>Users</h4> <ul> #foreach ($permission in $space.getPermissions()) #if ($permission.isUserPermission() && $permission.getType() == "SETSPACEPERMISSIONS") <li> #usernameLink($permission.getUserName())</li> #end </ul> #end </table> <h4>Groups</h4> #foreach ($permission in $space.getPermissions()) #if ($permission.isGroupPermission() && $permission.getType() == "SETSPACEPERMISSIONS") #set ( $groupString = $permission.getGroup() ) #set ( $groupObject = $userAccessor.getGroup($groupString) ) #set ( $memberList = $userAccessor.getMemberNamesAsList($groupObject) ) <h5>$groupString</h5> <ul> #foreach ($member in $memberList) <li>#usernameLink($member)</li> #end </ul> #end #end
Hmm... by default Theme Press renders the footer content in the context of the footer page (not in the context of the viewing page) so it shouldn't behave any differently, in theory. A couple of questions:
Regardless, I'm assuming that the intent is to display that permissions info for the target page. This won't be the case in the default mode, since the permissions for the space the footer is in (themepressdefault:) will be shown on all pages. You can remedy this by going to the footer page, and opening the Theme Press Designer's "Footer" tab. In the "Handling" section, check "Render in Context" so the footer will render in the target page's context. (Note, this means that rendered footers are no longer cached, so adds a slight amount of extra work for page views.) Give this a shot to see if that remedies the error you're seeing above.
An alternative to checking the Render in Context box is to add the macro to the page layout. Layout contents are merged into the page before rendering, so will always be in the target page's context, plus skips a rendering step so slightly faster (of course the macro itself adds overhead).
Note the performance implications discussed above are typically in the 50-100 milliseconds range, so not user detectable. Only a consideration on systems that are already stressed...
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!
Unfortunately there are no AUG chapters near you at the moment.Start an AUG