diff --git a/docs/administration/back_office/back_office_elements/add_dropdowns.md b/docs/administration/back_office/back_office_elements/add_dropdowns.md
index 68e3beed7e6..162dfdfc284 100644
--- a/docs/administration/back_office/back_office_elements/add_dropdowns.md
+++ b/docs/administration/back_office/back_office_elements/add_dropdowns.md
@@ -110,19 +110,19 @@ The following attributes are available:
|`choices`| |Elements listed in the drop-down.|
|`preferred_choices`| | Elements listed at the top of the list with a separator.|
|`value`|-|The currently selected element. It is an object with a key `value`. |
-|`multiple`| truefalse|Boolean. To allow users to select multiple items.|
-|`translation_domain`|truefalse|Used for translating choices and placeholder.|
-|`custom_form`|truefalse|For custom form must be set to true.|
+|`multiple`| true false|Boolean. To allow users to select multiple items.|
+|`translation_domain`|true false|Used for translating choices and placeholder.|
+|`custom_form`|true false|For custom form must be set to true.|
|`class`| |Additional classes for the element with `ibexa-dropdown` class.|
|`placeholder`| | Placeholder displayed when no option is selected.|
-|`custom_init`|truefalse|By default set to `false`. If set to `true`, requires manually initializing drop-down in JavaScript.|
-|`is_disabled`|truefalse|Disables drop-down.|
-|`is_hidden`|truefalse|Hides the whole widget.|
-|`is_small`|truefalse|Adjusts height of the widget (from 48px to 32px).|
-|`is_ghost`|truefalse|Changes layout of the widget, removes all borders and backgrounds (similar to buttons modifier).|
+|`custom_init`|true false|By default set to `false`. If set to `true`, requires manually initializing drop-down in JavaScript.|
+|`is_disabled`|true false|Disables drop-down.|
+|`is_hidden`|true false|Hides the whole widget.|
+|`is_small`|true false|Adjusts height of the widget (from 48px to 32px).|
+|`is_ghost`|true false|Changes layout of the widget, removes all borders and backgrounds (similar to buttons modifier).|
|`min_search_items`|number, default 5|Minimum number of options that have to be passed to show the search inside the drop-down.|
|`selected_item_label`|text|Allows setting constant label for widget. By default the visible label shows the currently selected options.|
-|`has_select_all_toggler`|truefalse|Allows showing a "Select all" option if the minimum number of items is reached.|
+|`has_select_all_toggler`|true false|Allows showing a "Select all" option if the minimum number of items is reached.|
|`min_select_all_toggler_items`|number, default 5|Minimum number of items the dropdown must have for the "Select all" option to appear.|

diff --git a/docs/administration/back_office/browser/browser.md b/docs/administration/back_office/browser/browser.md
index a62807716f8..ffcf3889c0d 100644
--- a/docs/administration/back_office/browser/browser.md
+++ b/docs/administration/back_office/browser/browser.md
@@ -54,42 +54,42 @@ You can configure UDW under the `ibexa.system..universal_discovery_widget
There you can set the following properties:
-|YMLReact props|Values|Required|Definition|
+|YML React props|Values|Required|Definition|
|-------------------|------|--------|----------|
-|multiple`multiple`|truefalse|no|The possibility to choose multiple locations.|
-|multiple_items_limit`multipleItemsLimit`|number|no|Maximum number of items with configuration `multiple: true`.|
-|root_location_id`rootLocationId`|number|no|UDW displays locations only below this content tree element.|
-|starting_location_id`startingLocationId`|number|no|This location is displayed as a starting location in UDW.|
-|containers_only`containersOnly`|truefalse|no|When set to `true` only containers can be selected.|
-|allowed_content_types`allowedContentTypes`|null[][`contentTypeIdentifier`]|yes|List of allowed content types:`null` – all content types are allowed,`[]` – empty table, no content types are allowed.|
-|active_sort_clause`activeSortClause`|DatePublishedContentName|no|Sort Clause by which children in the content tree is sorted.|
-|active_sort_order`activeSortOrder`|ascendingdescending|no|Sorting order of the children in the content tree.|
-|active_tab`activeTab`|browsesearchbookmarks|no|Starting tab in the UDW.|
-|active_view`activeView`|findergridtree|no|Starting view in the UDW.|
-|allow_redirects`allowRedirects`|truefalse|yes|Allows to redirect content from the UDW tab to another page, for example, to content edit page.|
-|selected_locations`selectedLocations`|[][locationId]|no|Location that is selected automatically.|
-|allow_confirmation`allowConfirmation`|truefalse|yes|Shows confirmations buttons in the UDW. If set to false, it's not possible to confirm selection.|
+|multiple `multiple`|true false|no|The possibility to choose multiple locations.|
+|multiple_items_limit `multipleItemsLimit`|number|no|Maximum number of items with configuration `multiple: true`.|
+|root_location_id `rootLocationId`|number|no|UDW displays locations only below this content tree element.|
+|starting_location_id `startingLocationId`|number|no|This location is displayed as a starting location in UDW.|
+|containers_only `containersOnly`|true false|no|When set to `true` only containers can be selected.|
+|allowed_content_types `allowedContentTypes`|null [] [`contentTypeIdentifier`]|yes|List of allowed content types: `null` – all content types are allowed, `[]` – empty table, no content types are allowed.|
+|active_sort_clause `activeSortClause`|DatePublished ContentName|no|Sort Clause by which children in the content tree is sorted.|
+|active_sort_order `activeSortOrder`|ascending descending|no|Sorting order of the children in the content tree.|
+|active_tab `activeTab`|browse search bookmarks|no|Starting tab in the UDW.|
+|active_view `activeView`|finder grid tree|no|Starting view in the UDW.|
+|allow_redirects `allowRedirects`|true false|yes|Allows to redirect content from the UDW tab to another page, for example, to content edit page.|
+|selected_locations `selectedLocations`|[] [locationId]|no|Location that is selected automatically.|
+|allow_confirmation `allowConfirmation`|true false|yes|Shows confirmations buttons in the UDW. If set to false, it's not possible to confirm selection.|
### Content on the Fly group
-|YMLReact props|Values|Required|Definition|
+|YML React props|Values|Required|Definition|
|-------------------|------|--------|----------|
-|allowed_languages`allowedLanguages`|null[][languageCode]|yes|Languages available in Content on the Fly:`null` - all,`[]` - none.|
-|allowed_locations`allowedLocations`|null[][locationId]|yes|Location under which creating content is allowed:`null` - everywhere,`[]` - nowhere.|
-|preselected_language`preselectedLanguage`|nulllanguageCode|yes|First language on the Content on the Fly language list:null - language order defined in the system.|
-|preselected_content_type`preselectedContentType`|nullcontentTypeIdentifier|yes|Content selected in Content on the Fly.|
-|hidden`hidden`|truefalse|yes|Content on the Fly visibility.|
-|auto_confirm_after_publish`autoConfirmAfterPublish`|truefalse|yes|If set to `true` UDW is automatically closed after publishing the content.|
+|allowed_languages `allowedLanguages`|null [] [languageCode]|yes|Languages available in Content on the Fly: `null` - all, `[]` - none.|
+|allowed_locations `allowedLocations`|null [] [locationId]|yes|Location under which creating content is allowed: `null` - everywhere, `[]` - nowhere.|
+|preselected_language `preselectedLanguage`|null languageCode|yes|First language on the Content on the Fly language list: null - language order defined in the system.|
+|preselected_content_type `preselectedContentType`|null contentTypeIdentifier|yes|Content selected in Content on the Fly.|
+|hidden `hidden`|true false|yes|Content on the Fly visibility.|
+|auto_confirm_after_publish `autoConfirmAfterPublish`|true false|yes|If set to `true` UDW is automatically closed after publishing the content.|
### Tabs config group
General configuration for tabs, for example, browse, search, bookmarks.
-|YMLReact props|Values|Required|Definition|
+|YML React props|Values|Required|Definition|
|-------------------|------|--------|----------|
-|items_per_page`itemsPerPage`|number|yes|Number of items shown on one page.|
-|priority`priority`|number|yes|Priority of items shown in the tab list. Item with a highest value is displayed as first.|
-|hidden`hidden`|truefalse|yes|Hides or reveals specific tabs.|
+|items_per_page `itemsPerPage`|number|yes|Number of items shown on one page.|
+|priority `priority`|number|yes|Priority of items shown in the tab list. Item with a highest value is displayed as first.|
+|hidden `hidden`|true false|yes|Hides or reveals specific tabs.|
### Configuration available only through JS
diff --git a/docs/api/event_reference/cart_events.md b/docs/api/event_reference/cart_events.md
index 9d96a94598a..c35ac86f6af 100644
--- a/docs/api/event_reference/cart_events.md
+++ b/docs/api/event_reference/cart_events.md
@@ -8,19 +8,19 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`AddEntryEvent`|`CartService::addEntry`|`CartInterface $cart``EntryAddStruct $entryAddStruct``CartInterface $cartResult`|
-|`BeforeAddEntryEvent`|`CartService::addEntry`|`CartInterface $cart``EntryAddStruct $entryAddStruct``?CartInterface $cartResult = null`|
-|`BeforeCreateCartEvent`|`CartService::createCart`|`CartCreateStruct $cartCreateStruct``?CartInterface $cartResult = null`|
+|`AddEntryEvent`|`CartService::addEntry`|`CartInterface $cart` `EntryAddStruct $entryAddStruct` `CartInterface $cartResult`|
+|`BeforeAddEntryEvent`|`CartService::addEntry`|`CartInterface $cart` `EntryAddStruct $entryAddStruct` `?CartInterface $cartResult = null`|
+|`BeforeCreateCartEvent`|`CartService::createCart`|`CartCreateStruct $cartCreateStruct` `?CartInterface $cartResult = null`|
|`BeforeDeleteCartEvent`|`CartService::deleteCart`|`CartInterface $cart`|
|`BeforeEmptyCartEvent`|`CartService::emptyCart`|`CartInterface $cart`|
-|`BeforeMergeCartsEvent`|`CartService::mergeCarts`|`CartInterface $targetCart``array $cartsToMerge``bool $deleteMergedCarts`|
-|`BeforeRemoveEntryEvent`|`CartService::removeEntry`|`CartInterface $cart``EntryInterface $entry``?CartInterface $cartResult = null`|
-|`BeforeUpdateCartMetadataEvent`|`CartService::updateCartMetadata`|`CartInterface $cart``CartMetadataUpdateStruct $cartUpdateStruct``?CartInterface $cartResult = null`|
-|`BeforeUpdateEntryEvent`|`CartService::updateEntry`|`CartInterface $cart``EntryInterface $entry``EntryUpdateStruct $entryUpdateStruct``?CartInterface $cartResult = null`|
-|`CreateCartEvent`|`CartService::createCart`|`CartCreateStruct $cartCreateStruct``CartInterface $cartResult`|
+|`BeforeMergeCartsEvent`|`CartService::mergeCarts`|`CartInterface $targetCart` `array $cartsToMerge` `bool $deleteMergedCarts`|
+|`BeforeRemoveEntryEvent`|`CartService::removeEntry`|`CartInterface $cart` `EntryInterface $entry` `?CartInterface $cartResult = null`|
+|`BeforeUpdateCartMetadataEvent`|`CartService::updateCartMetadata`|`CartInterface $cart` `CartMetadataUpdateStruct $cartUpdateStruct` `?CartInterface $cartResult = null`|
+|`BeforeUpdateEntryEvent`|`CartService::updateEntry`|`CartInterface $cart` `EntryInterface $entry` `EntryUpdateStruct $entryUpdateStruct` `?CartInterface $cartResult = null`|
+|`CreateCartEvent`|`CartService::createCart`|`CartCreateStruct $cartCreateStruct` `CartInterface $cartResult`|
|`DeleteCartEvent`|`CartService::deleteCart`|`CartInterface $cart`|
|`EmptyCartEvent`|`CartService::emptyCart`|`CartInterface $cart`|
|`MergeCartsEvent`|`CartService::mergeCarts`|`CartInterface $cartResult`|
-|`RemoveEntryEvent`|`CartService::removeEntry`|`CartInterface $cart``EntryInterface $entry``CartInterface $cartResult`|
-|`UpdateCartMetadataEvent`|`CartService::updateCartMetadata`|`CartInterface $cart``CartMetadataUpdateStruct $cartUpdateStruct``CartInterface $cartResult`|
-|`UpdateEntryEvent`|`CartService::updateEntry`|`CartInterface $cart``EntryInterface $entry``EntryUpdateStruct $entryUpdateStruct``CartInterface $cartResult`|
+|`RemoveEntryEvent`|`CartService::removeEntry`|`CartInterface $cart` `EntryInterface $entry` `CartInterface $cartResult`|
+|`UpdateCartMetadataEvent`|`CartService::updateCartMetadata`|`CartInterface $cart` `CartMetadataUpdateStruct $cartUpdateStruct` `CartInterface $cartResult`|
+|`UpdateEntryEvent`|`CartService::updateEntry`|`CartInterface $cart` `EntryInterface $entry` `EntryUpdateStruct $entryUpdateStruct` `CartInterface $cartResult`|
diff --git a/docs/api/event_reference/content_events.md b/docs/api/event_reference/content_events.md
index 7eb8db3f2bd..8bb644629e4 100644
--- a/docs/api/event_reference/content_events.md
+++ b/docs/api/event_reference/content_events.md
@@ -7,20 +7,20 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateContentDraftEvent`|`ContentService::createContentDraft`|`ContentInfo $contentInfo``VersionInfo $versionInfo``User $creator``?Language $language``?Content $contentDraft`|
-|`CreateContentDraftEvent`|`ContentService::createContentDraft`|`Content $contentDraft``ContentInfo $contentInfo``VersionInfo $versionInfo``User $creator``?Language $language`|
-|`BeforeCreateContentEvent`|`ContentService::createContent`|`ContentCreateStruct $contentCreateStruct``array $locationCreateStructs``?Content $content``string[] or null $fieldIdentifiersToValidate`|
-|`CreateContentEvent`|`ContentService::createContent`|`ContentCreateStruct $contentCreateStruct``array $locationCreateStructs``Content $content``string[] or null $fieldIdentifiersToValidate`|
-|`BeforeUpdateContentEvent`|`ContentService::updateContent`|`VersionInfo $versionInfo``ContentUpdateStruct $contentUpdateStruct``?Content $content``string[] or null $fieldIdentifiersToValidate`|
-|`UpdateContentEvent`|`ContentService::updateContent`|`Content $content``VersionInfo $versionInfo``ContentUpdateStruct $contentUpdateStruct``string[] or null $fieldIdentifiersToValidate`|
-|`BeforeUpdateContentMetadataEvent`|`ContentService::updateContentMetadata`|`ContentInfo $contentInfo``ContentMetadataUpdateStruct $contentMetadataUpdateStruct``?Content $content`|
-|`UpdateContentMetadataEvent`|`ContentService::updateContentMetadata`|`Content $content``ContentInfo $contentInfo``ContentMetadataUpdateStruct $contentMetadataUpdateStruct`|
-|`BeforeCopyContentEvent`|`ContentService::copyContent`|`ContentInfo $contentInfo``LocationCreateStruct $destinationLocationCreateStruct``VersionInfo $versionInfo``?Content $content`|
-|`CopyContentEvent`|`ContentService::copyContent`|`Content $content``ContentInfo $contentInfo``LocationCreateStruct $destinationLocationCreateStruct``VersionInfo $versionInfo`|
-|`BeforePublishVersionEvent`|`ContentService::publishVersion`|`VersionInfo $versionInfo``?Content $content``string[] $translations`|
-|`PublishVersionEvent`|`ContentService::publishVersion`|`Content $content``VersionInfo $versionInfo``string[] $translations`|
-|`BeforeDeleteContentEvent`|`ContentService::deleteContent`|`ContentInfo $contentInfo``array or null $locations`|
-|`DeleteContentEvent`|`ContentService::deleteContent`|`array $locations``ContentInfo $contentInfo`|
+|`BeforeCreateContentDraftEvent`|`ContentService::createContentDraft`|`ContentInfo $contentInfo` `VersionInfo $versionInfo` `User $creator` `?Language $language` `?Content $contentDraft`|
+|`CreateContentDraftEvent`|`ContentService::createContentDraft`|`Content $contentDraft` `ContentInfo $contentInfo` `VersionInfo $versionInfo` `User $creator` `?Language $language`|
+|`BeforeCreateContentEvent`|`ContentService::createContent`|`ContentCreateStruct $contentCreateStruct` `array $locationCreateStructs` `?Content $content` `string[] or null $fieldIdentifiersToValidate`|
+|`CreateContentEvent`|`ContentService::createContent`|`ContentCreateStruct $contentCreateStruct` `array $locationCreateStructs` `Content $content` `string[] or null $fieldIdentifiersToValidate`|
+|`BeforeUpdateContentEvent`|`ContentService::updateContent`|`VersionInfo $versionInfo` `ContentUpdateStruct $contentUpdateStruct` `?Content $content` `string[] or null $fieldIdentifiersToValidate`|
+|`UpdateContentEvent`|`ContentService::updateContent`|`Content $content` `VersionInfo $versionInfo` `ContentUpdateStruct $contentUpdateStruct` `string[] or null $fieldIdentifiersToValidate`|
+|`BeforeUpdateContentMetadataEvent`|`ContentService::updateContentMetadata`|`ContentInfo $contentInfo` `ContentMetadataUpdateStruct $contentMetadataUpdateStruct` `?Content $content`|
+|`UpdateContentMetadataEvent`|`ContentService::updateContentMetadata`|`Content $content` `ContentInfo $contentInfo` `ContentMetadataUpdateStruct $contentMetadataUpdateStruct`|
+|`BeforeCopyContentEvent`|`ContentService::copyContent`|`ContentInfo $contentInfo` `LocationCreateStruct $destinationLocationCreateStruct` `VersionInfo $versionInfo` `?Content $content`|
+|`CopyContentEvent`|`ContentService::copyContent`|`Content $content` `ContentInfo $contentInfo` `LocationCreateStruct $destinationLocationCreateStruct` `VersionInfo $versionInfo`|
+|`BeforePublishVersionEvent`|`ContentService::publishVersion`|`VersionInfo $versionInfo` `?Content $content` `string[] $translations`|
+|`PublishVersionEvent`|`ContentService::publishVersion`|`Content $content` `VersionInfo $versionInfo` `string[] $translations`|
+|`BeforeDeleteContentEvent`|`ContentService::deleteContent`|`ContentInfo $contentInfo` `array or null $locations`|
+|`DeleteContentEvent`|`ContentService::deleteContent`|`array $locations` `ContentInfo $contentInfo`|
|`BeforeDeleteVersionEvent`|`ContentService::deleteVersion`|`VersionInfo $versionInfo`|
|`DeleteVersionEvent`|`ContentService::deleteVersion`|`VersionInfo $versionInfo`|
@@ -28,17 +28,17 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeAddRelationEvent`|`ContentService::addRelation`|`VersionInfo $sourceVersion``ContentInfo $destinationContent``?Relation $relation`|
-|`AddRelationEvent`|`ContentService::addRelation`|`Relation $relation``VersionInfo $sourceVersion``ContentInfo $destinationContent`|
-|`BeforeDeleteRelationEvent`|`ContentService::deleteRelation`|`VersionInfo $sourceVersion``ContentInfo $destinationContent`|
-|`DeleteRelationEvent`|`ContentService::deleteRelation`|`VersionInfo $sourceVersion``ContentInfo $destinationContent`|
+|`BeforeAddRelationEvent`|`ContentService::addRelation`|`VersionInfo $sourceVersion` `ContentInfo $destinationContent` `?Relation $relation`|
+|`AddRelationEvent`|`ContentService::addRelation`|`Relation $relation` `VersionInfo $sourceVersion` `ContentInfo $destinationContent`|
+|`BeforeDeleteRelationEvent`|`ContentService::deleteRelation`|`VersionInfo $sourceVersion` `ContentInfo $destinationContent`|
+|`DeleteRelationEvent`|`ContentService::deleteRelation`|`VersionInfo $sourceVersion` `ContentInfo $destinationContent`|
## Content translations
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeDeleteTranslationEvent`|`ContentService::deleteTranslation`|`ContentInfo $contentInfo``$languageCode`|
-|`DeleteTranslationEvent`|`ContentService::deleteTranslation`|`ContentInfo $contentInfo``$languageCode`|
+|`BeforeDeleteTranslationEvent`|`ContentService::deleteTranslation`|`ContentInfo $contentInfo` `$languageCode`|
+|`DeleteTranslationEvent`|`ContentService::deleteTranslation`|`ContentInfo $contentInfo` `$languageCode`|
## Hiding and revealing
diff --git a/docs/api/event_reference/content_type_events.md b/docs/api/event_reference/content_type_events.md
index 8c64392ae16..ed2b1ed25e6 100644
--- a/docs/api/event_reference/content_type_events.md
+++ b/docs/api/event_reference/content_type_events.md
@@ -7,14 +7,14 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateContentTypeDraftEvent`|`ContentTypeService::createContentTypeDraft`|`ContentType $contentType``?ContentTypeDraft $contentTypeDraft`|
-|`CreateContentTypeDraftEvent`|`ContentTypeService::createContentTypeDraft`|`ContentTypeDraft $contentTypeDraft``ContentType $contentType`|
-|`BeforeCreateContentTypeEvent`|`ContentTypeService::createContentType`|`ContentTypeCreateStruct $contentTypeCreateStruct``array $contentTypeGroups``?ContentTypeDraft $contentTypeDraft`|
-|`CreateContentTypeEvent`|`ContentTypeService::createContentType`|`ContentTypeDraft $contentTypeDraft``ContentTypeCreateStruct $contentTypeCreateStruct``array $contentTypeGroups`|
-|`BeforeUpdateContentTypeDraftEvent`|`ContentTypeService::updateContentTypeDraft`|`ContentTypeDraft $contentTypeDraft``ContentTypeUpdateStruct $contentTypeUpdateStruct`|
-|`UpdateContentTypeDraftEvent`|`ContentTypeService::updateContentTypeDraft`|`ContentTypeDraft $contentTypeDraft``ContentTypeUpdateStruct $contentTypeUpdateStruct`|
-|`BeforeCopyContentTypeEvent`|`ContentTypeService::copyContentType`|`ContentType $contentType``User $creator``?ContentType $contentTypeCopy`|
-|`CopyContentTypeEvent`|`ContentTypeService::copyContentType`|`ContentType $contentTypeCopy``ContentType $contentType``User $creator`|
+|`BeforeCreateContentTypeDraftEvent`|`ContentTypeService::createContentTypeDraft`|`ContentType $contentType` `?ContentTypeDraft $contentTypeDraft`|
+|`CreateContentTypeDraftEvent`|`ContentTypeService::createContentTypeDraft`|`ContentTypeDraft $contentTypeDraft` `ContentType $contentType`|
+|`BeforeCreateContentTypeEvent`|`ContentTypeService::createContentType`|`ContentTypeCreateStruct $contentTypeCreateStruct` `array $contentTypeGroups` `?ContentTypeDraft $contentTypeDraft`|
+|`CreateContentTypeEvent`|`ContentTypeService::createContentType`|`ContentTypeDraft $contentTypeDraft` `ContentTypeCreateStruct $contentTypeCreateStruct` `array $contentTypeGroups`|
+|`BeforeUpdateContentTypeDraftEvent`|`ContentTypeService::updateContentTypeDraft`|`ContentTypeDraft $contentTypeDraft` `ContentTypeUpdateStruct $contentTypeUpdateStruct`|
+|`UpdateContentTypeDraftEvent`|`ContentTypeService::updateContentTypeDraft`|`ContentTypeDraft $contentTypeDraft` `ContentTypeUpdateStruct $contentTypeUpdateStruct`|
+|`BeforeCopyContentTypeEvent`|`ContentTypeService::copyContentType`|`ContentType $contentType` `User $creator` `?ContentType $contentTypeCopy`|
+|`CopyContentTypeEvent`|`ContentTypeService::copyContentType`|`ContentType $contentTypeCopy` `ContentType $contentType` `User $creator`|
|`BeforePublishContentTypeDraftEvent`|`ContentTypeService::publishContentTypeDraft`|`ContentTypeDraft $contentTypeDraft`|
|`PublishContentTypeDraftEvent`|`ContentTypeService::publishContentTypeDraft`|`ContentTypeDraft $contentTypeDraft`|
|`BeforeDeleteContentTypeEvent`|`ContentTypeService::deleteContentType`|`ContentType $contentType`|
@@ -24,10 +24,10 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateContentTypeGroupEvent`|`ContentTypeService::createContentTypeGroup`|`ContentTypeCreateStruct $contentTypeCreateStruct``array $contentTypeGroups``?ContentTypeDraft $contentTypeDraft`|
-|`CreateContentTypeGroupEvent`|`ContentTypeService::createContentTypeGroup`|`ContentTypeGroup $contentTypeGroup``ContentTypeGroupCreateStruct $contentTypeGroupCreateStruct`|
-|`BeforeUpdateContentTypeGroupEvent`|`ContentTypeService::updateContentTypeGroup`|`ContentTypeGroup $contentTypeGroup``ContentTypeGroupUpdateStruct $contentTypeGroupUpdateStruct`|
-|`UpdateContentTypeGroupEvent`|`ContentTypeService::updateContentTypeGroup`|`ContentTypeGroup $contentTypeGroup``ContentTypeGroupUpdateStruct $contentTypeGroupUpdateStruct`|
+|`BeforeCreateContentTypeGroupEvent`|`ContentTypeService::createContentTypeGroup`|`ContentTypeCreateStruct $contentTypeCreateStruct` `array $contentTypeGroups` `?ContentTypeDraft $contentTypeDraft`|
+|`CreateContentTypeGroupEvent`|`ContentTypeService::createContentTypeGroup`|`ContentTypeGroup $contentTypeGroup` `ContentTypeGroupCreateStruct $contentTypeGroupCreateStruct`|
+|`BeforeUpdateContentTypeGroupEvent`|`ContentTypeService::updateContentTypeGroup`|`ContentTypeGroup $contentTypeGroup` `ContentTypeGroupUpdateStruct $contentTypeGroupUpdateStruct`|
+|`UpdateContentTypeGroupEvent`|`ContentTypeService::updateContentTypeGroup`|`ContentTypeGroup $contentTypeGroup` `ContentTypeGroupUpdateStruct $contentTypeGroupUpdateStruct`|
|`BeforeDeleteContentTypeGroupEvent`|`ContentTypeService::deleteContentTypeGroup`|`ContentTypeGroup $contentTypeGroup`|
|`DeleteContentTypeGroupEvent`|`ContentTypeService::deleteContentTypeGroup`|`ContentTypeGroup $contentTypeGroup`|
@@ -35,25 +35,25 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeRemoveContentTypeTranslationEvent`|`ContentTypeService::removeContentTypeTranslation`|`ContentTypeDraft $contentTypeDraft``string $languageCode``?ContentTypeDraft $newContentTypeDraft`|
-|`RemoveContentTypeTranslationEvent`|`ContentTypeService::removeContentTypeTranslation`|`ContentTypeDraft $newContentTypeDraft``ContentTypeDraft $contentTypeDraft``string $languageCode`|
+|`BeforeRemoveContentTypeTranslationEvent`|`ContentTypeService::removeContentTypeTranslation`|`ContentTypeDraft $contentTypeDraft` `string $languageCode` `?ContentTypeDraft $newContentTypeDraft`|
+|`RemoveContentTypeTranslationEvent`|`ContentTypeService::removeContentTypeTranslation`|`ContentTypeDraft $newContentTypeDraft` `ContentTypeDraft $contentTypeDraft` `string $languageCode`|
## Field definitions
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeAddFieldDefinitionEvent`|`ContentTypeService::addFieldDefinition`|`ContentTypeDraft $contentTypeDraft``FieldDefinitionCreateStruct $fieldDefinitionCreateStruct`|
-|`AddFieldDefinitionEvent`|`ContentTypeService::addFieldDefinition`|`ContentTypeDraft $contentTypeDraft``FieldDefinitionCreateStruct $fieldDefinitionCreateStruct`|
-|`BeforeUpdateFieldDefinitionEvent`|`ContentTypeService::updateFieldDefinition`|`ContentTypeDraft $contentTypeDraft``FieldDefinition $fieldDefinition``FieldDefinitionUpdateStruct $fieldDefinitionUpdateStruct`|
-|`UpdateFieldDefinitionEvent`|`ContentTypeService::updateFieldDefinition`|`ContentTypeDraft $contentTypeDraft``FieldDefinition $fieldDefinition``FieldDefinitionUpdateStruct $fieldDefinitionUpdateStruct`|
-|`BeforeRemoveFieldDefinitionEvent`|`ContentTypeService::removeFieldDefinition`|`ContentTypeDraft $contentTypeDraft``FieldDefinition $fieldDefinition`|
-|`RemoveFieldDefinitionEvent`|`ContentTypeService::removeFieldDefinition`|`ContentTypeDraft $contentTypeDraft``FieldDefinition $fieldDefinition`|
+|`BeforeAddFieldDefinitionEvent`|`ContentTypeService::addFieldDefinition`|`ContentTypeDraft $contentTypeDraft` `FieldDefinitionCreateStruct $fieldDefinitionCreateStruct`|
+|`AddFieldDefinitionEvent`|`ContentTypeService::addFieldDefinition`|`ContentTypeDraft $contentTypeDraft` `FieldDefinitionCreateStruct $fieldDefinitionCreateStruct`|
+|`BeforeUpdateFieldDefinitionEvent`|`ContentTypeService::updateFieldDefinition`|`ContentTypeDraft $contentTypeDraft` `FieldDefinition $fieldDefinition` `FieldDefinitionUpdateStruct $fieldDefinitionUpdateStruct`|
+|`UpdateFieldDefinitionEvent`|`ContentTypeService::updateFieldDefinition`|`ContentTypeDraft $contentTypeDraft` `FieldDefinition $fieldDefinition` `FieldDefinitionUpdateStruct $fieldDefinitionUpdateStruct`|
+|`BeforeRemoveFieldDefinitionEvent`|`ContentTypeService::removeFieldDefinition`|`ContentTypeDraft $contentTypeDraft` `FieldDefinition $fieldDefinition`|
+|`RemoveFieldDefinitionEvent`|`ContentTypeService::removeFieldDefinition`|`ContentTypeDraft $contentTypeDraft` `FieldDefinition $fieldDefinition`|
## Assigning to groups
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeAssignContentTypeGroupEvent`|`ContentTypeService::assignContentTypeGroup`|`ContentType $contentType``ContentTypeGroup $contentTypeGroup`|
-|`AssignContentTypeGroupEvent`|`ContentTypeService::assignContentTypeGroup`|`ContentType $contentType``ContentTypeGroup $contentTypeGroup`|
-|`BeforeUnassignContentTypeGroupEvent`|`ContentTypeService::unassignContentTypeGroup`|`ContentType $contentType``ContentTypeGroup $contentTypeGroup`|
-|`UnassignContentTypeGroupEvent`|`ContentTypeService::unassignContentTypeGroup`|`ContentType $contentType``ContentTypeGroup $contentTypeGroup`|
+|`BeforeAssignContentTypeGroupEvent`|`ContentTypeService::assignContentTypeGroup`|`ContentType $contentType` `ContentTypeGroup $contentTypeGroup`|
+|`AssignContentTypeGroupEvent`|`ContentTypeService::assignContentTypeGroup`|`ContentType $contentType` `ContentTypeGroup $contentTypeGroup`|
+|`BeforeUnassignContentTypeGroupEvent`|`ContentTypeService::unassignContentTypeGroup`|`ContentType $contentType` `ContentTypeGroup $contentTypeGroup`|
+|`UnassignContentTypeGroupEvent`|`ContentTypeService::unassignContentTypeGroup`|`ContentType $contentType` `ContentTypeGroup $contentTypeGroup`|
diff --git a/docs/api/event_reference/language_events.md b/docs/api/event_reference/language_events.md
index 5f3c378d07b..8fe10f000f9 100644
--- a/docs/api/event_reference/language_events.md
+++ b/docs/api/event_reference/language_events.md
@@ -7,10 +7,10 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateLanguageEvent`|`LanguageService::createLanguage`|`LanguageCreateStruct $languageCreateStruct``?Language $language`|
-|`CreateLanguageEvent`|`LanguageService::createLanguage`|`Language $language``LanguageCreateStruct $languageCreateStruct`|
-|`BeforeUpdateLanguageNameEvent`|`LanguageService::updateLanguageName`|`Language $language``string $newName``?Language $updatedLanguage`|
-|`UpdateLanguageNameEvent`|`LanguageService::updateLanguageName`|`Language $updatedLanguage``Language $language``string $newName`|
+|`BeforeCreateLanguageEvent`|`LanguageService::createLanguage`|`LanguageCreateStruct $languageCreateStruct` `?Language $language`|
+|`CreateLanguageEvent`|`LanguageService::createLanguage`|`Language $language` `LanguageCreateStruct $languageCreateStruct`|
+|`BeforeUpdateLanguageNameEvent`|`LanguageService::updateLanguageName`|`Language $language` `string $newName` `?Language $updatedLanguage`|
+|`UpdateLanguageNameEvent`|`LanguageService::updateLanguageName`|`Language $updatedLanguage` `Language $language` `string $newName`|
|`BeforeDeleteLanguageEvent`|`LanguageService::deleteLanguage`|`Language $language`|
|`DeleteLanguageEvent`|`LanguageService::deleteLanguage`|`Language $language`|
@@ -18,7 +18,7 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeEnableLanguageEvent`|`LanguageService::enableLanguage`|`Language $language``?Language $enabledLanguage`|
-|`EnableLanguageEvent`|`LanguageService::enableLanguage`|`Language $enabledLanguage``Language $language`|
-|`BeforeDisableLanguageEvent`|`LanguageService::disableLanguage`|`Language $language``?Language $disabledLanguage`|
-|`DisableLanguageEvent`|`LanguageService::disableLanguage`|`Language $disabledLanguage``Language $language`|
+|`BeforeEnableLanguageEvent`|`LanguageService::enableLanguage`|`Language $language` `?Language $enabledLanguage`|
+|`EnableLanguageEvent`|`LanguageService::enableLanguage`|`Language $enabledLanguage` `Language $language`|
+|`BeforeDisableLanguageEvent`|`LanguageService::disableLanguage`|`Language $language` `?Language $disabledLanguage`|
+|`DisableLanguageEvent`|`LanguageService::disableLanguage`|`Language $disabledLanguage` `Language $language`|
diff --git a/docs/api/event_reference/location_events.md b/docs/api/event_reference/location_events.md
index ecc463cc89e..e57222cc1d6 100644
--- a/docs/api/event_reference/location_events.md
+++ b/docs/api/event_reference/location_events.md
@@ -7,10 +7,10 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateLocationEvent`|`LocationService::createLocation`|`ContentInfo $contentInfo``LocationCreateStruct $locationCreateStruct``?Location $location`|
-|`CreateLocationEvent`|`LocationService::createLocation`|`Location $location``ContentInfo $contentInfo``LocationCreateStruct $locationCreateStruct`|
-|`BeforeUpdateLocationEvent`|`LocationService::updateLocation`|`Location $location``LocationUpdateStruct $locationUpdateStruct``?Location $updatedLocation`|
-|`UpdateLocationEvent`|`LocationService::updateLocation`|`Location $updatedLocation``Location $location``LocationUpdateStruct $locationUpdateStruct`|
+|`BeforeCreateLocationEvent`|`LocationService::createLocation`|`ContentInfo $contentInfo` `LocationCreateStruct $locationCreateStruct` `?Location $location`|
+|`CreateLocationEvent`|`LocationService::createLocation`|`Location $location` `ContentInfo $contentInfo` `LocationCreateStruct $locationCreateStruct`|
+|`BeforeUpdateLocationEvent`|`LocationService::updateLocation`|`Location $location` `LocationUpdateStruct $locationUpdateStruct` `?Location $updatedLocation`|
+|`UpdateLocationEvent`|`LocationService::updateLocation`|`Location $updatedLocation` `Location $location` `LocationUpdateStruct $locationUpdateStruct`|
|`BeforeDeleteLocationEvent`|`LocationService::deleteLocation`|`Location $location`|
|`DeleteLocationEvent`|`LocationService::deleteLocation`|`Location $location`|
@@ -18,18 +18,18 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeHideLocationEvent`|`LocationService::hideLocation`|`Location $location``?Location $hiddenLocation`|
-|`HideLocationEvent`|`LocationService::hideLocation`|`Location $hiddenLocation``Location $location`|
-|`BeforeUnhideLocationEvent`|`LocationService::unhideLocation`|`Location $location``?Location $revealedLocation`|
-|`UnhideLocationEvent`|`LocationService::unhideLocation`|`Location $revealedLocation``Location $location`|
+|`BeforeHideLocationEvent`|`LocationService::hideLocation`|`Location $location` `?Location $hiddenLocation`|
+|`HideLocationEvent`|`LocationService::hideLocation`|`Location $hiddenLocation` `Location $location`|
+|`BeforeUnhideLocationEvent`|`LocationService::unhideLocation`|`Location $location` `?Location $revealedLocation`|
+|`UnhideLocationEvent`|`LocationService::unhideLocation`|`Location $revealedLocation` `Location $location`|
## Subtree and Location management
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCopySubtreeEvent`|`LocationService::copySubtree`|`Location $subtree``Location $targetParentLocation``?Location $location`|
-|`CopySubtreeEvent`|`LocationService::copySubtree`|`Location $location``Location $subtree``Location $targetParentLocation`|
-|`BeforeMoveSubtreeEvent`|`LocationService::moveSubtree`|`Location $location``Location $newParentLocation`|
-|`MoveSubtreeEvent`|`LocationService::moveSubtree`|`Location $location``Location $newParentLocation`|
-|`BeforeSwapLocationEvent`|`LocationService::swapLocation`|`Location $location1``Location $location2`|
-|`SwapLocationEvent`|`LocationService::swapLocation`|`Location $location1``Location $location2`|
+|`BeforeCopySubtreeEvent`|`LocationService::copySubtree`|`Location $subtree` `Location $targetParentLocation` `?Location $location`|
+|`CopySubtreeEvent`|`LocationService::copySubtree`|`Location $location` `Location $subtree` `Location $targetParentLocation`|
+|`BeforeMoveSubtreeEvent`|`LocationService::moveSubtree`|`Location $location` `Location $newParentLocation`|
+|`MoveSubtreeEvent`|`LocationService::moveSubtree`|`Location $location` `Location $newParentLocation`|
+|`BeforeSwapLocationEvent`|`LocationService::swapLocation`|`Location $location1` `Location $location2`|
+|`SwapLocationEvent`|`LocationService::swapLocation`|`Location $location1` `Location $location2`|
diff --git a/docs/api/event_reference/object_state_events.md b/docs/api/event_reference/object_state_events.md
index 6d286ad2446..6821491f2ee 100644
--- a/docs/api/event_reference/object_state_events.md
+++ b/docs/api/event_reference/object_state_events.md
@@ -7,10 +7,10 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateObjectStateEvent`|`ObjectStateService::createObjectState`|`ObjectStateGroup $objectStateGroup``ObjectStateCreateStruct $objectStateCreateStruct``?ObjectState $objectState`|
-|`CreateObjectStateEvent`|`ObjectStateService::createObjectState`|`ObjectState $objectState``ObjectStateGroup $objectStateGroup``ObjectStateCreateStruct $objectStateCreateStruct`|
-|`BeforeUpdateObjectStateEvent`|`ObjectStateService::updateObjectState`|`ObjectState $objectState``ObjectStateUpdateStruct $objectStateUpdateStruct``?ObjectState $updatedObjectState`|
-|`UpdateObjectStateEvent`|`ObjectStateService::updateObjectState`|`ObjectState $updatedObjectState``ObjectState $objectState``ObjectStateUpdateStruct $objectStateUpdateStruct`|
+|`BeforeCreateObjectStateEvent`|`ObjectStateService::createObjectState`|`ObjectStateGroup $objectStateGroup` `ObjectStateCreateStruct $objectStateCreateStruct` `?ObjectState $objectState`|
+|`CreateObjectStateEvent`|`ObjectStateService::createObjectState`|`ObjectState $objectState` `ObjectStateGroup $objectStateGroup` `ObjectStateCreateStruct $objectStateCreateStruct`|
+|`BeforeUpdateObjectStateEvent`|`ObjectStateService::updateObjectState`|`ObjectState $objectState` `ObjectStateUpdateStruct $objectStateUpdateStruct` `?ObjectState $updatedObjectState`|
+|`UpdateObjectStateEvent`|`ObjectStateService::updateObjectState`|`ObjectState $updatedObjectState` `ObjectState $objectState` `ObjectStateUpdateStruct $objectStateUpdateStruct`|
|`BeforeDeleteObjectStateEvent`|`ObjectStateService::deleteObjectState`|`ObjectState $objectState`|
|`DeleteObjectStateEvent`|`ObjectStateService::deleteObjectState`|`ObjectState $objectState`|
@@ -18,10 +18,10 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateObjectStateGroupEvent`|`ObjectStateService::createObjectStateGroup`|`ObjectStateGroupCreateStruct $objectStateGroupCreateStruct``?ObjectStateGroup $objectStateGroup`|
-|`CreateObjectStateGroupEvent`|`ObjectStateService::createObjectStateGroup`|`ObjectStateGroup $objectStateGroup``ObjectStateGroupCreateStruct $objectStateGroupCreateStruct`|
-|`BeforeUpdateObjectStateGroupEvent`|`ObjectStateService::updateObjectStateGroup`|`ObjectStateGroup $objectStateGroup``ObjectStateGroupUpdateStruct $objectStateGroupUpdateStruct``?ObjectStateGroup $updatedObjectStateGroup`|
-|`UpdateObjectStateGroupEvent`|`ObjectStateService::updateObjectStateGroup`|`ObjectStateGroup $updatedObjectStateGroup``ObjectStateGroup $objectStateGroup``ObjectStateGroupUpdateStruct $objectStateGroupUpdateStruct`|
+|`BeforeCreateObjectStateGroupEvent`|`ObjectStateService::createObjectStateGroup`|`ObjectStateGroupCreateStruct $objectStateGroupCreateStruct` `?ObjectStateGroup $objectStateGroup`|
+|`CreateObjectStateGroupEvent`|`ObjectStateService::createObjectStateGroup`|`ObjectStateGroup $objectStateGroup` `ObjectStateGroupCreateStruct $objectStateGroupCreateStruct`|
+|`BeforeUpdateObjectStateGroupEvent`|`ObjectStateService::updateObjectStateGroup`|`ObjectStateGroup $objectStateGroup` `ObjectStateGroupUpdateStruct $objectStateGroupUpdateStruct` `?ObjectStateGroup $updatedObjectStateGroup`|
+|`UpdateObjectStateGroupEvent`|`ObjectStateService::updateObjectStateGroup`|`ObjectStateGroup $updatedObjectStateGroup` `ObjectStateGroup $objectStateGroup` `ObjectStateGroupUpdateStruct $objectStateGroupUpdateStruct`|
|`BeforeDeleteObjectStateGroupEvent`|`ObjectStateService::deleteObjectStateGroup`|`ObjectStateGroup $objectStateGroup`|
|`DeleteObjectStateGroupEvent`|`ObjectStateService::deleteObjectStateGroup`|`ObjectStateGroup $objectStateGroup`|
@@ -29,7 +29,7 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeSetContentStateEvent`|`ObjectStateService::deleteObjectState`|`ContentInfo $contentInfo``ObjectStateGroup $objectStateGroup``ObjectState $objectState`|
-|`SetContentStateEvent`|`ObjectStateService::deleteObjectState`|`ContentInfo $contentInfo``ObjectStateGroup $objectStateGroup``ObjectState $objectState`|
-|`BeforeSetPriorityOfObjectStateEvent`|`ObjectStateService::setPriorityOfObjectState`|`ObjectState $objectState``private $priority`|
-|`SetPriorityOfObjectStateEvent`|`ObjectStateService::setPriorityOfObjectState`|`ObjectState $objectState``private $priority`|
+|`BeforeSetContentStateEvent`|`ObjectStateService::deleteObjectState`|`ContentInfo $contentInfo` `ObjectStateGroup $objectStateGroup` `ObjectState $objectState`|
+|`SetContentStateEvent`|`ObjectStateService::deleteObjectState`|`ContentInfo $contentInfo` `ObjectStateGroup $objectStateGroup` `ObjectState $objectState`|
+|`BeforeSetPriorityOfObjectStateEvent`|`ObjectStateService::setPriorityOfObjectState`|`ObjectState $objectState` `private $priority`|
+|`SetPriorityOfObjectStateEvent`|`ObjectStateService::setPriorityOfObjectState`|`ObjectState $objectState` `private $priority`|
diff --git a/docs/api/event_reference/other_events.md b/docs/api/event_reference/other_events.md
index 3b4a289f4dc..020996a7b23 100644
--- a/docs/api/event_reference/other_events.md
+++ b/docs/api/event_reference/other_events.md
@@ -23,8 +23,8 @@ The following events refer to [notifications displayed in the user menu](notific
| Event | Dispatched by | Properties |
|---|---|---|
-|[`BeforeCreateNotificationEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Events-Notification-BeforeCreateNotificationEvent.html)|[`NotificationService::createNotification`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-NotificationService.html#method_createNotification)|`CreateStruct $createStruct``?Notification $notification`|
-|[`CreateNotificationEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Events-Notification-CreateNotificationEvent.html)|[`NotificationService::createNotification`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-NotificationService.html#method_createNotification)|`Notification $notification``CreateStruct $createStruct`|
+|[`BeforeCreateNotificationEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Events-Notification-BeforeCreateNotificationEvent.html)|[`NotificationService::createNotification`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-NotificationService.html#method_createNotification)|`CreateStruct $createStruct` `?Notification $notification`|
+|[`CreateNotificationEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Events-Notification-CreateNotificationEvent.html)|[`NotificationService::createNotification`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-NotificationService.html#method_createNotification)|`Notification $notification` `CreateStruct $createStruct`|
|[`BeforeDeleteNotificationEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Events-Notification-BeforeDeleteNotificationEvent.html)|[`NotificationService::deleteNotification`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-NotificationService.html#method_deleteNotification)|`Notification $notification`|
|[`DeleteNotificationEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Events-Notification-DeleteNotificationEvent.html)|[`NotificationService::deleteNotification`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-NotificationService.html#method_deleteNotification)|`Notification $notification`|
|[`BeforeMarkNotificationAsReadEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Events-Notification-BeforeMarkNotificationAsReadEvent.html)|[`NotificationService::markNotificationAsRead`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-NotificationService.html#method_markNotificationAsRead)|`Notification $notification`|
@@ -38,10 +38,10 @@ The following events refer to key/value application-wide settings in database.
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateSettingEvent`|`SettingService::createSetting`|`SettingCreateStruct $settingCreateStruct``?Setting $setting`|
-|`CreateSettingEvent`|`SettingService::createSetting`|`Setting $setting``SettingCreateStruct $settingCreateStruct`|
-|`BeforeUpdateSettingEvent`|`SettingService::updateSetting`|`Setting $setting``SettingUpdateStruct $settingUpdateStruct``?Setting $updatedSetting`|
-|`UpdateSettingEvent`|`SettingService::updateSetting`|`Setting $updatedSetting``Setting $setting``SettingUpdateStruct $settingUpdateStruct`|
+|`BeforeCreateSettingEvent`|`SettingService::createSetting`|`SettingCreateStruct $settingCreateStruct` `?Setting $setting`|
+|`CreateSettingEvent`|`SettingService::createSetting`|`Setting $setting` `SettingCreateStruct $settingCreateStruct`|
+|`BeforeUpdateSettingEvent`|`SettingService::updateSetting`|`Setting $setting` `SettingUpdateStruct $settingUpdateStruct` `?Setting $updatedSetting`|
+|`UpdateSettingEvent`|`SettingService::updateSetting`|`Setting $updatedSetting` `Setting $setting` `SettingUpdateStruct $settingUpdateStruct`|
|`BeforeDeleteSettingEvent`|`SettingService::deleteSetting`|`Setting $setting`|
|`DeleteSettingEvent`|`SettingService::deleteSetting`|`Setting $setting`|
@@ -58,7 +58,7 @@ The following events are dispatched when changing the user settings available in
| Event | Dispatched by | Properties |
|---|---|---|
-|`PublishVersionEvent`|`PublishAssetEventDispatcher::emitPublishAssetEvent`|`Content $content``Connector\Dam\AssetIdentifier $assetIdentifier``Connector\Dam\AssetSource $assetSource`|
+|`PublishVersionEvent`|`PublishAssetEventDispatcher::emitPublishAssetEvent`|`Content $content` `Connector\Dam\AssetIdentifier $assetIdentifier` `Connector\Dam\AssetSource $assetSource`|
## Image Editor
@@ -75,8 +75,8 @@ For more information, see [Customizing image optimizers with an event](images.md
| Event | Dispatched by | Properties |
|---|---|---|
-|`FieldAttributeDefinitionEvent`|`FieldDefinitionFactory::getAttributesDefinitions`|`FieldAttributeDefinitionBuilder $definitionBuilder``array $configuration`|
-|`FieldDefinitionEvent`|`FieldDefinitionFactory::getFieldDefinition`|`FieldDefinitionBuilder $definitionBuilder``array $configuration`|
-|`FieldValidatorDefinitionEvent`|`FieldDefinitionFactory::getValidatorsDefinitions`|`FieldDefinitionBuilder $definitionBuilder``array $configuration`|
-|`FormActionEvent`|`HandleFormSubmission::handleFormSubmission`|`ContentView $contentView``Ibexa\Contracts\FormBuilder\FieldType\Model\Form $form``string $action``mixed $data`|
-|`FormSubmitEvent`|`HandleFormSubmission::handleFormSubmission`|`ContentView $contentView``Ibexa\Contracts\FormBuilder\FieldType\Model\Form $form``array $data`|
+|`FieldAttributeDefinitionEvent`|`FieldDefinitionFactory::getAttributesDefinitions`|`FieldAttributeDefinitionBuilder $definitionBuilder` `array $configuration`|
+|`FieldDefinitionEvent`|`FieldDefinitionFactory::getFieldDefinition`|`FieldDefinitionBuilder $definitionBuilder` `array $configuration`|
+|`FieldValidatorDefinitionEvent`|`FieldDefinitionFactory::getValidatorsDefinitions`|`FieldDefinitionBuilder $definitionBuilder` `array $configuration`|
+|`FormActionEvent`|`HandleFormSubmission::handleFormSubmission`|`ContentView $contentView` `Ibexa\Contracts\FormBuilder\FieldType\Model\Form $form` `string $action` `mixed $data`|
+|`FormSubmitEvent`|`HandleFormSubmission::handleFormSubmission`|`ContentView $contentView` `Ibexa\Contracts\FormBuilder\FieldType\Model\Form $form` `array $data`|
diff --git a/docs/api/event_reference/page_events.md b/docs/api/event_reference/page_events.md
index bea60ff38f2..0681a2a5029 100644
--- a/docs/api/event_reference/page_events.md
+++ b/docs/api/event_reference/page_events.md
@@ -8,12 +8,12 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`AttributeSerializationEvent`|`AttributeSerializationDispatcher::serialize`|`LandingPage\Model\BlockValue $blockValue``string $attributeIdentifier``mixed $serializedValue``mixed $deserializedValue`|
-|`BlockContextEvent`|`BlockService::createBlockContextFromRequest`|`Request $request``?BlockContextInterface $blockContext`|
-|`BlockFragmentRenderEvent`|`BlockRenderOptionsFragmentRenderer::dispatchFragmentRenderEvent`|`Content $content``?Location $location``LandingPage\Model\Page $page``LandingPage\Model\BlockValue $blockValue``ControllerReference $uri``Request $request``array $options`|
-|`BlockResponseEvent`|`BlockResponseSubscriber::getSubscribedEvents`|`BlockContextInterface $blockContext``LandingPage\Model\BlockValue $blockValue``Request $request``Response $response`|
-|`CollectBlockRelationsEvent`|`CollectRelationsSubscriber::onCollectBlockRelations`|`LandingPage\Value $fieldValue``LandingPage\Model\BlockValue $blockValue``int[] $relations`|
-|`PageRenderEvent`|`PageService::dispatchRenderPageEvent`|`Content $content``?Location $location``LandingPage\Model\Page $page``Request $request`|
+|`AttributeSerializationEvent`|`AttributeSerializationDispatcher::serialize`|`LandingPage\Model\BlockValue $blockValue` `string $attributeIdentifier` `mixed $serializedValue` `mixed $deserializedValue`|
+|`BlockContextEvent`|`BlockService::createBlockContextFromRequest`|`Request $request` `?BlockContextInterface $blockContext`|
+|`BlockFragmentRenderEvent`|`BlockRenderOptionsFragmentRenderer::dispatchFragmentRenderEvent`|`Content $content` `?Location $location` `LandingPage\Model\Page $page` `LandingPage\Model\BlockValue $blockValue` `ControllerReference $uri` `Request $request` `array $options`|
+|`BlockResponseEvent`|`BlockResponseSubscriber::getSubscribedEvents`|`BlockContextInterface $blockContext` `LandingPage\Model\BlockValue $blockValue` `Request $request` `Response $response`|
+|`CollectBlockRelationsEvent`|`CollectRelationsSubscriber::onCollectBlockRelations`|`LandingPage\Value $fieldValue` `LandingPage\Model\BlockValue $blockValue` `int[] $relations`|
+|`PageRenderEvent`|`PageService::dispatchRenderPageEvent`|`Content $content` `?Location $location` `LandingPage\Model\Page $page` `Request $request`|
## Page Builder
@@ -21,9 +21,9 @@ The following events are dispatched when editing a page in the Page Builder.
| Event | Dispatched by | Properties |
|---|---|---|
-|`BlockConfigurationViewEvent`|`BlockController::dispatchBlockConfigurationViewEvent`|`BlockConfigurationView $blockConfigurationView``BlockDefinition $blockDefinition``BlockConfiguration $blockConfiguration``FormInterface $blockConfigurationForm`|
-|`BlockPreviewPageContextEvent`|`PreviewController::dispatchPageContextEvent`|`BlockContextInterface $blockContext``LandingPage\Model\Page $page``array $pagePreviewParameters`|
-|`BlockPreviewResponseEvent`|`PreviewController::dispatchBlockPreviewResponseEvent`|`BlockContextInterface $blockContext``array $pagePreviewParameters``LandingPage\Model\Page $page``BlockValue $blockValue``array $responseData`|
+|`BlockConfigurationViewEvent`|`BlockController::dispatchBlockConfigurationViewEvent`|`BlockConfigurationView $blockConfigurationView` `BlockDefinition $blockDefinition` `BlockConfiguration $blockConfiguration` `FormInterface $blockConfigurationForm`|
+|`BlockPreviewPageContextEvent`|`PreviewController::dispatchPageContextEvent`|`BlockContextInterface $blockContext` `LandingPage\Model\Page $page` `array $pagePreviewParameters`|
+|`BlockPreviewResponseEvent`|`PreviewController::dispatchBlockPreviewResponseEvent`|`BlockContextInterface $blockContext` `array $pagePreviewParameters` `LandingPage\Model\Page $page` `BlockValue $blockValue` `array $responseData`|
## Page blocks
@@ -31,7 +31,7 @@ The following events are dispatched when editing a page block.
| Event | Dispatched by | Properties |
|---|---|---|
-|`BlockDefinitionEvent`|`BlockDefinitionFactory::getBlockDefinition`|`BlockDefinition $definition``array $configuration`|
-|`BlockAttributeDefinitionEvent`|`BlockDefinitionFactory::getBlockDefinition`|`BlockAttributeDefinition $definition``array $configuration`|
-|`PreRenderEvent`|`BlockService::render`|`BlockContextInterface $blockContext``BlockValue $blockValue``RenderRequestInterface $renderRequest`|
-|`PostRenderEvent`|`BlockService::render`|`BlockContextInterface $blockContext``BlockValue $blockValue``string $renderedBlock`|
+|`BlockDefinitionEvent`|`BlockDefinitionFactory::getBlockDefinition`|`BlockDefinition $definition` `array $configuration`|
+|`BlockAttributeDefinitionEvent`|`BlockDefinitionFactory::getBlockDefinition`|`BlockAttributeDefinition $definition` `array $configuration`|
+|`PreRenderEvent`|`BlockService::render`|`BlockContextInterface $blockContext` `BlockValue $blockValue` `RenderRequestInterface $renderRequest`|
+|`PostRenderEvent`|`BlockService::render`|`BlockContextInterface $blockContext` `BlockValue $blockValue` `string $renderedBlock`|
diff --git a/docs/api/event_reference/product_catalog_events.md b/docs/api/event_reference/product_catalog_events.md
index ed98821c104..db42b106c5a 100644
--- a/docs/api/event_reference/product_catalog_events.md
+++ b/docs/api/event_reference/product_catalog_events.md
@@ -16,42 +16,42 @@ month_change: false
|`BeforeDeleteAttributeDefinitionEvent`|`AttributeDefinitionService::deleteAttributeDefinition`|`AttributeDefinitionInterface $attributeDefinition`|
|`BeforeDeleteAttributeGroupEvent`|`AttributeGroupService::deleteAttributeGroup`|`AttributeGroupInterface $attributeGroup`|
|`BeforeDeleteProductEvent`|`ProductService::deleteProduct`|`ProductInterface $product`|
-|`BeforeUpdateAttributeDefinitionEvent`|`AttributeDefinitionService::updateAttributeDefinition`|`AttributeDefinitionInterface $attributeDefinition``AttributeDefinitionUpdateStruct $updateStruct`|
-|`BeforeUpdateAttributeGroupEvent`|`AttributeGroupService::updateAttributeGroup`|`AttributeGroupInterface $attributeGroup``AttributeGroupUpdateStruct $updateStruct`|
+|`BeforeUpdateAttributeDefinitionEvent`|`AttributeDefinitionService::updateAttributeDefinition`|`AttributeDefinitionInterface $attributeDefinition` `AttributeDefinitionUpdateStruct $updateStruct`|
+|`BeforeUpdateAttributeGroupEvent`|`AttributeGroupService::updateAttributeGroup`|`AttributeGroupInterface $attributeGroup` `AttributeGroupUpdateStruct $updateStruct`|
|`BeforeUpdateProductEvent`|`ProductService::updateProduct`|`ProductUpdateStruct $updateStruct`|
-|`CreateAttributeDefinitionEvent`|`AttributeDefinitionService::createAttributeDefinition`|`AttributeDefinitionCreateStruct $createStruct``AttributeDefinitionInterface $attributeDefinition`|
-|`CreateAttributeGroupEvent`|`AttributeGroupService::createAttributeGroup`|`AttributeGroupCreateStruct $createStruct``AttributeGroupInterface $attributeGroup`|
-|`CreateProductEvent`|`ProductService::createProduct`|`ProductCreateStruct $createStruct``ProductInterface $product`|
+|`CreateAttributeDefinitionEvent`|`AttributeDefinitionService::createAttributeDefinition`|`AttributeDefinitionCreateStruct $createStruct` `AttributeDefinitionInterface $attributeDefinition`|
+|`CreateAttributeGroupEvent`|`AttributeGroupService::createAttributeGroup`|`AttributeGroupCreateStruct $createStruct` `AttributeGroupInterface $attributeGroup`|
+|`CreateProductEvent`|`ProductService::createProduct`|`ProductCreateStruct $createStruct` `ProductInterface $product`|
|`DeleteAttributeDefinitionEvent`|`AttributeDefinitionService::deleteAttributeDefinition`|`AttributeDefinitionInterface $attributeDefinition`|
|`DeleteAttributeGroupEvent`|`AttributeGroupService::deleteAttributeGroup`|`AttributeGroupInterface $attributeGroup`|
|`DeleteProductEvent`|`ProductService::deleteProduct`|`ProductInterface $product`|
-|`UpdateAttributeDefinitionEvent`|`AttributeDefinitionService::updateAttributeDefinition`|`AttributeDefinitionInterface $attributeDefinition``AttributeDefinitionUpdateStruct $updateStruct`|
-|`UpdateAttributeGroupEvent`|`AttributeGroupService::updateAttributeGroup`|`AttributeGroupInterface $attributeGroup``AttributeGroupUpdateStruct $updateStruct`|
-|`UpdateProductEvent`|`ProductService::updateProduct`|`ProductInterface $product``ProductUpdateStruct $updateStruct`|
+|`UpdateAttributeDefinitionEvent`|`AttributeDefinitionService::updateAttributeDefinition`|`AttributeDefinitionInterface $attributeDefinition` `AttributeDefinitionUpdateStruct $updateStruct`|
+|`UpdateAttributeGroupEvent`|`AttributeGroupService::updateAttributeGroup`|`AttributeGroupInterface $attributeGroup` `AttributeGroupUpdateStruct $updateStruct`|
+|`UpdateProductEvent`|`ProductService::updateProduct`|`ProductInterface $product` `ProductUpdateStruct $updateStruct`|
## Product variants
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateProductVariantsEvent`|`ProductService::createProductVariants`|`ProductInterface $product``iterable $createStructs`|
-|`BeforeUpdateProductVariantEvent`|`ProductService::updateProductVariant`|`ProductVariantInterface $productVariant``ProductVariantUpdateStruct $updateStruct`|
-|`CreateProductVariantsEvent`|`ProductService::createProductVariants`|`ProductInterface $product``iterable $createStructs`|
-|`UpdateProductVariantEvent`|`ProductService::updateProductVariant`|`ProductVariantInterface $productVariant``ProductVariantUpdateStruct $updateStruct`|
+|`BeforeCreateProductVariantsEvent`|`ProductService::createProductVariants`|`ProductInterface $product` `iterable $createStructs`|
+|`BeforeUpdateProductVariantEvent`|`ProductService::updateProductVariant`|`ProductVariantInterface $productVariant` `ProductVariantUpdateStruct $updateStruct`|
+|`CreateProductVariantsEvent`|`ProductService::createProductVariants`|`ProductInterface $product` `iterable $createStructs`|
+|`UpdateProductVariantEvent`|`ProductService::updateProductVariant`|`ProductVariantInterface $productVariant` `ProductVariantUpdateStruct $updateStruct`|
## Product availability
| Event | Dispatched by | Properties |
|---|---|---|
|`BeforeCreateProductAvailabilityEvent`|`ProductAvailabilityService::createProductAvailability`|`ProductAvailabilityCreateStruct $createStruct`|
-|`BeforeDecreaseProductAvailabilityEvent`|`ProductAvailabilityService::decreaseProductAvailability`|`ProductInterface $product``int $amount`|
+|`BeforeDecreaseProductAvailabilityEvent`|`ProductAvailabilityService::decreaseProductAvailability`|`ProductInterface $product` `int $amount`|
|`BeforeDeleteProductAvailabilityEvent`|`ProductAvailabilityService::deleteProductAvailability`|`ProductInterface $product`|
-|`BeforeIncreaseProductAvailabilityEvent`|`ProductAvailabilityService::increaseProductAvailability`|`ProductInterface $product``int $amount`|
+|`BeforeIncreaseProductAvailabilityEvent`|`ProductAvailabilityService::increaseProductAvailability`|`ProductInterface $product` `int $amount`|
|`BeforeUpdateProductAvailabilityEvent`|`ProductAvailabilityService::updateProductAvailability`|`ProductAvailabilityUpdateStruct $updateStruct`|
-|`CreateProductAvailabilityEvent`|`ProductAvailabilityService::createProductAvailability`|`ProductAvailabilityCreateStruct $createStruct``AvailabilityInterface $productAvailability`|
-|`DecreaseProductAvailabilityEvent`|`ProductAvailabilityService::decreaseProductAvailability`|`AvailabilityInterface $productAvailability``ProductInterface $product``int $amount`|
+|`CreateProductAvailabilityEvent`|`ProductAvailabilityService::createProductAvailability`|`ProductAvailabilityCreateStruct $createStruct` `AvailabilityInterface $productAvailability`|
+|`DecreaseProductAvailabilityEvent`|`ProductAvailabilityService::decreaseProductAvailability`|`AvailabilityInterface $productAvailability` `ProductInterface $product` `int $amount`|
|`DeleteProductAvailabilityEvent`|`ProductAvailabilityService::deleteProductAvailability`|`ProductInterface $product`|
-|`IncreaseProductAvailabilityEvent`|`ProductAvailabilityService::increaseProductAvailability`|`AvailabilityInterface $productAvailability ProductInterface $product``int $amount`|
-|`UpdateProductAvailabilityEvent`|`ProductAvailabilityService::updateProductAvailability`|`AvailabilityInterface $productAvailability``ProductAvailabilityUpdateStruct $updateStruct`|
+|`IncreaseProductAvailabilityEvent`|`ProductAvailabilityService::increaseProductAvailability`|`AvailabilityInterface $productAvailability ProductInterface $product` `int $amount`|
+|`UpdateProductAvailabilityEvent`|`ProductAvailabilityService::updateProductAvailability`|`AvailabilityInterface $productAvailability` `ProductAvailabilityUpdateStruct $updateStruct`|
## Price
@@ -60,9 +60,9 @@ month_change: false
|`BeforeCreatePriceEvent`|`ProductPriceService::createProductPrice`|`ProductPriceCreateStructInterface $createStruct`|
|`BeforeDeletePriceEvent`|`ProductPriceService::deletePrice`|`ProductPriceDeleteStructInterface $deleteStruct`|
|`BeforeUpdatePriceEvent`|`ProductPriceService::updateProductPrice`|`ProductPriceUpdateStructInterface $updateStruct`|
-|`CreatePriceEvent`|`ProductPriceService::createProductPrice`|`ProductPriceCreateStructInterface $createStruct``PriceInterface $price`|
+|`CreatePriceEvent`|`ProductPriceService::createProductPrice`|`ProductPriceCreateStructInterface $createStruct` `PriceInterface $price`|
|`DeletePriceEvent`|`ProductPriceService::deletePrice`|`ProductPriceDeleteStructInterface $deleteStruct`|
-|`UpdatePriceEvent`|`ProductPriceService::updateProductPrice`|`PriceInterface $price``ProductPriceUpdateStructInterface $updateStruct`|
+|`UpdatePriceEvent`|`ProductPriceService::updateProductPrice`|`PriceInterface $price` `ProductPriceUpdateStructInterface $updateStruct`|
## Currency
@@ -70,10 +70,10 @@ month_change: false
|---|---|---|
|`BeforeCreateCurrencyEvent`|`CurrencyService::createCurrency`|`CurrencyCreateStruct $createStruct`|
|`BeforeDeleteCurrencyEvent`|`CurrencyService::deleteCurrency`|`CurrencyInterface $currency`|
-|`BeforeUpdateCurrencyEvent`|`CurrencyService::updateCurrency`|`CurrencyInterface $currency``CurrencyUpdateStruct $updateStruct`|
-|`CreateCurrencyEvent`|`CurrencyService::createCurrency`|`CurrencyCreateStruct $createStruct``CurrencyInterface $currency`|
+|`BeforeUpdateCurrencyEvent`|`CurrencyService::updateCurrency`|`CurrencyInterface $currency` `CurrencyUpdateStruct $updateStruct`|
+|`CreateCurrencyEvent`|`CurrencyService::createCurrency`|`CurrencyCreateStruct $createStruct` `CurrencyInterface $currency`|
|`DeleteCurrencyEvent`|`CurrencyService::deleteCurrency`|`CurrencyInterface $currency`|
-|`UpdateCurrencyEvent`|`CurrencyService::updateCurrency`|`CurrencyInterface $currency``CurrencyUpdateStruct $updateStruct`|
+|`UpdateCurrencyEvent`|`CurrencyService::updateCurrency`|`CurrencyInterface $currency` `CurrencyUpdateStruct $updateStruct`|
## Catalogs
@@ -82,7 +82,7 @@ month_change: false
|`BeforeCreateCatalogEvent`|`CatalogService::createCatalog`|`CatalogCreateStruct $createStruct`|
|`BeforeDeleteCatalogEvent`|`CatalogService::deleteCatalog`|`CatalogInterface $catalog`|
|`BeforeUpdateCatalogEvent`|`CatalogService::updateCatalog`|`CatalogUpdateStruct $updateStruct`|
-|`CreateCatalogEvent`|`CatalogService::createCatalog`|`CatalogCreateStruct $createStruct``CatalogInterface $catalog`|
+|`CreateCatalogEvent`|`CatalogService::createCatalog`|`CatalogCreateStruct $createStruct` `CatalogInterface $catalog`|
|`DeleteCatalogEvent`|`CatalogService::deleteCatalog`|`CatalogInterface $catalog`|
|`UpdateCatalogEvent`|`CatalogService::updateCatalog`|`CatalogUpdateStruct $updateStruct`|
@@ -92,6 +92,6 @@ The following event is dispatched when the [`ibexa_format_product_attribute`](pr
| Event | Dispatched by | Properties |
|---|---|---|
-|`ProductAttributeRenderEvent`|`ibexa_format_product_attribute` Twig filter|`list $templates`[`AttributeInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-AttributeInterface.html)`array $parameters`|
+|`ProductAttributeRenderEvent`|`ibexa_format_product_attribute` Twig filter|`list $templates` [`AttributeInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-AttributeInterface.html) `array $parameters`|
For a usage example, see [Customize product attribute templates](customize_product_attribute_templates.md).
diff --git a/docs/api/event_reference/role_events.md b/docs/api/event_reference/role_events.md
index f0374ff983b..e932750c899 100644
--- a/docs/api/event_reference/role_events.md
+++ b/docs/api/event_reference/role_events.md
@@ -7,14 +7,14 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateRoleDraftEvent`|`RoleService::createRoleDraft`|`Role $role``?RoleDraft $roleDraft`|
-|`CreateRoleDraftEvent`|`RoleService::createRoleDraft`|`Role $role``RoleDraft $roleDraft`|
-|`BeforeCreateRoleEvent`|`RoleService::createRole`|`RoleCreateStruct $roleCreateStruct``?RoleDraft $roleDraft`|
-|`CreateRoleEvent`|`RoleService::createRole`|`RoleCreateStruct $roleCreateStruct``RoleDraft $roleDraft`|
-|`BeforeUpdateRoleDraftEvent`|`RoleService::updateRoleDraft`|`RoleDraft $roleDraft``RoleUpdateStruct $roleUpdateStruct``?RoleDraft $updatedRoleDraft`|
-|`UpdateRoleDraftEvent`|`RoleService::updateRoleDraft`|`RoleDraft $roleDraft``RoleUpdateStruct $roleUpdateStruct``RoleDraft $updatedRoleDraft`|
-|`BeforeCopyRoleEvent`|`RoleService::copyRole`|`Role $role``RoleCopyStruct $roleCopyStruct``?Role $copiedRole`|
-|`CopyRoleEvent`|`RoleService::copyRole`|`Role $copiedRole``Role $role``RoleCopyStruct $roleCopyStruct`|
+|`BeforeCreateRoleDraftEvent`|`RoleService::createRoleDraft`|`Role $role` `?RoleDraft $roleDraft`|
+|`CreateRoleDraftEvent`|`RoleService::createRoleDraft`|`Role $role` `RoleDraft $roleDraft`|
+|`BeforeCreateRoleEvent`|`RoleService::createRole`|`RoleCreateStruct $roleCreateStruct` `?RoleDraft $roleDraft`|
+|`CreateRoleEvent`|`RoleService::createRole`|`RoleCreateStruct $roleCreateStruct` `RoleDraft $roleDraft`|
+|`BeforeUpdateRoleDraftEvent`|`RoleService::updateRoleDraft`|`RoleDraft $roleDraft` `RoleUpdateStruct $roleUpdateStruct` `?RoleDraft $updatedRoleDraft`|
+|`UpdateRoleDraftEvent`|`RoleService::updateRoleDraft`|`RoleDraft $roleDraft` `RoleUpdateStruct $roleUpdateStruct` `RoleDraft $updatedRoleDraft`|
+|`BeforeCopyRoleEvent`|`RoleService::copyRole`|`Role $role` `RoleCopyStruct $roleCopyStruct` `?Role $copiedRole`|
+|`CopyRoleEvent`|`RoleService::copyRole`|`Role $copiedRole` `Role $role` `RoleCopyStruct $roleCopyStruct`|
|`BeforePublishRoleDraftEvent`|`RoleService::publishRoleDraft`|`RoleDraft $roleDraft`|
|`PublishRoleDraftEvent`|`RoleService::publishRoleDraft`|`RoleDraft $roleDraft`|
|`BeforeDeleteRoleDraftEvent`|`RoleService::deleteRoleDraft`|`RoleDraft $roleDraft`|
@@ -26,20 +26,20 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeAddPolicyByRoleDraftEvent`|`RoleService::addPolicyByRoleDraft`|`RoleDraft $roleDraft``PolicyCreateStruct $policyCreateStruct``?RoleDraft $updatedRoleDraft`|
-|`AddPolicyByRoleDraftEvent`|`RoleService::addPolicyByRoleDraft`|`RoleDraft $roleDraft``PolicyCreateStruct $policyCreateStruct``private $updatedRoleDraft`|
-|`BeforeUpdatePolicyByRoleDraftEvent`|`RoleService::updatePolicyByRoleDraft`|`RoleDraft $roleDraft``PolicyDraft $policy``PolicyUpdateStruct $policyUpdateStruct``?PolicyDraft $updatedPolicyDraft`|
-|`UpdatePolicyByRoleDraftEvent`|`RoleService::updatePolicyByRoleDraft`|`RoleDraft $roleDraft``PolicyDraft $policy``PolicyUpdateStruct $policyUpdateStruct``PolicyDraft $updatedPolicyDraft`|
-|`BeforeRemovePolicyByRoleDraftEvent`|`RoleService::removePolicyByRoleDraft`|`RoleDraft $roleDraft``PolicyDraft $policyDraft``?RoleDraft $updatedRoleDraft`|
-|`RemovePolicyByRoleDraftEvent`|`RoleService::removePolicyByRoleDraft`|`RoleDraft $roleDraft``PolicyDraft $policyDraft``RoleDraft $updatedRoleDraft`|
+|`BeforeAddPolicyByRoleDraftEvent`|`RoleService::addPolicyByRoleDraft`|`RoleDraft $roleDraft` `PolicyCreateStruct $policyCreateStruct` `?RoleDraft $updatedRoleDraft`|
+|`AddPolicyByRoleDraftEvent`|`RoleService::addPolicyByRoleDraft`|`RoleDraft $roleDraft` `PolicyCreateStruct $policyCreateStruct` `private $updatedRoleDraft`|
+|`BeforeUpdatePolicyByRoleDraftEvent`|`RoleService::updatePolicyByRoleDraft`|`RoleDraft $roleDraft` `PolicyDraft $policy` `PolicyUpdateStruct $policyUpdateStruct` `?PolicyDraft $updatedPolicyDraft`|
+|`UpdatePolicyByRoleDraftEvent`|`RoleService::updatePolicyByRoleDraft`|`RoleDraft $roleDraft` `PolicyDraft $policy` `PolicyUpdateStruct $policyUpdateStruct` `PolicyDraft $updatedPolicyDraft`|
+|`BeforeRemovePolicyByRoleDraftEvent`|`RoleService::removePolicyByRoleDraft`|`RoleDraft $roleDraft` `PolicyDraft $policyDraft` `?RoleDraft $updatedRoleDraft`|
+|`RemovePolicyByRoleDraftEvent`|`RoleService::removePolicyByRoleDraft`|`RoleDraft $roleDraft` `PolicyDraft $policyDraft` `RoleDraft $updatedRoleDraft`|
## Assigning roles
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeAssignRoleToUserEvent`|`RoleService::assignRoleToUser`|`Role $role``User $user``Limitation\RoleLimitation $roleLimitation`|
-|`AssignRoleToUserEvent`|`RoleService::assignRoleToUser`|`Role $role``User $user``Limitation\RoleLimitation $roleLimitation`|
-|`BeforeAssignRoleToUserGroupEvent`|`RoleService::assignRoleToUserGroup`|`Role $role``UserGroup $userGroup``Limitation\RoleLimitation $roleLimitation`|
-|`AssignRoleToUserGroupEvent`|`RoleService::assignRoleToUserGroup`|`Role $role``UserGroup $userGroup``Limitation\RoleLimitation $roleLimitation`|
+|`BeforeAssignRoleToUserEvent`|`RoleService::assignRoleToUser`|`Role $role` `User $user` `Limitation\RoleLimitation $roleLimitation`|
+|`AssignRoleToUserEvent`|`RoleService::assignRoleToUser`|`Role $role` `User $user` `Limitation\RoleLimitation $roleLimitation`|
+|`BeforeAssignRoleToUserGroupEvent`|`RoleService::assignRoleToUserGroup`|`Role $role` `UserGroup $userGroup` `Limitation\RoleLimitation $roleLimitation`|
+|`AssignRoleToUserGroupEvent`|`RoleService::assignRoleToUserGroup`|`Role $role` `UserGroup $userGroup` `Limitation\RoleLimitation $roleLimitation`|
|`BeforeRemoveRoleAssignmentEvent`|`RoleService::removeRoleAssignment`|`RoleAssignment $roleAssignment`|
|`RemoveRoleAssignmentEvent`|`RoleService::removeRoleAssignment`|`RoleAssignment $roleAssignment`|
diff --git a/docs/api/event_reference/section_events.md b/docs/api/event_reference/section_events.md
index 10921a0d3d2..304835556b9 100644
--- a/docs/api/event_reference/section_events.md
+++ b/docs/api/event_reference/section_events.md
@@ -7,18 +7,18 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateSectionEvent`|`SectionService::createSection`|`SectionCreateStruct $sectionCreateStruct``?Section $section`|
-|`CreateSectionEvent`|`SectionService::createSection`|`SectionCreateStruct $sectionCreateStruct``Section $section`|
+|`BeforeCreateSectionEvent`|`SectionService::createSection`|`SectionCreateStruct $sectionCreateStruct` `?Section $section`|
+|`CreateSectionEvent`|`SectionService::createSection`|`SectionCreateStruct $sectionCreateStruct` `Section $section`|
|`BeforeDeleteSectionEvent`|`SectionService::deleteSection`|`Section $section`|
|`DeleteSectionEvent`|`SectionService::deleteSection`|`Section $section`|
-|`BeforeUpdateSectionEvent`|`SectionService::updateSection`|`Section $section``SectionUpdateStruct $sectionUpdateStruct``?Section $updatedSection`|
-|`UpdateSectionEvent`|`SectionService::updateSection`|`Section $section``SectionUpdateStruct $sectionUpdateStruct``Section $updatedSection`|
+|`BeforeUpdateSectionEvent`|`SectionService::updateSection`|`Section $section` `SectionUpdateStruct $sectionUpdateStruct` `?Section $updatedSection`|
+|`UpdateSectionEvent`|`SectionService::updateSection`|`Section $section` `SectionUpdateStruct $sectionUpdateStruct` `Section $updatedSection`|
## Assigning sections
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeAssignSectionEvent`|`SectionService::assignSection`|`ContentInfo $contentInfo``Section $section`|
-|`AssignSectionEvent`|`SectionService::assignSection`|`ContentInfo $contentInfo``Section $section`|
-|`BeforeAssignSectionToSubtreeEvent`|`SectionService::assignSectionToSubtree`|`Location $location``Section $section`|
-|`AssignSectionToSubtreeEvent`|`SectionService::assignSectionToSubtree`|`Location $location``Section $section`|
+|`BeforeAssignSectionEvent`|`SectionService::assignSection`|`ContentInfo $contentInfo` `Section $section`|
+|`AssignSectionEvent`|`SectionService::assignSection`|`ContentInfo $contentInfo` `Section $section`|
+|`BeforeAssignSectionToSubtreeEvent`|`SectionService::assignSectionToSubtree`|`Location $location` `Section $section`|
+|`AssignSectionToSubtreeEvent`|`SectionService::assignSectionToSubtree`|`Location $location` `Section $section`|
diff --git a/docs/api/event_reference/segmentation_events.md b/docs/api/event_reference/segmentation_events.md
index 25e0c916e59..478354fce41 100644
--- a/docs/api/event_reference/segmentation_events.md
+++ b/docs/api/event_reference/segmentation_events.md
@@ -8,16 +8,16 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateSegmentGroupEvent`|`SegmentationService::createSegmentGroup`|`SegmentGroupCreateStruct $createStruct``?SegmentGroup $segmentGroupResult = null`|
-|`CreateSegmentGroupEvent`|`SegmentationService::createSegmentGroup`|`SegmentGroupCreateStruct $createStruct``SegmentGroup $segmentGroupResult`|
-|`BeforeUpdateSegmentGroupEvent`|`SegmentationService::updateSegmentGroup`|`SegmentGroup $segmentGroup``SegmentGroupUpdateStruct $updateStruct``?SegmentGroup $segmentGroupResult = null`|
-|`UpdateSegmentGroupEvent`|`SegmentationService::updateSegmentGroup`|`SegmentGroup $segmentGroup``SegmentGroupUpdateStruct $updateStruct``SegmentGroup $segmentGroupResult`|
+|`BeforeCreateSegmentGroupEvent`|`SegmentationService::createSegmentGroup`|`SegmentGroupCreateStruct $createStruct` `?SegmentGroup $segmentGroupResult = null`|
+|`CreateSegmentGroupEvent`|`SegmentationService::createSegmentGroup`|`SegmentGroupCreateStruct $createStruct` `SegmentGroup $segmentGroupResult`|
+|`BeforeUpdateSegmentGroupEvent`|`SegmentationService::updateSegmentGroup`|`SegmentGroup $segmentGroup` `SegmentGroupUpdateStruct $updateStruct` `?SegmentGroup $segmentGroupResult = null`|
+|`UpdateSegmentGroupEvent`|`SegmentationService::updateSegmentGroup`|`SegmentGroup $segmentGroup` `SegmentGroupUpdateStruct $updateStruct` `SegmentGroup $segmentGroupResult`|
|`BeforeRemoveSegmentGroupEvent`|`SegmentationService::removeSegmentGroup`|`SegmentGroup $segmentGroup`|
|`RemoveSegmentGroupEvent`|`SegmentationService::removeSegmentGroup`|`SegmentGroup $segmentGroup`|
-|`BeforeCreateSegmentEvent`|`SegmentationService::createSegment`|`SegmentCreateStruct $createStruct``?Segment $segmentResult = null`|
-|`CreateSegmentEvent`|`SegmentationService::createSegment`|`SegmentCreateStruct $createStruct``Segment $segmentResult`|
-|`BeforeUpdateSegmentEvent`|`SegmentationService::updateSegment`|`Segment $segment``SegmentUpdateStruct $updateStruct``?Segment $segmentResult = null`|
-|`UpdateSegmentEvent`|`SegmentationService::updateSegment`|`Segment $segment``SegmentUpdateStruct $updateStruct``Segment $segmentResult`|
+|`BeforeCreateSegmentEvent`|`SegmentationService::createSegment`|`SegmentCreateStruct $createStruct` `?Segment $segmentResult = null`|
+|`CreateSegmentEvent`|`SegmentationService::createSegment`|`SegmentCreateStruct $createStruct` `Segment $segmentResult`|
+|`BeforeUpdateSegmentEvent`|`SegmentationService::updateSegment`|`Segment $segment` `SegmentUpdateStruct $updateStruct` `?Segment $segmentResult = null`|
+|`UpdateSegmentEvent`|`SegmentationService::updateSegment`|`Segment $segment` `SegmentUpdateStruct $updateStruct` `Segment $segmentResult`|
|`BeforeRemoveSegmentEvent`|`SegmentationService::removeSegment`|`Segment $segment`|
|`RemoveSegmentEvent`|`SegmentationService::removeSegment`|`Segment $segment`|
@@ -25,7 +25,7 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeAssignUserToSegmentEvent.php`|`SegmentationService::assignUserToSegment`|`User $user` `Segment $segment`|
-|`AssignUserToSegmentEvent.php`|`SegmentationService::assignUserToSegment`|`User $user` `Segment $segment`|
-|`BeforeUnassignUserFromSegmentEvent.php`|`SegmentationService::unassignUserFromSegment`|`User $user` `Segment $segment`|
-|`UnassignUserFromSegmentEvent.php`|`SegmentationService::unassignUserFromSegment`|`User $user` `Segment $segment`|
+|`BeforeAssignUserToSegmentEvent.php`|`SegmentationService::assignUserToSegment`|`User $user` `Segment $segment`|
+|`AssignUserToSegmentEvent.php`|`SegmentationService::assignUserToSegment`|`User $user` `Segment $segment`|
+|`BeforeUnassignUserFromSegmentEvent.php`|`SegmentationService::unassignUserFromSegment`|`User $user` `Segment $segment`|
+|`UnassignUserFromSegmentEvent.php`|`SegmentationService::unassignUserFromSegment`|`User $user` `Segment $segment`|
diff --git a/docs/api/event_reference/site_events.md b/docs/api/event_reference/site_events.md
index 7910c81f5b1..c38123e7288 100644
--- a/docs/api/event_reference/site_events.md
+++ b/docs/api/event_reference/site_events.md
@@ -10,9 +10,9 @@ The following events are dispatched when managing [Sites](site_factory.md).
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateSiteEvent`|`SiteService::createSite`|`SiteCreateStruct $siteCreateStruct``Site $site`|
-|`CreateSiteEvent`|`SiteService::createSite`|`Site $site``SiteCreateStruct $siteCreateStruct`|
-|`BeforeUpdateSiteEvent`|`SiteService::updateSite`|`Site $site``SiteUpdateStruct $siteUpdateStruct``?Site $updatedSite`|
-|`UpdateSiteEvent`|`SiteService::updateSite`|`Site $updatedSite``Site $site``SiteUpdateStruct $siteUpdateStruct`|
+|`BeforeCreateSiteEvent`|`SiteService::createSite`|`SiteCreateStruct $siteCreateStruct` `Site $site`|
+|`CreateSiteEvent`|`SiteService::createSite`|`Site $site` `SiteCreateStruct $siteCreateStruct`|
+|`BeforeUpdateSiteEvent`|`SiteService::updateSite`|`Site $site` `SiteUpdateStruct $siteUpdateStruct` `?Site $updatedSite`|
+|`UpdateSiteEvent`|`SiteService::updateSite`|`Site $updatedSite` `Site $site` `SiteUpdateStruct $siteUpdateStruct`|
|`BeforeDeleteSiteEvent`|`SiteService::deleteSite`|`Site $site`|
|`DeleteSiteEvent`|`SiteService::deleteSite`|`Site $site`|
diff --git a/docs/api/event_reference/taxonomy_events.md b/docs/api/event_reference/taxonomy_events.md
index ea09c58e38a..bc8dda29b8d 100644
--- a/docs/api/event_reference/taxonomy_events.md
+++ b/docs/api/event_reference/taxonomy_events.md
@@ -9,13 +9,13 @@ The following Events are dispatched when managing [taxonomy entries](taxonomy.md
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateTaxonomyEntryEvent`|`TaxonomyService::createEntry`|`TaxonomyEntryCreateStruct $createStruct``?TaxonomyEntry $taxonomyEntry = null`|
-|`CreateTaxonomyEntryEvent`|`TaxonomyService::createEntry`|`TaxonomyEntry $taxonomyEntry``TaxonomyEntryCreateStruct $createStruct`|
-|`BeforeMoveTaxonomyEntryEvent`|`TaxonomyService::moveEntry`|`TaxonomyEntry $taxonomyEntry``TaxonomyEntry $newParent`|
-|`MoveTaxonomyEntryEvent`|`TaxonomyService::moveEntry`|`TaxonomyEntry $taxonomyEntry``TaxonomyEntry $newParent`|
-|`BeforeMoveTaxonomyEntryRelativeToSiblingEvent`|`TaxonomyService::moveEntryRelativeToSibling`|`TaxonomyEntry $taxonomyEntry``TaxonomyEntry $sibling``string $position`|
-|`MoveTaxonomyEntryRelativeToSiblingEvent`|`TaxonomyService::moveEntryRelativeToSibling`|`TaxonomyEntry $taxonomyEntry``TaxonomyEntry $sibling``string $position`|
+|`BeforeCreateTaxonomyEntryEvent`|`TaxonomyService::createEntry`|`TaxonomyEntryCreateStruct $createStruct` `?TaxonomyEntry $taxonomyEntry = null`|
+|`CreateTaxonomyEntryEvent`|`TaxonomyService::createEntry`|`TaxonomyEntry $taxonomyEntry` `TaxonomyEntryCreateStruct $createStruct`|
+|`BeforeMoveTaxonomyEntryEvent`|`TaxonomyService::moveEntry`|`TaxonomyEntry $taxonomyEntry` `TaxonomyEntry $newParent`|
+|`MoveTaxonomyEntryEvent`|`TaxonomyService::moveEntry`|`TaxonomyEntry $taxonomyEntry` `TaxonomyEntry $newParent`|
+|`BeforeMoveTaxonomyEntryRelativeToSiblingEvent`|`TaxonomyService::moveEntryRelativeToSibling`|`TaxonomyEntry $taxonomyEntry` `TaxonomyEntry $sibling` `string $position`|
+|`MoveTaxonomyEntryRelativeToSiblingEvent`|`TaxonomyService::moveEntryRelativeToSibling`|`TaxonomyEntry $taxonomyEntry` `TaxonomyEntry $sibling` `string $position`|
|`BeforeRemoveTaxonomyEntryEvent`|`TaxonomyService::removeEntry`|`TaxonomyEntry $taxonomyEntry`|
|`RemoveTaxonomyEntryEvent`|`TaxonomyService::removeEntry`|`TaxonomyEntry $taxonomyEntry`|
-|`BeforeUpdateTaxonomyEntryEvent`|`TaxonomyService::updateEntry`|`TaxonomyEntry $taxonomyEntry``TaxonomyEntryUpdateStruct $updateStruct``?TaxonomyEntry $updatedTaxonomyEntry = null`|
-|`UpdateTaxonomyEntryEvent`|`TaxonomyService::updateEntry`|`TaxonomyEntry $updatedTaxonomyEntry``TaxonomyEntry $taxonomyEntry``TaxonomyEntryUpdateStruct $updateStruct`|
+|`BeforeUpdateTaxonomyEntryEvent`|`TaxonomyService::updateEntry`|`TaxonomyEntry $taxonomyEntry` `TaxonomyEntryUpdateStruct $updateStruct` `?TaxonomyEntry $updatedTaxonomyEntry = null`|
+|`UpdateTaxonomyEntryEvent`|`TaxonomyService::updateEntry`|`TaxonomyEntry $updatedTaxonomyEntry` `TaxonomyEntry $taxonomyEntry` `TaxonomyEntryUpdateStruct $updateStruct`|
diff --git a/docs/api/event_reference/trash_events.md b/docs/api/event_reference/trash_events.md
index 87356e2e720..c486ab56fe3 100644
--- a/docs/api/event_reference/trash_events.md
+++ b/docs/api/event_reference/trash_events.md
@@ -9,11 +9,11 @@ The following events are dispatched when managing Trash.
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeDeleteTrashItemEvent`|`TrashService::deleteTrashItem`|`TrashItem $trashItem``?TrashItemDeleteResult $result`|
-|`DeleteTrashItemEvent`|`TrashService::deleteTrashItem`|`TrashItem $trashItem``TrashItemDeleteResult $result`|
+|`BeforeDeleteTrashItemEvent`|`TrashService::deleteTrashItem`|`TrashItem $trashItem` `?TrashItemDeleteResult $result`|
+|`DeleteTrashItemEvent`|`TrashService::deleteTrashItem`|`TrashItem $trashItem` `TrashItemDeleteResult $result`|
|`BeforeEmptyTrashEvent`|`TrashService::emptyTrash`|`?TrashItemDeleteResultList $resultList`|
|`EmptyTrashEvent`|`TrashService::emptyTrash`|`TrashItemDeleteResultList $resultList`|
-|`BeforeRecoverEvent`|`TrashService::recover`|`TrashItem $trashItem``Location $newParentLocation``?Location $location`|
-|`RecoverEvent`|`TrashService::recover`|`TrashItem $trashItem``Location $newParentLocation``Location $location`|
-|`BeforeTrashEvent`|`TrashService::trash`|`Location $location``?TrashItem $result``bool $resultSet = false`|
-|`TrashEvent`|`TrashService::trash`|`Location $location``?TrashItem $trashItem`|
+|`BeforeRecoverEvent`|`TrashService::recover`|`TrashItem $trashItem` `Location $newParentLocation` `?Location $location`|
+|`RecoverEvent`|`TrashService::recover`|`TrashItem $trashItem` `Location $newParentLocation` `Location $location`|
+|`BeforeTrashEvent`|`TrashService::trash`|`Location $location` `?TrashItem $result` `bool $resultSet = false`|
+|`TrashEvent`|`TrashService::trash`|`Location $location` `?TrashItem $trashItem`|
diff --git a/docs/api/event_reference/url_events.md b/docs/api/event_reference/url_events.md
index e6b236809b6..de146f42270 100644
--- a/docs/api/event_reference/url_events.md
+++ b/docs/api/event_reference/url_events.md
@@ -9,8 +9,8 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeUpdateUrlEvent`|`URLService::updateUrl`|`URL $url``URLUpdateStruct $struct``?URL $updatedUrl`|
-|`UpdateUrlEvent`|`URLService::updateUrl`|`URL $url``URLUpdateStruct $struct``URL $updatedUrl`|
+|`BeforeUpdateUrlEvent`|`URLService::updateUrl`|`URL $url` `URLUpdateStruct $struct` `?URL $updatedUrl`|
+|`UpdateUrlEvent`|`URLService::updateUrl`|`URL $url` `URLUpdateStruct $struct` `URL $updatedUrl`|
## URL aliases
@@ -18,10 +18,10 @@ The following events are dispatched when creating and managing [URL aliases](url
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateGlobalUrlAliasEvent`|`URLAliasService::createGlobalUrlAlias`|`private $resource``private $path``private $languageCode``private $forwarding``private $alwaysAvailable``?URLAlias $urlAlias`|
-|`CreateGlobalUrlAliasEvent`|`URLAliasService::createGlobalUrlAlias`|`private $resource``private $path``private $languageCode``private $forwarding``private $alwaysAvailable``URLAlias $urlAlias`|
-|`BeforeCreateUrlAliasEvent`|`URLAliasService::createUrlAlias`|`Location $location``private $path``private $languageCode``private $forwarding``private $alwaysAvailable``?URLAlias $urlAlias`|
-|`CreateUrlAliasEvent`|`URLAliasService::createUrlAlias`|`Location $location``private $path``private $languageCode``private $forwarding``private $alwaysAvailable``URLAlias $urlAlias`|
+|`BeforeCreateGlobalUrlAliasEvent`|`URLAliasService::createGlobalUrlAlias`|`private $resource` `private $path` `private $languageCode` `private $forwarding` `private $alwaysAvailable` `?URLAlias $urlAlias`|
+|`CreateGlobalUrlAliasEvent`|`URLAliasService::createGlobalUrlAlias`|`private $resource` `private $path` `private $languageCode` `private $forwarding` `private $alwaysAvailable` `URLAlias $urlAlias`|
+|`BeforeCreateUrlAliasEvent`|`URLAliasService::createUrlAlias`|`Location $location` `private $path` `private $languageCode` `private $forwarding` `private $alwaysAvailable` `?URLAlias $urlAlias`|
+|`CreateUrlAliasEvent`|`URLAliasService::createUrlAlias`|`Location $location` `private $path` `private $languageCode` `private $forwarding` `private $alwaysAvailable` `URLAlias $urlAlias`|
|`BeforeRefreshSystemUrlAliasesForLocationEvent`|`URLAliasService::refreshSystemUrlAliasesForLocation`|`Location $location`|
|`RefreshSystemUrlAliasesForLocationEvent`|`URLAliasService::refreshSystemUrlAliasesForLocation`|`Location $location`|
|`BeforeRemoveAliasesEvent`|`URLAliasService::removeAliases`|`array $aliasList`|
@@ -33,11 +33,11 @@ The following events are dispatched when creating and managing [URL wildcards](u
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateEvent`|`URLWildcardService::create`|`private $sourceUrl``private $destinationUrl``private $forward``?URLWildcard $urlWildcard`|
-|`CreateEvent`|`URLWildcardService::create`|`private $sourceUrl``private $destinationUrl``private $forward``URLWildcard $urlWildcard`|
-|`BeforeUpdateEvent`|`URLWildcardService::update`|`URLWildcard $urlWildcard``URLWildcardUpdateStruct $updateStruct`|
-|`UpdateEvent`|`URLWildcardService::update`|`URLWildcard $urlWildcard``URLWildcardUpdateStruct $updateStruct`|
-|`BeforeTranslateEvent`|`URLWildcardService::translate`|`private $url``?URLWildcardTranslationResult $result`|
-|`TranslateEvent`|`URLWildcardService::translate`|`private $url``URLWildcardTranslationResult $result`|
+|`BeforeCreateEvent`|`URLWildcardService::create`|`private $sourceUrl` `private $destinationUrl` `private $forward` `?URLWildcard $urlWildcard`|
+|`CreateEvent`|`URLWildcardService::create`|`private $sourceUrl` `private $destinationUrl` `private $forward` `URLWildcard $urlWildcard`|
+|`BeforeUpdateEvent`|`URLWildcardService::update`|`URLWildcard $urlWildcard` `URLWildcardUpdateStruct $updateStruct`|
+|`UpdateEvent`|`URLWildcardService::update`|`URLWildcard $urlWildcard` `URLWildcardUpdateStruct $updateStruct`|
+|`BeforeTranslateEvent`|`URLWildcardService::translate`|`private $url` `?URLWildcardTranslationResult $result`|
+|`TranslateEvent`|`URLWildcardService::translate`|`private $url` `URLWildcardTranslationResult $result`|
|`BeforeRemoveEvent`|`URLWildcardService::remove`|`URLWildcard $urlWildcard`|
|`RemoveEvent`|`URLWildcardService::remove`|`URLWildcard $urlWildcard`|
diff --git a/docs/api/event_reference/user_events.md b/docs/api/event_reference/user_events.md
index 790561aeba3..0f368139757 100644
--- a/docs/api/event_reference/user_events.md
+++ b/docs/api/event_reference/user_events.md
@@ -7,40 +7,40 @@ page_type: reference
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateUserEvent`|`UserService::createUser`|`UserCreateStruct $userCreateStruct``array $parentGroups``?User $user`|
-|`CreateUserEvent`|`UserService::createUser`|`UserCreateStruct $userCreateStruct``array $parentGroups``User $user`|
-|`BeforeUpdateUserEvent`|`UserService::updateUser`|`User $user``UserUpdateStruct $userUpdateStruct``?User $updatedUser`|
-|`UpdateUserEvent`|`UserService::updateUser`|`User $user``UserUpdateStruct $userUpdateStruct``User $updatedUser`|
-|`BeforeDeleteUserEvent`|`UserService::deleteUser`|`User $user``array or null $locations`|
-|`DeleteUserEvent`|`UserService::deleteUser`|`User $user``array $locations`|
+|`BeforeCreateUserEvent`|`UserService::createUser`|`UserCreateStruct $userCreateStruct` `array $parentGroups` `?User $user`|
+|`CreateUserEvent`|`UserService::createUser`|`UserCreateStruct $userCreateStruct` `array $parentGroups` `User $user`|
+|`BeforeUpdateUserEvent`|`UserService::updateUser`|`User $user` `UserUpdateStruct $userUpdateStruct` `?User $updatedUser`|
+|`UpdateUserEvent`|`UserService::updateUser`|`User $user` `UserUpdateStruct $userUpdateStruct` `User $updatedUser`|
+|`BeforeDeleteUserEvent`|`UserService::deleteUser`|`User $user` `array or null $locations`|
+|`DeleteUserEvent`|`UserService::deleteUser`|`User $user` `array $locations`|
## User groups
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeCreateUserGroupEvent`|`UserService::createUserGroup`|`UserGroupCreateStruct $userGroupCreateStruct``UserGroup $parentGroup``?UserGroup $userGroup`|
-|`CreateUserGroupEvent`|`UserService::createUserGroup`|`UserGroupCreateStruct $userGroupCreateStruct``UserGroup $parentGroup``UserGroup $userGroup`|
-|`BeforeUpdateUserGroupEvent`|`UserService::updateUserGroup`|`UserGroup $userGroup``UserGroupUpdateStruct $userGroupUpdateStruct``?UserGroup $updatedUserGroup`|
-|`UpdateUserGroupEvent`|`UserService::updateUserGroup`|`UserGroup $userGroup``UserGroupUpdateStruct $userGroupUpdateStruct`|
-|`BeforeDeleteUserGroupEvent`|`UserService::deleteUserGroup`|`UserGroup $userGroup``array or null $locations`|
-|`DeleteUserGroupEvent`|`UserService::deleteUserGroup`|`UserGroup $userGroup``array $locations`|
-|`BeforeMoveUserGroupEvent`|`UserService::moveUserGroup`|`UserGroup $userGroup``UserGroup $newParent`|
-|`MoveUserGroupEvent`|`UserService::moveUserGroup`|`UserGroup $userGroup``UserGroup $newParent`|
+|`BeforeCreateUserGroupEvent`|`UserService::createUserGroup`|`UserGroupCreateStruct $userGroupCreateStruct` `UserGroup $parentGroup` `?UserGroup $userGroup`|
+|`CreateUserGroupEvent`|`UserService::createUserGroup`|`UserGroupCreateStruct $userGroupCreateStruct` `UserGroup $parentGroup` `UserGroup $userGroup`|
+|`BeforeUpdateUserGroupEvent`|`UserService::updateUserGroup`|`UserGroup $userGroup` `UserGroupUpdateStruct $userGroupUpdateStruct` `?UserGroup $updatedUserGroup`|
+|`UpdateUserGroupEvent`|`UserService::updateUserGroup`|`UserGroup $userGroup` `UserGroupUpdateStruct $userGroupUpdateStruct`|
+|`BeforeDeleteUserGroupEvent`|`UserService::deleteUserGroup`|`UserGroup $userGroup` `array or null $locations`|
+|`DeleteUserGroupEvent`|`UserService::deleteUserGroup`|`UserGroup $userGroup` `array $locations`|
+|`BeforeMoveUserGroupEvent`|`UserService::moveUserGroup`|`UserGroup $userGroup` `UserGroup $newParent`|
+|`MoveUserGroupEvent`|`UserService::moveUserGroup`|`UserGroup $userGroup` `UserGroup $newParent`|
## Assigning to user groups
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeAssignUserToUserGroupEvent`|`UserService::assignUserToUserGroup`|`User $user``UserGroup $userGroup`|
-|`AssignUserToUserGroupEvent`|`UserService::assignUserToUserGroup`|`User $user``UserGroup $userGroup`|
-|`BeforeUnAssignUserFromUserGroupEvent`|`UserService::unAssignUserFromUserGroup`|`User $user``UserGroup $userGroup`|
-|`UnAssignUserFromUserGroupEvent`|`UserService::unAssignUserFromUserGroup`|`User $user``UserGroup $userGroup`|
+|`BeforeAssignUserToUserGroupEvent`|`UserService::assignUserToUserGroup`|`User $user` `UserGroup $userGroup`|
+|`AssignUserToUserGroupEvent`|`UserService::assignUserToUserGroup`|`User $user` `UserGroup $userGroup`|
+|`BeforeUnAssignUserFromUserGroupEvent`|`UserService::unAssignUserFromUserGroup`|`User $user` `UserGroup $userGroup`|
+|`UnAssignUserFromUserGroupEvent`|`UserService::unAssignUserFromUserGroup`|`User $user` `UserGroup $userGroup`|
## Updating User data
| Event | Dispatched by | Properties |
|---|---|---|
-|`BeforeUpdateUserPasswordEvent`|`UserService::updateUserPassword`|`User $user``string $newPassword``?User $updatedUser`|
-|`UpdateUserPasswordEvent`|`UserService::updateUserPassword`|`User $user``string $newPassword``User $updatedUser`|
-|`BeforeUpdateUserTokenEvent`|`UserService::updateUserToken`|`User $user``UserTokenUpdateStruct $userTokenUpdateStruct``?User $updatedUser`|
-|`UpdateUserTokenEvent`|`UserService::updateUserToken`|`User $user``UserTokenUpdateStruct $userTokenUpdateStruct``User $updatedUser`|
+|`BeforeUpdateUserPasswordEvent`|`UserService::updateUserPassword`|`User $user` `string $newPassword` `?User $updatedUser`|
+|`UpdateUserPasswordEvent`|`UserService::updateUserPassword`|`User $user` `string $newPassword` `User $updatedUser`|
+|`BeforeUpdateUserTokenEvent`|`UserService::updateUserToken`|`User $user` `UserTokenUpdateStruct $userTokenUpdateStruct` `?User $updatedUser`|
+|`UpdateUserTokenEvent`|`UserService::updateUserToken`|`User $user` `UserTokenUpdateStruct $userTokenUpdateStruct` `User $updatedUser`|
diff --git a/docs/content_management/field_types/form_and_template.md b/docs/content_management/field_types/form_and_template.md
index 5c4913a80ba..167766640af 100644
--- a/docs/content_management/field_types/form_and_template.md
+++ b/docs/content_management/field_types/form_and_template.md
@@ -161,7 +161,7 @@ The block can receive the following variables:
| `versionInfo` | `Ibexa\Contracts\Core\Repository\Values\Content\VersionInfo` | The VersionInfo of the content item the field belongs to |
| `fieldSettings` | array | Settings of the field (depends on the field type) |
| `parameters` | hash | Options passed to `ibexa_render_field()` under the `'parameters'` key |
-| `attr` | hash | The attributes to add the generate the HTML markup, passed to ibexa_render_field()` under the `'attr'` key. Contains at least a class entry, containing -field |
+| `attr` | hash | The attributes to add the generate the HTML markup, passed to `ibexa_render_field()` under the `'attr'` key. Contains at least a class entry, containing `-field` |
### Reusing blocks
diff --git a/docs/content_management/pages/page_block_attributes.md b/docs/content_management/pages/page_block_attributes.md
index 3245694ca51..f1611d11eee 100644
--- a/docs/content_management/pages/page_block_attributes.md
+++ b/docs/content_management/pages/page_block_attributes.md
@@ -40,7 +40,7 @@ The following attribute types are available:
|`radio`|Radio buttons|`choices` lists the available options in `label: value` form.|
|`locationlist`|Location selection| `udw_config_name`: name of the [Universal Discovery Widget's configuration](browser.md#add-new-configuration) |
|`contenttypelist`|List of content types|-|
-|`schedule_events`,`schedule_snapshots`,`schedule_initial_items`,`schedule_slots`,`schedule_loaded_snapshot`|Used in the Content Scheduler block|-|
+|`schedule_events`, `schedule_snapshots`, `schedule_initial_items`, `schedule_slots`, `schedule_loaded_snapshot`|Used in the Content Scheduler block|-|
|`nested_attribute`|Defines a group of attributes in a block.|
`attributes` - a list of attributes in the group. The attributes in the group are [configured](#page-block-attributes) as regular attributes
`multiple`, when set to true. New groups are added dynamically with the **+ Add** button
|
When you define attributes, you can omit most keys as long as you use simple types that don't require additional options:
diff --git a/docs/js/custom.js b/docs/js/custom.js
index 1a50125e764..1946f74c1a2 100644
--- a/docs/js/custom.js
+++ b/docs/js/custom.js
@@ -12,14 +12,6 @@ $(document).ready(function() {
if (branchNameRegexp !== null && branchNameRegexp.hasOwnProperty(1) && branchNameRegexp[1].length) {
branchName = branchNameRegexp[1];
}
-
- // Show warning box for versions that have reached End Of Life
- if (eolVersions.includes(branchName)) {
- const warningBox = document.querySelector('#eol-warning-box');
-
- warningBox.hidden = false;
- }
-
if (!/^\d+\.\d+$/.test(branchName) && branchName !== 'latest') {
branchName = '5.0';
}
diff --git a/docs/permissions/policies.md b/docs/permissions/policies.md
index 0a096d2ebcd..e1d6642ef46 100644
--- a/docs/permissions/policies.md
+++ b/docs/permissions/policies.md
@@ -223,30 +223,30 @@ The [discount](discounts.md) policies decide which actions can be executed by gi
| Module | Function | Effect | Possible limitations |
|------------------------|-----------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `content` | `cleantrash` | empty the Trash (even when the User doesn't have access to individual content items) | |
-| | `create` | create new content. Note: even without this policy the user is able to enter edit mode, but cannot finalize work with the content item. | [Content type](limitation_reference.md#content-type-limitation)[Section](limitation_reference.md#section-limitation)[Location](limitation_reference.md#location-limitation)[Subtree](limitation_reference.md#subtree-limitation)[Language](limitation_reference.md#language-limitation)[Owner of Parent](limitation_reference.md#owner-of-parent-limitation)[Content type Group of Parent](limitation_reference.md#content-type-group-of-parent-limitation)[Content type of Parent](limitation_reference.md#content-type-of-parent-limitation)[Parent Depth](limitation_reference.md#parent-depth-limitation)[Field Group](limitation_reference.md#field-group-limitation)[Change Owner](limitation_reference.md#change-owner-limitation) |
+| | `create` | create new content. Note: even without this policy the user is able to enter edit mode, but cannot finalize work with the content item. | [Content type](limitation_reference.md#content-type-limitation) [Section](limitation_reference.md#section-limitation) [Location](limitation_reference.md#location-limitation) [Subtree](limitation_reference.md#subtree-limitation) [Language](limitation_reference.md#language-limitation) [Owner of Parent](limitation_reference.md#owner-of-parent-limitation) [Content type Group of Parent](limitation_reference.md#content-type-group-of-parent-limitation) [Content type of Parent](limitation_reference.md#content-type-of-parent-limitation) [Parent Depth](limitation_reference.md#parent-depth-limitation) [Field Group](limitation_reference.md#field-group-limitation) [Change Owner](limitation_reference.md#change-owner-limitation) |
| | `diff` | unused | |
-| | `edit` | edit existing content | [Content type](limitation_reference.md#content-type-limitation)[Section](limitation_reference.md#section-limitation)[Owner](limitation_reference.md#owner-limitation)[Content type Group](limitation_reference.md#content-type-group-limitation)[Location](limitation_reference.md#location-limitation)[Subtree](limitation_reference.md#subtree-limitation)[Language](limitation_reference.md#language-limitation)[Object State](limitation_reference.md#object-state-limitation)[Workflow Stage](limitation_reference.md#workflow-stage-limitation)[Field Group](limitation_reference.md#field-group-limitation)[Version Lock](limitation_reference.md#version-lock-limitation)[Change Owner](limitation_reference.md#change-owner-limitation) |
-| | `hide` | hide and reveal content locations | [Content type](limitation_reference.md#content-type-limitation)[Section](limitation_reference.md#section-limitation)[Owner](limitation_reference.md#owner-limitation)[Content type Group](limitation_reference.md#content-type-group-limitation)[Location](limitation_reference.md#location-limitation)[Subtree](limitation_reference.md#subtree-limitation)[Language](limitation_reference.md#language-limitation) |
-| | `manage_locations` | remove locations and send content to Trash | [Content type](limitation_reference.md#content-type-limitation)[Section](limitation_reference.md#section-limitation)[Owner](limitation_reference.md#owner-limitation)[Subtree](limitation_reference.md#subtree-limitation)[Object State](limitation_reference.md#object-state-limitation) |
+| | `edit` | edit existing content | [Content type](limitation_reference.md#content-type-limitation) [Section](limitation_reference.md#section-limitation) [Owner](limitation_reference.md#owner-limitation) [Content type Group](limitation_reference.md#content-type-group-limitation) [Location](limitation_reference.md#location-limitation) [Subtree](limitation_reference.md#subtree-limitation) [Language](limitation_reference.md#language-limitation) [Object State](limitation_reference.md#object-state-limitation) [Workflow Stage](limitation_reference.md#workflow-stage-limitation) [Field Group](limitation_reference.md#field-group-limitation) [Version Lock](limitation_reference.md#version-lock-limitation) [Change Owner](limitation_reference.md#change-owner-limitation) |
+| | `hide` | hide and reveal content locations | [Content type](limitation_reference.md#content-type-limitation) [Section](limitation_reference.md#section-limitation) [Owner](limitation_reference.md#owner-limitation) [Content type Group](limitation_reference.md#content-type-group-limitation) [Location](limitation_reference.md#location-limitation) [Subtree](limitation_reference.md#subtree-limitation) [Language](limitation_reference.md#language-limitation) |
+| | `manage_locations` | remove locations and send content to Trash | [Content type](limitation_reference.md#content-type-limitation) [Section](limitation_reference.md#section-limitation) [Owner](limitation_reference.md#owner-limitation) [Subtree](limitation_reference.md#subtree-limitation) [Object State](limitation_reference.md#object-state-limitation) |
| | `pendinglist` | unused | |
-| | `publish` | publish content. Without this Policy, the User can only save drafts or send them for review (in [[= product_name_exp =]]) | [Content type](limitation_reference.md#content-type-limitation)[Section](limitation_reference.md#section-limitation)[Owner](limitation_reference.md#owner-limitation)[Content type Group](limitation_reference.md#content-type-group-limitation)[Location](limitation_reference.md#location-limitation)[Subtree](limitation_reference.md#subtree-limitation)[Language](limitation_reference.md#language-limitation)[Object State](limitation_reference.md#object-state-limitation)[Workflow Stage](limitation_reference.md#workflow-stage-limitation) |
-| | `read` | view the content both in front and back end | [Content type](limitation_reference.md#content-type-limitation)[Section](limitation_reference.md#section-limitation)[Owner](limitation_reference.md#owner-limitation)[Content type Group](limitation_reference.md#content-type-group-limitation)[Location](limitation_reference.md#location-limitation)[Subtree](limitation_reference.md#subtree-limitation)[Object State](limitation_reference.md#object-state-limitation) |
-| | `remove` | remove locations and send content to Trash | [Content type](limitation_reference.md#content-type-limitation)[Section](limitation_reference.md#section-limitation)[Owner](limitation_reference.md#owner-limitation)[Location](limitation_reference.md#location-limitation)[Subtree](limitation_reference.md#subtree-limitation)[Object State](limitation_reference.md#object-state-limitation)[Language](limitation_reference.md#language-limitation) |
+| | `publish` | publish content. Without this Policy, the User can only save drafts or send them for review (in [[= product_name_exp =]]) | [Content type](limitation_reference.md#content-type-limitation) [Section](limitation_reference.md#section-limitation) [Owner](limitation_reference.md#owner-limitation) [Content type Group](limitation_reference.md#content-type-group-limitation) [Location](limitation_reference.md#location-limitation) [Subtree](limitation_reference.md#subtree-limitation) [Language](limitation_reference.md#language-limitation) [Object State](limitation_reference.md#object-state-limitation) [Workflow Stage](limitation_reference.md#workflow-stage-limitation) |
+| | `read` | view the content both in front and back end | [Content type](limitation_reference.md#content-type-limitation) [Section](limitation_reference.md#section-limitation) [Owner](limitation_reference.md#owner-limitation) [Content type Group](limitation_reference.md#content-type-group-limitation) [Location](limitation_reference.md#location-limitation) [Subtree](limitation_reference.md#subtree-limitation) [Object State](limitation_reference.md#object-state-limitation) |
+| | `remove` | remove locations and send content to Trash | [Content type](limitation_reference.md#content-type-limitation) [Section](limitation_reference.md#section-limitation) [Owner](limitation_reference.md#owner-limitation) [Location](limitation_reference.md#location-limitation) [Subtree](limitation_reference.md#subtree-limitation) [Object State](limitation_reference.md#object-state-limitation) [Language](limitation_reference.md#language-limitation) |
| | `restore` | restore content from Trash | |
-| | `reverserelatedlist` | see all content that a content item relates to (even when the User isn't allowed to view it as an individual content items) | [Content type](limitation_reference.md#content-type-limitation)[Section](limitation_reference.md#section-limitation) |
-| | `translate` | unused | [Content type](limitation_reference.md#content-type-limitation)[Section](limitation_reference.md#section-limitation)[Owner](limitation_reference.md#owner-limitation)[Location](limitation_reference.md#location-limitation)[Subtree](limitation_reference.md#subtree-limitation)[Language](limitation_reference.md#language-limitation) |
+| | `reverserelatedlist` | see all content that a content item relates to (even when the User isn't allowed to view it as an individual content items) | [Content type](limitation_reference.md#content-type-limitation) [Section](limitation_reference.md#section-limitation) |
+| | `translate` | unused | [Content type](limitation_reference.md#content-type-limitation) [Section](limitation_reference.md#section-limitation) [Owner](limitation_reference.md#owner-limitation) [Location](limitation_reference.md#location-limitation) [Subtree](limitation_reference.md#subtree-limitation) [Language](limitation_reference.md#language-limitation) |
| | `translations` | manage the language list in Admin ||
-| | `unlock` | unlock drafts locked to a user for performing actions | [Owner](limitation_reference.md#owner-limitation)[Content type Group](limitation_reference.md#content-type-group-limitation)[Subtree](limitation_reference.md#subtree-limitation)[Language](limitation_reference.md#language-limitation)[Version Lock](limitation_reference.md#version-lock-limitation) |
+| | `unlock` | unlock drafts locked to a user for performing actions | [Owner](limitation_reference.md#owner-limitation) [Content type Group](limitation_reference.md#content-type-group-limitation) [Subtree](limitation_reference.md#subtree-limitation) [Language](limitation_reference.md#language-limitation) [Version Lock](limitation_reference.md#version-lock-limitation) |
| | `urltranslator` | manage URL aliases of a content item | |
-| | `versionread` | view content after publishing, and to preview any content in the Site mode | [Content type](limitation_reference.md#content-type-limitation)[Section](limitation_reference.md#section-limitation)[Owner](limitation_reference.md#owner-limitation)Status[Location](limitation_reference.md#location-limitation)[Subtree](limitation_reference.md#subtree-limitation)[Object State](limitation_reference.md#object-state-limitation) |
-| | `versionremove` | remove archived content versions | [Content type](limitation_reference.md#content-type-limitation)[Section](limitation_reference.md#section-limitation)[Owner](limitation_reference.md#owner-limitation)Status[Location](limitation_reference.md#location-limitation)[Subtree](limitation_reference.md#subtree-limitation)[Object State](limitation_reference.md#object-state-limitation) |
-| | `view_embed` | view content embedded in another content item (even when the User isn't allowed to view it as an individual content item) | [Content type](limitation_reference.md#content-type-limitation)[Section](limitation_reference.md#section-limitation)[Owner](limitation_reference.md#owner-limitation)[Location](limitation_reference.md#location-limitation)[Subtree](limitation_reference.md#subtree-limitation) |
+| | `versionread` | view content after publishing, and to preview any content in the Site mode | [Content type](limitation_reference.md#content-type-limitation) [Section](limitation_reference.md#section-limitation) [Owner](limitation_reference.md#owner-limitation) Status [Location](limitation_reference.md#location-limitation) [Subtree](limitation_reference.md#subtree-limitation) [Object State](limitation_reference.md#object-state-limitation) |
+| | `versionremove` | remove archived content versions | [Content type](limitation_reference.md#content-type-limitation) [Section](limitation_reference.md#section-limitation) [Owner](limitation_reference.md#owner-limitation) Status [Location](limitation_reference.md#location-limitation) [Subtree](limitation_reference.md#subtree-limitation) [Object State](limitation_reference.md#object-state-limitation) |
+| | `view_embed` | view content embedded in another content item (even when the User isn't allowed to view it as an individual content item) | [Content type](limitation_reference.md#content-type-limitation) [Section](limitation_reference.md#section-limitation) [Owner](limitation_reference.md#owner-limitation) [Location](limitation_reference.md#location-limitation) [Subtree](limitation_reference.md#subtree-limitation) |
#### Content collaborative editing
| Module | Function | Effect | Possible limitations |
|----------------------|-----------------------|--------------------------------------------------------------------------|----------------------|
-| `content` | `share` | share content drafts with internal and external users through [collaborative editing](collaborative_editing.md) |[Owner](limitation_reference.md#collaborative-editing-owner-limitation)[PublicLink](limitation_reference.md#collaborative-editing-publiclink-limitation)[Scope](limitation_reference.md#collaborative-editing-scope-limitation) |
+| `content` | `share` | share content drafts with internal and external users through [collaborative editing](collaborative_editing.md) |[Owner](limitation_reference.md#collaborative-editing-owner-limitation) [PublicLink](limitation_reference.md#collaborative-editing-publiclink-limitation) [Scope](limitation_reference.md#collaborative-editing-scope-limitation) |
| `rte` | `edit` | use [Real-time editing](collaborative_editing_guide.md#real-time-editing) | |
#### Content types
@@ -261,7 +261,7 @@ The [discount](discounts.md) policies decide which actions can be executed by gi
| Module | Function | Effect | Possible limitations |
|------------------------|-----------------------|----------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `section` | `assign` | assign Sections to content | [content type](limitation_reference.md#content-type-limitation)[Section](limitation_reference.md#section-limitation)[Owner](limitation_reference.md#owner-limitation)[New Section](limitation_reference.md#new-section-limitation) |
+| `section` | `assign` | assign Sections to content | [content type](limitation_reference.md#content-type-limitation) [Section](limitation_reference.md#section-limitation) [Owner](limitation_reference.md#owner-limitation) [New Section](limitation_reference.md#new-section-limitation) |
| | `edit` | edit existing Sections and create new ones | |
| | `view` | view the Sections list in Admin. Required for all other section-related policies | |
@@ -269,7 +269,7 @@ The [discount](discounts.md) policies decide which actions can be executed by gi
| Module | Function | Effect | Possible limitations |
|----------------------|-----------------------------|---------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
-| `state` | `assign` | assign object states to content items | [Content type](limitation_reference.md#content-type-limitation)[Section](limitation_reference.md#section-limitation)[Owner](limitation_reference.md#owner-limitation)[Content type Group](limitation_reference.md#content-type-group-limitation)[Location](limitation_reference.md#location-limitation)[Subtree](limitation_reference.md#subtree-limitation)[Object State](limitation_reference.md#object-state-limitation)[New State](limitation_reference.md#new-state-limitation) |
+| `state` | `assign` | assign object states to content items | [Content type](limitation_reference.md#content-type-limitation) [Section](limitation_reference.md#section-limitation) [Owner](limitation_reference.md#owner-limitation) [Content type Group](limitation_reference.md#content-type-group-limitation) [Location](limitation_reference.md#location-limitation) [Subtree](limitation_reference.md#subtree-limitation) [Object State](limitation_reference.md#object-state-limitation) [New State](limitation_reference.md#new-state-limitation) |
| | `administrate` | view, add and edit object states | |
#### Taxonomy
@@ -302,9 +302,9 @@ The [discount](discounts.md) policies decide which actions can be executed by gi
| Module | Function | Effect | Possible limitations |
|------------------------|-----------------------|---------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------|
-| `product` | `create` | create a product | [Product Type](limitation_reference.md#product-type-limitation)[Language](limitation_reference.md#language-limitation) |
+| `product` | `create` | create a product | [Product Type](limitation_reference.md#product-type-limitation) [Language](limitation_reference.md#language-limitation) |
| | `delete` | delete a product | [Product Type](limitation_reference.md#product-type-limitation) |
-| | `edit` | edit a product | [Product Type](limitation_reference.md#product-type-limitation)[Language](limitation_reference.md#language-limitation) |
+| | `edit` | edit a product | [Product Type](limitation_reference.md#product-type-limitation) [Language](limitation_reference.md#language-limitation) |
| | `view` | view products listed in the product catalog | [Product Type](limitation_reference.md#product-type-limitation) |
!!! caution
@@ -315,7 +315,7 @@ The [discount](discounts.md) policies decide which actions can be executed by gi
| Module | Function | Effect | Possible limitations |
|----------------------|-----------------------|--------------------------------------------------------------------------|----------------------|
-| `product` | `share` | share products with internal and external users through [collaborative editing](collaborative_editing.md) |[Owner](limitation_reference.md#collaborative-editing-owner-limitation)[PublicLink](limitation_reference.md#collaborative-editing-publiclink-limitation)[Scope](limitation_reference.md#collaborative-editing-scope-limitation) |
+| `product` | `share` | share products with internal and external users through [collaborative editing](collaborative_editing.md) |[Owner](limitation_reference.md#collaborative-editing-owner-limitation) [PublicLink](limitation_reference.md#collaborative-editing-publiclink-limitation) [Scope](limitation_reference.md#collaborative-editing-scope-limitation) |
#### Product types
diff --git a/docs/personalization/api_reference/recommendation_api.md b/docs/personalization/api_reference/recommendation_api.md
index b51c794a9ed..26db678a1e2 100644
--- a/docs/personalization/api_reference/recommendation_api.md
+++ b/docs/personalization/api_reference/recommendation_api.md
@@ -242,7 +242,7 @@ The following HTTP response codes are used by the recommendation controller:
|---|---|
|200 OK|Request was processed successfully.|
|304 Not Modified|Recommendation result wasn't modified since the time specified in the provided `If-Modified-Since` header.|
-|400 Bad Request414 Request-URI Too Long|Wrong request formatting. See response body for more information.|
+|400 Bad Request 414 Request-URI Too Long|Wrong request formatting. See response body for more information.|
|401 Unauthorized|Invalid authentication credentials.|
|403 Forbidden|Access denied.|
|404 Not Found|The requested element wasn't found. It could be customer ID (or "mandator ID"), model ID, or scenario ID.|
diff --git a/docs/personalization/api_reference/tracking_api.md b/docs/personalization/api_reference/tracking_api.md
index e02bba7f54c..40ca705208d 100644
--- a/docs/personalization/api_reference/tracking_api.md
+++ b/docs/personalization/api_reference/tracking_api.md
@@ -148,7 +148,7 @@ For a list of embedded parameters that each of the events may use, see the follo
|`customerid`|A customer ID (for example "00000"). Can be used to identify a website in installations that [hosts multiple SiteAccesses]([[= user_doc =]]/personalization/use_cases/#multiple-website-hosting).|alphanumeric|
|userid|A user's ID on the website of the customer. It could be an internal customer code, a session code or a cookie for anonymous users.|URL-encoded alphanumeric|
|`itemtypeid`|Item type ID.|1 to 2147483647|
-|`itemid`|A unique ID of the item the user has clicked.String-based identifiers are also supported as item IDs to track content on a website, but it's discouraged due to fraud and security issues. If you're unable to provide numeric identifiers for the tracking process, contact [[= product_name_base =]] for further information and implementation notes.|1 to 2147483647|
+|`itemid`|A unique ID of the item the user has clicked. String-based identifiers are also supported as item IDs to track content on a website, but it's discouraged due to fraud and security issues. If you're unable to provide numeric identifiers for the tracking process, contact [[= product_name_base =]] for further information and implementation notes.|1 to 2147483647|
|`sourceuserid`|User identifier valid up to now(usually some anonymous session ID)|URL-encoded alphanumeric|
|`targetuserid`|User identifier valid from now on (usually an account ID or login name)|URL-encoded alphanumeric|
@@ -235,7 +235,7 @@ Some optional request parameters can be set over query string parameters (GET pa
|Name|Description|Values|
|---|---|---|
-|`categorypath`|The forward slash-separated path of categories of the item. Like all other parameters it must be URL-encoded, for example `%2FCameras%26Foto%2FCompact%20Cameras%2FCanon`.For use cases, see [Category path filters]([[= user_doc =]]/personalization/filters/#category-path-filters) in User Documentation.|URL-encoded string.Initial and trailing slashes are ignored: "/Cameras/" is the same as "Cameras".|
+|`categorypath`|The forward slash-separated path of categories of the item. Like all other parameters it must be URL-encoded, for example `%2FCameras%26Foto%2FCompact%20Cameras%2FCanon`. For use cases, see [Category path filters]([[= user_doc =]]/personalization/filters/#category-path-filters) in User Documentation.|URL-encoded string. Initial and trailing slashes are ignored: "/Cameras/" is the same as "Cameras".|
### Consume event
@@ -533,8 +533,8 @@ The following HTTP response codes are used by the event tracker.
|HTTP Status Code|Description|
|---|---|
-|200 OK204 No Content|Request was successfully processed.|
-|400 Bad Request414 Request-URI Too Long|The request is wrongly formatted. See response body for more information.|
+|200 OK 204 No Content|Request was successfully processed.|
+|400 Bad Request 414 Request-URI Too Long|The request is wrongly formatted. See response body for more information.|
|401 Unauthorized|Invalid authentication credentials.|
|403 Forbidden|Access denied (not implemented yet).|
|404 Not Found|The customer ID was not found. The event code was not found.|
diff --git a/docs/personalization/legacy_recommendation_api.md b/docs/personalization/legacy_recommendation_api.md
index 459a15f33da..4c267753b18 100644
--- a/docs/personalization/legacy_recommendation_api.md
+++ b/docs/personalization/legacy_recommendation_api.md
@@ -138,7 +138,7 @@ The Following HTTP response codes are used by the recommendation controller.
|---|---|
|200 OK|Request was successfully processed.|
|304 Not Modified|Recommendation result was not modified since the time specified in the provided If-Modified-Since header.|
-|400 Bad Request414 Request-URI Too Long|The request is wrongly formatted. See response body for more information.|
+|400 Bad Request 414 Request-URI Too Long|The request is wrongly formatted. See response body for more information.|
|401 Unauthorized|Not valid authentication credentials.|
|403 Forbidden|Access denied.|
|404 Not Found|The requested element was not found. It can be, for example, customer ID (a.k.a. mandator ID), model ID, or scenario ID.|
diff --git a/docs/templating/twig_function_reference/url_twig_functions.md b/docs/templating/twig_function_reference/url_twig_functions.md
index 05a4e4b3016..136cf966eda 100644
--- a/docs/templating/twig_function_reference/url_twig_functions.md
+++ b/docs/templating/twig_function_reference/url_twig_functions.md
@@ -20,7 +20,7 @@ page_type: reference
|Argument|Type|Description|
|------|------|------|
-|`name`|`string``Ibexa\Contracts\Core\Repository\Values\Content\Location``Ibexa\Contracts\Core\Repository\Values\Content\Content``Ibexa\Contracts\Core\Repository\Values\Content\ContentInfo``Ibexa\Contracts\Core\Repository\Values\Content\Location``Ibexa\Core\MVC\Symfony\Routing\RouteReference`|The name of the route, location, or content.|
+|`name`|`string` `Ibexa\Contracts\Core\Repository\Values\Content\Location` `Ibexa\Contracts\Core\Repository\Values\Content\Content` `Ibexa\Contracts\Core\Repository\Values\Content\ContentInfo` `Ibexa\Contracts\Core\Repository\Values\Content\Location` `Ibexa\Core\MVC\Symfony\Routing\RouteReference`|The name of the route, location, or content.|
|`parameters`|`array`|Route parameters.|
|`relative`|`boolean`|Whether to generate a relative path.|
@@ -34,7 +34,7 @@ page_type: reference
|Argument|Type|Description|
|------|------|------|
-|`name`|`string``Ibexa\Contracts\Core\Repository\Values\Content\Location``Ibexa\Contracts\Core\Repository\Values\Content\Content``Ibexa\Contracts\Core\Repository\Values\Content\ContentInfo``Ibexa\Contracts\Core\Repository\Values\Content\Location``Ibexa\Core\MVC\Symfony\Routing\RouteReference`|The name of the route, location, or content.|
+|`name`|`string` `Ibexa\Contracts\Core\Repository\Values\Content\Location` `Ibexa\Contracts\Core\Repository\Values\Content\Content` `Ibexa\Contracts\Core\Repository\Values\Content\ContentInfo` `Ibexa\Contracts\Core\Repository\Values\Content\Location` `Ibexa\Core\MVC\Symfony\Routing\RouteReference`|The name of the route, location, or content.|
|`parameters`|`array`|Route parameters.|
|`schemeRelative`|`boolean`|Whether to generate a relative URL.|
@@ -62,7 +62,7 @@ For more information about the use of `ibexa.url.alias` as a parameter of the [S
|Argument|Type|Description|
|------|------|------|
-|`resource`|`string``Ibexa\Contracts\Core\Repository\Values\Content\Location``Ibexa\Contracts\Core\Repository\Values\Content\Content``Ibexa\Contracts\Core\Repository\Values\Content\ContentInfo``Ibexa\Contracts\Core\Repository\Values\Content\Location``Ibexa\Core\MVC\Symfony\Routing\RouteReference`|Resource or route name.|
+|`resource`|`string` `Ibexa\Contracts\Core\Repository\Values\Content\Location` `Ibexa\Contracts\Core\Repository\Values\Content\Content` `Ibexa\Contracts\Core\Repository\Values\Content\ContentInfo` `Ibexa\Contracts\Core\Repository\Values\Content\Location` `Ibexa\Core\MVC\Symfony\Routing\RouteReference`|Resource or route name.|
|`params`|`array`|Route parameters.|
``` html+twig
diff --git a/docs/templating/urls_and_routes/custom_breadcrumbs.md b/docs/templating/urls_and_routes/custom_breadcrumbs.md
index fb5513cea48..0c5254bc611 100644
--- a/docs/templating/urls_and_routes/custom_breadcrumbs.md
+++ b/docs/templating/urls_and_routes/custom_breadcrumbs.md
@@ -22,7 +22,7 @@ Both `breadcrumb_path` and `breadcrumb_names` must be configured for the breadcr
|Option|Description|
|--- |--- |
|`breadcrumb_path`|Valid route identifier which exists in at least one of the routing YAML files.|
-|`breadcrumb_names`|Name for the breadcrumb element. If the translation isn't set, there is a fallback to route translation.In the example above if the `Blog List` key has no translation, the fallback key is custom_blog_index | breadcrumb.|
+|`breadcrumb_names`|Name for the breadcrumb element. If the translation isn't set, there is a fallback to route translation. In the example above if the `Blog List` key has no translation, the fallback key is custom_blog_index | breadcrumb.|
### Multi-part routes
diff --git a/docs/templating/urls_and_routes/urls_and_routes.md b/docs/templating/urls_and_routes/urls_and_routes.md
index d905f2191e1..4ec00ae01a4 100644
--- a/docs/templating/urls_and_routes/urls_and_routes.md
+++ b/docs/templating/urls_and_routes/urls_and_routes.md
@@ -89,14 +89,14 @@ The following built-in routes are available for the front of the website.
|Route name|Path|Description|
|---|---|---|
| `ibexa.user.user_register` | `/user/register` | User registration form |
-| `ibexa.user.register_confirmation``ibexa.user.user_register_confirmation` | `/register-confirm``/user/register-confirm` | Confirmation page after user registration |
+| `ibexa.user.register_confirmation` `ibexa.user.user_register_confirmation` | `/register-confirm` `/user/register-confirm` | Confirmation page after user registration |
### Login
|Route name|Path|Description|
|---|---|---|
|`login` | `/login` | [Login form](add_login_form.md) |
-|`logout``ibexa.commerce.customer.logout` | `/logout``/profile/logout` | Logging out the current user |
+|`logout` `ibexa.commerce.customer.logout` | `/logout` `/profile/logout` | Logging out the current user |
### Profile
@@ -109,7 +109,7 @@ The following built-in routes are available for the front of the website.
|Route name|Path|Description|
|---|---|---|
-| `ibexa.user_profile.change_password``ibexa.commerce.password_change` | `/user/change-password``/change_password` | Form for password change|
+| `ibexa.user_profile.change_password` `ibexa.commerce.password_change` | `/user/change-password` `/change_password` | Form for password change|
| `ibexa.user.forgot_password` | `/user/forgot-password` | [Form for password resetting](add_forgot_password_option.md) |
| `ibexa.user.forgot_password.migration` | `/user/forgot-password/migration` | Form for resetting password after expiration|
| `ibexa.user.forgot_password.login` | `/user/forgot-password/login` | Form for resetting password based on login instead of email address |
diff --git a/docs/tutorials/page_and_form_tutorial/5_create_newsletter_form.md b/docs/tutorials/page_and_form_tutorial/5_create_newsletter_form.md
index c9f9c59b7ef..7754fcf493c 100644
--- a/docs/tutorials/page_and_form_tutorial/5_create_newsletter_form.md
+++ b/docs/tutorials/page_and_form_tutorial/5_create_newsletter_form.md
@@ -21,10 +21,10 @@ In the Form Builder, add and configure (using the **Basic** and **Validation** t
|-----|----|--------|---------------------|
|Single line input|Name|yes|Minimum length = 3|
|Single line input|Surname|no|Minimum length = 3|
-|Dropdown|Select topic|yes|Options:- News- Tips - Articles|
+|Dropdown|Select topic|yes|Options: - News - Tips - Articles|
|Email|Email address|yes|—|
|Captcha|CAPTCHA|—|—|
-|Button|Sign up!|—|Action: Show a messageMessage to display: Thank you!|
+|Button|Sign up!|—|Action: Show a message Message to display: Thank you!|
The configuration should look like this:
diff --git a/hooks/eol_status.py b/hooks/eol_status.py
new file mode 100644
index 00000000000..5ff0e8d8d20
--- /dev/null
+++ b/hooks/eol_status.py
@@ -0,0 +1,19 @@
+import os
+
+
+def on_config(config, **kwargs):
+ """Determine at build time whether this build is for an End-Of-Life version.
+
+ Each version is built by RTD as its own separate build (one per branch/tag),
+ with READTHEDOCS_VERSION_NAME set to the version slug (matching the
+ ``extra.eol_versions`` entries, e.g. "2.5", "3.3"). Computing this here
+ lets the theme render the EOL warning only where it's actually true,
+ instead of always emitting it in the HTML and hiding it via JS/CSS
+ (which is present in the served page whether the visible warning applies
+ or not).
+ """
+ current_version = os.environ.get("READTHEDOCS_VERSION_NAME", "")
+ eol_versions = config["extra"].get("eol_versions") or []
+ config["extra"]["current_version_is_eol"] = current_version in eol_versions
+
+ return config
diff --git a/mkdocs.yml b/mkdocs.yml
index 1ad95f03654..f0b06365c00 100644
--- a/mkdocs.yml
+++ b/mkdocs.yml
@@ -6,6 +6,8 @@ edit_uri: blob/5.0/docs
site_url: https://doc.ibexa.co/en/latest/
hooks:
- hooks/edit_uri.py
+ - hooks/eol_status.py
+ - hooks.py
copyright: "Copyright 1999-2026 Ibexa AS and others"
validation:
omitted_files: warn
@@ -990,7 +992,7 @@ nav:
theme:
name: material
features:
- - content.code.annotate
+ - content.code.annotate
- content.code.copy
- navigation.tracking
- navigation.top
@@ -1110,6 +1112,3 @@ markdown_extensions:
custom_checkbox: true
- pymdownx.tilde
- pymdownx.details
-
-hooks:
- - hooks.py
diff --git a/plugins.yml b/plugins.yml
index d5538126086..6b1a3168e04 100644
--- a/plugins.yml
+++ b/plugins.yml
@@ -596,7 +596,15 @@ plugins:
- llmstxt:
preprocess: llmstxt_preprocess.py
+ # The "> " prefix renders the description as a blockquote summary,
+ # as expected by the llms.txt spec (https://llmstxt.org)
+ markdown_description: >-
+ > Developer documentation for Ibexa DXP — architecture, APIs, templating, and extensibility for building and customizing Ibexa DXP projects.
+ # Pin links in the generated Markdown (and llms.txt) to this branch's
+ # version instead of site_url's en/latest, without affecting the HTML
+ # site's canonical URLs. Update when branching a new version.
+ base_url: https://doc.ibexa.co/en/5.0/
autoclean: false
full_output: llms-full.txt
sections:
diff --git a/tests/python/test_page_metadata.py b/tests/python/test_page_metadata.py
index 5900b5c3634..a31fdef5018 100644
--- a/tests/python/test_page_metadata.py
+++ b/tests/python/test_page_metadata.py
@@ -5,38 +5,56 @@
)
+LLMS_TXT_LINE = "> For the complete documentation index, see [llms.txt](/llms.txt)."
+
+
+def test_llms_txt_pointer_always_inserted_after_first_h1():
+ content = "# Title\n\nBody text."
+ assert inject_page_metadata(content) == (
+ f"# Title\n\n{LLMS_TXT_LINE}\n\nBody text."
+ )
+ assert inject_page_metadata(content, description="", editions=[]) == (
+ f"# Title\n\n{LLMS_TXT_LINE}\n\nBody text."
+ )
+
+
def test_editions_inserted_after_first_h1():
content = "# Title\n\nBody text."
assert inject_page_metadata(content, editions=["Commerce"]) == (
- "# Title\n\nEditions: Commerce\n\nBody text."
+ f"# Title\n\n{LLMS_TXT_LINE}\n\nEditions: Commerce\n\nBody text."
)
def test_description_inserted_after_first_h1():
content = "# Title\n\nBody text."
assert inject_page_metadata(content, description="Configure the Storefront.") == (
- "# Title\n\nConfigure the Storefront.\n\nBody text."
+ f"# Title\n\n{LLMS_TXT_LINE}\n\nConfigure the Storefront.\n\nBody text."
)
def test_description_comes_before_editions():
content = "# Title\n\nBody text."
assert inject_page_metadata(content, description="A description.", editions=["Commerce"]) == (
- "# Title\n\nA description.\n\nEditions: Commerce\n\nBody text."
+ f"# Title\n\n{LLMS_TXT_LINE}\n\nA description.\n\nEditions: Commerce\n\nBody text."
)
def test_prepended_when_no_h1():
content = "Body text."
assert inject_page_metadata(content, description="A description.", editions=["Commerce"]) == (
- "A description.\n\nEditions: Commerce\n\nBody text."
+ f"{LLMS_TXT_LINE}\n\nA description.\n\nEditions: Commerce\n\nBody text."
)
-def test_no_metadata_leaves_content_unchanged():
+def test_llms_txt_url_respects_nested_site_path():
+ # A userguide-style project published under /projects/userguide/ has its
+ # own llms.txt there, not at the domain root.
content = "# Title\n\nBody text."
- assert inject_page_metadata(content) == content
- assert inject_page_metadata(content, description="", editions=[]) == content
+ nested_line = "> For the complete documentation index, see [llms.txt](https://doc.ibexa.co/projects/userguide/en/5.0/llms.txt)."
+ result = inject_page_metadata(
+ content, llms_txt_url="https://doc.ibexa.co/projects/userguide/en/5.0/llms.txt"
+ )
+ assert result == f"# Title\n\n{nested_line}\n\nBody text."
def test_frontmatter_edition_string():
diff --git a/theme/main.html b/theme/main.html
index cf88c5c920f..aa96dd5ad7f 100644
--- a/theme/main.html
+++ b/theme/main.html
@@ -33,7 +33,10 @@
{% endblock %}
{% block site_nav %}
{% if nav %}
-
+ {# The single
-
+
{% endif %}
{% if page.toc %}
@@ -72,6 +75,11 @@
{% endfor %}
+
+ For AI agents: the complete documentation index is available at
+ llms.txt{% if page and not page.meta.exclude_from_llmstxt %}; this page is also available as
+ Markdown at index.md{% endif %}.
+
Documentation >
{% for ancestor in page.ancestors|reverse %}
@@ -91,7 +99,9 @@
{% endif %}
{% endif %}
- {% include "partials/eol_warning.html" %}
+ {% if config.extra.current_version_is_eol %}
+ {% include "partials/eol_warning.html" %}
+ {% endif %}
This documentation is for a version that has reached its End Of Life. Such versions are no longer supported and don't receive security updates. Consider updating to a newer version.
diff --git a/theme/partials/nav-item.html b/theme/partials/nav-item.html
index 006289eabde..a647322a9d9 100644
--- a/theme/partials/nav-item.html
+++ b/theme/partials/nav-item.html
@@ -9,7 +9,8 @@
-
+ {# div instead of nav: nested tags break HTML->Markdown converters, see nav.html #}
+
@@ -40,6 +41,9 @@
{% if nav_item.meta.month_change %}New{% endif %}
{% if toc | first is defined %}
+ {# toc_inside_nav: render the TOC with a
wrapper because it sits inside the
+ sidebar here; a nested would break HTML->Markdown converters, see nav.html #}
+ {% set toc_inside_nav = true %}
{% include "partials/toc.html" %}
{% endif %}
diff --git a/theme/partials/nav.html b/theme/partials/nav.html
index a63cd746be7..b2934a1a1f4 100644
--- a/theme/partials/nav.html
+++ b/theme/partials/nav.html
@@ -1,4 +1,7 @@
-
+{# div instead of nav: the whole sidebar is wrapped in a single in main.html.
+ Nested tags break the HTML->Markdown converters used by AI agents (e.g. the one
+ behind RTD's "Accept: text/markdown"), which skip only until the first closing tag. #}
+
{% for nav_item in nav %}
{% set path = "nav-" + loop.index | string %}
@@ -6,4 +9,4 @@
{% include "partials/nav-item.html" %}
{% endfor %}
-
+
diff --git a/theme/partials/toc.html b/theme/partials/toc.html
index b4e70672aa4..d0814e77554 100644
--- a/theme/partials/toc.html
+++ b/theme/partials/toc.html
@@ -1,5 +1,8 @@
{% import "partials/language.html" as lang with context %}
-
+{# toc_wrapper_tag: when standalone;
when embedded inside the sidebar
+ (toc_inside_nav set by nav-item.html) — nested tags break HTML->Markdown converters #}
+{% set toc_wrapper_tag = 'div' if toc_inside_nav else 'nav' %}
+<{{ toc_wrapper_tag }} class="md-nav md-nav--secondary" aria-label="{{ lang.t('toc.title') }}">
{% set toc = page.toc %}
{% if toc | first is defined and "\x3ch1 id=" in page.content %}
{% set toc = (toc | first).children %}
@@ -18,7 +21,7 @@
{{ toc_item.title }}
{% if toc_item.children %}
-
+
{% for toc_item in toc_item.children %}
@@ -28,10 +31,10 @@
{% endfor %}
-
+
{% endif %}
{% endfor %}
{% endif %}
-
+{{ toc_wrapper_tag }}>
diff --git a/tools/llms_txt/hooks.py b/tools/llms_txt/hooks.py
index b6b3edd1c99..ddce34edfe6 100644
--- a/tools/llms_txt/hooks.py
+++ b/tools/llms_txt/hooks.py
@@ -14,6 +14,7 @@
from pathlib import Path, PurePosixPath
from typing import TYPE_CHECKING
+from urllib.parse import urljoin
from llms_txt.llmstxt_preprocess import (
absolutize_image_urls,
@@ -70,7 +71,11 @@ def on_page_content(html: str, *, page: "Page", config: "MkDocsConfig", **kwargs
if "[[=" in description:
# Unresolved macros must not leak into the output.
description = ""
- content = inject_page_metadata(page_info.content, description, editions)
+ # base_url already accounts for the site's own nesting (e.g. a
+ # userguide project published under /projects/userguide/), unlike
+ # a hardcoded root-relative "/llms.txt".
+ llms_txt_url = urljoin(llmstxt._base_url, "llms.txt")
+ content = inject_page_metadata(page_info.content, description, editions, llms_txt_url)
content = renumber_ordered_lists(content)
# Same base URL and page directory the plugin uses for making link hrefs absolute.
page_dir = PurePosixPath(page.file.dest_uri).parent.as_posix()
diff --git a/tools/llms_txt/llmstxt_preprocess.py b/tools/llms_txt/llmstxt_preprocess.py
index 97d83e37116..bd2c517b579 100644
--- a/tools/llms_txt/llmstxt_preprocess.py
+++ b/tools/llms_txt/llmstxt_preprocess.py
@@ -426,15 +426,21 @@ def _substitute(match: re.Match) -> str:
return _MACRO_RE.sub(_substitute, text)
-def inject_page_metadata(content: str, description: str = "", editions: list = ()) -> str:
- """Insert the page description and an 'Editions: X, Y' line after the first h1 heading."""
- metadata_lines = []
+def inject_page_metadata(
+ content: str, description: str = "", editions: list = (), llms_txt_url: str = "/llms.txt"
+) -> str:
+ """Insert the llms.txt pointer, page description, and an 'Editions: X, Y' line after the first h1 heading.
+
+ ``llms_txt_url`` must be the absolute URL of *this site's own* llms.txt
+ (e.g. via ``urljoin(base_url, "llms.txt")``), not a hardcoded root-relative
+ path — sites published under a nested path (e.g. a userguide project under
+ ``/projects/userguide/``) have their llms.txt there, not at the domain root.
+ """
+ metadata_lines = ["", f"> For the complete documentation index, see [llms.txt]({llms_txt_url})."]
if description:
metadata_lines += ["", description]
if editions:
metadata_lines += ["", "Editions: " + ", ".join(editions)]
- if not metadata_lines:
- return content
lines = content.split("\n")
for i, line in enumerate(lines):