arrow-down
    1. Overview
    2. Core concepts
    3. Using docs
    4. Intro Videos
    5. Tutorials
    1. Intro
    2. GraphQL API
    3. Media API
    4. Extending the API
    5. Component API
    1. Content Studio
      1. Branches
    2. Layers
      1. Lifecycle
      2. Media
      3. Attachments
      4. X-data
        1. Page templates
        2. Fragments
      5. Variants
      6. Permissions
      7. Versions
    3. Sites
      1. Visual editor
    4. Publishing
    1. Introduction
      1. Controllers
      2. Globals
      3. Events
      4. HTTP Request
      5. HTTP Response
      6. Error handler
      7. Filters
      8. Templating
      9. Localization
      10. Websocket
      11. Tasks
      12. Main controller
      13. Java bridge
      1. Admin Lib
      2. Application Lib
      3. Auditlog Lib
      4. Authentication Lib
      5. Cluster Lib
      6. Common Lib
      7. Content Lib
      8. Context Lib
      9. Event Lib
      10. Export Lib
      11. Grid Lib
      12. I18N Lib
      13. IO Lib
      14. Mail Lib
      15. Node Lib
      16. Portal Lib
      17. Project Lib
      18. Repo Lib
      19. Scheduler Lib
      20. Schema Lib
      21. Tasks Lib
      22. Value Lib
      23. VHost Lib
      24. Websocket Lib
    2. Other Libraries
      1. CLI
      2. Sandboxes
      3. Code
      4. Building
      5. Configuration
      6. TypeScript
    3. Building APIs
      1. Mappings
      2. Components
      3. Processors
      4. Contributions
    4. Building Webapps
      1. ID providers
      2. Admin Apps
      3. Admin Widgets
    1. Architecture
      1. TODO
      1. Navigating
      2. Users
      3. Applications
      4. Data management
      5. System info
      6. Audit Logs
      7. Task management
      1. Portal
      2. IDprovider
      3. Management
      4. Statistics
      1. Nodes and repos
      2. Properties
      3. Indexing
      4. Branches
      5. Editors
      1. DSL Queries
      2. NoQL Queries
      3. Filters
      4. Aggregations
      5. Highlighting
      1. ID providers
      2. System ID provider
      3. Users and groups
      4. Roles
      1. Strategies
      2. Distributions
      3. Docker
      4. Kubernetes
      5. Systemd
      6. Vhosts
      7. Configuration
      8. Backup & restore
      9. Clustering
      10. Observability
      1. Notes
      2. Upgrade
      3. Upgrading Apps
        1. Asset service
        2. HTTP service
        3. Image service
    1. Best practice
        1. AttachmentUploader
        2. Checkbox
        3. Combobox
        4. ContentSelector
        5. ContentTypeFilter
        6. CustomSelector
        7. Date
        8. DateTime
        9. Double
        10. GeoPoint
        11. HtmlArea
        12. ImageSelector
        13. Long
        14. MediaSelector
        15. Radiobutton
        16. Tag
        17. TextArea
        18. TextLine
        19. Time
        1. Field set
        2. Item set
        3. Option set
      1. Mixins
      2. Localization
      3. Styles
    2. Content Types
    3. X-data
    4. Macros
      1. Pages
      2. Regions
      3. Part component
      4. Layout component
      5. Text component
      6. Component Filtering
      7. Component Indexing
    1. Marketplace
    2. Market guidelines

ContentSelector input type

Contents

References to other content are specified by this input type. Use the toggle icon to switch between the list mode (default) and the tree mode.

Usage

<input name="mycontentselector" type="ContentSelector">
  <label>My ContentSelector</label>
  <occurrences minimum="0" maximum="0"/>
  <config>
    <allowContentType>citation</allowContentType>  (1)
    <allowContentType>my.other.app:quote</allowContentType>
    <allowPath>${site}/people/</allowPath>  (2)
    <allowPath>./*</allowPath>
    <allowPath>/quotes*</allowPath>
    <treeMode>true</treeMode>   (3)
    <hideToggleIcon>true</hideToggleIcon>  (4)
  </config>
</input>
1 allowContentType is used to limit the content types that may be selected using the Allow content type pattern
2 allowPath is used to limit the path of the content that may be selected using the allowPath Samples. By default, Content Selector only displays content from the same site.
3 treeMode toggles between tree and flat modes. Default value is false (flat mode).
Input box with a dropdown with a tree structure
4 hideToggleIcon hides the toggle icon when set to false.
Input box without an icon

Allow content type pattern

XP uses one of two modes when matching content type patterns:

LEGACY

this mode simulates the pattern matching functionality that was the default before XP 7.7.0. XP 7.7.0

MATCH

this mode is the current default mode and has a few notable changes from LEGACY mode.

The modes are explained in further detail below. You can configure which mode to use in the admin config.

Legacy

If the pattern value can be found in any part of the content type name, then it is considered a match. The pattern will be prefixed by the current application name unless:

  • the pattern uses the <application-name:content-name> format

  • the pattern includes one of : or *

  • the pattern starts with ${app}.

Match

The pattern will be treated as a Regular Expression (with a few notable exceptions) and the whole content type name must match it to be accepted. The pattern will be prefixed by the current application name if it does not contain any of the following characters: \^$.|?*+()[{:.

XP patterns: special cases

XP’s patterns have a few cases where they differ from normal Regular Expression syntax:

${app}template expression

Most content type names start with the name of the application where they are stored. It may be quite messy and hard to maintain the whole application name in every pattern, so the ${app} template expression can be used to replace it.

The '*' character

In most regex engines, the * character means "0 or more of the preceding token". However, XP treats it differently and interprets it as "0 or more of any character(s) except for line breaks". In that way, it’s similar to glob patterns.

To further clarify, in XP:

  • *day would match "monday", "day", and "mayday". This pattern would be invalid in most regex engines.

  • p*age would match "page" and "package", but not "age".

  • monk* would match "monkey" and "monk", but not "mon".

Example 1. Samples

Content type "citation" within your current application

<allowContentType>citation</allowContentType>

Content type "quote" from the application "my.other.app"

<allowContentType>my.other.app:quote</allowContentType>

Content types "quote" from any application

<allowContentType>*:quote</allowContentType>

Any content types from current application

<allowContentType>${app}:*</allowContentType>

All content types starting with banana (using regular expressions)

<allowContentType>*:banana*</allowContentType>

All content types except 'base:folder'

<allowContentType>^(?!base:folder$)*</allowContentType>

allowPath Samples

Allow all content starting from the root

<allowPath>*</allowPath>

Only content from the current site (but from any location), e.g
* /mySite/fish.jpg
* /mySite/articles/new-blog-post
* /mySite/someFolder/anotherFolder/rubarb/lettuce

<allowPath>${site}/*</allowPath>

All children of <site>/people, e.g
* /mySite/people/myContent
* /mySite/people/myGroup/anotherContent

<allowPath>${site}/people/*</allowPath>

All content in mySite starting with people, including children, e.g
* /mySite/peoples
* /mySite/people/myContent
* /mySite/peoples/myContent
* /mySite/people/myGroup/anotherContent

<allowPath>/mySite/people*</allowPath>

All children of the current content

<allowPath>./*</allowPath>

All children of the current content’s parent

<allowPath>../*</allowPath>

Contents

Contents

AI-powered search

Juke AI