Panel Show
This macro is used for showing or hiding content based on the context of the page or theme.
Usage
Storage Format
<ac:macro ac:name="panel-show">
<ac:parameter ac:name="parameter">value</ac:parameter>
<ac:rich-text-body>
<!-- content here -->
</ac:rich-text-body>
</ac:macro>
Wiki Markup
{panel-show:parameter=value}
<!-- content here -->
{panel-show}
When nesting Panel Show you do not need to number the macros as had to be done in Builder Show.
Parameter | Name | Description | Type | Default | Required |
---|---|---|---|---|---|
mode | Mode | Only show the content for specific modes, eg. View, Edit, etc. | string | ||
context | Context | Only show the content for specific context(s), eg. Page, Global, etc. | string | ||
decorator | Decorator | Only show the content when a specific decorator us being used, eg. Printable, etc. | string | ||
action | Action | Only show the content for specific action(s), eg. viewpage. NB: The .action part of the action name should not be included. | string | ||
label | Page has Label | Only show the content if the the current location (Page, News, etc) has the specified label(s), eg. my:favourite, Meetings, etc. | string | ||
spacelabel | Space has Label | Only show the content if the the current space has the specified label(s), eg. Meetings, etc. | string | ||
teamlabel | Space has Team Label | Only show the content if the the current space has the specified team label(s), eg. Sales, Marketing, etc. | string | ||
metadata | Page has metadata | Metadata associated with the current location in the format: | string | ||
exists | Page Exists | Only show the content if a specific page (referred to by the page title) exists. | string | ||
hastitle | Has Title | Only show the content if the current page has a specific title | string | ||
pluginkey | Plugin Enabled | The key of a plugin, which must be enabled for the content to be shown | string | ||
space | Space Exists | Only show the content if a specific space (referred to by the Space Key) exists. | spacekey | ||
user | Username Is | Matches against the current user (NB: modified by | string | ||
group | Group Membership | A comma separated list of user groups that the current user (NB: modified by | string | ||
restriction | Page Restriction | Display content if the page has a restriction in place ( | string | ||
permission | User has permission | A comma separated list of content permissions that the user must have (NB: modified by view - user has view permission | string | ||
useragent | User-agent | A comma separated list of tokens to match against the user agent string of the requesting browser. | string | ||
attachment | Attachment | A comma separated list of filenames, one of which must be attached to the current page for the content to be displayed. | string | ||
olderthan | Older Than | Content is shown if the current page was modified before the given time period from the current date. The date is shown in this format: olderthan=1y6m1d1h (year/month/day/hour) | string | ||
newerthan | Newer Than | Content is shown if the current page was modified after the given time period from the current date. The date is shown in this format: newerthan=1y6m1d1h (year/month/day/hour) | string | ||
ip | Requesting IP | A comma separated list of IP addresses to match against the request | string | ||
skin | Current Skin | A comma separated list of skins, one of which must be the current skin. | string | ||
parameters | Request Parameters | The request must contain the key or key:value to match | string | ||
locale | Locale | The users locale matches | string | ||
resource | Resource | The named resource in SKINID. | string | ||
panel | Panel | A list of panels, one of which must exist and be enabled | string | ||
recurse | Recurse | Should parent pages (if applicable) be checked for Title, _Labels and Metadata? | boolean | false | |
spacekey | Space Key | The space against which permission checks will be made. Default, is current space | string | ||
pagetitle | Page Title | The page against which permission checks will be made Default is current page. | string | ||
withuser | With User | A username that User, Group, and Permission checks should be run against. This includes | string | ||
flag | Flag | A comma separated list of flags to check, will only show if at least one of the flags is present: | string | ||
notflag | Not Flag | A comma separated list of flags to check, will only show if none of the flags are present: | string |
Parameter Logic
While none of the parameters are mandatory, you must specify at least one of them for this macro to work.
For the macro content to show, all contexts and modes specified must match.
In logic terms, this means if you wish to test against two different parameters that may be exclusive, you must use a Show macro for each list of parameters.
For example, testing against users and groups: A user must be in one of the groups mentioned or the logic will not work. If the user is not a in group mentioned in the parameters, test for the group permissions in the first Panel Show macro, then add another Panel Show macro inside that checks for the user names.
You can specify multiple values for any parameter, for example:
{panel-show:mode=view,edit|context=page,blogpost} stuff to show {panel-show}
In the example above, stuff to show will only be shown if the content is shown in View or Edit mode and is either a Page or Blogpost.
Contexts, Modes and Decorators
You can determine the context and mode for any page by viewing the page source using your browser. A HTML comment output at the top of all pages shows the context and mode for each page.
Example
If you view the HTML source of a ThemeBuilder web page you’ll see similar to the following:
<!-- main.vmd
themebuilder : 'com.adaptavist.confluence.sitebuilder.SiteBuilderVelocityHelper@524c9770'/'$themebuilder.initialise'
spaceKey : 'USERGUIDE'
pageId : '10583'
currentURL : '/pages/viewpage.action?spaceKey=USERGUIDE&title=builder-show+macro&focusedCommentId=11666379'
contextPath : ''
spaceName : 'User Guides'
decorator : '$decorator'
printable : 'false'
mailId : '$mailId'
mode : 'view'
context : 'page'
-->
You can specify multiple contexts and modes by separating them with commas, as shown in the usage example earlier.
Example
Show a message on the user profile page. Code is placed on the ThemeBuilder Content panel.
<ac:macro ac:name="panel-show">
<ac:parameter ac:name="decorator">profile</ac:parameter>
<ac:rich-text-body>
This is the user profile page.
</ac:rich-text-body>
</ac:macro>
{panel-show:decorator=profile}
This is the user profile page.
{panel-show}
Result