diff --git a/.markdownlint-cli2.yaml b/.markdownlint-cli2.yaml index 0efe81ec64..ac68536e4f 100644 --- a/.markdownlint-cli2.yaml +++ b/.markdownlint-cli2.yaml @@ -35,7 +35,7 @@ config: punctuation: [".", ":", ";",] no-multiple-space-atx: true blanks-around-headings: true -# heading-increment: true + heading-increment: true ul-style: dash ul-indent: indent: 4 diff --git a/docs/administration/configuration/configuration.md b/docs/administration/configuration/configuration.md index eb26f7ec2a..9928537fe9 100644 --- a/docs/administration/configuration/configuration.md +++ b/docs/administration/configuration/configuration.md @@ -7,13 +7,13 @@ description: In Ibexa DXP you store and manage configuration in project files, t [[= product_name =]] configuration is delivered by means of a number of dedicated configuration files. It contains everything from selecting the content repository to SiteAccesses to language settings. -### Configuration format +## Configuration format The recommended configuration format is YAML. It's used by default in the kernel (and in examples throughout the documentation). However, you can also use XML or PHP formats for configuration. -### Configuration files +## Configuration files Configuration files are located in the `config` folder. Configuration is provided per package in the `config/packages` folder, and routes are defined per package in `config/routes`. @@ -43,7 +43,7 @@ These files contain additional settings and point to the general (not environmen Be careful when copy-pasting text from a word processing software or a PDF, because it might contain hidden characters like the [soft hyphen](https://en.wikipedia.org/wiki/Soft_hyphen). -### Configuration handling +## Configuration handling !!! note diff --git a/docs/administration/content_organization/sections.md b/docs/administration/content_organization/sections.md index 9b57b506ae..155921c884 100644 --- a/docs/administration/content_organization/sections.md +++ b/docs/administration/content_organization/sections.md @@ -35,7 +35,7 @@ Other references to the section remain and thus the system most likely loses con Section ID numbers aren't recycled. If a section is removed, its ID number cannot be reused when a new section is created. -### Registering users +## Registering users Registration form for your website is placed under this address: /register. By default, new users created in this way are placed in the Guest accounts group. diff --git a/docs/commerce/order_management/order_management.md b/docs/commerce/order_management/order_management.md index 9ecdfd3266..499b4c9f23 100644 --- a/docs/commerce/order_management/order_management.md +++ b/docs/commerce/order_management/order_management.md @@ -15,6 +15,6 @@ The component exposes the following: - [PHP API](order_management_api.md) that allows for managing orders - [REST API](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Orders) that helps get order information over HTTP -### Order management service +## Order management service The Order Management package provides the `Ibexa\Contracts\OrderManagement\OrderServiceInterface` service, which is the entrypoint for calling the [backend API](order_management_api.md). diff --git a/docs/commerce/payment/payment.md b/docs/commerce/payment/payment.md index 4ea7526213..fd0bd15eaf 100644 --- a/docs/commerce/payment/payment.md +++ b/docs/commerce/payment/payment.md @@ -21,7 +21,7 @@ The component exposes the following APIs: - [Payment method REST API](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Payments) that helps manage payment methods over HTTP - [Payment PHP API](payment_api.md) that allows for managing payments -### Services +## Services The Payment package provides the following services, which are entry points for calling backend APIs: diff --git a/docs/commerce/shipping_management/shipping_management.md b/docs/commerce/shipping_management/shipping_management.md index 07e785ab38..9a3a845bd6 100644 --- a/docs/commerce/shipping_management/shipping_management.md +++ b/docs/commerce/shipping_management/shipping_management.md @@ -19,7 +19,7 @@ The component exposes the following: - [Shipping method PHP API](shipping_method_api.md) that allows for managing shipping methods - [Shipment PHP API](shipment_api.md) that allows for managing shipments -### Services +## Services The Shipping package provides the following services, which are entry points for calling backend APIs: diff --git a/docs/content_management/content_model.md b/docs/content_management/content_model.md index 0a3e436202..b55ac969e7 100644 --- a/docs/content_management/content_model.md +++ b/docs/content_management/content_model.md @@ -22,7 +22,7 @@ A content item consists of: - [Fields](#fields), defined by the [content type](content_types.md). The fields can cover data ranging from single variables and text lines to media files or blocks of formatted text. -#### Content information +### Content information General information about a content item is stored in a [`ContentInfo`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentInfo.html) object. `ContentInfo` doesn't include fields. It contains following information: diff --git a/docs/content_management/field_types/field_type_reference/authorfield.md b/docs/content_management/field_types/field_type_reference/authorfield.md index e967301265..87c4de5390 100644 --- a/docs/content_management/field_types/field_type_reference/authorfield.md +++ b/docs/content_management/field_types/field_type_reference/authorfield.md @@ -10,7 +10,7 @@ This field type allows the storage and retrieval of one or more authors. For eac ### Value object -##### Properties +#### Properties | Attribute | Type | Description | Example | |-----------|------------------------------------------|------------------|-----------| @@ -33,7 +33,7 @@ $authorList = Author\Value([ ]); ``` -### Hash format +#### Hash format The hash format mostly matches the value object. It has the following key `authors`. @@ -54,7 +54,7 @@ Example ] ``` -##### String representation +#### String representation The string contains all the authors with their names and emails. diff --git a/docs/content_management/field_types/field_type_reference/checkboxfield.md b/docs/content_management/field_types/field_type_reference/checkboxfield.md index 54380b2469..d3824aca60 100644 --- a/docs/content_management/field_types/field_type_reference/checkboxfield.md +++ b/docs/content_management/field_types/field_type_reference/checkboxfield.md @@ -10,7 +10,7 @@ The Checkbox field type stores the current status for a checkbox input, checked ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: diff --git a/docs/content_management/field_types/field_type_reference/countryfield.md b/docs/content_management/field_types/field_type_reference/countryfield.md index 521b06bd94..8940dbd1b5 100644 --- a/docs/content_management/field_types/field_type_reference/countryfield.md +++ b/docs/content_management/field_types/field_type_reference/countryfield.md @@ -58,7 +58,7 @@ The format used by the toHash method is the Alpha2 value, however the input is c ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: diff --git a/docs/content_management/field_types/field_type_reference/customergroupfield.md b/docs/content_management/field_types/field_type_reference/customergroupfield.md index 5e01db8d30..c2e2f4cfa3 100644 --- a/docs/content_management/field_types/field_type_reference/customergroupfield.md +++ b/docs/content_management/field_types/field_type_reference/customergroupfield.md @@ -10,7 +10,7 @@ This field type represents a customer group that a user belongs to. ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: diff --git a/docs/content_management/field_types/field_type_reference/dateandtimefield.md b/docs/content_management/field_types/field_type_reference/dateandtimefield.md index d0d5e3fd25..35678d5902 100644 --- a/docs/content_management/field_types/field_type_reference/dateandtimefield.md +++ b/docs/content_management/field_types/field_type_reference/dateandtimefield.md @@ -22,7 +22,7 @@ It's also possible to directly pass an instance of `\DateTime`. ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: diff --git a/docs/content_management/field_types/field_type_reference/datefield.md b/docs/content_management/field_types/field_type_reference/datefield.md index 415f9153c4..9236f6d3bf 100644 --- a/docs/content_management/field_types/field_type_reference/datefield.md +++ b/docs/content_management/field_types/field_type_reference/datefield.md @@ -6,7 +6,7 @@ This field type represents a date without time information. |--------|---------------|---------------------| | `Date` | `ibexa_date` | mixed | -#### PHP API field type +## PHP API field type ### Input expectations @@ -26,7 +26,7 @@ Before storing, the provided input value is set to the beginning of the day in t ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: diff --git a/docs/content_management/field_types/field_type_reference/emailaddressfield.md b/docs/content_management/field_types/field_type_reference/emailaddressfield.md index db376e9eee..b7f574f32c 100644 --- a/docs/content_management/field_types/field_type_reference/emailaddressfield.md +++ b/docs/content_management/field_types/field_type_reference/emailaddressfield.md @@ -10,7 +10,7 @@ The EmailAddress field type represents an email address, in the form of a string ### Value object -##### Properties +#### Properties The `Value` class of this field type contains the following properties: diff --git a/docs/content_management/field_types/field_type_reference/floatfield.md b/docs/content_management/field_types/field_type_reference/floatfield.md index ec09b0eeaf..71e23c7ee4 100644 --- a/docs/content_management/field_types/field_type_reference/floatfield.md +++ b/docs/content_management/field_types/field_type_reference/floatfield.md @@ -19,7 +19,7 @@ The field type expects a number as input. Both decimal and integer numbers are a ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: diff --git a/docs/content_management/field_types/field_type_reference/imageassetfield.md b/docs/content_management/field_types/field_type_reference/imageassetfield.md index 65da261fd9..a7d16253a0 100644 --- a/docs/content_management/field_types/field_type_reference/imageassetfield.md +++ b/docs/content_management/field_types/field_type_reference/imageassetfield.md @@ -7,7 +7,7 @@ It makes them reusable across system. |--------------|---------------------| | `ImageAsset` | `ibexa_image_asset` | -### Input expectations +## Input expectations Example array: @@ -18,9 +18,9 @@ Example array: | `string` | ID of the Asset content item. | `"150"` | | `integer` | ID of the Asset content item. | `150` | -### Value object +## Value object -##### Properties +### Properties Value object of `ibexa_image_asset` contains the following properties: @@ -36,7 +36,7 @@ $imageAssetValue->destinationContentId = $contentInfo->id; $imageAssetValue->alternativeText = "Picture of an apple."; ``` -##### Constructor +#### Constructor The `ImageAsset\Value` constructor initializes a new value object with the value provided. It expects an ID of a content item representing asset and the alternative text. @@ -54,7 +54,7 @@ This field type validates if: - `destinationContentId` points to a content item which has correct content type -### Configuration +## Configuration ImageAsset field type allows configuring the following options: diff --git a/docs/content_management/field_types/field_type_reference/imagefield.md b/docs/content_management/field_types/field_type_reference/imagefield.md index 3752a8bef1..0b0b36284c 100644 --- a/docs/content_management/field_types/field_type_reference/imagefield.md +++ b/docs/content_management/field_types/field_type_reference/imagefield.md @@ -14,7 +14,7 @@ A **variation service** handles the conversion of the original image into differ The `value` property of an Image field returns an `Ibexa\Core\FieldType\Image\Value` object with the following properties: -##### Properties +#### Properties | Property | Type | Example | Description | |-------------------|--------|------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/docs/content_management/field_types/field_type_reference/integerfield.md b/docs/content_management/field_types/field_type_reference/integerfield.md index c1eb8f3b9d..7d6b6f03cf 100644 --- a/docs/content_management/field_types/field_type_reference/integerfield.md +++ b/docs/content_management/field_types/field_type_reference/integerfield.md @@ -16,7 +16,7 @@ This field type represents an integer value. ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: @@ -29,7 +29,7 @@ The Value class of this field type contains the following properties: $integer->value = 8 ``` -##### Constructor +#### Constructor The `Integer\Value` constructor initializes a new value object with the value provided. It expects a numeric, integer value. @@ -42,13 +42,13 @@ use Ibexa\Core\FieldType\Integer; $integerValue = new Integer\Value( 8 ); ``` -### Hash format +#### Hash format Hash value of this field type is an integer value as a string. Example: `"8"` -### String representation +#### String representation String representation of the field type's value returns the integer value as a string. diff --git a/docs/content_management/field_types/field_type_reference/isbnfield.md b/docs/content_management/field_types/field_type_reference/isbnfield.md index 8b4baf9c51..71302aed8d 100644 --- a/docs/content_management/field_types/field_type_reference/isbnfield.md +++ b/docs/content_management/field_types/field_type_reference/isbnfield.md @@ -10,7 +10,7 @@ This field type represents an ISBN string either an ISBN-10 or ISBN-13 format. ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: @@ -18,11 +18,11 @@ The Value class of this field type contains the following properties: |----------|----------|--------------------------------------------| | `$isbn` | `string` | This property is used for the ISBN string. | -##### String representation +#### String representation An ISBN's string representation is the `$isbn` property's value, as a string. -##### Constructor +#### Constructor The constructor for this value object initializes a new value object with the value provided. It accepts a string as argument and sets it to the `isbn` attribute. diff --git a/docs/content_management/field_types/field_type_reference/keywordfield.md b/docs/content_management/field_types/field_type_reference/keywordfield.md index 1d1d09b35f..ddc515b93a 100644 --- a/docs/content_management/field_types/field_type_reference/keywordfield.md +++ b/docs/content_management/field_types/field_type_reference/keywordfield.md @@ -18,7 +18,7 @@ This field type stores one or several comma-separated keywords as a string or ar ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: diff --git a/docs/content_management/field_types/field_type_reference/maplocationfield.md b/docs/content_management/field_types/field_type_reference/maplocationfield.md index feaf4ef115..6687a22988 100644 --- a/docs/content_management/field_types/field_type_reference/maplocationfield.md +++ b/docs/content_management/field_types/field_type_reference/maplocationfield.md @@ -21,7 +21,7 @@ As input it expects three values: ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: @@ -31,7 +31,7 @@ The Value class of this field type contains the following properties: | `$longitude` | `float` | This property stores the longitude value of the map location reference. | | `$address` | `string` | This property stores the address of map location. | -##### Constructor +#### Constructor The `MapLocation\Value` constructor initializes a new value object with values provided as hash. Accepted keys are `latitude` (`float`), `longitude` (`float`), `address` (`string`). diff --git a/docs/content_management/field_types/field_type_reference/measurementfield.md b/docs/content_management/field_types/field_type_reference/measurementfield.md index 857c2d328c..c4c82ad185 100644 --- a/docs/content_management/field_types/field_type_reference/measurementfield.md +++ b/docs/content_management/field_types/field_type_reference/measurementfield.md @@ -27,7 +27,7 @@ Assuming that the service exists as `$measurementService`, the expected input ex ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: @@ -35,7 +35,7 @@ The Value class of this field type contains the following properties: |----------|----------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `$value` | `Ibexa\Contracts\Measurement\Value\ValueInterface` | Stores the Measurement API Value, which can be either an instance of `Ibexa\Contracts\Measurement\Value\SimpleValueInterface` or `Ibexa\Contracts\Measurement\Value\RangeValueInterface`. | -##### Constructor +#### Constructor The `Measurement\Value` constructor for this value object initializes a new value object with the value provided. As its first argument it accepts an object of `Ibexa\Contracts\Measurement\Value\ValueInterface` type. diff --git a/docs/content_management/field_types/field_type_reference/mediafield.md b/docs/content_management/field_types/field_type_reference/mediafield.md index 42c04d15b9..e08378f64d 100644 --- a/docs/content_management/field_types/field_type_reference/mediafield.md +++ b/docs/content_management/field_types/field_type_reference/mediafield.md @@ -27,7 +27,7 @@ It's capable of handling the following types of files: ### Value object -##### Properties +#### Properties `Ibexa\Core\FieldType\Media\Value` offers the following properties. diff --git a/docs/content_management/field_types/field_type_reference/relationfield.md b/docs/content_management/field_types/field_type_reference/relationfield.md index 6f8b9a8543..6a0016cb03 100644 --- a/docs/content_management/field_types/field_type_reference/relationfield.md +++ b/docs/content_management/field_types/field_type_reference/relationfield.md @@ -17,7 +17,7 @@ This field type makes it possible to store and retrieve the value of a relation ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: @@ -31,7 +31,7 @@ The Value class of this field type contains the following properties: $relation->destinationContentId = $contentInfo->id; ``` -##### Constructor +#### Constructor The `Relation\Value` constructor initializes a new value object with the value provided. It expects a mixed value. diff --git a/docs/content_management/field_types/field_type_reference/relationlistfield.md b/docs/content_management/field_types/field_type_reference/relationlistfield.md index f920a2a9ae..9bdac070d6 100644 --- a/docs/content_management/field_types/field_type_reference/relationlistfield.md +++ b/docs/content_management/field_types/field_type_reference/relationlistfield.md @@ -19,7 +19,7 @@ This field type makes it possible to store and retrieve values of a relation to ### Value Object -##### Properties +#### Properties `Ibexa\Core\FieldType\RelationList\Value` contains the following properties: @@ -36,7 +36,7 @@ $relationList->destinationContentId = [ ]; ``` -##### Constructor +#### Constructor The `RelationList\Value` constructor initializes a new value object with the value provided. It expects a mixed array as value. diff --git a/docs/content_management/field_types/field_type_reference/richtextfield.md b/docs/content_management/field_types/field_type_reference/richtextfield.md index 0f6605a0ba..0bc278d640 100644 --- a/docs/content_management/field_types/field_type_reference/richtextfield.md +++ b/docs/content_management/field_types/field_type_reference/richtextfield.md @@ -26,13 +26,13 @@ This field type validates and stores structured rich text in [DocBook](https://d | `DOMDocument` | XML document in one of the field type's input formats as a `DOMDocument` object. | | `Ibexa\FieldTypeRichText\FieldType\RichText\Value` | An instance of the field type's `Value` object. | -##### Input formats +### Input formats The field type expects an XML value as input, in the form of a string, `DOMDocument` object, or field type's `Value` object. The field type's `Value` object must hold the value in the field type's [internal format](#internal-format). For a string of a `DOMDocument` object, if the input doesn't conform to this format, it's converted into it. -##### Internal format +#### Internal format As its internal format, the RichText field type uses a [custom flavor of the DocBook format](#custom-docbook-format). @@ -48,7 +48,7 @@ As its internal format, the RichText field type uses a [custom flavor of the Doc ``` -##### XHTML5 edit format +#### XHTML5 edit format The XHTML5 format is used by the Online Editor. diff --git a/docs/content_management/field_types/field_type_reference/selectionfield.md b/docs/content_management/field_types/field_type_reference/selectionfield.md index 5eefa48d1c..e11186d586 100644 --- a/docs/content_management/field_types/field_type_reference/selectionfield.md +++ b/docs/content_management/field_types/field_type_reference/selectionfield.md @@ -16,7 +16,7 @@ The Selection field type stores single selections or multiple choices from a lis ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: @@ -34,7 +34,7 @@ $value->selection = 1; $value->selection = [ 1, 4, 5 ]; ``` -##### Constructor +#### Constructor The `Selection\Value` constructor accepts an array of selected element identifiers. @@ -45,13 +45,13 @@ The `Selection\Value` constructor accepts an array of selected element identifie $selectionValue = new Selection\Value( [ 1, 2 ] ); ``` -##### String representation +#### String representation String representation of this field type is its list of selections as a string, concatenated with a comma. Example: `"1,2,24,42"` -### Hash format +#### Hash format Hash format of this field type is the same as value object's `selection` property. diff --git a/docs/content_management/field_types/field_type_reference/textblockfield.md b/docs/content_management/field_types/field_type_reference/textblockfield.md index 859fb35195..62c3b2be6c 100644 --- a/docs/content_management/field_types/field_type_reference/textblockfield.md +++ b/docs/content_management/field_types/field_type_reference/textblockfield.md @@ -16,7 +16,7 @@ The field type handles a block of multiple lines of unformatted text. It's capab ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: diff --git a/docs/content_management/field_types/field_type_reference/textlinefield.md b/docs/content_management/field_types/field_type_reference/textlinefield.md index 7867869265..0b2ed44c99 100644 --- a/docs/content_management/field_types/field_type_reference/textlinefield.md +++ b/docs/content_management/field_types/field_type_reference/textlinefield.md @@ -11,7 +11,7 @@ It's capable of handling up to 255 characters. ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: diff --git a/docs/content_management/field_types/field_type_reference/timefield.md b/docs/content_management/field_types/field_type_reference/timefield.md index 8fc0bd7916..062270a9af 100644 --- a/docs/content_management/field_types/field_type_reference/timefield.md +++ b/docs/content_management/field_types/field_type_reference/timefield.md @@ -26,7 +26,7 @@ It's also possible to directly pass an instance of `\DateTime`. ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: @@ -34,12 +34,12 @@ The Value class of this field type contains the following properties: |----------|----------------|-----------------------------------------------------------------------------------| | `$time` | `integer|null` | Holds the time information as a number of seconds since the beginning of the day. | -##### Constructor +#### Constructor The constructor for this value object initializes a new value object with the value provided. It accepts an integer representing the number of seconds since the beginning of the day. -##### String representation +#### String representation String representation of the date value generates the date string in the format "H:i:s" as accepted by [PHP's built-in `date()` function](https://www.php.net/manual/en/function.date.php). @@ -51,7 +51,7 @@ String representation of the date value generates the date string in the format Example: `"12:14:56"` -### Hash format +#### Hash format Value in hash format is an integer representing a number of seconds since the beginning of the day. diff --git a/docs/content_management/field_types/field_type_reference/urlfield.md b/docs/content_management/field_types/field_type_reference/urlfield.md index 8fb5a8506d..f3464fed50 100644 --- a/docs/content_management/field_types/field_type_reference/urlfield.md +++ b/docs/content_management/field_types/field_type_reference/urlfield.md @@ -18,7 +18,7 @@ It's formed by the combination of a link and the respective text. ### Value object -##### Properties +#### Properties The Value class of this field type contains the following properties: @@ -34,7 +34,7 @@ $url->link = "https://www.ibexa.co"; $url->text = "Ibexa"; ``` -##### Constructor +#### Constructor The `Url\Value` constructor initializes a new value object with the provided value. It expects two comma-separated strings, corresponding to the link and text. diff --git a/docs/content_management/field_types/field_type_reference/userfield.md b/docs/content_management/field_types/field_type_reference/userfield.md index 7fb1e258e0..4ca7180596 100644 --- a/docs/content_management/field_types/field_type_reference/userfield.md +++ b/docs/content_management/field_types/field_type_reference/userfield.md @@ -20,7 +20,7 @@ This field type validates and stores information about a user. | `passwordHashType` | `mixed` | Algorithm user for generating password hash as a `PASSWORD_HASH_*` constant defined in `Ibexa\Contracts\Core\Repository\Values\User\User` class. | `User::PASSWORD_HASH_PHP_DEFAULT` | | `maxLogin` | `int` | Maximum number of concurrent logins. | `1000` | -##### Available password hash types +#### Available password hash types | Constant | Description | |-------------------------------------------------------------------------------|---------------------------------------------------------------------------| diff --git a/docs/content_management/field_types/type_and_value.md b/docs/content_management/field_types/type_and_value.md index 1b03733f65..557b706b8e 100644 --- a/docs/content_management/field_types/type_and_value.md +++ b/docs/content_management/field_types/type_and_value.md @@ -76,7 +76,7 @@ A field type needs to deal with the custom value format provided by it. In order for the public PHP API to work properly, it delegates working with such custom field values to the corresponding field type. The `Ibexa\Core\FieldType\FieldType` interface therefore provides the following methods: -#### `acceptValue()` +### `acceptValue()` This method is responsible for accepting and converting user input for the field. It checks the input structure by accepting, building, and returning a different structure holding the data. @@ -88,7 +88,7 @@ Unlike the `FieldType\Value` constructor, it's possible to make this method awar `acceptValue()` asserts structural consistency of the value, but doesn't validate plausibility of the value. -#### `getEmptyValue()` +### `getEmptyValue()` The field type can specify that the user may define a default value for the `Field` of the type through settings. If no default value is provided, the field type is asked for an "empty value" as the final fallback. @@ -99,12 +99,12 @@ The value chain for filling a specific field of the field type is as follows: 2. If not, is a default value provided by the`FieldDefinition`? 3. If not, take the empty value provided by the `FieldType`. -#### `validate()` +### `validate()` In contrast to `acceptValue()` this method validates the plausibility of the given value. It's based on the field type settings and validator configuration and stored in the corresponding `FieldDefinition`. -### Serialization +## Serialization When [REST API](rest_api_usage.md) is used, conversion needs to be done for field type values, settings, and validator configurations. These are converted to and from a simple hash format that can be encoded in REST payload. @@ -133,13 +133,13 @@ services: - {name: ibexa.field_type, alias: ibexa_matrix} ``` -#### `parent` +### `parent` As described in the [Symfony service container documentation]([[= symfony_doc =]]/service_container/parent_services.html), the `parent` config key indicates that you want your service to inherit from the parent's dependencies, including constructor arguments and method calls. This helps to avoid repetition in your field type configuration and keeps consistency between all field types. If you need to inject other services into your Type class, skip using the `parent` config key. -#### `tags` +### `tags` Like most API components, field types use the [Symfony service tag mechanism]([[= symfony_doc =]]/service_container/tags.html). diff --git a/docs/content_management/file_management/file_url_handling.md b/docs/content_management/file_management/file_url_handling.md index 64c4deadf7..f546600bdc 100644 --- a/docs/content_management/file_management/file_url_handling.md +++ b/docs/content_management/file_management/file_url_handling.md @@ -4,7 +4,7 @@ description: Manage files URL. # File URL handling -### IO URL decoration +## IO URL decoration By default, images and binary files that are referenced by the content are served from the same server as the application, for example `/var/site/storage/images/3/6/4/6/6463-1-eng-GB/kidding.png`. This is the default semantic configuration: diff --git a/docs/content_management/images/images.md b/docs/content_management/images/images.md index ab2443c58b..4b55abb5d9 100644 --- a/docs/content_management/images/images.md +++ b/docs/content_management/images/images.md @@ -166,7 +166,7 @@ ibexa: If there is no configuration assigned to the `binary_handler`, the placeholder generation is disabled. -##### Configuration examples +#### Configuration examples **Example 1 - placeholders with basic information about original image** diff --git a/docs/content_management/locations.md b/docs/content_management/locations.md index c149ddc33b..dea1485125 100644 --- a/docs/content_management/locations.md +++ b/docs/content_management/locations.md @@ -130,7 +130,7 @@ If the ancestor location is made visible again, the first location still remains The way visibility works can be illustrated using the following scenarios: -#### Hiding a visible location +### Hiding a visible location ![Hiding a visible location](node_visibility_hide.png) @@ -138,14 +138,14 @@ When you hide a location that was visible before, it gets the status Hidden. Its child locations are Hidden by superior. The visibility status of child locations that were already Hidden or Hidden by superior doesn't change. -#### Hiding a location which is Hidden by superior +### Hiding a location which is Hidden by superior ![Hiding a location which is Hidden by superior](node_visibility_hide_invisible.png) When you explicitly hide a location which was Hidden by superior, it gets the status Hidden. Since the underlying locations are already either Hidden or Hidden by superior, their visibility status doesn't changed. -#### Revealing a location with a visible ancestor +### Revealing a location with a visible ancestor ![Revealing a location with a visible ancestor](node_visibility_unhide1.png) @@ -153,7 +153,7 @@ When you reveal a location which has a visible ancestor, this location and its c However, child locations that were explicitly hidden by a user keep their Hidden status (and their children remain Hidden by superior). -#### Revealing a location with a Hidden ancestor +### Revealing a location with a Hidden ancestor ![Revealing a location with a Hidden ancestor](node_visibility_unhide2.png) diff --git a/docs/content_management/pages/page_blocks.md b/docs/content_management/pages/page_blocks.md index e85ffaf535..99da41f497 100644 --- a/docs/content_management/pages/page_blocks.md +++ b/docs/content_management/pages/page_blocks.md @@ -112,7 +112,7 @@ You can use this parameter, for example, in block template: [[= include_file('code_samples/page/page_listener/templates/themes/standard/block/my_block.html.twig') =]] ``` -#### Exposing content relations from blocks +### Exposing content relations from blocks Page blocks, for example Embed block or Collection block, can embed other content items. Publishing a page with such blocks creates Relations to those content items. diff --git a/docs/getting_started/install_on_mac_os_and_windows.md b/docs/getting_started/install_on_mac_os_and_windows.md index 6349b8a423..ac25171b4d 100644 --- a/docs/getting_started/install_on_mac_os_and_windows.md +++ b/docs/getting_started/install_on_mac_os_and_windows.md @@ -13,7 +13,7 @@ This page explains how to install [[= product_name =]] on macOS or Windows. For information about installing the product on Linux, see [Install [[= product_name =]]](install_ibexa_dxp.md). -### Prepare work environment +## Prepare work environment To install [[= product_name =]], you need a stack with MySQL and PHP. Additionally, you need [Node.js](https://nodejs.org/en) and [Yarn](https://classic.yarnpkg.com/en/docs/install/) for asset management. diff --git a/docs/infrastructure_and_maintenance/cache/persistence_cache.md b/docs/infrastructure_and_maintenance/cache/persistence_cache.md index ece1462733..299f3d19d4 100644 --- a/docs/infrastructure_and_maintenance/cache/persistence_cache.md +++ b/docs/infrastructure_and_maintenance/cache/persistence_cache.md @@ -229,9 +229,9 @@ And as [[= product_name =]] requires that instances use a cluster-aware cache in That is why the example of usage below starts with a unique `myApp` key. For the namespace of your own cache, you must do the same. -#### Getting cache service +### Getting cache service -##### With dependency injection +#### With dependency injection In your Symfony services configuration you can define that you require the cache service in your configuration like so: @@ -244,7 +244,7 @@ In your Symfony services configuration you can define that you require the cache This service is an instance of `Symfony\Component\Cache\Adapter\TagAwareAdapterInterface`, which extends the `Psr\Cache\CacheItemPoolInterface` interface with tagging functionality. -##### With service container +#### With service container Like any other service, you can also get the cache service with the [service container](php_api.md#service-container) like so: diff --git a/docs/infrastructure_and_maintenance/devops.md b/docs/infrastructure_and_maintenance/devops.md index 319e7ae18e..53378b18d3 100644 --- a/docs/infrastructure_and_maintenance/devops.md +++ b/docs/infrastructure_and_maintenance/devops.md @@ -49,12 +49,12 @@ It's extended with some [[= product_name =]]-specific information: ![Ibexa DXP info in Web Debug Toolbar](web_debug_toolbar.png "Ibexa DXP info in Web Debug Toolbar") -#### SPI (persistence) +### SPI (persistence) This section provides the number of non-cached SPI calls and handlers. You can see details of these calls in the [Symfony Profiler]([[= symfony_doc =]]/profiler.html) page. -#### SiteAccess +### SiteAccess Here you can see the name of the current SiteAccess and how it was matched. For reference see the [list of possible SiteAccess matchers](siteaccess_matching.md#available-siteaccess-matchers). diff --git a/docs/infrastructure_and_maintenance/support_and_maintenance_faq.md b/docs/infrastructure_and_maintenance/support_and_maintenance_faq.md index feb032c3e7..416a087454 100644 --- a/docs/infrastructure_and_maintenance/support_and_maintenance_faq.md +++ b/docs/infrastructure_and_maintenance/support_and_maintenance_faq.md @@ -6,7 +6,7 @@ description: See how you can resolve common issues and report a Customer Support This page contains answers to most common questions and tips around support and maintenance, references to important parts of the documentation, and tools for developers in their daily work. -#### What information should I specify when creating a Customer Support ticket? +## What information should I specify when creating a Customer Support ticket? When reporting a problem to Customer Support the most important information is the version of [[= product_name =]] which is used in the project. The best way to specify it's to provide the list of currently installed packages by running: @@ -23,11 +23,11 @@ If you stumble upon a database-related problem, providing corresponding logs is Additionally, mention recent changes, performed migrations or external scripts/code customizations related to the code which generates the problem. -#### What are the recommended ways to increase my project's performance? +## What are the recommended ways to increase my project's performance? The most important clues around increasing overall performance of your [[= product_name =]]-based project can be found in [the Performance documentation page](performance.md). -#### How can I translate my back office? +## How can I translate my back office? The language of the back office is based on the browser language. To change it you should install the proper package for your language (see [language packages list](https://github.com/ezplatform-i18n)). @@ -40,7 +40,7 @@ To read more about language managing in [[= product_name =]], see the following - [Back office languages](back_office_translations.md) - [Multi-language SiteAccesses and corresponding translations](set_up_translation_siteaccess.md) -#### How can I apply patches to the installation? +## How can I apply patches to the installation? The easiest way to apply a patch to your project is by using the Unix [`patch`](https://man7.org/linux/man-pages/man1/patch.1.html) command. Remember to clear the cache afterwards. @@ -54,7 +54,7 @@ This should be done inside the `extra` section. Packages which should receive pa When updating to the release that already contains specified patches, Composer throws an error alongside a message that they cannot be applied and are skipped ([this is configurable with 1.x](https://github.com/cweagans/composer-patches/tree/1.x#error-handling)). They can be manually removed from `composer.json` now. -#### How to clear the cache properly? +## How to clear the cache properly? Clearing cache is covered by our [documentation](devops.md#cache-clearing), it applies to file and content (HTTP/persistence) cache. @@ -85,7 +85,7 @@ rm -rf var/cache/* It results in a significant performance drop on first request, so it shouldn't be called on a production environment. Besides, it could lead to issues with file ownership after running `cache:clear` as a root. -#### Where should I place my configuration files? +## Where should I place my configuration files? To avoid merge conflicts on important configuration settings during upgrades, moving as much as possible of your configuration to your own files can be a good idea. @@ -98,7 +98,7 @@ imports: - { resource: ../landing_page_blocks.yaml } ``` -#### How can I implement authentication in an [[= product_name =]]-based project? +## How can I implement authentication in an [[= product_name =]]-based project? The best approach is to use Symfony authentication. Check [development security](development_security.md) page for more detailed instructions. diff --git a/docs/multisite/siteaccess/siteaccess_aware_configuration.md b/docs/multisite/siteaccess/siteaccess_aware_configuration.md index 1d3a656ab4..90c61a1799 100644 --- a/docs/multisite/siteaccess/siteaccess_aware_configuration.md +++ b/docs/multisite/siteaccess/siteaccess_aware_configuration.md @@ -31,7 +31,7 @@ Remember to register the bundle by adding it to `config/bundles.php`: Acme\ExampleBundle\AcmeExampleBundle::class => ['all' => true], ``` -### Parsing semantic configuration +## Parsing semantic configuration To parse semantic configuration, create a `Configuration` class which extends `Ibexa\Bundle\Core\DependencyInjection\Configuration\SiteAccessAware\Configuration` and then extend its `generateScopeBaseNode()` method: @@ -62,7 +62,7 @@ acme_example: enabled: false ``` -### Mapping to internal settings +## Mapping to internal settings Semantic configuration must always be mapped to internal key/value settings within the service container. You usually do it in the [service container](php_api.md#service-container) extension. @@ -92,7 +92,7 @@ parameters: enabled: false ``` -#### Merging hash values between scopes +### Merging hash values between scopes When you define a hash as semantic config, you sometimes don't want the SiteAccess settings to replace the default or group values, but enrich them by appending new entries. @@ -145,7 +145,7 @@ parameters: language: javascript ``` -##### Merging from second level +#### Merging from second level In the example above, entries were merged in respect to the scope order of precedence. However, because you defined the `os_types` key for `siteaccess1`, it completely overrode the default value, because the merge process is done only at the first level. diff --git a/docs/personalization/api_reference/content_api.md b/docs/personalization/api_reference/content_api.md index 2477740618..a772bac0c0 100644 --- a/docs/personalization/api_reference/content_api.md +++ b/docs/personalization/api_reference/content_api.md @@ -118,7 +118,7 @@ The following keys and attributes used in the XML object are available: Keys and their values can only contain letters, digits and underscore characters. Attribute keys are case-sensitive. -##### Price and currency +#### Price and currency The price is given as an integer in the fractional unit of the currency, which ends as removing the decimal separators. For example: @@ -129,13 +129,13 @@ For example: To check how many digits the fractional unit of a currency has, see the [ISO 4217 standard](https://en.wikipedia.org/wiki/ISO_4217#List_of_ISO_4217_currency_codes). -##### Validity +#### Validity Items with defined validity are recommended only in the specified timeframe. Values in the `validto` and `validfrom` attributes must follow the [XSD format](https://www.w3.org/TR/xmlschema-2/#dateTime) and don't include the time zone. Time zone is always your time zone. -##### Category path +#### Category path With the data import interface, you can upload information about the paths to categories in which the product is located. However, the category path can be also updated as a result of the "Click" events. diff --git a/docs/personalization/api_reference/recommendation_api.md b/docs/personalization/api_reference/recommendation_api.md index 8ba79803f5..470c52134c 100644 --- a/docs/personalization/api_reference/recommendation_api.md +++ b/docs/personalization/api_reference/recommendation_api.md @@ -61,7 +61,7 @@ You can use the following parameters to customize a request: |`recommendCategory`| |Used in conjunction with `categorypath`. If set to true, the neighboring category linked with the recommended items is delivered in the response as an additional field `category`. Helps find a suitable template for articles from several categories.
For example, take an article about American football. The article is categorized as `Sport/Football` and `America/USA`. Depending on the category, the webpage displays a football field or an American flag in the background. If the article is recommended and clicked in the `Sport/Cricket` category, it must open with the "field" template. If clicked in the `America/Canada` category, it must open with the "flag" template. The category is returned only if the article is located in several categories and the "closer" category is found. The default value is false.|boolean| |`usetimeslot`| |If set to true, configured time-slots are active. As a result, recommendations are calculated for specific time frames and they have priority over the recommendations from the main model in the hours for which time slots are configured. Time slots must be enabled by and configured [[= product_name_base =]] Team.|true| -##### Submodel parameters +#### Submodel parameters If your recommendation model uses submodels to group content items/products based on an attribute, you can pass the following parameters to request recommendations for a specific group. @@ -91,7 +91,7 @@ For more information, see [Submodels]([[= user_doc =]]/personalization/recommend `GET https://reco.perso.ibexa.co/api/v2/00000/john.doe/{SCENARIO_NAME}?numrecs=50&outputtypeid=1&color=red` -##### Segment parameters +#### Segment parameters If you have configured segments, you can use them in the recommendation model. Pass the following parameter to request recommendations for a specific segment or segment group. diff --git a/docs/personalization/api_reference/user_api.md b/docs/personalization/api_reference/user_api.md index 0871a089b7..b6240fc651 100644 --- a/docs/personalization/api_reference/user_api.md +++ b/docs/personalization/api_reference/user_api.md @@ -45,7 +45,7 @@ For the requests to function, you must provide the following parameters: All parameters must be URL-encoded (see RFC 3986) and cannot contain slash, backslash or space characters. -##### Source +### Source The `source` parameter defines the system that stores the specified user's metadata. If you have multiple source systems for updating user attributes, for example, a registration service, where users define their gender and age, or an application that integrates with Facebook to source the brands the user "liked" in your shop, every new upload of attributes replaces the attribute set that already exists for the same user/source pair. @@ -56,7 +56,7 @@ If you need to get all the available attributes for all sources, apply the `allS When you do that, and the source returned is different from the source passed in the request (in this case, "facebook"), an additional attribute `source` is added to the XML object. -##### User ID +### User ID User ID is a case-sensitive combination of characters. If transferred as part of the URL, the attribute must be URL-encoded. diff --git a/docs/personalization/legacy_recommendation_api.md b/docs/personalization/legacy_recommendation_api.md index cb231c5ff2..83e31b19fe 100644 --- a/docs/personalization/legacy_recommendation_api.md +++ b/docs/personalization/legacy_recommendation_api.md @@ -151,7 +151,7 @@ The format of error messages can be changed and should not be used for automated There are some additional special request parameters. -###### any attribute name (used only if submodels are configured) +### any attribute name (used only if submodels are configured) Item's attribute, for example, color, price, and more. These are customer specific and can only be understood by the recommender system if the item attributes are imported by using the YOOCHOOSE content import APIs. @@ -161,7 +161,7 @@ Legacy Recommendation API and [Submodel configuration]([[= user_doc =]]/personal **Values**: alphanumeric=alphanumeric [&alphanumeric=alphanumeric] -###### `usecontextcategorypath` +### `usecontextcategorypath` If set to true, the category path of the contextitem(s) is resolved by the recommender engine from the internal store and used as base category path. If more than one category is returned, all categories are used for providing recommendations. @@ -170,7 +170,7 @@ Use the parameter categorypath to provide the category to the recommender engine **Values**: true or false (default "false") -###### `recommendCategory` (to be used only in the eZ Recommendation extension) +### `recommendCategory` (to be used only in the eZ Recommendation extension) If passed in combination with a "categorypath" value, the "closest" category the recommended items linked with is delivered in the response as additional field "category". @@ -226,30 +226,30 @@ You just need to make sure that the Expires header is used in the configuration There are several ways to integrate the REST calls to the Recommendation engine and avoid the blocking of the web page rendering, if the communication with the Recommender is distrusted or interrupted. -#### **Simple Way** +### **Simple Way** The simplest way to load recommendations is to synchronously request the Recommendation Engine for recommendations as they're needed. This way is sufficient in most cases. The most important drawback is that the request time increases by the time of the recommendation request. If the network is overloaded or the Recommendation Engine isn't available it can lock the request. -#### Loading in the bottom +### Loading in the bottom You can place the code that loads the data from the eZ Recommender at the bottom of the generated document and flush the output buffer to the client just before requesting recommendations. The browser gets a whole page to render and can display it even if the very end of the page is still loading. Then the JavaScript code with the recommendation information loaded at the bottom of the page must fill the gaps on the page with recommendation as soon as it's completely loaded. -#### Non-blocking loading in the background +### Non-blocking loading in the background If the website is implemented in a language which supports multithreading or non-blocking I/O, it's possible to start the recommendation request just after the browser request is received. The page generation and the recommendation requests are accomplished in parallel. By combining this idea with the previous solution and placing the recommendation results at the bottom of the page you can avoid any interruption in the processing. -#### Using JSONP to load from JavaScript +### Using JSONP to load from JavaScript It's not possible to request the recommendation controller server directly from the JavaScript (over AJAX library or directly over XMLHttpRequest) because of the cross-domain restriction in most browsers. One of the possible technique to work around this limitation is [JSONP](https://en.wikipedia.org/wiki/JSONP). -#### Loading over proxy +### Loading over proxy A better solution in comparison with JSONP is to provide the proxy on the server side, which forwards script requests to the Recommender system. It can be implemented as a very simple proxy using the [mod\_proxy module](https://httpd.apache.org/docs/2.2/mod/mod_proxy.html) of Apache Webserver. @@ -259,7 +259,7 @@ An alternative approach is creating the HTML code on the server side for every t As a possible implementation of such a proxy following tools can be used: the apache proxy module, some independent daemon like “netcat” or a PHP script. -#### Comparison +### Comparison An overview of pros and cons for each of the above techniques: diff --git a/docs/release_notes/ez_platform_v1.10.0.md b/docs/release_notes/ez_platform_v1.10.0.md index 38e1fc3908..adbba9d7fb 100644 --- a/docs/release_notes/ez_platform_v1.10.0.md +++ b/docs/release_notes/ez_platform_v1.10.0.md @@ -30,7 +30,7 @@ For more information, see [Bundle documentation](https://github.com/ezsystems/ez As part of ongoing effort to simplify everyday aspects of the API for v2, you can now simpler deal with SiteAccess languages and translations. -###### Example +##### Example For objects such as content, content type, field definitions and more, to get translated name, description or fields you would before this change have to do the following in PHP and Twig: diff --git a/docs/release_notes/ez_platform_v1.12.0.md b/docs/release_notes/ez_platform_v1.12.0.md index 0d1ea28b71..ce89c4157f 100644 --- a/docs/release_notes/ez_platform_v1.12.0.md +++ b/docs/release_notes/ez_platform_v1.12.0.md @@ -8,7 +8,7 @@ If you're looking for the Long Term Support (LTS) release, see [https://ezplatfo ## Notable changes since v1.11.0 -#### New Options in the Rich Text editor +### New Options in the Rich Text editor The Rich Text editor now enables you to add both ordered and unordered lists. @@ -16,11 +16,11 @@ You also have new options to format your text using subscript, superscript, quot ![New text formatting options](oe-formatting-new-options.png) -#### Improved full text search capabilities +### Improved full text search capabilities Added support for full-text search query syntax in Solr. -#### Deleting translations +### Deleting translations You can now remove translations from content item Versions through the PHP API. @@ -28,14 +28,14 @@ For more information, see the section on [deleting translations](https://doc.ibe You also have a new endpoint available for deleting a single Version. -#### Improved Security for password storage +### Improved Security for password storage 1.12 introduces and enables by default more secure user passwords hashing using bcrypt, and is future-proofed for new hashing formats being added to PHP, like Argon2i coming with PHP 7.2. This feature is added both in eZ Platform and the accompanying eZ Publish legacy 2017.10 release for projects looking to migrate to a newer version of Platform and take advantage of the new features. -#### Improved Varnish performance +### Improved Varnish performance This release switches default HTTPCache usage to use ezplatform-http-cache package, which uses Varnish xkey allowing: soft purge, better cache clearing logic and longer ttl. diff --git a/docs/release_notes/ez_platform_v1.7.0_lts.md b/docs/release_notes/ez_platform_v1.7.0_lts.md index 5c5f4a5086..478fa72580 100644 --- a/docs/release_notes/ez_platform_v1.7.0_lts.md +++ b/docs/release_notes/ez_platform_v1.7.0_lts.md @@ -37,7 +37,7 @@ Community members are more than welcome to contribute to the translation process - The online editor also brings a range of improvements that improve the editorial experience. The most noticeable one is to offer the possibility to switch from Headings to Paragraph styles for the same element. -##### Notable technical improvements +#### Notable technical improvements - Search: - Solr Search Engine: Plugins, extend the Solr index with custom data on Content, Translation and Location block level diff --git a/docs/release_notes/ez_platform_v2.0.0.md b/docs/release_notes/ez_platform_v2.0.0.md index 68777b0234..826bf4f241 100644 --- a/docs/release_notes/ez_platform_v2.0.0.md +++ b/docs/release_notes/ez_platform_v2.0.0.md @@ -17,7 +17,7 @@ eZ Platform v2.0.0 introduces significant changes to the architecture, especially to the back-office interface. -#### Symfony 3 +### Symfony 3 eZ Platform has become a pure Symfony application, based on Symfony 3, which brings with it many enhancements. @@ -28,7 +28,7 @@ eZ Platform has become a pure Symfony application, based on Symfony 3, which bri Among others, the `var` directory now contains cache and logs. The `bin` directory is now used to call the `console` command, so use `bin/console` instead of `app/console`. -#### Back-office interface +### Back-office interface The back-office interface no longer uses YUI, and is instead based on React components and Bootstrap, which makes it easier to extend. Explore the Extending section in the menu to learn how to extend the new version of the UI. @@ -37,7 +37,7 @@ The features of eZ Platform remain the same as in 1.x versions. However, the loo ![v2.0.0 interface](v2_general_screen.png) -#### Studio +### Studio The StudioUI still uses the 1.x interface. It will be rewritten to the new architecture in an upcoming version. diff --git a/docs/release_notes/ez_platform_v3.0_deprecations.md b/docs/release_notes/ez_platform_v3.0_deprecations.md index 0aa2f1130d..233511207a 100644 --- a/docs/release_notes/ez_platform_v3.0_deprecations.md +++ b/docs/release_notes/ez_platform_v3.0_deprecations.md @@ -324,7 +324,7 @@ Following the upgrade to Symfony 5, the following event classes have been deprec Also, as of Symfony 5, the `transchoice` Twig filter has been replaced with `trans`. New translation strings are required. -##### SubtreeQuery +### SubtreeQuery Deprecated `SubtreeQuery` class has been removed. In v3.0, it was replaced by `EzSystems\EzPlatformAdminUi\QueryType\SubtreeQueryType`. @@ -795,7 +795,7 @@ You should rely on injected Connection instead. ## ezplatform-page-builder -#### JavaScript +### JavaScript #### Event names changed diff --git a/docs/release_notes/ibexa_dxp_v4.6.md b/docs/release_notes/ibexa_dxp_v4.6.md index 5c90a287ae..8fbf9cd29a 100644 --- a/docs/release_notes/ibexa_dxp_v4.6.md +++ b/docs/release_notes/ibexa_dxp_v4.6.md @@ -9,7 +9,6 @@ month_change: true [[= release_notes_filters('Ibexa DXP v4.6 LTS', ['Headless', 'Experience', 'Commerce', 'LTS Update', 'New feature', 'First release']) =]]
- [[% set version = 'v4.6.28' %]] [[= release_note_entry_begin( @@ -18,6 +17,7 @@ month_change: true ['Headless', 'Experience', 'Commerce'] ) =]] + ### Infrastructure #### PHP 8.4 support diff --git a/docs/release_notes/ibexa_dxp_v5.0.md b/docs/release_notes/ibexa_dxp_v5.0.md index 8da292fc78..0f30afc633 100644 --- a/docs/release_notes/ibexa_dxp_v5.0.md +++ b/docs/release_notes/ibexa_dxp_v5.0.md @@ -32,6 +32,7 @@ For more information, see [Shopping list feature guide](https://doc.ibexa.co/en/ ['Headless', 'Experience', 'Commerce', 'New feature'] ) =]] + ### Security This release includes security fixes. diff --git a/docs/search/search_criteria_and_sort_clauses.md b/docs/search/search_criteria_and_sort_clauses.md index 7c9917853a..cef0385d6b 100644 --- a/docs/search/search_criteria_and_sort_clauses.md +++ b/docs/search/search_criteria_and_sort_clauses.md @@ -112,7 +112,7 @@ This allows you to build custom content logic queries with nested logical operat Custom Field Criterion search mirrors the one already existing in PHP API `Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\Field` by exposing it to REST. -#### Example of custom Content Query +### Example of custom Content Query ```json "ContentQuery":{ diff --git a/docs/templating/twig_function_reference/ai_actions_twig_functions.md b/docs/templating/twig_function_reference/ai_actions_twig_functions.md index 2b01673bc6..89ee7bd379 100644 --- a/docs/templating/twig_function_reference/ai_actions_twig_functions.md +++ b/docs/templating/twig_function_reference/ai_actions_twig_functions.md @@ -8,7 +8,7 @@ month_change: false AI Actions functions allows you to pass information about AI Actions to the Twig templates. -### `ibexa_ai_config()` +## `ibexa_ai_config()` The `ibexa_ai_config` function loads the configuration of an Action Type with given identifier. diff --git a/docs/templating/twig_function_reference/cart_twig_functions.md b/docs/templating/twig_function_reference/cart_twig_functions.md index eacbb39041..2637a5d783 100644 --- a/docs/templating/twig_function_reference/cart_twig_functions.md +++ b/docs/templating/twig_function_reference/cart_twig_functions.md @@ -8,7 +8,7 @@ page_type: reference You can use cart Twig functions to check whether products can be added to cart, or to format the price value. -### `ibexa_can_be_added_to_cart()` +## `ibexa_can_be_added_to_cart()` The `ibexa_can_be_added_to_cart()` function checks whether the provided product can be added to cart. It eliminates products that aren't available, products that don't have a price that corresponds to a currency selected for the cart, and products, for which VAT category isn't set. diff --git a/docs/templating/twig_function_reference/catalog_twig_functions.md b/docs/templating/twig_function_reference/catalog_twig_functions.md index b57ca52579..0e7a556418 100644 --- a/docs/templating/twig_function_reference/catalog_twig_functions.md +++ b/docs/templating/twig_function_reference/catalog_twig_functions.md @@ -7,7 +7,7 @@ page_type: reference With the catalog Twig functions you can get catalog location and render catalog status. -### `ibexa_get_product_catalog_root` +## `ibexa_get_product_catalog_root` The `ibexa_get_product_catalog_root()` function gets a root location of the product catalog (configured in `ibexa_product_catalog.engines.default.type.options.root_location_remote_id`). @@ -15,11 +15,11 @@ The `ibexa_get_product_catalog_root()` function gets a root location of the prod {{ ibexa_url(ibexa_get_product_catalog_root()) }} ``` -### `ibexa_render_catalog_status` +## `ibexa_render_catalog_status` The `ibexa_render_catalog_status` filter renders the status of the catalog, translated into the current language. -#### Examples +### Examples ``` html+twig {% import "@ibexadesign/product_catalog/catalog_macros.html.twig" as catalog_macros %} diff --git a/docs/templating/twig_function_reference/checkout_twig_functions.md b/docs/templating/twig_function_reference/checkout_twig_functions.md index 5d1644b1bb..b228b11847 100644 --- a/docs/templating/twig_function_reference/checkout_twig_functions.md +++ b/docs/templating/twig_function_reference/checkout_twig_functions.md @@ -8,7 +8,7 @@ page_type: reference You can use checkout Twig functions to get information about the checkout process, and total values related to cart and cart items. -### `ibexa_checkout_step_label()` +## `ibexa_checkout_step_label()` The `ibexa_checkout_step_label()` function returns a name of the step (configured in `framework.workflows.workflow.ibexa_checkout.transitions..metadata.label`). @@ -18,7 +18,7 @@ The `ibexa_checkout_step_label()` function returns a name of the step (configure {% endblock %} ``` -### `ibexa_checkout_steps()` +## `ibexa_checkout_steps()` The `ibexa_checkout_steps()` function returns a list of steps configured in `framework.workflows.workflow.ibexa_checkout.transitions`). @@ -28,7 +28,7 @@ The `ibexa_checkout_steps()` function returns a list of steps configured in `fra {% endfor %} ``` -### `ibexa_checkout_step_path()` +## `ibexa_checkout_step_path()` The `ibexa_checkout_step_path()` function returns a path to the step. @@ -36,7 +36,7 @@ The `ibexa_checkout_step_path()` function returns a path to the step. {{ }} ``` -### `ibexa_checkout_step_url()` +## `ibexa_checkout_step_url()` The `ibexa_checkout_step_url()` function returns a URL address of the step. By setting the optional argument to `true` you can decide whether the function returns a relative or absolute URL of the checkout step. @@ -46,7 +46,7 @@ The default value of the optional argument is `false`, which stands for the abso {{ }} ``` -### `ibexa_checkout_step_number()` +## `ibexa_checkout_step_number()` The `ibexa_checkout_step_number` function returns a sequential number of the step (based on configuration under `framework.workflows.workflow.ibexa_checkout.transitions`). @@ -56,7 +56,7 @@ The `ibexa_checkout_step_number` function returns a sequential number of the ste {% endblock %} ``` -### `ibexa_checkout_summary_entries()` +## `ibexa_checkout_summary_entries()` The `ibexa_checkout_summary_entries` function takes in a single argument, a cart summary object, and returns the checkout summary. @@ -68,7 +68,7 @@ The `ibexa_checkout_summary_entries` function takes in a single argument, a cart {% endblock %} ``` -### `ibexa_checkout_summary_vat_summaries()` +## `ibexa_checkout_summary_vat_summaries()` The `ibexa_checkout_summary_vat_summaries()` function takes in a single argument, a cart summary object, and returns an array of VAT summary objects for the cart. Each VAT summary relates to a certain VAT rate, and contains information about the VAT rate, and the VAT value. diff --git a/docs/templating/twig_function_reference/product_twig_functions.md b/docs/templating/twig_function_reference/product_twig_functions.md index 7b4aac3d8a..5639b9eecc 100644 --- a/docs/templating/twig_function_reference/product_twig_functions.md +++ b/docs/templating/twig_function_reference/product_twig_functions.md @@ -5,22 +5,22 @@ page_type: reference # Product Twig functions -### `ibexa_get_product` +## `ibexa_get_product` The `ibexa_get_product()` filter gets the selected product based on either a product object or a content item object that contains a product. -#### Examples +### Examples ``` html+twig {{ (product|ibexa_get_product).code }} {{ (content|ibexa_get_product).code }} ``` -### `ibexa_format_product_attribute` +## `ibexa_format_product_attribute` The `ibexa_format_product_attribute` filter formats the attribute value to a readable, translated form. -#### Examples +### Examples ``` html+twig {% for attribute in product.attributes %} @@ -28,21 +28,21 @@ The `ibexa_format_product_attribute` filter formats the attribute value to a rea {% endfor %} ``` -### `ibexa_product` +## `ibexa_product` `ibexa_product` enables you to check whether the provided object is a product. -#### Examples +### Examples ``` html+twig {$ if content is ibexa_product %} ``` -### `ibexa_has_product_availability` +## `ibexa_has_product_availability` The `ibexa_has_product_availability` Twig function is used to check whether a product has defined availability. -#### Examples +### Examples ```html+twig {% if ibexa_has_product_availability(product) %} @@ -52,11 +52,11 @@ The `ibexa_has_product_availability` Twig function is used to check whether a pr {% endif %} ``` -### `ibexa_get_product_availability` +## `ibexa_get_product_availability` The `ibexa_get_product_availability` Twig function retrieves the availability for a product. -#### Examples +### Examples ```html+twig {% set availability = ibexa_get_product_availability(product) %} @@ -70,11 +70,11 @@ The `ibexa_get_product_availability` Twig function retrieves the availability fo ``` -### `ibexa_is_product_available` +## `ibexa_is_product_available` The `ibexa_is_product_available` Twig function checks whether a product is available for purchase based on its availability status. -#### Examples +### Examples ```html+twig {% if ibexa_is_product_available(product) %} @@ -87,11 +87,11 @@ The `ibexa_is_product_available` Twig function checks whether a product is avail ``` -### `ibexa_get_product_stock` +## `ibexa_get_product_stock` The `ibexa_get_product_stock` Twig function retrieves the stock quantity for a product. -#### Examples +### Examples ```html+twig {% set stock = ibexa_get_product_stock(product) %} @@ -105,11 +105,11 @@ The `ibexa_get_product_stock` Twig function retrieves the stock quantity for a p ``` -### `ibexa_format_price` +## `ibexa_format_price` The `ibexa_format_price` filter formats the price value by placing currency code either on the left or on the right of the numerical value. -#### Examples +### Examples ``` html+twig {% for product.price in product.attributes %} @@ -117,11 +117,11 @@ The `ibexa_format_price` filter formats the price value by placing currency code {% endfor %} ``` -### `ibexa_is_pim_local` +## `ibexa_is_pim_local` The `ibexa_is_pim_local` is a helper Twig function that enables changing the behavior of templates depending on the source of product data. -#### Examples +### Examples ``` html+twig {% if ibexa_is_pim_local() == true %} @@ -131,11 +131,11 @@ The `ibexa_is_pim_local` is a helper Twig function that enables changing the beh {% endif %} ``` -### `ibexa_product_catalog_group_attributes` +## `ibexa_product_catalog_group_attributes` The `ibexa_product_catalog_group_attributes` filter groups product attributes based on the [attribute group]([[= user_doc =]]/pim/work_with_product_attributes/#create-attribute-groups) they belong to. -#### Example +### Example ``` html+twig {% for group, attributes in product.attributes | ibexa_product_catalog_group_attributes %} diff --git a/docs/templating/twig_function_reference/site_context_twig_functions.md b/docs/templating/twig_function_reference/site_context_twig_functions.md index 58a8f6c137..71f438ec2a 100644 --- a/docs/templating/twig_function_reference/site_context_twig_functions.md +++ b/docs/templating/twig_function_reference/site_context_twig_functions.md @@ -8,11 +8,11 @@ page_type: reference To determine if given location is site context-aware, you can use site context [Twig test](https://twig.symfony.com/doc/3.x/tests/index.html). -### `ibexa_site_context_aware()` +## `ibexa_site_context_aware()` `ibexa_site_context_aware()` checks whether a given location is site context-aware, meaning it's not excluded from Site context by using the `ibexa.system..site_context.excluded_paths` configuration. -#### Examples +### Examples ``` html+twig {% if location is ibexa_site_context_aware %} diff --git a/docs/templating/twig_function_reference/storefront_twig_functions.md b/docs/templating/twig_function_reference/storefront_twig_functions.md index 7542e69104..a47cbbb5ca 100644 --- a/docs/templating/twig_function_reference/storefront_twig_functions.md +++ b/docs/templating/twig_function_reference/storefront_twig_functions.md @@ -8,7 +8,7 @@ page_type: reference You can use storefront Twig functions to control the rendering of storefront elements. -### `ibexa_storefront_get_logo()` +## `ibexa_storefront_get_logo()` `ibexa_storefront_get_logo()` returns current shop logo (configured in `ibexa.system..storefront.logo`): @@ -18,7 +18,7 @@ You can use storefront Twig functions to control the rendering of storefront ele {% endblock %} ``` -### `ibexa_storefront_get_name()` +## `ibexa_storefront_get_name()` `ibexa_storefront_get_name()` returns current shop name (configured in `ibexa.system..storefront.name`): @@ -28,7 +28,7 @@ You can use storefront Twig functions to control the rendering of storefront ele {% endblock %} ``` -### `ibexa_storefront_get_main_menu_alias()` / `ibexa_storefront_get_main_menu_options()` +## `ibexa_storefront_get_main_menu_alias()` / `ibexa_storefront_get_main_menu_options()` `ibexa_storefront_get_main_menu_alias()` returns the main menu alias. @@ -43,7 +43,7 @@ You can use storefront Twig functions to control the rendering of storefront ele {% endblock %} ``` -### `ibexa_storefront_create_inline_product_search_form()` +## `ibexa_storefront_create_inline_product_search_form()` `ibexa_storefront_create_inline_product_search_form()` creates a product search form: @@ -53,7 +53,7 @@ You can use storefront Twig functions to control the rendering of storefront ele {% endblock %} ``` -### `ibexa_storefront_get_main_category()` +## `ibexa_storefront_get_main_category()` `ibexa_storefront_get_main_category()` returns the main (first-level) category for a given category. @@ -65,7 +65,7 @@ For example: if a given category is "Desks" and it has the following ancestors:

Main category: {{ main_category.name }}

``` -### `ibexa_storefront_get_active_currency()` +## `ibexa_storefront_get_active_currency()` `ibexa_storefront_get_active_currency()` returns the active currency object (`Ibexa\Contracts\ProductCatalog\Values\CurrencyInterface`). @@ -75,7 +75,7 @@ For example: if a given category is "Desks" and it has the following ancestors:

Active currency code: {{ currency.code }}

``` -### `ibexa_storefront_get_language_name_by_code()` +## `ibexa_storefront_get_language_name_by_code()` `ibexa_storefront_get_language_name_by_code()` displays language name based on its code or locale. @@ -85,7 +85,7 @@ For example: if a given category is "Desks" and it has the following ancestors:

Language name: {{ languageName }}

``` -### `ibexa_storefront_get_product_render_action()` +## `ibexa_storefront_get_product_render_action()` `ibexa_storefront_get_product_render_action()` returns a rendering action to be used, as defined in [settings](configure_storefront.md). It serves as an alternative for `ibexa_render` which heavily relies on content objects being not present within context of remote PIM. @@ -103,7 +103,7 @@ You can use this, for example, to [parametrize the display of products by using {% endif %} ``` -### `ibexa_get_anonymous_user_id()` +## `ibexa_get_anonymous_user_id()` `ibexa_get_anonymous_user_id()` returns the configured user ID for the anonymous user (configured in `ibexa.system..anonymous_user_id`). @@ -111,7 +111,7 @@ You can use this, for example, to [parametrize the display of products by using {{ ibexa_get_anonymous_user_id() }} ``` -### `ibexa_storefront_are_discounts_enabled()` +## `ibexa_storefront_are_discounts_enabled()` This function detects if the [Discounts](discounts_guide.md) feature is present. diff --git a/docs/templating/twig_function_reference/user_twig_functions.md b/docs/templating/twig_function_reference/user_twig_functions.md index 7b62c6c1f8..212158b624 100644 --- a/docs/templating/twig_function_reference/user_twig_functions.md +++ b/docs/templating/twig_function_reference/user_twig_functions.md @@ -5,7 +5,7 @@ page_type: reference # User Twig functions -### `ibexa_user_get_current()` +## `ibexa_user_get_current()` `ibexa_user_get_current()` returns the User object (`Ibexa\Contracts\Core\Repository\Values\User\User`) of the current user. @@ -19,15 +19,15 @@ You can get the underlying content item, for example to display the user's last {{ ibexa_render_field(ibexa_user_get_current().content, 'last_name') }} ``` -### `ibexa_current_user()` +## `ibexa_current_user()` `ibexa_current_user()` is a deprecated alias of `ibexa_user_get_current()`. -### `ibexa_is_current_user()` +## `ibexa_is_current_user()` The `ibexa_is_current_user()` Twig function checks whether a user is the current repository user. -#### Examples +### Examples ```html+twig {% if ibexa_is_current_user(version_info.author) %} diff --git a/docs/tutorials/beginner_tutorial/4_display_single_content_item.md b/docs/tutorials/beginner_tutorial/4_display_single_content_item.md index 801fb8c8cb..cf33722aa0 100644 --- a/docs/tutorials/beginner_tutorial/4_display_single_content_item.md +++ b/docs/tutorials/beginner_tutorial/4_display_single_content_item.md @@ -7,7 +7,7 @@ description: Learn how to render content details with a custom template. You render a list of all Rides here in the next step. But before that, you can use the existing page layout to render the content of a single Ride. -### Create the Ride view +## Create the Ride view Create a Twig template `templates/full/ride.html.twig` with the following code: @@ -88,18 +88,18 @@ site: This tells the application to use this template whenever it renders the full view of a Ride. -### Check the Ride full view +## Check the Ride full view Because you don't have a list of Rides on the front page yet, you cannot click a Ride to preview it. But you still can see how the template works in two ways: -#### Preview in the back office +### Preview in the back office You can use the [preview]([[= user_doc =]]/content_management/preview_content_items/) while editing in the back office to see how the content is rendered in full view. ![Full ride preview in admin](bike_tutorial_preview_full_ride.png) -#### Go to the Ride page +### Go to the Ride page You can also go directly to the URL of a Ride. diff --git a/docs/tutorials/page_and_form_tutorial/2_prepare_the_landing_page.md b/docs/tutorials/page_and_form_tutorial/2_prepare_the_landing_page.md index c49bf9aa17..04b233e495 100644 --- a/docs/tutorials/page_and_form_tutorial/2_prepare_the_landing_page.md +++ b/docs/tutorials/page_and_form_tutorial/2_prepare_the_landing_page.md @@ -50,7 +50,7 @@ Preparing a new layout requires three things: - thumbnail - template -#### Add entry in configuration +### Add entry in configuration First create a new file for layout configuration, `config/packages/ibexa_fieldtype_page.yaml`: @@ -58,7 +58,7 @@ First create a new file for layout configuration, `config/packages/ibexa_fieldty [[= include_file('code_samples/tutorials/page_tutorial/config/packages/ibexa_fieldtype_page.yaml', 0, 13) =]] ``` -#### Add thumbnail +### Add thumbnail !!! tip @@ -71,7 +71,7 @@ Use the [supplied thumbnail file](https://github.com/ibexa/documentation-develop The `template` (line 8) points to the Twig file containing the template for this layout. -#### Create page template +### Create page template Configuration points to `sidebar.html.twig` as the template for the layout. The template defines what zones are available in the layout. diff --git a/docs/tutorials/page_and_form_tutorial/3_use_existing_blocks.md b/docs/tutorials/page_and_form_tutorial/3_use_existing_blocks.md index bf388f8890..c50b9fc843 100644 --- a/docs/tutorials/page_and_form_tutorial/3_use_existing_blocks.md +++ b/docs/tutorials/page_and_form_tutorial/3_use_existing_blocks.md @@ -7,7 +7,7 @@ edition: experience In this step you can add a Content List block and a Content Scheduler block and customize them. -### Add a Content List block +## Add a Content List block First, create an override template for the Content List block: `templates/blocks/contentlist/default.html.twig`: @@ -57,7 +57,7 @@ The block is displayed using the new template. Built-in blocks have default templates included in a clean installation, but you can override them. Publish the page now and move on to creating another type of block. -### Create a Content Scheduler block for featured articles +## Create a Content Scheduler block for featured articles The next block is the Content Scheduler block that airs articles at predetermined times. diff --git a/docs/tutorials/page_and_form_tutorial/4_create_a_custom_block.md b/docs/tutorials/page_and_form_tutorial/4_create_a_custom_block.md index 8e28c90e5a..899c505d3d 100644 --- a/docs/tutorials/page_and_form_tutorial/4_create_a_custom_block.md +++ b/docs/tutorials/page_and_form_tutorial/4_create_a_custom_block.md @@ -15,7 +15,7 @@ To create a custom block from scratch you need four elements: - a listener - the listener registered as a service -### Block configuration +## Block configuration In `config/packages/ibexa_fieldtype_page.yaml` add the following block under the `blocks` key: @@ -26,7 +26,7 @@ In `config/packages/ibexa_fieldtype_page.yaml` add the following block under the This configuration defines one attribute, `parent`. Use it to select the folder containing tips. -### Block template +## Block template You also need to create the block template, `templates/blocks/random/default.html.twig`: @@ -34,7 +34,7 @@ You also need to create the block template, `templates/blocks/random/default.ht [[= include_file('code_samples/tutorials/page_tutorial/templates/blocks/random/default.html.twig') =]] ``` -### Block listener +## Block listener Block listener provides the logic for the block. It's contained in `src/Event/RandomBlockListener.php`: 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 897a4a9dc6..c9f9c59b7e 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 @@ -9,7 +9,7 @@ The final step of this tutorial assists you in adding to the home page a Form bl [[% include 'snippets/forms_caution.md' %]] -### Add a Form block +## Add a Form block Start with creating a Form content item. In the main menu, go to **Content** -> **Forms**, click **Create content** and select **Form**. @@ -40,7 +40,7 @@ The Page should refresh with the Form block. It clearly differs from the page design, so you also need to customize the block's layout. -### Change the block template +## Change the block template First, add a new template for the Form block to align it with the Random block design. Create a `newsletter.html.twig` file in `templates/blocks/form/`: @@ -65,7 +65,7 @@ In the **Design** tab, select the **Newsletter Form View** and click **Submit**. The block remains unchanged, but the results are visible when you add CSS styling. -### Change the field template +## Change the field template At this point, you need to change the field template. This results in alternating the position and design of the Form fields. @@ -85,7 +85,7 @@ In `config/packages/views.yaml`, at the same level as `page_layout`, add: Clear the cache by running `bin/console cache:clear` and refresh the page to see the results. -### Configure the Form field +## Configure the Form field Before applying the final styling of the block, you need to configure the [CAPTCHA field](work_with_forms.md#captcha-field). In `config/packages`, add a `gregwar_captcha.yaml` file with the following configuration: @@ -96,7 +96,7 @@ In `config/packages`, add a `gregwar_captcha.yaml` file with the following confi The configuration resizes the CAPTCHA image (line 2), changes the error message (line 3), and shortens the authentication code (line 4). -### Add stylesheet +## Add stylesheet The remaining step in configuring the block is adding CSS styling. Add the following code to `assets/css/style.css`: @@ -118,7 +118,7 @@ Your newsletter form block is ready. Refresh the page and enter a couple of mock submissions. -### Manage the submissions +## Manage the submissions You can view all submissions in the back office. Go to **Forms** page. diff --git a/docs/tutorials/page_and_form_tutorial/page_and_form_tutorial.md b/docs/tutorials/page_and_form_tutorial/page_and_form_tutorial.md index e0b7b064cd..23cf72df9b 100644 --- a/docs/tutorials/page_and_form_tutorial/page_and_form_tutorial.md +++ b/docs/tutorials/page_and_form_tutorial/page_and_form_tutorial.md @@ -8,12 +8,12 @@ edition: experience This tutorial is a step-by-step guide to building an advanced website with [[= product_name_exp =]]. It focuses on creating a front page using a feature called **Page Builder**. -### Intended audience +## Intended audience This tutorial is intended for users who have basic knowledge of [[= product_name =]]. Ideally, you should be familiar with the concepts covered in the [Beginner tutorial](beginner_tutorial.md). -### Learning outcomes +## Learning outcomes After finishing this tutorial, you: diff --git a/docs/update_and_migration/from_4.6/update_from_4.6.md b/docs/update_and_migration/from_4.6/update_from_4.6.md index fd8b30db0b..3db57fceed 100644 --- a/docs/update_and_migration/from_4.6/update_from_4.6.md +++ b/docs/update_and_migration/from_4.6/update_from_4.6.md @@ -49,7 +49,7 @@ No additional steps needed. ## v4.6.2 -#### Database update +### Database update Run the following scripts: @@ -102,7 +102,7 @@ ibexa: ## v4.6.4 -#### Database update +### Database update Run the following scripts: diff --git a/docs/update_and_migration/migrate_to_ibexa_dxp/migrating_from_ez_publish_platform.md b/docs/update_and_migration/migrate_to_ibexa_dxp/migrating_from_ez_publish_platform.md index 9d8bf44cfc..e2cac3b51e 100644 --- a/docs/update_and_migration/migrate_to_ibexa_dxp/migrating_from_ez_publish_platform.md +++ b/docs/update_and_migration/migrate_to_ibexa_dxp/migrating_from_ez_publish_platform.md @@ -510,11 +510,11 @@ php bin/console assetic:dump --env=prod ## Potential pitfalls -##### Unstyled login screen after upgrade +### Unstyled login screen after upgrade It's possible that after the upgrade your admin screen is unstyled. This may happen because the new SiteAccess isn't available in the database. You can fix it by editing the permissions for the Anonymous user. Go to **Roles** in the **Admin** panel and edit the limitations of the Anonymous user's `user/login` policy. Add all SiteAccesses to the limitation, save, and clear the browser cache. The login screen should now show proper styling. -##### Translating URLs +### Translating URLs If your legacy site uses old-style URL aliases, to upgrade them successfully you need to apply a workaround to the slug converter. Where the slug converter service is defined, set second config parameter to use `urlalias_compat` by adding a new argument to the existing settings: