[All Adaptavist Apps]

Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

The

...

{with-page}

...

macro

...

does

...

two

...

things:

...

  1. Searches

...

  1. for

...

  1. a

...

  1. page

...

  1. based

...

  1. on

...

  1. the

...

  1. parameters

...

  1. specified

...

  1. Renders

...

  1. the

...

  1. macro

...

  1. body

...

  1. in

...

  1. the

...

  1. context

...

  1. of

...

  1. the

...

  1. page

...

  1. that

...

  1. was found.

See also the with-* macros page for an overview.

1. Retrieving a page

Pages can be retrieved based on:

  • a specific page name,
  • page hierarchy (parent/child relationships),
  • page labels, and
  • metadata keys or key:value pairs which the pages must have.

The macro searches for pages based on these properties in the current space by default, or in any number of spaces which can be specified in the macro parameters.

If more than one search criterion is specified (e.g. labels and metadata), then only pages meeting all the selection criteria will be returned and listed by the macro (boolean AND relationship between the search criteria). Within a list of search terms (e.g. list of labels or metadata), any page matching at least one of the items in the list will be returned (boolean OR relationship within search terms).

Finally, if no page is found satisfying the selected parameters, a default page can be specified to be listed by the macro instead.

2. Rendering in the context of the page that was found

The {with-page} macro then renders the wiki markup in the macro body as if the markup were in the body of the page that was found.

Within the body of the macro, the following variables are replaced by the contents given in the following table:

Variable

Replacement

%withceoid%

the database id of the page

%withceotitle%

the title of the page

%withceoname%

the title of the page

%withpageid%

the database id of the page

%withpagetitle%

the title of the page

%withpagename%

the title of the page

Requirements

This macro requires Builder 3.0 or above.

Usage

Code Block
 found.  

h3. Retrieving a page

Pages can be retrieved based on:

- a specific *page name*,
- page *hierarchy* (parent/child relationships),
- page *labels*, and
- *metadata* _keys_ or _key:value_ pairs which the pages must have.

The macro searches for pages based on these properties in the current space by default, or in any number of spaces which can be specified in the macro parameters.

If more than one search criterion is specified (e.g. labels and metadata), then only pages meeting _all_ the selection criteria will be returned and listed by the macro (boolean AND relationship between the search terms).

Finally, if no page is found satisfying the selected parameters, a default page can be specified to be listed by the macro instead.

h3. Rendering in the context of the page that was found

The \{with-page} macro then renders the wiki markup in the macro body as if the markup were in the body of the page that was found.

Within the body of the macro, the following variables are replaced by the contents given in the following table:

|| Variable || Replacement ||
| %withceoid% | the id of the page |
| %withceotitle% | the title of the page |
| %withceoname% | the title of the page |
| %withpageid% | the id of the page |
| %withpagetitle% | the title of the page |
| %withpagename% | the title of the page |

h2. Requirements

This macro requires [Theme Builder 2.0|Documentation] or above.

h2. Usage

{code}
 {with-page:direction=ancestors|startPage=My Page|space=DOC|title=Page 1,Page 2|label=test,label2|metadata=key1,key2:value1,key2:value2|default=Default Page} 
{code}

Examples

...

of

...

common

...

structures

...

can

...

be

...

found

...

in

...

the

...

examples

...

below.

...

Parameters

Property

Required

Default

Notes

direction

(tick)

 

The direction (in page hierarchy) that the macro should look in when searching for pages. The following values are permitted:

  • ancestor/ancestors/up

...

  • -

...

  • search

...

  • for

...

  • the

...

  • page

...

  • to

...

  • render

...

  • with

...

  • amongst

...

  • the

...

  • ancestors

...

  • of

...

  • the

...

  • start

...

  • page

...

  • descendant/descendants/descendents/down

...

  • -

...

  • search

...

  • for

...

  • the

...

  • page

...

  • to

...

  • render

...

  • with

...

  • amongst

...

  • the

...

  • descendants

...

  • of

...

  • the

...

  • start

...

  • page

...

  • sibling/siblings

...

  • -

...

  • search

...

  • for

...

  • the

...

  • page

...

  • to

...

  • render

...

  • with

...

  • amongst

...

  • the

...

  • siblings

...

  • of

...

  • the

...

  • start

...

  • page
  • children - search for the page to render with amongst the children of the start page
  • none - dont search, just use the start page

startPage
or
startFrom

(error)

@self

The page to start the search from. The following values are permitted:

  • @self - the current page (default)
  • @root - the root of the current page's tree
  • @parent - the parent of the current page
  • @home - the homepage of the current space
  • pagetitle - a named page (either the page title, or spacekey:title)

space

(error)

 

Comma-separated list of spaces to search in

title

(error)

 

Comma-separated list of page titles to search for

label

(error)

 

Comma-separated list of labels the page(s) should have

metadata

(error)

 

Comma-separated list of metadata key:value pairs, or metadata keys which the pages must posess. If a key:value pair is specified, then the key must have that value; if only the key is specified then any value is valid

default

(error)

 

Specifies a default page to use if no page was found with the previous search parameters. The following values are permitted:

  • @self - the current page (default)
  • @root - the root of the current page's tree
  • @parent - the parent of the current page
  • @home - the homepage of the current space
  • pagetitle - a named page (either the page title, or spacekey:title)

Examples

Expand
Display or link to an attachment from an ancestor page
Display or link to an attachment from an ancestor page

Let's start with a simple example: rendering an image attached to the parent page, into the body of the current page.

Code Block

 Show image attached to the parent page
* _children_ - search for the page to render with amongst the children of the start page * _none_ - dont search, just use the start page | ||startPage|(x)|@self|The page to start the search from. The following values are permitted: * _@self_ - the current page (default) * _@root_ - the root of the current page's tree * _@parent_ - the parent of the current page * _@home_ - the homepage of the current space * _pagetitle_ - a named page (either the page title, or spacekey:title) | ||space|(x)| | Comma-separated list of spaces to search in | ||title|(x)| | Comma-separated list of page titles to search for | ||label|(x)| | Comma-separated list of labels the page(s) should have | ||metadata|(x)| |Comma-separated list of metadata _key:value_ pairs, or metadata _keys_ which the pages must posess. If a _key:value_ pair is specified, then the _key_ must have that _value_; if only the _key_ is specified then any _value_ is valid | ||default|(x)| | Specifies a default page to use if no page was found with the previous search parameters. The following values are permitted: * _@self_ - the current page (default) * _@root_ - the root of the current page's tree * _@parent_ - the parent of the current page * _@home_ - the homepage of the current space * _pagetitle_ - a named page (either the page title, or spacekey:title) | h2. Examples h3. List ancestor pages Let's start with a simple example: listing all ancestor pages (i.e. parent, parent's parent, etc. all the way to the root of the current space). {code} List of all parent pages (from the current page)
:
{with-page:direction=up}
{code} Which results in: List of all parent pages (from the current page):
 !image.jpg!
{with-page
:direction=up} As you can see, each page in the space's hierarchy, from the current up to the top (root) is listed as a link to the page itself. h3. List all children pages Similarly, we can list all children, and children's children pages from the current page, much like the \{children} macro does, but then recursively (at infinite depth): {code} List of all children pages (from the current page)
}

Although image.jpg is attached to the parent page, it is rendered in this page. The body of the macro is the same syntax as if it were written in the parent page.

Similarly, any attachment to any parent page can be rendered or linked to the current page. Since the page can be found by labels and metadata, the specific page name is not required. For instance:

Code Block

 Link to "sample.pdf" attached to the first parent page labeled "topic":
{with-page:direction=
down} {code
up|label=topic}
Which results in: List of all children pages (from the current page):
 [^sample.pdf]
{with-page
:direction=descendants} h3. Specifying the starting page for the search You may specify the page at which the \{with-page} macro should start searching. By default (if nothing is specified) this will be the current page. For instance, to list all pages in a space, specify the spacekey: as the parameter for startPage as follows: {code} List of all children pages in the [Builder|Builder:] space {with-page:direction=down|startPage=Builder:} {code} Which results in: List of all children pages in the [Builder|Builder:] space {with-page:direction=down|startPage=Builder:} h3. Searching in more than one space You can set the \{with-page} macro to search for pages in more than one space. By default, the macro will search for pages
}
Expand
Find a page in the current tree with a given label and render its attachments in the current page
Find a page in the current tree with a given label and render its attachments in the current page
Wiki Markup


Suppose there is a page somewhere in the current tree (not necessarily a direct parent, child or sibling) which has attachments we want to use in the current page.  We can combine \{with-page} macros, first searching up the tree, then within that macro search down the tree again, looking for the page.  Finally, we provide markup making use of the attachments found.

{code}
Find page labeled 'sponsors' in the current 
space.
page tree, 
You
knowing 
can
it 
specify
is a 
different
child 
space
of 
with {{startPage=spacekey:}} as per
a parent page with the 
example above. Additionally, you can specify a list of spaces to search in: {code} List of pages in the [Builder|Builder:] and [Bubbles|Bubbles:] spaces:
label 'homepage', then render the images attached to the page labeled 'sponsors' in a gallery on the current page:
{with-page:direction=
down
up|
startPage=@home|space=Builder,Bubbles
label=homepage}
{code}
 
Which results in: List of pages in the [Builder|Builder:] and [Bubbles|Bubbles:] spaces:
{with-page:direction=down|
startPage=@home|space=Builder,Bubbles} h3. List all pages with specific names The \
label=sponsors}
  {gallery}
 {with-page}
macro can retrieve pages based on their names (page titles). For this, use the following syntax:

{
code} List of pages titled "Panel Macros", "Menu Macros", or "Utility Macros" in the [Builder|Builder:] space: {
with-page
:direction=down|startPage=Builder:|title=Panel Macros,Menu Macros,Utility Macros
}
{code}

Which results in:

List
Find 
of
page 
pages titled "Panel Macros", "Menu Macros", or "Utility Macros"
labeled 'sponsors' in the 
[Builder|Builder:] space: {with-page:direction=down|startPage=Builder:|title=Panel Macros,Menu Macros,Utility Macros} h3. List pages with given labels The \{with-page} macro can be used to list pages containing any one label in the list specified. Pages listed by the macro will have at least one of the labels. {code} List of pages labeled 'builder' or 'theme':
current page tree, knowing it is a child of a parent page with the label 'homepage', then render the images attached to the page labeled 'sponsors' in a gallery on the current page
{with-page:direction=up|label=homepage}
 {with-page:direction=down|label=
builder,theme
sponsors}
  {gallery}
 {
code
with-page}
Which results in: List of pages labeled 'builder' or 'theme': {with-page:direction=down|label=builder,theme} h3. List pages with given metadata A list of metadata _keys_, or _key:value_ pairs, can be given to
{with-page}
Expand
Displaying content in a sidebar specific to the current page's location in the page tree
Displaying content in a sidebar specific to the current page's location in the page tree
Wiki Markup


If you are using a page to include in a sidebar on all pages in a space, you can use 
the \{with-page} macro 
as
to 
search
show 
criterion.
content in 
If
the 
you
sidebar 
specify
depending 
a _key:value_ pair, then
on the location of the 
macro will return only pages containing both that _key_ and the specific _value_ for that key. If you only specify a _key_ then the macro will return all pages containing that _key_, regardless of the _value_. See the [Metadata plugin page|http://confluence.atlassian.com/display/CONFEXT/Metadata+Plugin+2] for more information on the Metadata plugin and _key:value_ pairs.
current page.

For instance, if you have a Forum set up (using the Bubbles plugin) you can show information in the sidebar relevant to the forum, only on forum pages.

In this example, we will display a list of child pages to the Forum page, labeled 'sticky':

{code}
Forum-specific 
List
content 
of pages authored by [~gfraser] in the [Builder|Builder:] space:
for the sidebar
{with-page:direction=
down
up|startPage=
Builder:
@self|
metadata=author:gfraser} {code
title=Forum}
Which
 
results in: List of pages authored by [~gfraser]
This will only appear when you're in the
[Builder:]
 %withpagetitle% section of the space
:
.
 {
with
list-
page
descendants:
direction=down|
startPage=
Builder:
@self|
metadata
label=
author:gfraser
sticky}
{with-ancestor}
h3. Specifying a default page to return In order to prevent the macro from returning an empty list in case no pages are found meeting the given search criteria, you may specify a default page to return. {code} List of parent pages:
{code}

Which results in: 

Forum-specific content for the sidebar
{with-page:direction=
down
up|startPage=
@root
@self|
default
title=
@home} {code} Which results in: List of parent pages: {with-page:direction=down|startPage=@root|default=@home} h2. CSS Customisation To follow. h2. Hints and Tips None at present. h2. Frequently Asked Questions None at
Forum}
 This will only appear when you're in the %withpagetitle% section of the space.
 {list-descendants:startPage=@self|label=sticky}
{with-ancestor}

Hints and Tips

None at present.

Frequently Asked Questions

None at present.