Documentation

User Profile Page

Page modules allow add-ons to insert new pages into atlassian products. These can be automatically resized to the width and height of your add-on's content. The location attribute defines where links to the new page appear.

Each type of page displays differently:

  • generalPages - have no extra styling and by default a link to the page is displayed in the main navigation menu.
  • adminPages - display in the administration area. Appropriate menus and other styling appear around your content.
  • profilePages - (Confluence only) displayed as sections inside user profiles. Like admin pages, they appear with all the necessary components around them (such as menus).
  • configurePage - used to configure the addon itself. A link to the page is displayed in the add-on's entry in Manage Add-ons. Unlike the other page modules, an add-on may only define a single configurePage.

The content for a page module is injected into the Atlassian application in the form of a "seamless" iframe. Seamless iframes are regular HTML iframes but with the following characteristics:

  • Their size is based on the page height and width inside the iframe (i.e., no scrollbars)
  • They are dynamically resized based on the inner content or relative browser window sizing
  • They appear without borders, making them look like a non-iframed fragment of the page
  • For general-pages, you can also opt to size your iframe to take up all of the browser window's space (instead of resizing to its internal content). To do this, add the data-option attribute "sizeToParent:true" in the script tag for all.js. For example, using ACE:

    <script src="{{hostScriptUrl}}" type="text/javascript" data-options="sizeToParent:true"></script>

As implied here, for most page content modules, you do not need to be concerned with iframe sizing. It's all handled for you. However, an exception exists for inline macros.

Example

{
  "modules": {
    "generalPages": [
      {
        "url": "/hello-world",
        "icon": {
          "width": 80,
          "height": 80,
          "url": "/maps/icon.png"
        },
        "key": "page-key",
        "name": {
          "value": "General Page"
        }
      }
    ]
  }
}

Properties

name

Required
Yes
Description

A human readable name.

key

Type
string
Required
Yes
Description

A key to identify this module. This key must be unique relative to the add on.

All specified keys will have all special characters and spaces replaced with dashes and will be lower cased.

example: "My Addon Key" will become "my-addon-key"

The key is used to generate the url to your add-on's module. The url is generated as a combination of your add-on key and module key. For example, an add-on which looks like:

{
    "key": "my-addon",
    "modules": {
        "configurePage": {
            "key": "configure-me",
        }
    }
}

Will have a configuration page module with a URL of /plugins/servlet/ac/my-addon/configure-me.

url

Type
string

uri-template
Required
Yes
Description

The url to retrieve the content from. This can be absolute or relative to the addon's baseUrl

conditions

Description

Conditions can be added to display only when all the given conditions are true.

The only supported conditions for pages are:

  • user_is_admin
  • user_is_logged_in
  • user_is_sysadmin

icon

Type
Description

An optional icon to display with the link text or as the link, specified by URL to its hosted location. You can specify a particular width and height for the icon. Most link icons in Atlassian applications are 16 by 16 pixels.

location

Type
string
Description

The location in the application interface where the page's link should appear. For the Atlassian application interface, a location is something like the coordinates on a map. It points to a particular drop-down menu or navigation list in the UI.

Places in the Atlassian UI are identified by what are known as "well-known locations." For example, the "system.admin/globalsettings" location is in the administrative menu link on the left side of the Administration Console.

Product location documentation:

params

Type
object
Description

This object represents a map of key/value pairs, where each property name and value corresponds to the parameter name and value respectively.

Example

{
  "params": {
    "someOtherProperty": "someValue",
    "myCustomProperty": "myValue"
  }
}

weight

Type
integer
Defaults to
100
Description

Determines the order in which the page's link appears in the menu or list.

The "lightest" weight (i.e., lowest number) appears first, rising relative to other items, while the "heaviest" weights sink to the bottom of the menu or list.

Built-in web items have weights that are incremented by numbers that leave room for additional items, such as by 10 or 100. Be mindful of the weight you choose for your item, so that it appears in a sensible order given existing items.