diff --git a/code_samples/collaboration/src/Command/ManageSessionsCommand.php b/code_samples/collaboration/src/Command/ManageSessionsCommand.php deleted file mode 100644 index e50ac513330..00000000000 --- a/code_samples/collaboration/src/Command/ManageSessionsCommand.php +++ /dev/null @@ -1,152 +0,0 @@ -permissionResolver->setCurrentUserReference( - $this->userService->loadUserByLogin('admin') - ); - - // Create a sharing session for Content - $versionInfo = $this->contentService->loadContent(52)->getVersionInfo(); - $createStruct = new ContentSessionCreateStruct( - $versionInfo, - $versionInfo->getInitialLanguage() - ); - $createStruct->setHasPublicLink(false); - - $token = 'my-secret-token-12345'; - $createStruct->setToken($token); - - $sessionId = $this->sessionService->createSession($createStruct)->getId(); - - // Get a session by ID or token - $session = $this->sessionService->getSession($sessionId); - $session = $this->sessionService->getSessionByToken($token); - - // Find sessions - $sessionQuery = new SessionQuery(new Token($token)); - $session = $this->sessionService->findSessions($sessionQuery)->getFirst(); - - // Update a session - $updateStruct = new ContentSessionUpdateStruct(); - $updateStruct->setHasPublicLink(true); - - $this->sessionService->updateSession($session, $updateStruct); - - // Deactivate a session - $updateStruct = new ContentSessionUpdateStruct(); - $updateStruct->setIsActive(false); - - $this->sessionService->updateSession($session, $updateStruct); - - // Manage participants - $user = $this->userService->loadUserByLogin('another_user'); - $internalParticipantCreateStruct = new InternalParticipantCreateStruct( - $user, - ContentSessionScope::VIEW - ); - $externalParticipantCreateStruct = new ExternalParticipantCreateStruct( - 'external@example.com', - ContentSessionScope::VIEW, - 'personal-secret-token-12345' - ); - - $internalParticipant = $this->sessionService->addParticipant($session, $internalParticipantCreateStruct); - $externalParticipant = $this->sessionService->addParticipant($session, $externalParticipantCreateStruct); - - // Get and update participants - $participant = $this->sessionService - ->getSession($session->getId()) - ->getParticipants() - ->getByEmail($user->email); - - $internalParticipantUpdateStruct = new InternalParticipantUpdateStruct(ContentSessionScope::EDIT); - $this->sessionService->updateParticipant($session, $participant, $internalParticipantUpdateStruct); - - // Remove participant - $this->sessionService->removeParticipant($session, $externalParticipant); - - // Check ownerships. If no user is provided, current user is used. - $this->sessionService->isSessionOwner( - $session, - $this->userService->loadUserByLogin('another_user') - ); - - // Check participation - $this->sessionService->isSessionParticipant( - $session, - $this->permissionResolver->getCurrentUserReference() - ); - - // Manage invitations - $invitationQuery = new InvitationQuery(new Session($session)); - $invitations = $this->invitationService->findInvitations($invitationQuery)->getInvitations(); - - foreach ($invitations as $invitation) { - $output->writeln('Invitation ID: ' . $invitation->getId() . ' Status: ' . $invitation->getStatus()); - } - - $invitation = $this->invitationService->getInvitationByParticipant($participant); - - // Create invitation - use when auto-inviting participants is not enabled - $invitationCreateStruct = new InvitationCreateStruct( - $session, - $internalParticipant - ); - - $this->invitationService->createInvitation($invitationCreateStruct); - - // Update invitation - $invitationUpdateStruct = new InvitationUpdateStruct(); - $invitationUpdateStruct->setStatus(InvitationStatus::STATUS_REJECTED); - - $this->invitationService->updateInvitation($invitation, $invitationUpdateStruct); - - // Delete invitation - $invitation = $this->invitationService->getInvitation(2); - $this->invitationService->deleteInvitation($invitation); - - // Delete a session - $this->sessionService->deleteSession($session); - - return Command::SUCCESS; - } -} diff --git a/code_samples/collaboration/src/Query/Search.php b/code_samples/collaboration/src/Query/Search.php deleted file mode 100644 index b4f7dfbabca..00000000000 --- a/code_samples/collaboration/src/Query/Search.php +++ /dev/null @@ -1,21 +0,0 @@ -findSessions($query); diff --git a/code_samples/templates/field_twig_functions/render_content.html.twig b/code_samples/templates/field_twig_functions/render_content.html.twig deleted file mode 100644 index 6fddce9e779..00000000000 --- a/code_samples/templates/field_twig_functions/render_content.html.twig +++ /dev/null @@ -1,9 +0,0 @@ -{{ ibexa_render_field(content, 'title') }} - -{{ ibexa_render_field(content, 'image', { - 'template': '@ibexadesign/fields/image.html.twig', - 'attr': {class: 'thumbnail-image'}, - 'parameters': { - 'alias': 'small' - } -}) }} diff --git a/code_samples/templates/field_twig_functions/render_product.html.twig b/code_samples/templates/field_twig_functions/render_product.html.twig deleted file mode 100644 index 35ef9d5255e..00000000000 --- a/code_samples/templates/field_twig_functions/render_product.html.twig +++ /dev/null @@ -1,9 +0,0 @@ -{{ ibexa_render_field(product, 'name') }} - -{{ ibexa_render_field(product, 'image', { - 'template': '@ibexadesign/fields/image.html.twig', - 'attr': {class: 'thumbnail-image'}, - 'parameters': { - 'alias': 'small' - } -}) }} diff --git a/docs/administration/back_office/back_office_elements/custom_icons.md b/docs/administration/back_office/back_office_elements/custom_icons.md index 10aeb2e0d8c..09bd38b40fc 100644 --- a/docs/administration/back_office/back_office_elements/custom_icons.md +++ b/docs/administration/back_office/back_office_elements/custom_icons.md @@ -27,98 +27,3 @@ Place the icon in `public/assets/images` and run `yarn encore ` after To ensure proper display in the back office, all icons should have SVG format with `symbol`. Use the [scope](multisite_configuration.md#scope) if you want different icons for different SiteAccesses. - -To see more Admin UI's `ids-assets` icons, see [the icon reference](icon_twig_functions.md#icons-reference). - -### Access icons in Twig templates - -#### Content type icons - -Content type icons are accessible in Twig templates via the [`ibexa_content_type_icon()` function](icon_twig_functions.md#ibexa_content_type_icon). -It requires content type identifier as an argument. The function returns the path to a content type icon. - -```twig - - - -``` - -#### UI Icons - -User interface icons are accessible with [`ibexa_icon_path()` function](icon_twig_functions.md#ibexa_icon_path). The function returns a path from an icon identifier and an [icon set](#icon-sets) identifier arguments. - -### Access icons in JavaScript - -Content types icons configuration is stored in a global object: `ibexa.adminUiConfig.contentTypes`. - -You can retrieve the icon URL with the `getContentTypeIconUrl` helper function that is set on the global `ibexa.helpers.contentType` object. -It takes content type identifier as an argument and returns one of the following items: - -- URL of a specified content type's icon -- `null` if there is no content type with specified identifier - -Example with `getContentTypeIconUrl`: - -```jsx -const contentTypeIconUrl = ibexa.helpers.contentType.getContentTypeIconUrl(contentTypeIdentifier); -return ( - - - -) -``` - -### Icons React component - -You can use a React component to change icons in back office and Page Builder. - -The following example from the `alert.js` file shows configuration for icons in the [alert](reusable_components.md#alerts) component: - -```jsx hl_lines="2" -
- -
- {title &&
{title}
} - {subtitle &&
{subtitle}
} -
{children}
-
- {showCloseBtn && ( - - )} -
-``` - -`Icon` component has three attributes (called props): - -- `customPath` - a path to the custom icon -- `name` - the path is generated inside the component provided you use icon from the system -- `extraClasses` - additional CSS classes, use to set for example, icon size. - -## Customize UI icons - -### Icon sets - -You can configure icon sets to be used per SiteAccess: - -``` yaml -ibexa: - system: - : - assets: - icon_sets: - my_icons: /assets/images/icons/my_icons.svg - additional_icons: /assets/images/icons/additional_icons.svg - default_icon_set: my_icons -``` - -The icon sets are used by [`ibexa_icon_path()` Twig function](icon_twig_functions.md#ibexa_icon_path). - -- If you change the `default_icon_set` from one SiteAccess to another, `ibexa_icon_path(icon)` without `set` argument targets icons from different set files -- If you change the file path of an icon set from one SiteAccess to another, `ibexa_icon_path(icon, set)` with the same `set` argument targets icons from different set files - -The built-in default icon set is `ids-assets` (corresponding to `/bundles/ibexaadminuiassets/vendors/ids-assets/dist/img/all-icons.svg`). -To see the icons available in this set, see [the icon reference](icon_twig_functions.md#icons-reference). diff --git a/docs/administration/project_organization/architecture.md b/docs/administration/project_organization/architecture.md index b2169989302..c977ac06605 100644 --- a/docs/administration/project_organization/architecture.md +++ b/docs/administration/project_organization/architecture.md @@ -17,19 +17,6 @@ The architecture of [[= product_name =]] is layered and uses clearly defined API | Layer | Description | |-----------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | [Back office](back_office_configuration.md) | Back office contains all the necessary parts to run the [[= product_name =]]'s back office interface. | -| [HTTP Cache](http_cache.md) | Symfony HTTP cache is used to manage content "view" cache with an expiration model. In addition it is extended by using FOSHttpCache to add several advanced features. | -| [Controllers](controllers.md) | Controllers created by you to read information from a Request object, create and return a Response objects. | -| [Twig templates](twig_function_reference.md) | Set of custom and built-in Twig templates. User interfaces are developed with the Twig template engine and query the public PHP API directly. | | [REST API v2](rest_api_usage.md) | The REST API v2 enables you to interact with a [[= product_name =]] installation through the HTTP protocol, following a REST interaction model. | -| [GraphQL](graphql.md) | GraphQL for [[= product_name =]] exposes the domain model using the repository, based on content type groups, content types and field definitions. | -| [Public PHP API](php_api.md) | Public PHP API exposes the repository which enables you to create, read, update, manage and delete all objects available in [[= product_name =]]. | | Business Logic | The business logic is defined in the kernel. This business logic is exposed to applications via an API. It is used to organize development of the user interface layer. | -| SPI | Service Provider Interface which defines contracts for implementing various parts of the system, including persistence layer (`SPI\Persistence`), custom field types, custom limitations, and more. | -| [Persistence cache](persistence_cache.md) | The implementation of SPI\Persistence that decorates the main backend implementation. | -| [Search](search.md) | Search API that allows both full-text search and querying the content. | -| [SQL Storage Engine](legacy_search_overview.md) | Legacy search engine is SQL-based and uses Doctrine's database connection. | -| [Solr Storage Engine](solr_overview.md) | Transparent drop-in replacement for the SQL-based Legacy search engine. | -| [IO](file_management.md#native-io-handler) | The IO API is organized around two types of handlers, both used by the IOService. | -| [IO Handler](clustering.md#dfs-io-handler) | The IO Handler manipulates metadata, making up for the potential inconsistency of network-based filesystems. | -| [Recommendations](connector_installation_configuration.md) | Recommendation API. | -| [Raptor recommendation connector](raptor_connector.md) | Raptor recommendation connector allows displaying recommendations on the website. | + diff --git a/docs/administration/project_organization/bundles.md b/docs/administration/project_organization/bundles.md index 06942cb4886..dc0c3b344f3 100644 --- a/docs/administration/project_organization/bundles.md +++ b/docs/administration/project_organization/bundles.md @@ -6,7 +6,7 @@ page_type: reference # Bundles A bundle in Symfony (and [[= product_name =]]) is a separate part of your application that implements a feature. -You can [create bundles yourself](package_structure.md) or make use of available open-source bundles. +You can create bundles yourself or make use of available open-source bundles. You can also reuse the bundles you create in other projects or share them with the community. Many [[= product_name =]] functionalities are provided through separate bundles included in the installation. @@ -69,9 +69,7 @@ To remove a bundle (either one you created yourself, or an out-of-the-box one th |Bundle|Description| |---------|-----------| |ibexa/oss|Core packages| -|ibexa/app-switcher|Integration with the [QNTM group](https://qntmgroup.com/solutions/)| |ibexa/calendar|Calendar tab with a calendar widget| -|ibexa/collaboration|Collaboration functionality| |ibexa/connect|[[[= product_name_connect =]]]([[= connect_doc =]]/)| |ibexa/connector-ai|Foundation for the [AI Actions](ai_actions.md) framework| |ibexa/connector-dam|Connector for DAM (Digital Asset Management) systems| @@ -92,7 +90,6 @@ To remove a bundle (either one you created yourself, or an out-of-the-box one th |ibexa/product-catalog|Product catalog functionality| |ibexa/scheduler|Date-based publishing functionality| |ibexa/seo|Search Engine Optimization (SEO) tool| -|ibexa/share|Content-sharing functionality| |ibexa/taxonomy|Taxonomy functionality| |ibexa/tree-builder|Tree builder functionality| |ibexa/version-comparison|Enables comparing between two versions of the same field| diff --git a/docs/administration/recent_activity/recent_activity.md b/docs/administration/recent_activity/recent_activity.md index 4fa9a2bc747..3d4d1ce07a1 100644 --- a/docs/administration/recent_activity/recent_activity.md +++ b/docs/administration/recent_activity/recent_activity.md @@ -34,8 +34,6 @@ ibexa: To automate a regular truncation, you must schedule the command `ibexa:activity-log:truncate`. To minimize the number of entries to delete, it's recommended that you execute the command more than one time a day. -For more information, see [Additional scheduled tasks and advanced usage](install_cohesivo.md#additional-scheduled-tasks-and-advanced-usage). - ### Display limit The `ibexa.system..activity_log.pagination.activity_logs_limit` setting sets the number of log items shown per page in the back office (default value: 25). diff --git a/docs/ai/ai_actions/ai_actions.md b/docs/ai/ai_actions/ai_actions.md index 36e2d7e2239..045f3486aea 100644 --- a/docs/ai/ai_actions/ai_actions.md +++ b/docs/ai/ai_actions/ai_actions.md @@ -27,7 +27,6 @@ You can also extend it to perform other tasks or support additional AI services. "ai/ai_actions/extend_ai_actions", "api/event_reference/ai_action_events", ("https://doc.ibexa.co/en/6.0/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Connector-AI", "REST API Reference", "See the available endpoints for AI Actions"), -"templating/twig_function_reference/ai_actions_twig_functions", "search/ai_actions_search_reference/action_configuration_criteria", "search/ai_actions_search_reference/action_configuration_sort_clauses", ("content_management/data_migration/importing_data#ai-action-configurations", "Importing AI actions", "Learn how to manage Action Configurations using data migrations"), diff --git a/docs/ai/ai_actions/extend_ai_actions.md b/docs/ai/ai_actions/extend_ai_actions.md index b64718fe835..bcfd9014c2d 100644 --- a/docs/ai/ai_actions/extend_ai_actions.md +++ b/docs/ai/ai_actions/extend_ai_actions.md @@ -1,6 +1,7 @@ --- description: Extend AI Actions by connecting to other services and adding new capabilities. month_change: false +delete: true --- # Extend AI Actions @@ -336,7 +337,7 @@ And add it to the SiteAccess configuration for the `admin_group`: The configuration of the AI component takes the following parameters: - `module_id` - name of the JavaScript module to handle the invoked action. `ImgToText` is a built-in one handling alternative text use case, `TranscribeAudio` is a custom one. -- `ai_config_id` - identifier of the Action Type to load Action Configurations for. The [ibexa_ai_config Twig function](ai_actions_twig_functions.md#ibexa_ai_config) is used under the hood. +- `ai_config_id` - identifier of the Action Type to load Action Configurations for. The `ibexa_ai_config` Twig function is used under the hood. - `container_selector` - CSS selector to narrow down the HTML area which is affected by the AI component. - `input_selector` - CSS selector indicating the input field (must be below the `container_selector` in the HTML structure). - `output_selector` - CSS selector indicating the output field (must be below the `container_selector` in the HTML structure). diff --git a/docs/ai/mcp/mcp_config.md b/docs/ai/mcp/mcp_config.md index 1f0e8a42101..f7a439b30b3 100644 --- a/docs/ai/mcp/mcp_config.md +++ b/docs/ai/mcp/mcp_config.md @@ -229,11 +229,10 @@ There is no wildcard character, all cases must be listed. As item, you can use a hostname, an IP, or an IPv6. IPv6 addresses must be bracketed, for example `[::1]`. -In this example, only requests from `admin.example.com` domain, `my-ddev-project.ddev.site` domain, or from 127.0.0.1 IP are accepted: +In this example, only requests from `www.example.com` domain, or from 127.0.0.1 IP are accepted: ``` yaml [[= include_code('code_samples/mcp/mcp.matrix.yaml', 16, 16) =]] - 'www.example.com' - - 'my-ddev-project.ddev.site' - '127.0.0.1' ``` diff --git a/docs/ai/mcp/mcp_usage.md b/docs/ai/mcp/mcp_usage.md index fe82fa47218..c226a89f6cc 100644 --- a/docs/ai/mcp/mcp_usage.md +++ b/docs/ai/mcp/mcp_usage.md @@ -102,7 +102,7 @@ In a new `config/packages/mcp.yaml` file, define a new MCP server for the `defau [[= include_code('code_samples/mcp/config/packages/mcp.yaml') =]] ``` -Adapt the `allowed_hosts` to your case, for example, if you want to use the DDEV `.ddev.site` domain instead of the equivalent `127.0.0.1` address. +Adapt the `allowed_hosts` to your case, for example, if you want to use a domain name instead of the equivalent `127.0.0.1` address. The server is automatically registered as a service with the ID `ibexa.mcp.server.default.example`: @@ -255,7 +255,6 @@ Get the [list of prompts](https://modelcontextprotocol.io/specification/2025-11- ### Perform MCP Inspector test You can test your server with the [MCP Inspector](https://modelcontextprotocol.io/docs/tools/inspector). -You can even use the inspector as a DDEV add-on with [`michtio/ddev-mcp-inspector`](https://github.com/michtio/ddev-mcp-inspector). You still need to ask for a JWT token through REST or GraphQL APIs, and use it in the MCP Inspector configuration to connect to the server. You can use a web interface to obtain the JWT token: diff --git a/docs/api/event_reference/ai_action_events.md b/docs/api/event_reference/ai_action_events.md index 97a520aab8d..c87e435e466 100644 --- a/docs/api/event_reference/ai_action_events.md +++ b/docs/api/event_reference/ai_action_events.md @@ -2,6 +2,7 @@ description: Events that are triggered when working with AI actions. page_type: reference month_change: false +delete: true --- # AI Actions events @@ -29,5 +30,5 @@ month_change: false | Event | Dispatched by | Description | |---|---|---| | [ContextEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Events-ContextEvent.html)| [ActionServiceInterface](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-ActionServiceInterface.html) | Pass additional options to the System Context before an AI Action is executed | -| [ResolveActionConfigurationWidgetConfigEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Events-ResolveActionConfigurationWidgetConfigEvent.html)| `\Ibexa\ConnectorAi\Twig\ActionConfigurationWidgetConfigExtension::renderActionConfigurationWidgetConfig()` | Modify the Action Type configuration returned from the [ibexa_ai_config Twig function](ai_actions_twig_functions.md) | +| [ResolveActionConfigurationWidgetConfigEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Events-ResolveActionConfigurationWidgetConfigEvent.html)| `\Ibexa\ConnectorAi\Twig\ActionConfigurationWidgetConfigExtension::renderActionConfigurationWidgetConfig()` | Modify the Action Type configuration returned from the `ibexa_ai_config` Twig function | | [ResolveActionHandlerEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Events-ResolveActionHandlerEvent.html)| [ActionHandlerResolverInterface](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Action-ActionHandlerResolverInterface.html) | Hook into the process of choosing a Handler to execute an AI Action | diff --git a/docs/api/event_reference/collaboration_events.md b/docs/api/event_reference/collaboration_events.md deleted file mode 100644 index d5e9b64ead7..00000000000 --- a/docs/api/event_reference/collaboration_events.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -description: Events that are triggered when working with collaborative editing feature. -page_type: reference -month_change: false ---- - -# Collaboration events - -You can use the following events to extend the [Collaborative editing feature](collaborative_editing.md): - -## Invitation events - -| Event | Dispatched by | -|---|---| -|[BeforeCreateInvitationEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Event-BeforeCreateInvitationEvent.html)|[InvitationService::createInvitation()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-InvitationServiceInterface.html#method_createInvitation)| -|[BeforeDeleteInvitationEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Event-BeforeDeleteInvitationEvent.html)|[InvitationService::deleteInvitation()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-InvitationServiceInterface.html#method_deleteInvitation)| -|[BeforeUpdateInvitationEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Event-BeforeUpdateInvitationEvent.html)|[InvitationService::updateInvitation()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-InvitationServiceInterface.html#method_updateInvitation)| -|[CreateInvitationEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Event-CreateInvitationEvent.html)|[InvitationService::createInvitation()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-InvitationServiceInterface.html#method_createInvitation)| -|[DeleteInvitationEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Event-DeleteInvitationEvent.html)|[InvitationService::deleteInvitation()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-InvitationServiceInterface.html#method_deleteInvitation)| -|[UpdateInvitationEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Event-UpdateInvitationEvent.html)|[InvitationService::updateInvitation()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-InvitationServiceInterface.html#method_updateInvitation)| - -## Participant events - -| Event | Dispatched by | -|---|---| -|[AddParticipantEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Participant-Event-AddParticipantEvent.html)|[SessionService::addParticipant()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_addParticipant)| -|[BeforeAddParticipantEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Participant-Event-BeforeAddParticipantEvent.html)|[SessionService::addParticipant()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_addParticipant)| -|[BeforeRemoveParticipantEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Participant-Event-BeforeRemoveParticipantEvent.html)|[SessionService::removeParticipant()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_removeParticipant)| -|[BeforeUpdateParticipantEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Participant-Event-BeforeUpdateParticipantEvent.html)|[SessionService::updateParticipant()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_updateParticipant)| -|[RemoveParticipantEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Participant-Event-RemoveParticipantEvent.html)|[SessionService::removeParticipant()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_removeParticipant)| -|[UpdateParticipantEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Participant-Event-UpdateParticipantEvent.html)|[SessionService::updateParticipant()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_updateParticipant)| - -## Session events - -| Event | Dispatched by | -|---|---| -|[BeforeCreateSessionEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Event-BeforeCreateSessionEvent.html)|[SessionService::createSession()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_createSession)| -|[BeforeDeleteSessionEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Event-BeforeDeleteSessionEvent.html)|[SessionService::deleteSession()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_deleteSession)| -|[BeforeUpdateSessionEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Event-BeforeUpdateSessionEvent.html)|[SessionService::updateSession()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_updateSession)| -|[CreateSessionEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Event-CreateSessionEvent.html)|[SessionService::createSession()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_createSession)| -|[DeleteSessionEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Event-DeleteSessionEvent.html)|[SessionService::deleteSession()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_deleteSession)| -|[JoinSessionEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Event-JoinSessionEvent.html)|`SessionJoinController::joinAction()`| -|[LeaveSessionEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Event-LeaveSessionEvent.html)|`SessionLeaveController::leaveAction()`| -|[UpdateSessionEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Event-UpdateSessionEvent.html)|[SessionService::updateSession()](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_updateSession)| -|[SessionPublicPreviewEvent](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Event-SessionPublicPreviewEvent.html)|`SessionPublicPreviewController::previewAction()`| - -## User filtering events - -| Event | Dispatched by | Description | -|---|---|---| -|[`UsersWithPermissionInfoMappedEvent`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Share-Event-UsersWithPermissionInfoMappedEvent.html)|`Ibexa\Share\Permission\Mapper\`
`UsersWithPermissionInfoMapper` | Allows further filtering of users with permissions for Collaborative editing | diff --git a/docs/api/event_reference/event_reference.md b/docs/api/event_reference/event_reference.md index 0f9269f1802..8b1a2a858fa 100644 --- a/docs/api/event_reference/event_reference.md +++ b/docs/api/event_reference/event_reference.md @@ -19,7 +19,6 @@ For example, copying a content item is connected with two events: `BeforeCopyCon [[= cards([ "api/event_reference/ai_action_events", "api/event_reference/product_catalog_events", - "api/event_reference/collaboration_events", "api/event_reference/content_events", "api/event_reference/content_type_events", "api/event_reference/integrated_help_events", diff --git a/docs/api/event_reference/product_catalog_events.md b/docs/api/event_reference/product_catalog_events.md index db42b106c5a..7cb8121a113 100644 --- a/docs/api/event_reference/product_catalog_events.md +++ b/docs/api/event_reference/product_catalog_events.md @@ -2,6 +2,7 @@ description: Events that are triggered when working with products, prices, currencies, and attribute rendering. page_type: reference month_change: false +delete: true --- # Product catalog events @@ -88,7 +89,7 @@ month_change: false ## Attribute rendering -The following event is dispatched when the [`ibexa_format_product_attribute`](product_twig_functions.md#ibexa_format_product_attribute) Twig filter renders an attribute value. +The following event is dispatched when the `ibexa_format_product_attribute` Twig filter renders an attribute value. | Event | Dispatched by | Properties | |---|---|---| diff --git a/docs/content_management/collaborative_editing/collaborative_editing.md b/docs/content_management/collaborative_editing/collaborative_editing.md deleted file mode 100644 index c5f32e889c3..00000000000 --- a/docs/content_management/collaborative_editing/collaborative_editing.md +++ /dev/null @@ -1,35 +0,0 @@ ---- -description: Collaborative editing enables multiple users to work on the same content simultaneously. -page_type: landing_page -month_change: false ---- - -# Collaborative editing - -With Collaborative editing feature multiple users can work on the same content created in [[= product_name =]] simultaneously, streamlining the content creation and review process. - -Users can invite both internal and external collaborators to a session, giving them access for editing or previewing. - -Additionally, they can collaborate using a Real-time collaboration, an advanced part of the collaboration feature, to write and review content in a live mode thanks to CKEditor. -Real-time collaboration syncs changes instantly and shows user avatars and colored tags to indicate who is editing specific part of the Rich Text field. - -This feature also introduces new dashboard tabs for managing shared drafts and joining collaboration sessions easily. - -## Getting started - -[[= cards([ -"content_management/collaborative_editing/collaborative_editing_guide", -"content_management/collaborative_editing/configure_collaborative_editing", -("permissions/policies#collaborative-editing", "Policies", "Learn about the available Collaborative editing policies"), -("https://doc.ibexa.co/projects/userguide/en/6.0/content_management/collaborative_editing/", "Collaborative editing", "Learn about Collaborative editing feature and its capabilities."), -], columns=2) =]] - -## Development - -[[= cards([ -"content_management/collaborative_editing/collaborative_editing_api", -"api/event_reference/collaboration_events", -("https://doc.ibexa.co/en/6.0/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Collaboration-Sessions", "REST API Reference", "See the available endpoints for Collaborative editing"), -"search/collaboration_search_reference/collaboration_criteria", -"search/collaboration_search_reference/collaboration_sort_clauses", -], columns=4) =]] diff --git a/docs/content_management/collaborative_editing/collaborative_editing_api.md b/docs/content_management/collaborative_editing/collaborative_editing_api.md deleted file mode 100644 index f316ce2197b..00000000000 --- a/docs/content_management/collaborative_editing/collaborative_editing_api.md +++ /dev/null @@ -1,163 +0,0 @@ ---- -description: Use PHP API to manage invitations, sessions, and participants while using collaborative editing feature. -month_change: false ---- - -# Collaborative editing API - -[[= product_name =]]'s Collaborative editing API provides two services for managing sessions and invitations, which differ in function: - -- [`InvitationServiceInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-InvitationServiceInterface.html) is used to manage collaboration sessions invitations -- [`SessionServiceInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html) is used to manage collaboration sessions - -## Managing sessions - -### Create session - -You can create new collaboration session with [`SessionService::createSession()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_createSession): - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 48, 58, remove_indent=True) =]] -``` - -### Get session - -You can get an existing collaboration session with [`SessionService::getSession()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_getSession): - -- using given id - with [`SessionService::getSession()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_getSession) - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 61, 61, remove_indent=True) =]] -``` - -- using given token - with [`SessionService::getSessionByToken()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_getSessionByToken) - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 62, 62, remove_indent=True) =]] -``` - -### Find sessions - -You can find an existing session with [`SessionService::findSessions()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_findSessions) by passing a SessionQuery object: - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 65, 66, remove_indent=True) =]] -``` - -To learn more about the available search options, see [Search Criteria](collaboration_criteria.md) and [Sort Clauses](collaboration_sort_clauses.md) for Collaborative editing. - -### Update session - -You can update existing invitation with [`SessionService::updateSession()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_updateSession): - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 69, 72, remove_indent=True) =]] -``` - -### Delete session - -You can delete session with [`SessionService::deleteSession()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_deleteSession): - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 148, 148, remove_indent=True) =]] -``` - -## Managing participants - -### Add participant - -You can add participant to the collaboration session with [`SessionService::addParticipant()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_addParticipant): - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 81, 93, remove_indent=True) =]] -``` - -### Get and update participant - -You can update participant added to the collaboration session with [`SessionService::updateParticipant()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_updateParticipant): - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 96, 102, remove_indent=True) =]] -``` - -The example below updates participant's permissions to allow for editing of shared content, not only previewing. - -### Remove participant - -You can remove participant from the collaboration session with [`SessionService::removeParticipant()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_removeParticipant): - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 105, 105, remove_indent=True) =]] -``` - -### Check session owner - -You can check whether a user belongs to a collaboration session with [`SessionService::isSessionOwner()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceDecorator.html#method_isSessionOwner): - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 108, 111, remove_indent=True) =]] -``` - -If no user is provided, current user is used. - -### Check session participant - -You can check the participant of the collaboration session with [`SessionService::isSessionParticipant()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-SessionServiceInterface.html#method_isSessionParticipant): - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 114, 117, remove_indent=True) =]] -``` - -## Managing invitations - -### Manage invitation - -You can get an invitation with [`InvitationService::getInvitation()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-InvitationServiceInterface.html#method_getInvitation): - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 127, 127, remove_indent=True) =]] -``` - -### Create invitation - -You can create new invitation for the collaborative session using the [`InvitationService::createInvitation()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-InvitationServiceInterface.html#method_createInvitation) method: - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 130, 135, remove_indent=True) =]] -``` - -You can use it when auto-inviting participants is not enabled. - -### Update invitation - -You can update existing invitation with [`InvitationService::updateInvitation()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-InvitationServiceInterface.html#method_updateInvitation): - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 138, 141, remove_indent=True) =]] -``` - -### Delete invitation - -You can delete an invitation with [`InvitationService::deleteInvitation()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-InvitationServiceInterface.html#method_deleteInvitation): - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 144, 145, remove_indent=True) =]] -``` - -### Find invitations - -You can find an invitation with [`InvitationService::findInvitations()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-InvitationServiceInterface.html#method_findInvitations): - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 120, 125, remove_indent=True) =]] -``` - -To learn more about the available search options, see [Search Criteria](collaboration_criteria.md) and [Sort Clauses](collaboration_sort_clauses.md) for Collaborative editing. - -## Example API usage - -Below you can see an example of API usage for Collaborative editing: - -``` php -[[= include_code('code_samples/collaboration/src/Command/ManageSessionsCommand.php') =]] -``` diff --git a/docs/content_management/collaborative_editing/collaborative_editing_guide.md b/docs/content_management/collaborative_editing/collaborative_editing_guide.md deleted file mode 100644 index 379a901dc39..00000000000 --- a/docs/content_management/collaborative_editing/collaborative_editing_guide.md +++ /dev/null @@ -1,125 +0,0 @@ ---- -description: The Collaborative editing product guide provides a full description of the features and benefits that this module brings to the clients. -month_change: false ---- - -# Collaborative editing product guide - -## What is collaborative editing - -Collaborative editing is a feature that allows multiple users to work on the same simultaneously - whether to preview, review, or edit it. -By giving users access to preview the content before it's published, review and collaboration become much easier. -An additional option here is the ability to copy a link to the content item, which allows to share it through communication channels. -It improves collaboration with external users, such as third-party agencies. - -A more advanced part of the collaboration feature is the Real-time editing. -Users can edit and review content in real time, making teamwork faster, more efficient, and streamlining the content review process. -The system automatically tracks changes, allowing seamless collaboration within a single content item. - -## Availability - -Collaborative editing is available in all [[= product_name =]] editions. -To use Real-time editing feature, you must make arrangements with [[= product_name_base =]], and accept Terms and Conditions and Service Level Agreement in the Support Portal. - -## How does collaboration work - -### Content preview - -The basic option provided by the Collaboration feature, is the ability to preview content. -This allows the user to grant preview access to logged-in users, as well as share a public link with external users. - -You can share a direct link to the collaborative session using the **Copy link** button. -Link is copied to the clipboard and you can share it with the users through communication channels. - -### Collaboration session - -Collaborative editing allows to work together on the same content items. -This is done through a collaboration session. - -When you create a new draft of a content item you can invite other users to join a collaboration session, thanks to [CKEditor collaboration features](https://ckeditor.com/ckeditor-5/capabilities/collaboration-features/). -This action generates a unique session for that draft. -Collaboration session begins when first invited user accepts the invitation and joins the session. - -To start collaborative editing, you need to invite collaborators using the **Share** button. - -The owner of the draft can invite other users to join the session, both internal and external: - -- **Internal** - by searching their name or email address. These users can either edit the content item or preview it, depending on your choice. -- **External** - by providing their email address in the field. They can only preview the content item. - -Once they accept the invitation, they are able to join you in editing content item or reviewing it. - -Once the invitation is accepted, internal users can invite further users if their permissions allow for it. -To do so, they must be a part of an active collaboration session. -Gaining access to the draft through other methods, for example by [workflow](workflow.md), doesn't allow you to invite other users. - -![Collaborative editing - invitation](img/collaboration_invitation.png) - -You can change the users access or remove it at any time. - -After inviting users to a collaboration session, they receive a notification visible on the main dashboard or by email. - -Users can also join a collaboration session using the **Join** button: - -- available in new tabs of the **My content** block on the dashboard - *My shared drafts* and *Drafts shared with me* -- by accessing a content draft in the **Drafts** menu - -### Real-time editing - -Real-time editing is an advanced part of the Collaboration feature. -It works by syncing changes in real time, so everyone can see updates instantly. -Avatars of the users invited to collaboration session are visible at the top of the editing screen, also in distraction free mode. -While editing Rich Text fields, you can see colored tracking tags with user avatar thumbnails that indicate who is currently working on it. - -Everyone in the session can see each other's updates as they happen — no more switching between tools or waiting for feedback. -This makes content creation and review faster, more interactive, and much easier to manage as a team. - -Users can edit the content only if an administrator gives them the necessary permissions. -These permissions must be set before the user is invited to the session, otherwise the **Edit** access option is unavailable (grayed out). - -#### Editing content items - -Collaborative editing is enabled in [Rich Text](rich_text.md) fields. -Other fields are disabled and can be only edited by the owner of the content item. - -Collaboration is available for the following content types with Rich Text fields: - -- Article -- Folder -- Form -- Custom content types - -All changes made by collaborators are automatically saved when owner publishes or saves content. -Collaborators can leave collaboration session any time without losing data. - -## Benefits - -### Simplified content review process - -With preview access to the content draft, reviewers can jump in, check the content, and approve it more quickly. -This streamlines the entire review cycle and minimizes delays caused by version confusion or slow feedback. -Review can be done even by external users without a need to set up an account in [[= product_name =]]. - -### Cross-functional collaboration - -Collaborative editing allows teams to involve users from across the organization. -Their input can be integrated directly into the editing process, leading to more accurate and aligned content. - -### Enhanced teamwork - -All the users invited to the collaboration session can share ideas, make suggestions, and refine each other’s work in a shared environment, creating a stronger sense of team ownership and collaboration. - -### Real-time collaboration - -Collaborative editing enables multiple users to work on the same content item at the same time. -Everyone in the session can see changes as they happen, which shortens the feedback loop and allows multiple people to work in parallel. - -### Improved efficiency - -By allowing simultaneous editing, the content creation and review process becomes significantly faster. -Team members can work together and finalize content in a fraction of the time it would take with a standard workflow. - -### Seamless feedback loop - -Users can share and receive feedback instantly within the same editing interface. -This reduces the need to switch between apps or track changes manually. diff --git a/docs/content_management/collaborative_editing/configure_collaborative_editing.md b/docs/content_management/collaborative_editing/configure_collaborative_editing.md deleted file mode 100644 index b96b50a217b..00000000000 --- a/docs/content_management/collaborative_editing/configure_collaborative_editing.md +++ /dev/null @@ -1,175 +0,0 @@ ---- -description: Configure the Collaborative editing feature. -month_change: false ---- - -# Collaborative editing - -Collaborative editing feature is available in [[= product_name =]] starting with version v5.0.2 or higher, regardless of its edition. - -## Installation - -### Install Real-time editing feature package - -If you have an arrangements with [[= product_name_base =]] to use Real-time editing feature, you need to install following package: - -``` bash -composer require ibexa/fieldtype-richtext-rte -``` - -This command installs also `ibexa/ckeditor-premium` package and adds the new real-time editing functionality to the Rich Text field type. -It also modifies the permission system to account for the new functionality. - -### Modify the bundles file - -Then, if not using Symfony Flex, add the following code to the `config/bundles.php` file: - -``` php - ['all' => true], - Ibexa\Bundle\CkeditorPremium\IbexaCkeditorPremiumBundle::class => ['all' => true], -]; -``` - -## Configure Collaborative editing - -Before you can start Collaborative editing feature, you must enable it by following these instructions. - -### Security configuration - -After an installation process is finished, go to `config/packages/security.yaml` and make following changes: - -- uncomment following lines with `shared` user provider under the `providers` key: - -```yaml -security: - providers: - # ... - shared: - id: Ibexa\Collaboration\Security\User\ShareableLinkUserProvider -``` - -- uncomment following lines under the `ibexa_shareable_link` key: - -```yaml -security: - # ... - firewalls: - ibexa_shareable_link: - request_matcher: Ibexa\Collaboration\Security\RequestMatcher\ShareableLinkRequestMatcher - pattern: ^/ - provider: shared - stateless: true - user_checker: Ibexa\Core\MVC\Symfony\Security\UserChecker - custom_authenticators: - - Ibexa\Collaboration\Security\Authenticator\ShareableLinkAuthenticator -``` - -### Configuration - -You can configure Collaborative editing per [Repository](repository_configuration.md). - -Under `ibexa.repositories..collaboration` [configuration key](configuration.md#configuration-files), indicate the settings for collaboration: - -``` yaml -ibexa: - repositories: - : - collaboration: - participants: - allowed_types: - - internal - - external - auto_invite: - session: - public_link_enabled: -``` - -The following settings are available: - -- participants: - - `allowed_types` - defines allowed user types, values: `internal`, `external`, you can set one or both of the values - - `auto_invite` - determines whether invitations should be sent automatically when inviting someone to a session, default value: `true`, available values: `true`, `false` -- session: - - `public_link_enabled` - determines whether the public link is available, default value: `false`, available values: `true`, `false` - -#### `ibexa/share` configuration - -To share content model, you need to configure the `ibexa/share` package. -Under `ibexa.system` [configuration key](configuration.md#configuration-files), indicate the settings: - -``` yaml -ibexa: - system: - admin_group: - share: - content_type_groups: - - 'Content' - excluded_content_types: - - 'tag' - - 'landing_page' - - 'product_category_tag' -``` - -The following setting is available: - -- `content_type_groups` – defines groups of content types for which the **Share** button is displayed (it can still be disabled for specific content types within these groups by using the `excluded_content_types` setting) - -In the example configuration above, the **Share** button is displayed for any content that belongs to the `Content` group, except for `tag`, `landing_page`, and `product_category_tag` content types. - -You can also control which user content types can use the feature through the `ibexa.share.permission_check_context.content.user_content_type_identifiers` container parameter. -It accepts an array of content type identifiers and the default value is `['editor']`. - -You can now restart you application and start working with the Collaborative editing feature. -To add the real-time editing capabilities, continue with the instruction below. - -## Configure real-time editing - -You must have an arrangement with [[= product_name_base =]] before configuring the real-time editing. -If you haven't already, you must also accept the Terms of Service in the [Service portal](https://support.ibexa.co/). - -Only then you can create a new Collaborative editing environment. -To do it, log in to the service portal, go to your **Service Portal** and select **Create environment** (this requires the **Portal administrator** access level). - -Once the environment is created, you can proceed with the configuration in [[= product_name =]]. - -Use the generated values to set the `environment_id`, `environment_secret`, and `web_socket_url` for your [repositories](repository_configuration.md) as in the example below: - -``` yaml -ibexa: - repositories: - default: - fieldtype_richtext_rte: - environment_id: '%env(CKEDITOR_ENVIRONMENT_ID)%' - environment_secret: '%env(CKEDITOR_ENVIRONMENT_SECRET)%' - web_socket_url: '%env(CKEDITOR_WEB_SOCKET_URL)%' -``` - -Then, enable real-time editing for specific [SiteAccesses](siteaccess.md). -The following example enables it for the back office: - -``` yaml -ibexa: - system: - admin_group: - fieldtype_richtext_rte: - enabled: true -``` - -Finish the configuration by running: - -``` bash -composer run post-install-cmd -``` - -## Accepting new Terms of Service - -Real-Time Collaboration service is only available after accepting its Terms and Conditions. -Any new version of this document released by [[= product_name_base =]] must be accepted before the assigned deadline. - -The **Portal administrator** for your [Service portal](https://support.ibexa.co) can accept it in Service portal's service details. - -If not done in time, the Real-Time Collaboration service will be disabled until the latest Terms and Conditions are accepted. diff --git a/docs/content_management/collaborative_editing/img/collaboration_invitation.png b/docs/content_management/collaborative_editing/img/collaboration_invitation.png deleted file mode 100644 index cd294673f83..00000000000 Binary files a/docs/content_management/collaborative_editing/img/collaboration_invitation.png and /dev/null differ diff --git a/docs/content_management/collaborative_editing/img/share_button.png b/docs/content_management/collaborative_editing/img/share_button.png deleted file mode 100644 index 01ee37de01b..00000000000 Binary files a/docs/content_management/collaborative_editing/img/share_button.png and /dev/null differ diff --git a/docs/content_management/collaborative_editing/img/share_email.png b/docs/content_management/collaborative_editing/img/share_email.png deleted file mode 100644 index 4452a59db09..00000000000 Binary files a/docs/content_management/collaborative_editing/img/share_email.png and /dev/null differ diff --git a/docs/content_management/collaborative_editing/img/share_message.png b/docs/content_management/collaborative_editing/img/share_message.png deleted file mode 100644 index 7788d2d88de..00000000000 Binary files a/docs/content_management/collaborative_editing/img/share_message.png and /dev/null differ 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 47baf267e90..ad05e91a2d7 100644 --- a/docs/content_management/field_types/field_type_reference/dateandtimefield.md +++ b/docs/content_management/field_types/field_type_reference/dateandtimefield.md @@ -106,17 +106,3 @@ $dateAndTimeFieldCreateStruct = $contentTypeService->newFieldDefinitionCreateStr ); $dateAndTimeFieldCreateStruct->fieldSettings = $settings; ``` - -## Template rendering - -The template called by the [`ibexa_render_field()` Twig function](field_twig_functions.md#ibexa_render_field) while rendering a Date field has access to the following parameters: - -| Parameter | Type | Default | Description | -|-----------|----------|---------|-----------------------------------------------------------------------------------------------------------------------------------| -| `locale` | `string` | n/a | Internal parameter set by the system based on current request locale or if not set calculated based on the language of the field. | - -Example: - -``` html+twig -{{ ibexa_render_field(content, 'datetime') }} -``` 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 18633d89be4..057ece589e1 100644 --- a/docs/content_management/field_types/field_type_reference/datefield.md +++ b/docs/content_management/field_types/field_type_reference/datefield.md @@ -97,17 +97,3 @@ $settings = [ 'defaultType' => Type::DEFAULT_EMPTY, ]; ``` - -## Template rendering - -The template called by [the `ibexa_render_field()` Twig function](field_twig_functions.md#ibexa_render_field) while rendering a Date field has access to the following parameters: - -| Parameter | Type | Description | -|-----------|----------|------------------------------------------------------------------------------------------------------------------------------------| -| `locale` | `string` | Internal parameter set by the system based on current request locale or if not set, calculated based on the language of the field. | - -Example: - -``` html+twig -{{ ibexa_render_field(content, 'date') }} -``` 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 ad9ea718665..5e8d42b8db1 100644 --- a/docs/content_management/field_types/field_type_reference/imagefield.md +++ b/docs/content_management/field_types/field_type_reference/imagefield.md @@ -64,41 +64,6 @@ The Image field type supports one `FieldDefinition` option: the maximum size for To read more about handling images and image variations, see the [Images documentation](images.md). -### Template Rendering - -When displayed using `ibexa_render_field`, an Image field outputs this type of HTML: - -``` html+twig -Alternative text -``` - -The template called by the [`ibexa_render_field()` Twig function](field_twig_functions.md#ibexa_render_field) while rendering a Image field accepts the following parameters: - -| Parameter | Type | Default | Description | -|-----------|----------|--------------|----------------------------------------------------------------------------------------------------------------------------------------------------| -| `alias` | `string` | `"original"` | The image variation name, must be defined in your SiteAccess's `image_variations` settings. Defaults to "original", the originally uploaded image. | -| `width` | `int` | n/a | Optionally to specify a different width set on the image HTML tag then one from image variation. | -| `height` | `int` | n/a | Optionally to specify a different height set on the image HTML tag then one from image variation. | -| `class` | `string` | n/a | Optionally to specify a specific html class for use in custom JavaScript and/or CSS. | - -Example: - -``` html+twig -{{ ibexa_render_field( content, 'image', { 'parameters':{ 'alias': 'imagelarge', 'width': 400, 'height': 400 } } ) }} -``` - -The raw field can also be used if needed. Image variations for the field's content can be obtained using the `ibexa_image_alias` Twig helper: - -``` html+twig -{% set imageAlias = ibexa_image_alias( field, versionInfo, 'medium' ) %} -``` - -The variation's properties can be used to generate the required output: - -``` html+twig -{{ field.value.alternativeText }} -``` - ### With the REST API Image Fields within REST are exposed by the `application/vnd.ibexa.api.Content` media-type. @@ -142,82 +107,6 @@ Requested through REST, this resource generates the variation if it doesn't exis ``` -### From PHP code - -#### Getting an image variation - -The variation service, `ibexa.field_type.ibexa_image.variation_service`, can be used to generate/get variations for a field. -It expects a VersionInfo, the Image field, and the variation name as a string (`large`, `medium`, and more.): - -``` php -/** - * @var \Ibexa\Contracts\Core\Variation\VariationHandler $imageVariationHandler - * @var \Ibexa\Contracts\Core\Repository\Values\Content\Field $imageField - * @var \Ibexa\Contracts\Core\Repository\Values\Content\VersionInfo $versionInfo - */ -$variation = $imageVariationHandler->getVariation( - $imageField, - $versionInfo, - 'large' -); - -echo $variation->uri; -``` - -## Manipulating image content - -### From PHP - -As for any field type, there are several ways to input content to a field. -For an Image, the quickest is to call `setField()` on the ContentStruct: - -``` php -/** - * @var \Ibexa\Contracts\Core\Repository\ContentService $contentService - * @var \Ibexa\Contracts\Core\Repository\ContentTypeService $contentTypeService - */ -$createStruct = $contentService->newContentCreateStruct( - $contentTypeService->loadContentTypeByIdentifier('image'), - 'eng-GB' -); - -$createStruct->setField('image', '/tmp/image.png'); -``` - -To customize the Image's alternative texts, you must first get an `Image\Value` object, and set this property. -For that, you can use the `Image\Value::fromString()` method that accepts the path to a local file: - -``` php -/** - * @var \Ibexa\Contracts\Core\Repository\ContentService $contentService - * @var \Ibexa\Contracts\Core\Repository\ContentTypeService $contentTypeService - */ -$createStruct = $contentService->newContentCreateStruct( - $contentTypeService->loadContentTypeByIdentifier('image'), - 'eng-GB' -); - -$imageField = \Ibexa\Core\FieldType\Image\Value::fromString('/tmp/image.png'); -$imageField->alternativeText = 'My alternative text'; -$createStruct->setField('image', $imageField); -``` - -You can also provide a hash of `Image\Value` properties, either to `setField()`, or to the constructor: - -``` php -/** @var \Ibexa\Contracts\Core\Repository\Values\Content\ContentCreateStruct $createStruct */ -$imageValue = new \Ibexa\Core\FieldType\Image\Value( - [ - 'id' => '/tmp/image.png', - 'fileSize' => 37931, - 'fileName' => 'image.png', - 'alternativeText' => 'My alternative text', - ] -); - -$createStruct->setField('image', $imageValue); -``` - ### From REST The REST API expects field values to be provided in a hash-like structure. @@ -271,31 +160,3 @@ If you don't want to change the image itself, don't provide the `data` key. ``` -## Naming - -Each storage engine determines how image files are named. - -### Legacy Storage Engine naming - -Images are stored within the following directory structure: - -`///////--/` - -With the following values: - -- `VarDir` = `var` (default) -- `StorageDir` = `storage` (default) -- `ImagesStorageDir` = `images` (default) -- `FieldId` = `1480` -- `VersionNumber` = `1` -- `LanguageCode` = `eng-GB` - -Images are stored in `web/var/ezdemo_site/storage/images/0/8/4/1/1480-1-eng-GB`. - -Using the field ID digits in reverse order as the folder structure maximizes sharding of files through multiple folders on the filesystem. - -Within this folder, images are named like the uploaded file, suffixed with an underscore, and the variation name: - -- `MyImage.png` -- `MyImage_large.png` -- `MyImage_rss.png` 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 c804bbdf05c..a655f069c83 100644 --- a/docs/content_management/field_types/field_type_reference/maplocationfield.md +++ b/docs/content_management/field_types/field_type_reference/maplocationfield.md @@ -49,27 +49,3 @@ $MapLocationValue = new MapLocation\Value( ] ); ``` - -## Template rendering - -The template called by [the `ibexa_render_field()` Twig function](field_twig_functions.md#ibexa_render_field) while rendering a Map location field accepts the following parameters: - -| Parameter | Type | Default | Description | -|---------------|---------------------|-----------|--------------------------------------------------------------------------------------------------------------------------------| -| `draggable` | `boolean` | `true` | Whether to enable a draggable map. | -| `height` | `string` or `false` | `"200px"` | The height of the rendered map with its unit (for example "200px" or "20em"), set to false to not set any height style inline. | -| `scrollWheel` | `boolean` | `true` | Allows you to disable scroll wheel starting to zoom when mouse comes over the map as user scrolls down a page. | -| `showInfo` | `booolean` | `true` | Whether to show a latitude, longitude and the address outside of the map. | -| `showMap` | `boolean` | `true` | Whether to show the OpenStreetMap. | -| `width` | `string` or `false` | `"500px"` | The width of the rendered map with its unit (for example "500px" or "50em"), set to false to not set any width style inline. | -| `zoom` | `integer` | `13` | The initial zoom level on the map. | - -Example: - -``` html+twig -{{ ibexa_render_field(content, 'location', {'parameters': {'width': '100%', 'height': '330px', 'showMap': true, 'showInfo': false}}) }} -``` - -!!! note - - The option to automatically get user coordinates through the "Locate me" button is only available when the back office is served through the `https://` protocol. 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 5a16c7dabd5..4ac2170dac0 100644 --- a/docs/content_management/field_types/field_type_reference/measurementfield.md +++ b/docs/content_management/field_types/field_type_reference/measurementfield.md @@ -142,13 +142,3 @@ ibexa_measurement: !!! tip The `target_unit` must be an existing unit, for example meter, otherwise the conversion results in an error. - -## Template rendering - -The Measurement field is rendered with the [`ibexa_render_field()`](field_twig_functions.md#ibexa_render_field) Twig function. - -Example: - -``` html+twig -{{ ibexa_render_field(content, 'measurement') }} -``` diff --git a/docs/content_management/field_types/field_type_reference/pagefield.md b/docs/content_management/field_types/field_type_reference/pagefield.md index b8497dc0d2b..2e0a43e7331 100644 --- a/docs/content_management/field_types/field_type_reference/pagefield.md +++ b/docs/content_management/field_types/field_type_reference/pagefield.md @@ -52,7 +52,7 @@ The `renderAction` has the following parameters: | `versionNo` | Version number of the content item to render. | | `languageCode` | Language code of the content item to render. | -If your block needs to be dependent on query parameters like "page" and you already configured your custom block with a [`cacheable_query_params configuration`](page_blocks.md#block-configuration), pass [`ibexa_append_cacheable_query_params(block)`](page_twig_functions.md#ibexa_append_cacheable_query_params) as the third argument to the [`controller()` Twig function]([[= symfony_doc =]]/reference/twig_reference.html#controller) so that the HTTP cache can vary based on those query parameters. +If your block needs to be dependent on query parameters like "page" and you already configured your custom block with a [`cacheable_query_params configuration`](page_blocks.md#block-configuration), pass `ibexa_append_cacheable_query_params(block)` as the third argument to the [`controller()` Twig function]([[= symfony_doc =]]/reference/twig_reference.html#controller) so that the HTTP cache can vary based on those query parameters. In a fresh installation, the feature is only used by the back office's [Dashboard blocks]([[= user_doc =]]/getting_started/dashboard/dashboard_block_reference/): "My content" and "Review queue". diff --git a/docs/content_management/field_types/field_type_reference/taxonomyentryassignmentfield.md b/docs/content_management/field_types/field_type_reference/taxonomyentryassignmentfield.md index cef649394c3..9719f4fd457 100644 --- a/docs/content_management/field_types/field_type_reference/taxonomyentryassignmentfield.md +++ b/docs/content_management/field_types/field_type_reference/taxonomyentryassignmentfield.md @@ -90,6 +90,3 @@ The field type validates if all Taxonomy Entries from the value are assigned to |------------|----------|---------------|--------------------------------------| | `taxonomy` | `string` | `null` | Taxonomy from which entry is chosen. | -#### Template rendering - -The `TaxonomyEntryAssignment` field is rendered with the [`ibexa_render_field()`](field_twig_functions.md#ibexa_render_field) Twig function. diff --git a/docs/content_management/field_types/field_type_reference/taxonomyentryfield.md b/docs/content_management/field_types/field_type_reference/taxonomyentryfield.md index fe4ddd75136..ac1daa0e7b2 100644 --- a/docs/content_management/field_types/field_type_reference/taxonomyentryfield.md +++ b/docs/content_management/field_types/field_type_reference/taxonomyentryfield.md @@ -81,7 +81,3 @@ The field definition of this field type can be configured with the following opt |Name|Type|Default value|Description| |------|------|------|------| |`taxonomy`|`string`|`null`|Taxonomy from which you choose an entry.| - -#### Template rendering - -The `TaxonomyEntry field` is rendered with the [`ibexa_render_field()`](field_twig_functions.md#ibexa_render_field) Twig function. 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 83ab49bee90..bfcdaa79164 100644 --- a/docs/content_management/field_types/field_type_reference/timefield.md +++ b/docs/content_management/field_types/field_type_reference/timefield.md @@ -79,16 +79,3 @@ $settings = [ ]; ``` -## Template rendering - -The template called by [the `ibexa_render_field()` Twig function](field_twig_functions.md#ibexa_render_field) while rendering a Date field has access to the following parameters: - -| Parameter | Type | Default | Description | -|-----------|----------|---------|-------------------------------------------------------------------------------------------------------------------------------------| -| `locale` | `string` | n/a | Internal parameter set by the system based on current request locale or, if not set, calculated based on the language of the field. | - -Example: - -``` twig -{{ ibexa_render_field(content, 'time') }} -``` diff --git a/docs/content_management/field_types/form_and_template.md b/docs/content_management/field_types/form_and_template.md index d9acec0e912..9b79bd20ef7 100644 --- a/docs/content_management/field_types/form_and_template.md +++ b/docs/content_management/field_types/form_and_template.md @@ -1,5 +1,6 @@ --- description: Field type FormMappers allow field editing, while custom templates ensure the field can be rendered both in the back office and on site front. +delete: true --- # Form and template @@ -132,7 +133,7 @@ The `fieldType` key has to correspond to the name of your field type. ## Content view templates -To render the field in content view by using the [`ibexa_render_field()` Twig helper](field_twig_functions.md#ibexa_render_field), +To render the field in content view by using the `ibexa_render_field()` Twig helper, you need to define a template containing a block for the field. ``` html+twig diff --git a/docs/content_management/file_management/binary_and_media_download.md b/docs/content_management/file_management/binary_and_media_download.md index b36349f773b..872f0b710a3 100644 --- a/docs/content_management/file_management/binary_and_media_download.md +++ b/docs/content_management/file_management/binary_and_media_download.md @@ -5,33 +5,11 @@ description: Create route to to enable binary and media files download. # Binary and Media download You can restrict files stored in BinaryFile or Media fields to certain user roles. -These files aren't publicly downloadable from disk, and are instead served by Symfony, using a custom route that runs the necessary checks. +These files aren't publicly downloadable from disk, and are instead served by a route that runs the necessary checks. This route is automatically generated as the `url` property for those field values. -## `content/download` route - -You have to create a route using the `download` route name. - -It accepts optional query parameters: - -- `version`: The content version number that the file is downloaded for. Requires the `content / read` permission for a published version and additionally `content / versionread` permission for an unpublished version. If not specified, uses the published version. -- `inLanguage`: The language the file should be downloaded in. If not specified, the most prioritized language for the SiteAccess is used. - -The [`ibexa_render_field`](field_twig_functions.md#ibexa_render_field) Twig helper by default generates a working link. - -## Download link generation - -To generate a direct download link for a File field you have to create -a [RouteReference](urls_and_routes.md#routereference) with the `ibexa_route` helper, passing `content` and File field identifier as parameters. -Optional parameter `inLanguage` may be used to specify File content translation. - -```html+twig -{% set routeReference = ibexa_route( 'ibexa.content.download', {'content': content, 'fieldIdentifier': 'file', 'inLanguage': content.prioritizedFieldLanguageCode } ) %} -Download -``` - ## REST API: `uri` property -The `uri` property of Binary fields in REST contains a valid download URL, of the same format as the public PHP API, prefixed with the same host as the REST Request. +The `uri` property of Binary fields in REST contains a valid download URL, prefixed with the same host as the REST Request. For [more information about REST API see the documentation](rest_api_usage.md). diff --git a/docs/content_management/pages/create_custom_page_block.md b/docs/content_management/pages/create_custom_page_block.md index 816ab8552ee..61c51205899 100644 --- a/docs/content_management/pages/create_custom_page_block.md +++ b/docs/content_management/pages/create_custom_page_block.md @@ -140,7 +140,7 @@ For example, the following event subscriber loads the `event` content item and p [[= include_code('code_samples/page/custom_page_block/src/Event/Subscriber/BlockEmbedEventEventSubscriber.php') =]] ``` -The block view template could now use `ibexa_render(event_content, {'viewType': 'embed'})` instead of `render(controller('ibexa_content::viewAction', {'contentId': event, 'viewType': 'embed'}))`, other [content Twig functions](content_twig_functions.md), or [field Twig functions](field_twig_functions.md). +The block view template could now use `ibexa_render(event_content, {'viewType': 'embed'})` instead of `render(controller('ibexa_content::viewAction', {'contentId': event, 'viewType': 'embed'}))`, other content Twig functions, or field Twig functions. For more information, see [Block events](page_blocks.md#block-events). diff --git a/docs/content_management/pages/page_blocks.md b/docs/content_management/pages/page_blocks.md index ce12cd083a8..8fbafa83fe6 100644 --- a/docs/content_management/pages/page_blocks.md +++ b/docs/content_management/pages/page_blocks.md @@ -28,7 +28,7 @@ Each configured block has an identifier and the following settings: | `visible` | (Optional) Toggles the block's visibility in the Page Builder **Page blocks** toolbox. Remove the block from the layout before you publish another version of the page. | | `configuration_template` | (Optional) Template for the block settings modal. | | `attributes` | (Optional) List of [block attributes](page_block_attributes.md). | -| `cacheable_query_params` | (Optional) List of query parameters the block's [ESI HTTP cache](http_cache_configuration.md#when-to-use-esi) varies on.
For example, if the block is paginated using `?page=ℕ` from the page URL, add `page` to this list.
See [`ibexa_append_cacheable_query_params()`Twig function](page_twig_functions.md#ibexa_append_cacheable_query_params). | +| `cacheable_query_params` | (Optional) List of query parameters the block's [ESI HTTP cache](http_cache_configuration.md#when-to-use-esi) varies on.
For example, if the block is paginated using `?page=ℕ` from the page URL, add `page` to this list.
See the `ibexa_append_cacheable_query_params()` Twig function. | For example: diff --git a/docs/content_management/rich_text/extend_online_editor.md b/docs/content_management/rich_text/extend_online_editor.md index faa81e58629..9d0f5878449 100644 --- a/docs/content_management/rich_text/extend_online_editor.md +++ b/docs/content_management/rich_text/extend_online_editor.md @@ -1,6 +1,7 @@ --- description: Add custom tags, styles and data attributes to enrich the functionality of the Online Editor. Change Online Editor configuration. month_change: false +delete: true --- # Extend Online Editor @@ -40,7 +41,7 @@ Supported attribute types are: `choice` requires that you provide a list of options in the `choices` key. -Provide your own SVG icon, or choose one from the [built-in icons included in `all-icons.svg`](icon_twig_functions.md#icons-reference). +Provide your own SVG icon, or choose one from the built-in icons included in `all-icons.svg`. You must create your own file for the Twig template. Place the `factbox.html.twig` template in the `templates/themes//field_type/ibexa_richtext/custom_tags` directory: @@ -172,7 +173,7 @@ The configuration is: [[= include_file('code_samples/back_office/online_editor/custom_tags/linktag/config/packages/custom_tags.yaml') =]] ``` -Provide your own SVG icon, or choose one from the [built-in icons included in `all-icons.svg`](icon_twig_functions.md#icons-reference). +Provide your own SVG icon, or choose one from the built-in icons included in `all-icons.svg`. Use your own file for the Twig template. diff --git a/docs/content_management/url_management/url_management.md b/docs/content_management/url_management/url_management.md index 93e579be5f1..c649bef6734 100644 --- a/docs/content_management/url_management/url_management.md +++ b/docs/content_management/url_management/url_management.md @@ -37,8 +37,6 @@ The following protocols are currently supported: To enable automatic URL validation, set up a scheduled task to run the `ibexa:check-urls` command periodically. -For more information, see [Additional scheduled tasks and advanced usage](install_cohesivo.md#additional-scheduled-tasks-and-advanced-usage). - ### Configuration The configuration of external URLs validation is SiteAccess-aware and is stored under the `ibexa.system..url_checker` [configuration key](configuration.md#configuration-files), for example: diff --git a/docs/getting_started/getting_started.md b/docs/getting_started/getting_started.md index d8a7971da76..7bee7dbfb9b 100644 --- a/docs/getting_started/getting_started.md +++ b/docs/getting_started/getting_started.md @@ -1,13 +1,12 @@ --- -description: Get started working with Cohesivo by learning about the requirements and installing the platform. +description: Get started working with Cohesivo by taking your first steps in a new installation. page_type: landing_page --- # Getting started -To get started working with [[= product_name =]], see how you can get an installation and what first steps to take to familiarize yourself with the platform. +To get started working with [[= product_name =]], see what first steps to take to familiarize yourself with the platform. [[= cards([ - "getting_started/install_cohesivo", "getting_started/first_steps", ], columns=3) =]] diff --git a/docs/getting_started/img/how_paas_works.png b/docs/getting_started/img/how_paas_works.png deleted file mode 100644 index 13bec5b0edd..00000000000 Binary files a/docs/getting_started/img/how_paas_works.png and /dev/null differ diff --git a/docs/getting_started/img/ibexa_cloud-composer_auth.png b/docs/getting_started/img/ibexa_cloud-composer_auth.png deleted file mode 100644 index a65d3b5ccf6..00000000000 Binary files a/docs/getting_started/img/ibexa_cloud-composer_auth.png and /dev/null differ diff --git a/docs/getting_started/img/ibexa_cloud.png b/docs/getting_started/img/ibexa_cloud.png deleted file mode 100644 index 650a7e47cfb..00000000000 Binary files a/docs/getting_started/img/ibexa_cloud.png and /dev/null differ diff --git a/docs/getting_started/img/ibexa_cloud_dxp.png b/docs/getting_started/img/ibexa_cloud_dxp.png deleted file mode 100644 index d848f69891c..00000000000 Binary files a/docs/getting_started/img/ibexa_cloud_dxp.png and /dev/null differ diff --git a/docs/getting_started/img/ibexa_cloud_effort.png b/docs/getting_started/img/ibexa_cloud_effort.png deleted file mode 100644 index 25dabb60079..00000000000 Binary files a/docs/getting_started/img/ibexa_cloud_effort.png and /dev/null differ diff --git a/docs/getting_started/img/using_composer_auth_token.png b/docs/getting_started/img/using_composer_auth_token.png deleted file mode 100644 index 15f11f55351..00000000000 Binary files a/docs/getting_started/img/using_composer_auth_token.png and /dev/null differ diff --git a/docs/getting_started/install_cohesivo.md b/docs/getting_started/install_cohesivo.md deleted file mode 100644 index a3ae0f50af7..00000000000 --- a/docs/getting_started/install_cohesivo.md +++ /dev/null @@ -1,513 +0,0 @@ ---- -description: Install Cohesivo on a Linux system and prepare your installation for production. -month_change: false ---- - -# Install [[= product_name =]] - -!!! note - - Installation for production is only supported on Linux. - - To install [[= product_name =]] for development on macOS or Windows, see the [installation guide for macOS and Windows](install_on_mac_os_and_windows.md). - -!!! note "Installing [[= product_name_oss =]]" - - This installation guide shows in detail how to install [[= product_name =]] for users who have a subscription agreement with [[= product_name_base =]]. - If you want to install [[= product_name_oss =]], you don't need authentication tokens or an account on updates.ibexa.co, but must adapt the steps shown here to the product edition and the `ibexa/oss-skeleton` repository. - -## Prepare work environment - -To install [[= product_name =]] you need a stack with your operating system, MySQL or MariaDB, and PHP. - -You can install it by following your favorite tutorial, for example: [Install LAMP stack on Ubuntu](https://www.digitalocean.com/community/tutorials/how-to-install-lamp-stack-on-ubuntu). - -Additional requirements: - -- [Node.js](https://nodejs.org/en) and [Yarn](https://classic.yarnpkg.com/en/docs/install/) for asset management -- `git` for version control - -For production, you need to [configure an HTTP server](#configure-an-http-server), Apache or nginx (Apache is used as an example below). - -### Get Composer - -Install a recent stable version of Composer, the PHP command line dependency manager. -Use the package manager for your Linux distribution. -For example, on Ubuntu: - -``` bash -apt-get install composer -``` - -To verify that you have the most recent stable version of Composer, you can run: - -``` bash -composer -V -``` - -!!! tip "Install Composer locally" - - If you want to install Composer inside your project root directory only, follow the instructions for [installing Composer in the current directory](https://getcomposer.org/download/). - - If you do so, you must replace `composer` with `php -d memory_limit=-1 composer.phar` in all commands below. - -## Install [[= product_name =]] - -### Set up authentication tokens - -[[= product_name =]] subscribers have access to commercial packages at [updates.ibexa.co](https://updates.ibexa.co/). -The site is password-protected. -You must set up authentication tokens to access the site. - -Log in to your Service portal on [support.ibexa.co](https://support.ibexa.co/), go to your **Service Portal**, and look for the following on the **Maintenance and Support agreement details** screen: - -![Authentication token](using_composer_auth_token.png) - -1. Select **Create token** (this requires the **Portal administrator** access level). -2. Fill in a label describing the use of the token. -This allows you to revoke access later. -3. Save the password. **You won't be able to access it again**. - -!!! tip "Save the authentication token in `auth.json` to avoid re-typing it" - - Composer asks whether you want to save the token every time you perform an update. - If you prefer, you can decline and create an `auth.json` file globally in the [`COMPOSER_HOME`](https://getcomposer.org/doc/03-cli.md#composer-home) directory for machine-wide use: - - ``` bash - composer config --global http-basic.updates.ibexa.co - ``` - - To store your credentials per project, add the credentials to the `COMPOSER_AUTH` variable: - - ``` bash - export COMPOSER_AUTH='{"http-basic":{"updates.ibexa.co": {"username": "", "password": ""}}}' - ``` - - You then need to [add the contents of this variable to `auth.json`](#authentication-token). - -!!! tip "Different tokens for different projects on a single host" - - If you configure several projects on one machine, make sure that you set different tokens for each of the projects in their respective `auth.json` files. - -After this, when running Composer to get updates, you're asked for a username and password. -Use: - -- as username - your Installation key found on the **Maintenance and Support agreement details** page in the Service portal -- as password - the token password you retrieved in step 3 above - -!!! note "Authentication token validation delay" - - You can encounter some delay between creating the token and being able to use it in Composer. - It might take up to 15 minutes. - -!!! caution "Support agreement expiry" - - If your Support agreement expires, your authentication token(s) will no longer work. - They will become active again if the agreement is renewed, but this process may take up to 24 hours. - _(If the agreement is renewed before the expiry date, there will be no disruption of service.)_ - -If Composer asks for your GitHub token, you must log in to your GitHub account and generate a new token (edit your profile and go to **Developer settings** > **Personal access tokens** > **Generate new token** with default settings). -This operation is performed only once, when you install [[= product_name =]] for the first time. - -### Create project - -To use Composer to instantly create a project in the current folder with all the dependencies, run the following command: - -=== "[[= product_name_headless =]]" - - ``` bash - composer create-project ibexa/headless-skeleton . - ``` - -=== "[[= product_name_exp =]]" - - ``` bash - composer create-project ibexa/experience-skeleton . - ``` - -??? note "Using PHP versions other than 8.3" - - If you aren't using PHP 8.3 but are using PHP 8.4, PHP 8.2, or any older version, use a different set of commands: - - === "[[= product_name_headless =]]" - - ``` bash - composer create-project ibexa/headless-skeleton --no-install . - composer update - ``` - - === "[[= product_name_exp =]]" - - ``` bash - composer create-project ibexa/experience-skeleton --no-install . - composer update - ``` - -!!! tip "Authentication token" - - If you added credentials to the `COMPOSER_AUTH` variable, at this point add this variable to `auth.json` (for example, by running `echo $COMPOSER_AUTH > auth.json`). - -!!! caution "Security advisories" - - If you encounter security advisories that prevent the install, see [Package security advisories](security_advisories.md#package-security-advisories). - -!!! tip "Version constraint" - - You can set [different version constraints](https://getcomposer.org/doc/articles/versions.md), for example, specific tag (`[[= latest_tag_5_0 =]]`), version range (`~5.0.1`), or stability (`^5.0@rc`): - - ``` bash - composer create-project ibexa/experience-skeleton:[[= latest_tag_5_0 =]] . - ``` - -#### Add project to version control - -It's recommended to add your project to version control. -Initiate your project repository: - -``` bash -git init; git add . > /dev/null; git commit -m "init" > /dev/null -``` - -### Change installation parameters - -At this point, configure your database via the `DATABASE_URL` in the `.env` file, depending on the database you're using: - -`DATABASE_URL=mysql://user:password@host:port/database_name`. - -or - -`DATABASE_URL=postgresql://user:password@host:port/database_name`. - -!!! tip "Encoding database password" - - The password entered in `DATABASE_URL` must either be URL encoded, or not contain any special characters that would require URL encoding. - - For more information, see [Encoding database password](troubleshooting.md#encoding-database-password). - -### Add entropy to improve cryptographic randomness - -Choose a [secret]([[= symfony_doc =]]/reference/configuration/framework.html#secret) and provide it in the `APP_SECRET` parameter in `.env`. -It should be a random string, made up of at least 32 characters, numbers, and symbols. -It's used by Symfony when generating [CSRF tokens]([[= symfony_doc =]]/security/csrf.html), [encrypting cookies]([[= symfony_doc =]]/security/remember_me.html), and for creating signed URIs when using [ESI (Edge Side Includes)]([[= symfony_doc =]]/http_cache/esi.html). - -!!! caution - - The app secret is crucial to the security of your installation. - Be careful about how you generate it, and how you store it. - Here's one way to generate a secure random string of 64 characters as your secret, from the command line: - - ``` bash - php -r "print bin2hex(random_bytes(32));" - ``` - - Don't commit the secret to version control systems, or share it with anyone who doesn't strictly need it. - If you have any suspicion that the secret may have been exposed, replace it with a new one. - The same goes for other secrets, like database password, Varnish invalidate token, JWT passphrase, and more. - - After changing the app secret, make sure that you clear the application cache and log out all users. - - For more information, see [Symfony documentation]([[= symfony_doc =]]/reference/configuration/framework.html#secret). - - It's recommended that you store the database credentials in your `.env.local` file, and not commit that file to the Version Control System. - -In `DATABASE_VERSION`, you can also configure the database server version. -For the expected version format, see [Automatic platform version detection](https://www.doctrine-project.org/projects/doctrine-dbal/en/3.10/reference/configuration.html#automatic-platform-version-detection). - -!!! tip "Using PostgreSQL" - - If you want an installation with PostgreSQL instead of MySQL or MariaDB, refer to [Using PostgreSQL](databases.md#using-postgresql). - -#### Install and configure a search engine - -You may choose to replace the [default search engine](legacy_search_overview.md) with either Solr or Elasticsearch. - -=== "Solr" - - Follow [How to set up Solr search engine](install_solr.md) to install Solr. - -=== "Elasticsearch" - - Do the following steps to enable Elasticsearch: - - 1. [Download and install Elasticsearch](install_elasticsearch.md) - 2. [Verify that the Elasticsearch instance is up](install_elasticsearch.md#verify-the-instance) - 3. [Set the default search engine](install_elasticsearch.md#set-the-default-search-engine) - 4. [Configure the search engine](configure_elasticsearch.md) - 5. [Push the templates](install_elasticsearch.md#push-the-templates) - - Configure the following parameter in the `.env` file: - - ``` - ELASTICSEARCH_DSN=http://localhost:9200 - ``` - -### Create a database - -Install [[= product_name =]] and create a database with: - -=== "PHP 8.4" - - Deprecation warnings must be suppressed when using PHP 8.4, otherwise the installation fails due to errors such as "headers have already been sent". - - ``` bash - php -d error_reporting=`php -r 'echo E_ALL & ~E_DEPRECATED;'` bin/console ibexa:install - php bin/console ibexa:graphql:generate-schema - ``` - -=== "PHP 8.3 and older" - - ``` bash - php bin/console ibexa:install - ``` - -Before executing the command, make sure that the database user has sufficient permissions. - -The installer will prompt you for a new password for the `admin` user. -Make sure to use a [strong password](security_checklist.md#strong-passwords) meeting all the default [password rules](passwords.md#password-rules): - -- a minimum length of 10 characters -- at least one upper case letter -- at least one number - -!!! note - - In scenarios where entering the new password isn't possible, for example, in automated deployments and Continuous Integration environments, use the `--no-interaction` option to skip changing the password and keep the default one, `publish`: - - ``` bash - php bin/console ibexa:install --no-interaction - ``` - - If doing so, [modify the password for the `admin` user](update_basic_user_data.md#change-password) before [going live with your project](security_checklist.md). - -### Run post-installation script - -Run the post-installation script with the following command: - -``` bash -composer run post-install-cmd -``` - -## Use PHP's built-in server - -For development you can use the built-in PHP server. - -```bash -php -S 127.0.0.1:8000 -t public -``` - -Your PHP web server is accessible at `http://127.0.0.1:8000`. - -You can also use [Symfony CLI](https://symfony.com/download): - -```bash -symfony serve -``` - -## Prepare installation for development - -Consider adding the Symfony DebugBundle, which prevents running out of memory when dumping objects with circular references. -The DebugBundle contains the [VarDumper]([[= symfony_doc =]]/components/var_dumper.html) and [its Twig integration]([[= symfony_doc =]]/components/var_dumper.html#debugbundle-and-twig-integration). - -``` bash -composer require --dev symfony/debug-bundle -``` - -For detailed information about request treatment, you can also install [Symfony Profiler]([[= symfony_doc =]]/profiler.html): - -``` bash -composer require --dev symfony/profiler-pack -``` - -To get both features in one go, use: - -``` bash -composer require --dev symfony/debug-pack -``` - -## Configure an HTTP server - -To use [[= product_name =]] with an HTTP server, you need to [set up directory permissions](#set-up-permissions) and [prepare a virtual host](#set-up-virtual-host). - -### Set up permissions - -For development needs, the web user can be made the owner of all your files (for example, with the `www-data` web user): - -``` bash -chown -R www-data:www-data -``` - -Directories `var` and `public/var` must be writable by CLI and the web server user. -Future files and directories created by these two users need to inherit those permissions. - -!!! caution - - For security reasons, in production, the web server mustn't have write access to any directory other than `var`. - Skip the step above and follow the link below for production needs instead. - - You must also make sure that the web server cannot interpret the files in the `var` directory through PHP. - To do so, follow the instructions on [setting up a virtual host below](#set-up-virtual-host). - -To set up permissions for production, it's recommended to use an ACL (Access Control List). -See [Setting up or Fixing File Permissions]([[= symfony_doc =]]/setup/file_permissions.html) in Symfony documentation for information on how to do it on different systems. - -### Set up virtual host - -Prepare a [virtual host configuration](https://en.wikipedia.org/wiki/Virtual_hosting) for your site. - -=== "Apache" - - You can copy [the example vhost file](https://raw.githubusercontent.com/ibexa/post-install/5.0/resources/templates/apache2/vhost.template) - to `/etc/apache2/sites-available` as a `.conf` file and modify it to fit your project. - - Specify `//public` as the `DocumentRoot` and `Directory`, or ensure `BASEDIR` is set in the environment. - Uncomment the line that starts with `#if [APP_ENV]` and set the value to `prod` or `dev`, depending on the environment that you're configuring, or ensure `APP_ENV` is set in the environment. - - ``` - SetEnvIf Request_URI ".*" APP_ENV=prod - ``` - - When the virtual host file is ready, enable the virtual host and disable the default: - - ``` bash - a2ensite ibexa - a2dissite 000-default.conf - ``` - - Finally, restart the Apache server. - The command may vary depending on your Linux distribution. - For example, on Ubuntu, use: - - ``` bash - service apache2 restart - ``` - -=== "nginx" - - You can use [this example vhost file](https://raw.githubusercontent.com/ibexa/post-install/6.0/resources/templates/nginx/vhost.template) and modify it to fit your project. You also need the `ibexa_params.d` files, which should reside in a subdirectory below the main file, [as shown here](https://github.com/ibexa/post-install/tree/6.0/resources/templates/nginx). - - Specify `//public` as the `root`, or ensure `BASEDIR` is set in the environment. - Ensure `APP_ENV` is set to `prod` or `dev` in the environment, depending on which environment you're configuring, and uncomment the line that starts with `#if [APP_ENV]`. - - When the virtual host file is ready, enable the virtual host and disable the default. - Finally, restart the nginx server. - The command may vary depending on your Linux distribution. - -Open your project in the browser by visiting the domain address, for example `http://localhost:8080`. -You should see the welcome page. - -## Post-installation steps - -!!! note "Security checklist" - - See the [Security checklist](security_checklist.md) for a list of security-related issues you should take care of before going live with a project. - -### Schedule tasks - -The `ibexa:cron:run` command executes all service commands tagged with `ibexa.cron.job`. -Use [`cron`](https://en.wikipedia.org/wiki/Cron) to run it every minute. - -The following example creates a temporary crontab entry file and appends it to the existing crontab for the web server user (`www-data`): - -```bash -echo '* * * * * cd ; php bin/console ibexa:cron:run --quiet --env=prod' > ibexa_cron.txt -crontab -u www-data -l | cat - ibexa_cron.txt | crontab -u www-data - -rm ibexa_cron.txt -``` - -For [Scheduled content publications]([[= user_doc =]]/content_management/schedule_publishing/), the `ibexa:scheduled:run` command is tagged with `ibexa.cron.job` and runs every minute (`* * * * *`) by default. -You can redefine this service to change the frequency. - -The [[[= product_name_cdp =]] data export schedule](/raptor_cdp/raptor_cdp_data_export_schedule.md) dynamically creates services tagged with `ibexa.cron.job`. - -You can add other commands to scheduled tasks in one of two ways: - -- add their own scheduling line to the crontab -- tag their service with `ibexa.cron.job` - -#### Additional scheduled tasks and advanced usage - -Here are some additional tasks that require scheduling: - -- To use the [Link manager](url_management.md), schedule the URL validation command `ibexa:check-urls`. -- To control the [recent activity log size](recent_activity.md#log-retention), schedule the `ibexa:activity-log:truncate` command. -The following example schedules these commands separately: - -- `ibexa:cron:run` [every minute](https://crontab.guru/every-minute) -- `ibexa:check-urls` [every week](https://crontab.guru/weekly) on Sunday at midnight -- `ibexa:activity-log:truncate` [every hour](https://crontab.guru/every-hour) at minute 0 - -This shell script creates a temporary file with the job lines, then replaces the existing crontab for the web server user: - -```bash -echo '* * * * * cd ; php bin/console ibexa:cron:run --quiet --env=prod' > ibexa_cron.txt -echo '0 0 * * 0 cd ; php bin/console ibexa:check-urls --quiet --env=prod' >> ibexa_cron.txt -echo '0 * * * * cd ; php bin/console ibexa:activity-log:truncate --quiet --env=prod' >> ibexa_cron.txt -crontab -u www-data ibexa_cron.txt -rm ibexa_cron.txt -``` - -The following alternative example uses service tagging to schedule these commands. -It also changes the `ibexa:scheduled:run` frequency to every five minutes. - -Add the following to `config/services.yaml`: - -```yaml -services: - #… - - Ibexa\Bundle\Scheduler\Command\ScheduledRunCommand: - tags: - - { name: ibexa.cron.job, schedule: '*/5 * * * *' } - - Ibexa\Bundle\Core\Command\CheckURLsCommand: - arguments: - $urlChecker: '@Ibexa\Bundle\Core\URLChecker\URLChecker' - tags: - - { name: ibexa.cron.job, schedule: '0 0 * * 0', priority: -1 } - - Ibexa\Bundle\ActivityLog\Command\TruncateLogCommand: - tags: - - { name: ibexa.cron.job, schedule: '0 * * * *', priority: -2 } -``` - -The `ibexa.cron.job` tag accepts the following options: - -- `schedule`: A cron expression representing the period or interval. -- `options`: Arguments passed to the command. - `--env` and `--siteaccess` are inherited from `ibexa:cron:run`. -- `category`: Commands can be grouped into categories, and a category can be passed with `ibexa:cron:run --category=`. - By default, the `default` category is used. - For example, it can be used to set different jobs and `schedule` for different [SiteAccesses](multisite_configuration.md). -- `priority`: Defines the order in which `ibexa:cron:run` executes commands that are due. - -Run the following command to list all command services scheduled with the ibexa.cron.job tag: - -```bash -php bin/console debug:container --tag=ibexa.cron.job -``` - -The following example shows how to set up a different schedule for a specific SiteAccess with a category. - -This command schedules `ibexa:cron:run` for the SiteAccess `minor_website` and the job category `minor_website`: - -```bash -(crontab -u www-data -l; echo '* * * * * cd ; php bin/console ibexa:cron:run --quiet --env=prod --siteaccess=minor_website --category=minor_website') | crontab -u www-data - -``` - -Then, run `ibexa:scheduled:run` on this SiteAccess at a different frequency from the default: - -```yaml -services: - - Ibexa\Bundle\Scheduler\Command\ScheduledRunCommand: - tags: - - { name: ibexa.cron.job, schedule: '* * * * *' } - - { name: ibexa.cron.job, schedule: '*/5 * * * *', category: 'minor_website' } -``` - -### Enable background tasks - -Enable Ibexa Messenger for background tasks. -Make sure that its [worker starts with the server](background_tasks.md#start-worker). - -Processes that use [[= product_name_base =]] Messenger include, for example, [[[= product_name_cdp =]] data export](/raptor_cdp/raptor_cdp_activation/raptor_cdp_data_export.md#ibexa-messenger-support-for-large-batches-of-data). diff --git a/docs/getting_started/install_on_mac_os_and_windows.md b/docs/getting_started/install_on_mac_os_and_windows.md deleted file mode 100644 index ea89f0a07b8..00000000000 --- a/docs/getting_started/install_on_mac_os_and_windows.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -description: Install Cohesivo on a macOS or Windows system to use it for development. ---- - -# Install [[= product_name =]] on macOS or Windows - -This page explains how to install [[= product_name =]] on macOS or Windows. - -!!! caution - - This procedure is **for development purposes only**. - Installing [[= product_name =]] for production purposes is supported only on Linux. - - For information about installing the product on Linux, see [Install [[= product_name =]]](install_cohesivo.md). - -## 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. -If you want to use a web server, you need to install it as well: - -- For Windows: Apache -- For macOS: Apache/nginx - -The instructions below assume that you're using Apache. - -??? note "Windows" - - Locate the `php.ini` file and open it in a text editor. - Provide the missing values to relevant parameters, for example, `date.timezone` and `memory_limit`: - - ``` bash - date.timezone = "Europe/Warsaw" - memory_limit = 4G - ``` - - Uncomment or add extensions relevant to your project, for example, `opcache` extension for PHP (recommended, not required): - - ``` bash - zend_extension=opcache.so - ``` - - You can install Apache as a Windows service by running the following command in CMD as administrator: - - ``` bash - httpd.exe -k -install - ``` - - You can then start it with: - - ``` bash - httpd.exe -k start - ``` - - Edit Apache configuration file `httpd.conf`. - Replace placeholder values with corresponding values from your project, for example, `ServerName localhost:80`. - Uncomment relevant modules, for example: - - ``` bash - LoadModule rewrite_module modules/mod_rewrite.so - LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so - ``` - -## Get Composer - -=== "macOS" - - Install Composer using a package manager, for example, [Homebrew](https://brew.sh/). - -=== "Windows" - - Download and run [Composer-Setup.exe](https://getcomposer.org/Composer-Setup.exe) - it installs the latest Composer version. - -## Install [[= product_name =]] - -At this point the installation procedure is the same as when installing on Linux. -Follow the steps from the main [Install [[= product_name =]]](install_cohesivo.md#install-cohesivo) page. - -## Set up virtual host - -Prepare a [virtual host configuration](https://httpd.apache.org/docs/2.4/vhosts/) for your site in your Apache directory: - -- For Windows: `\conf\vhosts` -- For macOS: `/private/etc/apache2/users/` - -Then restart the Apache server. - -## Set up permissions - -Directories `var` and `web/var` need to be writable by CLI and web server user. -Future files and directories created by these two users need to inherit those permissions. - -For more information, see [Setting up or Fixing File Permissions]([[= symfony_doc =]]/setup/file_permissions.html). - -!!! note "Security checklist" - - See the [Security checklist](security_checklist.md) for a list of security-related issues - that you should take care of before going live with a project. diff --git a/docs/getting_started/install_with_ddev.md b/docs/getting_started/install_with_ddev.md deleted file mode 100644 index 274ac3e6a4a..00000000000 --- a/docs/getting_started/install_with_ddev.md +++ /dev/null @@ -1,488 +0,0 @@ ---- -description: Install Cohesivo with Docker and DDEV to use it for development. -month_change: false ---- - -# Install with DDEV - -This guide provides a step-by-step walkthrough of installing [[= product_name =]] by using [DDEV](https://ddev.com/). -DDEV is an open-source tool that simplifies the process of setting up local PHP development environments. - -## Requirements - -Before you start the installation, ensure that you have the following software installed: - -- [Docker](https://docs.docker.com/get-started/get-docker/) -- [DDEV](https://docs.ddev.com/en/stable/users/install/ddev-installation/) - -## Installation - -### 1. Create a DDEV project directory - -Start by creating a new directory for your DDEV project by using the following command, where `` stands for your desired directory name: - -```bash -mkdir my-ddev-project && cd my-ddev-project -``` - -### 2. Configure DDEV - -#### Configure PHP version and document root - -Next, configure your DDEV environment with the following command: - -```bash -ddev config --project-type=php --php-version 8.4 --nodejs-version 22 --docroot=public -``` - -This command sets the project type to PHP, the PHP version to 8.4, the document root to `public` directory, and creates the document root if it doesn't exist. - -#### Use another database type (optional) - -By default, DDEV uses MariaDB. - -To use PostgreSQL instead, run the following command: - -```bash -ddev config --database=postgres:14 -``` - -To use MySQL instead, run the following command: - -```bash -ddev config --database=mysql:8.4 -``` - -You can also use other versions of MariaDB, MySQL or PostgreSQL. -See [DDEV database types documentation](https://docs.ddev.com/en/stable/users/extend/database-types/) for available version ranges. - -#### Configure database connection - -Now, configure the database connection for your [[= product_name =]] project. -Depending on your database of choice (MySQL or PostgreSQL), use the appropriate command below. - -!!! note - - Those commands set a `DATABASE_URL` environment variable inside the container which overrides [the variable from `.env`](install_cohesivo.md#change-installation-parameters). - - To use `.env.local` file instead of server-level environment variables, see [Using dotenv](#using-dotenv). - -=== "MariaDB / MySQL" - - ```bash - ddev config --web-environment-add DATABASE_URL=mysql://db:db@db:3306/db - ``` - - To ensure consistent character set when performing operations both in Symfony context and with the `ddev mysql` client add the following database server configuration. - - Create the file `.ddev/mysql/utf8mb4.cnf` with the following content: - - ```cfg - [mysqld] - character-set-server = utf8mb4 - collation-server = utf8mb4_unicode_520_ci - ``` - -=== "PostgreSQL" - - ```bash - ddev config --web-environment-add DATABASE_URL=postgresql://db:db@db:5432/db - ``` - -#### Configure mailer (optional) - -You can configure [Symfony Mailer]([[= symfony_doc =]]/mailer.html) to use the [integrated mail catcher Mailpit](https://docs.ddev.com/en/stable/users/usage/developer-tools/#email-capture-and-review-mailpit): - -```bash -ddev config --web-environment-add MAILER_DSN=smtp://localhost:1025 -``` - -#### Configure scheduled tasks (optional) - -You can [schedule tasks](install_cohesivo.md#schedule-tasks) using [DDEV Cron add-on](https://addons.ddev.com/addons/ddev/ddev-cron). - -```bash -ddev add-on get ddev/ddev-cron -basedir='/var/www/html' -echo "* * * * * cd $basedir && php bin/console ibexa:cron:run --quiet --env=prod" >> .ddev/web-build/ibexa.cron -ddev restart -``` - -For more schedulable tasks and ways to schedule them, see [Additional scheduled tasks and advanced usage](install_cohesivo.md#additional-scheduled-tasks-and-advanced-usage). - -You can run the following command to check Cron: - -```bash -ddev exec crontab -l -``` - -#### Configure background tasks (optional) - -You can launch [Ibexa Messenger](background_tasks.md) on DDEV project start. -Create or edit a DDEV config file, for example `.ddev/config.hooks.yaml`, and add the following [hook](https://docs.ddev.com/en/stable/users/configuration/hooks/): - -```yaml -hooks: - post-start: - - exec-host: ddev exec "php bin/console messenger:consume ibexa.messenger.transport --bus=ibexa.messenger.bus --siteaccess=admin --silent" & -``` - -You can change the verbosity and redirect the output if you want to log into a file: - -```yaml -hooks: - post-start: - - exec-host: ddev exec "php bin/console messenger:consume ibexa.messenger.transport --bus=ibexa.messenger.bus --siteaccess=admin -vv > var/log/messenger.log 2>&1" & -``` - -#### Enable Mutagen (optional) - -If you're using macOS or Windows, you might want to enable [Mutagen](https://docs.ddev.com/en/stable/users/install/performance/#mutagen) to improve performance. -You can do this by running the following command: - -```bash -ddev config --performance-mode=mutagen -``` - -See [DDEV performance documentation](https://docs.ddev.com/en/stable/users/install/performance/) for more. - -#### Change port mapping (optional) - -By default, DDEV uses ports 80 and 443. -You can [set different ports](https://docs.ddev.com/en/stable/users/usage/troubleshooting/#method-2-fix-port-conflicts-by-configuring-your-project-to-use-different-ports) with a command like the following: - -```bash -ddev config --router-http-port=8080 --router-https-port=8443 -``` - -### 3. Start DDEV - -Proceed by starting your DDEV environment with the following command: - -```bash -ddev start -``` - -!!! tip - - If you forgot some part of configuration, you can set it by using `ddev config` later, but afterwards you have to restart DDEV with `ddev restart`. - -### 4. Composer authentication - -Next, you need to [set up authentication tokens](install_cohesivo.md#set-up-authentication-tokens) by modifying the Composer configuration. -You must run the following command **after** executing `ddev start`, because the command runs inside the container. -Replace `` and `` with your actual installation key and token password. - -```bash -ddev composer config --global http-basic.updates.ibexa.co -``` - -This authentication doesn't persist if the project is restarted (by `ddev restart` or `ddev composer create-project`). -You can back up the authentication file (`auth.json`) by using the following command: - -```bash -ddev exec "mkdir -p .ddev/homeadditions/.composer; cp ~/.composer/auth.json .ddev/homeadditions/.composer" -``` - -If you want to reuse an existing `auth.json` file, see [Using `auth.json`](#using-authjson). - -### 5. Create project - -Once DDEV is running, use Composer to create a new [[= product_name =]] project. -Remember to replace `` and `` with your desired edition and version. - -```bash -ddev composer create-project ibexa/-skeleton: -``` - -!!! tip - - Consider adding the Symfony Debug bundle which fixes memory outage when dumping objects with circular references. - `ddev composer require --dev symfony/debug-bundle` - -### 6. Install the platform and its database - -Once you've made this change, you can proceed to install [[= product_name =]]. - -```bash -ddev php bin/console ibexa:install -``` - -The installer will prompt you for a new password for the `admin` user. -The password must meet the following rules: - -- a minimum length of 10 characters -- at least one upper case letter -- at least one number - -You may use the `--no-interaction` option to skip the password question and keep the default `publish`. - -### 7. Open browser - -Once the above steps are completed, open the [[= product_name =]]'s webpage by running the `ddev launch` command. - -!!! tip - - You can also see the project URL in the `ddev start` output. - -### 8. Start using [[= product_name =]] - -You can now start using [[= product_name =]] and implement your own website on the platform. - -You can edit the configuration and code in the DDEV project directory. -You can use commands listed in the documentation by prefixing them with `ddev exec` or by opening a terminal inside the container by using `ddev ssh`. -For example, if a guideline invites you to run `php bin/console cache:clear`, you can do it in the DDEV container in one of the following ways: - -- run `ddev php bin/console cache:clear` -- enter `ddev ssh` and run `php bin/console cache:clear` after the new prompt - -## Other options for configuration - -DDEV offers several ways to get the same result, offering different levels of flexibility or adaptability to your development environment. - -!!! tip - - Learn more about the [DDEV commands](https://docs.ddev.com/en/stable/users/usage/commands/): - - - run [`ddev --help`](https://docs.ddev.com/en/stable/users/usage/cli/#using-the-ddev-command) to list all commands - - run [`ddev help `](https://docs.ddev.com/en/stable/users/usage/commands/#help) to get usage details about a specific command - - Learn more about DDEV configuration from [`ddev config` command documentation](https://docs.ddev.com/en/stable/users/usage/commands/#config) and [advanced configuration files documentation](https://docs.ddev.com/en/stable/users/configuration/config/). - -### Using `auth.json` - -An `auth.json` file can be used for one project, or globally for all projects, with the [DDEV `homeaddition` feature](https://docs.ddev.com/en/stable/users/extend/in-container-configuration/). - -For example, you can copy an `auth.json` file to a DDEV project: `cp /auth.json .ddev/homeadditions/.composer` - -Alternatively, the Composer global `auth.json` can be the DDEV global `auth.json` with the help of a symbolic link: `mkdir -p ~/.ddev/homeadditions/.composer && ln -s ~/.composer/auth.json ~/.ddev/homeadditions/.composer/auth.json` - -If the DDEV project has already been started, you need to run `ddev restart`. - -The use of an `auth.json` file replaces step [4. Composer authentication](#4-composer-authentication). - -### Using Dotenv - -Instead of using environment variables inside the container, a [`.env.local`]([[= symfony_doc =]]/configuration.html#overriding-environment-values-via-env-local) file can be added to the project. - -The following example shows the use of `.env.local` with database configuration: - -- Skip step [2. Configure DDEV / Configure database connection](#configure-database-connection). -- Modify step [5. Create [[= product_name =]] project](#5-create-project) to insert the database setting: - - ```bash - ddev composer create-project ibexa/experience-skeleton --no-install; - echo "DATABASE_URL=mysql://db:db@db:3306/db" >> .env.local; - ddev composer install; - ``` - -!!! note "Precedence" - - For the same variable, its server level environment value overrides its application level `.env` value. - To switch a variable from `ddev config --web-environment-add` command to `.env.local` file, you have to do either of the following: - - - remove it from under the `web_environment:` key in `.ddev/config.yaml` file then restart the project - - rebuild the project from scratch - -### Nginx Server Blocks - -Even if [[= product_name =]] works with the default Nginx configuration that comes with DDEV, it's recommended to use a dedicated one. - -Copy the Server Blocks template as a new Nginx configuration: - -```bash -cp vendor/ibexa/post-install/resources/templates/nginx/vhost.template .ddev/nginx_full/ibexa.conf -cp -r vendor/ibexa/post-install/resources/templates/nginx/ibexa_params.d .ddev/nginx_full/ -``` - -Then, replace the placeholders with the appropriate values in `.ddev/nginx_full/ibexa.conf`: - -| Placeholder | Value | -|-------------------------|------------------------------| -| `%PORT%` | `80` | -| `%HOST_LIST%` | `*.ddev.site` | -| `%BASEDIR%` | `/var/www/html` | -| `%BODY_SIZE_LIMIT_M%` | `0` | -| `%TIMEOUT_S%` | `90s` | -| `%FASTCGI_PASS%` | `unix:/var/run/php-fpm.sock` | -| `%BINARY_DATA_HANDLER%` | empty string | - -Because of path resolution inside DDEV's Nginx, you must replace one more thing: `ibexa_params.d` with `sites-enabled/ibexa_params.d`. - -You can, for example, do it with `sed`: - -```bash -sed -i 's/%PORT%/80/' .ddev/nginx_full/ibexa.conf; -sed -i 's/%HOST_LIST%/*.ddev.site/' .ddev/nginx_full/ibexa.conf; -sed -i 's/%BASEDIR%/\/var\/www\/html/' .ddev/nginx_full/ibexa.conf; -sed -i 's/%BODY_SIZE_LIMIT_M%/0/' .ddev/nginx_full/ibexa.conf; -sed -i 's/%TIMEOUT_S%/90s/' .ddev/nginx_full/ibexa.conf; -sed -i 's/%FASTCGI_PASS%/unix:\/var\/run\/php-fpm.sock/' .ddev/nginx_full/ibexa.conf; -sed -i 's/%BINARY_DATA_HANDLER%//' .ddev/nginx_full/ibexa.conf; -sed -i 's/ibexa_params.d/sites-enabled\/ibexa_params.d/' .ddev/nginx_full/ibexa.conf; -``` - -If you want to use HTTPS, you must add the following rule to avoid mixed content (HTTPS pages linking to HTTP resources): `fastcgi_param HTTPS $fcgi_https;` - -For example, you can append it to [[= product_name_base =]]'s FastCGI config: - -```bash -echo 'fastcgi_param HTTPS $fcgi_https;' >> .ddev/nginx_full/ibexa_params.d/ibexa_fastcgi_params -``` - -### Switch to Apache and its virtual host - -To use Apache instead of the default Nginx, run the following command: - -```bash -ddev config --webserver-type=apache-fpm -``` - -[[= product_name =]] can't run on Apache without a dedicated virtual host. - -To set the Apache virtual host, override `.ddev/apache/apache-site.conf` with [[= product_name =]]'s config. -You can do it manually or by using a script. - -#### Manual procedure - -Copy the virtual host template as the new Apache configuration: - -```bash -cp vendor/ibexa/post-install/resources/templates/apache2/vhost.template .ddev/apache/apache-site.conf -``` - -Then, replace the placeholders with the appropriate values in `.ddev/apache/apache-site.conf`: - -| Placeholder | Value | -|---------------------|------------------------------| -| `%IP_ADDRESS%` | `*` | -| `%PORT%` | `80` | -| `%HOST_NAME%` | `my-ddev-project.ddev.site` | -| `%HOST_ALIAS%` | `*.ddev.site` | -| `%BASEDIR%` | `/var/www/html` | -| `%BODY_SIZE_LIMIT%` | `0` | -| `%TIMEOUT%` | `0` | -| `%FASTCGI_PASS%` | `unix:/var/run/php-fpm.sock` | - -You can, for example, do it with `sed`: - -```bash -sed -i 's/%IP_ADDRESS%/*/' .ddev/apache/apache-site.conf -sed -i 's/%PORT%/80/' .ddev/apache/apache-site.conf -sed -i 's/%BASEDIR%/\/var\/www\/html/' .ddev/apache/apache-site.conf -sed -i 's/%BODY_SIZE_LIMIT%/0/' .ddev/apache/apache-site.conf -sed -i 's/%TIMEOUT%/0/' .ddev/apache/apache-site.conf -sed -i 's/%FASTCGI_PASS%/unix:\/var\/run\/php-fpm.sock/' .ddev/apache/apache-site.conf -``` - -If you want to use HTTPS, you must add the following rule to avoid mixed content (HTTPS pages linking to HTTP resources): `SetEnvIf X-Forwarded-Proto "https" HTTPS=on` - -You can, for example, do it with `sed`: - -```bash -sed -i 's/DirectoryIndex index.php/DirectoryIndex index.php\n\n SetEnvIf X-Forwarded-Proto "https" HTTPS=on/' .ddev/apache/apache-site.conf -``` - -Finally, restart the project: - -```bash -ddev restart -``` - -#### Scripted procedure - -Generate the virtual host with [`vhost.sh`](https://github.com/ibexa/docker/blob/6.0/scripts/vhost.sh): - -```bash -curl -O https://raw.githubusercontent.com/ibexa/docker/5.0/scripts/vhost.sh -bash vhost.sh --template-file=vendor/ibexa/post-install/resources/templates/apache2/vhost.template \ - --ip='*' \ - --host-name='my-ddev-project.ddev.site' \ - --host-alias='*.ddev.site' \ - --basedir='/var/www/html' \ - --sf-env=dev \ - > .ddev/apache/apache-site.conf -sed -i 's/php5-fpm.sock/php-fpm.sock/' .ddev/apache/apache-site.conf -sed -i 's/DirectoryIndex index.php/DirectoryIndex index.php\n SetEnvIf X-Forwarded-Proto "https" HTTPS=on/' .ddev/apache/apache-site.conf -rm vhost.sh -``` - -Then, restart the project: - -```bash -ddev restart -``` - -### Run an already existing project - -To run an existing project, you need to: - -1. Configure the DDEV project. -1. Start the DDEV project. -1. Add Composer authentication. -1. Install dependencies packages with Composer. -1. Populate the contents, which could mean: - - getting a clean database with `ddev php bin/console ibexa:install` and adding some data with [Ibexa data migration](importing_data.md), or - - injecting a dump with [`ddev import-db`](https://docs.ddev.com/en/stable/users/usage/commands/#import-db) and copying related binary files into `public/var`. - -The following examples run an already [version-controlled project](install_cohesivo.md#add-project-to-version-control) and have the right content structure (but no content): - -```bash -# Clone the version-controlled project and enter its local directory -git clone my-ddev-project && cd my-ddev-project -# Exclude the whole `.ddev/` directory from version control (some DDEV config could have been committed and shared, see notice below) -.ddev/ >> .gitignore -# Configure the DDEV project then start it -ddev config --project-type=php --php-version 8.3 \ - --docroot=public \ - --web-environment-add DATABASE_URL=mysql://db:db@db:3306/db \ - --http-port=8080 --https-port=8443 -ddev start -# Configure Composer authentication -ddev composer config --global http-basic.updates.ibexa.co -# Install the dependencies packages -ddev composer install -# Populate the database with a clean install -ddev php bin/console ibexa:install -# Add some content types using a migration file (previously created on another installation) and update the GraphQL schema -ddev php bin/console ibexa:migrations:migrate --file=project_content_types.yaml -# Open the project in the default browser which should display the default SiteAccess frontpage -ddev launch -``` - -Notice that the example adds the whole `.ddev/` directory to `.gitignore`, but you can also version parts of it. -Some DDEV configs can be shared among developers. For example, a common `.ddev/config.yaml` can be committed for everyone and [locally extended or overridden](https://docs.ddev.com/en/stable/users/extend/customization-extendibility/#extending-configyaml-with-custom-configyaml-files). - -Compared to running a clean install like described in [Installation steps](#installation), you can proceed as follows: - -- In [1. Create a DDEV project directory](#1-create-a-ddev-project-directory), you can use an existing directory that contains a [[= product_name =]] project instead of creating an empty directory. -- In [5. Create [[= product_name =]] project](#5-create-project), use only `ddev composer install` instead of `ddev composer create-project`. -- Populate the database with [Ibexa data migration](importing_data.md) or [`ddev import-db`](https://docs.ddev.com/en/stable/users/usage/commands/#import-db). - -### Hostnames and domains - -If the local project needs to answer to real production domains (for example, to use the existing [hostname to SiteAccess](siteaccess_matching.md#maphost) or [hostname element to SiteAccess](../multisite/siteaccess/siteaccess_matching.md#hostelement) mappings), you can use [additional hostnames](https://docs.ddev.com/en/stable/users/extend/additional-hostnames/). - -!!! caution - - As this feature modifies domain resolution, the real website may be unreachable until the `hosts` file is manually cleaned. - -### Cluster - -You can use DDEV to locally simulate a production cluster. - -See [Clustering with DDEV](clustering_with_ddev.md) to add Elasticsearch, Solr, or Redis to your DDEV installation. - -## Stop or remove the project - -If you need to stop the project to start it again later, use `ddev stop`. -Then, use `ddev start` to run the project in the same state. - -If you want to fully remove the project: - -- delete the DDEV elements without backup: `ddev delete --omit-snapshot && rm -rf ./ddev` -- remove the project folder: `cd .. && rm -r my-ddev-project` - -If [additional hostnames](#hostnames-and-domains) have been used, you must clean the hosts file. - -To learn more about removing all projects at once or DDEV itself, see [Uninstalling DDEV](https://docs.ddev.com/en/stable/users/usage/uninstall/). diff --git a/docs/getting_started/troubleshooting.md b/docs/getting_started/troubleshooting.md deleted file mode 100644 index 3c7fcb37a3c..00000000000 --- a/docs/getting_started/troubleshooting.md +++ /dev/null @@ -1,93 +0,0 @@ ---- -description: See what issues you can encounter when installing Cohesivo and how to resolve them. ---- - -# Troubleshooting - -This page lists potential problems that you may encounter while installing, configuring, and running [[= product_name =]]. - -## Encoding database password - -The password entered in `DATABASE_URL` during installation must either be URL encoded, or not contain any special characters that would require URL encoding. - -### URL encoding - -Using URL encoding involves two steps. -First, the password must be URL encoded. This can for instance be done with PHP's `urlencode()` function. -For example, this function converts a password like `(/!=#Ƥ*;%?[` to `%28%2F%21%3D%23%C3%86%C2%A4%2A%3B%25%3F%5B`. - -Second, you must remove `resolve:` from `doctrine.dbal.url` in `config/packages/doctrine.yaml`. -That means changing `%env(resolve:DATABASE_URL)%` to `%env(DATABASE_URL)%`. - -### Avoid special characters - -If your password only contains letters a-z, A-Z, and numbers 0-9, you don't need to do any encoding. -You can either create your password that way, in which case it's a good idea to make it longer to maintain entropy, keeping the password hard to guess for an attacker. -Or, you can for instance convert your password with `bin2hex()`, so that, for example, `(/!=#Ƥ*;%?[` becomes `282f213d23c386c2a42a3b253f5b`. -The output from `bin2hex` is limited to 0-9 and a-f. -This more than doubles the length of the password, keeping entropy similar. - -## Enabling swap with limited RAM - -If you have problems installing [[= product_name =]] on a system with limited RAM (for example 1GB or 2GB), enable swap. -It allows your operating system to use the hard disk to supplement RAM when it runs out. - -With swap enabled you're able to successfully run `php -d memory_limit=-1 bin/console ibexa:install`. - -When a system runs out of RAM, you may see `Killed` when trying to clear the cache (for example, `php bin/console --env=prod cache:clear` from your project's root directory). - -## Upload size limit - -To make use of the back office, the defined maximum upload size must be consistent with the maximum file size defined in the content type by using a File, Media, or Image field. - -It's done by setting `LimitRequestBody` for Apache or `client_max_body_size` for nginx. - -For instance, if one of those fields is configured to accept files up to 10MB, then `client_max_body_size` (in case of nginx) should be set above 10MB, with a safe margin, for example to 15MB. - -You also need to define settings for uploading files in `php.ini`: `upload_max_filesize` and `post_max_size`. - -## Cloning failed using an ssh key - -When dealing with Composer packages from [updates.ibexa.co](https://updates.ibexa.co), you may get a "Cloning failed using an ssh key" error -if you tell Composer to download dev packages or to download from source. -[updates.ibexa.co](https://updates.ibexa.co) currently supports only distribution packages in alpha stability or higher. - -To avoid the error, check the stability of packages and avoid using `--prefer-source`. - -## Redis/Valkey sessions issues - -### Inconsistent cache/session data - -If cache or session data is inconsistent across web servers, see [Redis clustering](persistence_cache.md#redis-clustering), and make sure you only read/write to one active master instance at a time. - -### Removed or refused sessions - -If sessions are removed or new sessions are refused, it's recommended to use a separated instance for sessions, that either never runs out of memory or uses an eviction policy that suits your needs. - -For more information, see [Cluster setup](sessions.md#cluster-setup). - -## Conflict with roave/security-advisories - -When you use `composer update` or `composer require`, a package may conflict with `roave/security-advisories`: - -``` bash -Your requirements could not be resolved to an installable set of packages. - Problem 1 - - ezsystems/ezpublish-legacy v5.4.10 conflicts with roave/security-advisories[dev-master]. - (...) -``` - -This means there is a known security bug in the specific version of the package, `ezsystems/ezpublish-legacy`. -In most cases this means that a fix is available in a newer version. -If you increase your requirement to that version, the conflict is resolved. - -In the rare case when there is no fixed version, you can revert your requirement to an older version which doesn't have the bug. -If you have to use the version with the bug (not recommended) you can use `composer remove roave/security-advisories`. -In such case, require it again when the bug is fixed and the package is updated: `composer require roave/security-advisories:dev-master` - -## [[= product_name_cloud =]] HTTP access credentials with Varnish - -If you're using [[= product_name_cloud =]] with Varnish for HTTP cache and you have [HTTP access control by login/password](https://fixed.docs.upsun.com/administration/web/configure-environment.html#http-access-control) enabled, configure the following variables in your Upsun environment: - -- `HTTPCACHE_USERNAME` -- `HTTPCACHE_PASSWORD` diff --git a/docs/ibexa_products/editions.md b/docs/ibexa_products/editions.md index a87f21cfe75..c7ce71704bb 100644 --- a/docs/ibexa_products/editions.md +++ b/docs/ibexa_products/editions.md @@ -52,7 +52,7 @@ Compare all features available in [[= product_name_headless =]], [[= product_nam ## LTS Updates -LTS Updates are opt-in packages that bring additional features to the [LTS releases](release_process_and_roadmap.md#long-term-support-releases) that they enhance. +LTS Updates are opt-in packages that bring additional features to the LTS releases that they enhance. The features brought by LTS Updates become standard parts of the next LTS release. | Feature | [[= product_name_headless =]] | [[= product_name_exp =]] | [[= product_name_com =]] | diff --git a/docs/ibexa_products/ibexa_experience.md b/docs/ibexa_products/ibexa_experience.md index b95fb482a3b..7860c8cb352 100644 --- a/docs/ibexa_products/ibexa_experience.md +++ b/docs/ibexa_products/ibexa_experience.md @@ -25,8 +25,6 @@ You can also [contact us](https://www.ibexa.co/about-ibexa/contact-us) or [one o ### Technical backstage -With an active license, you can start the [installation process](install_cohesivo.md) that uses the Composer. - [[= product_name_exp =]] is based on [Symfony]([[= symfony_doc =]]). With a help of documentation and trainings, any developer familiar with Symfony or simply PHP may learn how to use available extension points and extend the platform. diff --git a/docs/index.md b/docs/index.md index efc1c00a1f7..ca5b81aa9f3 100644 --- a/docs/index.md +++ b/docs/index.md @@ -7,23 +7,7 @@

How to start?

-
- Install Cohesivo + Follow the Beginner tutorial
- Install on Ibexa Cloud + Explore the APIs
@@ -79,7 +63,7 @@
The latest v5.0 LTS release is [[= latest_tag_5_0 =]]. You can now update your application.
@@ -115,16 +99,13 @@ diff --git a/docs/infrastructure_and_maintenance/clustering/clustering_with_ddev.md b/docs/infrastructure_and_maintenance/clustering/clustering_with_ddev.md deleted file mode 100644 index 1500102e00c..00000000000 --- a/docs/infrastructure_and_maintenance/clustering/clustering_with_ddev.md +++ /dev/null @@ -1,278 +0,0 @@ ---- -month_change: false -description: Use DDEV to run a cluster infrastructure locally. ---- - -# Clustering with DDEV - -!!! caution - - Don't use this procedure in production. - A staging environment for validation before production should exactly replicate the production environment. - This is meant for development environment only. - -This guide follows [Install with DDEV](install_with_ddev.md) and helps to extend the previous installation to locally replicate a production [cluster](clustering.md). - -In contrast to a production cluster, this setup has only one front app server. -But the data sharing needed by a cluster of several servers can still be emulated. - -The `ddev config --php-version` option should set the same PHP version as the production servers. - -!!! tip - - - [`ddev describe`](https://docs.ddev.com/en/stable/users/usage/commands/#describe) displays a cluster summary that include accesses from inside and outside DDEV services - - [`ddev ssh`](https://docs.ddev.com/en/stable/users/usage/commands/#ssh) opens a terminal inside a service - - [`ddev exec`](https://docs.ddev.com/en/stable/users/usage/commands/#exec) executes a command inside a service - - Discover more commands in [DDEV documentation](https://docs.ddev.com/en/stable/users/usage/commands/). - -## Install reverse proxy - -A reverse proxy can be added to the cluster to enable [HTTP caching](http_cache.md). - -### Varnish - -The following sequence of commands: - -1. Sets a variable with the desired Varnish version, here Varnish 7.1 -2. Copies and customizes `parameters.vcl` file in `.ddev/varnish/` (which is mounted as `/etc/varnish/` into the container): - - sets `web` container as the backend host and an invalidator (so back office can purge cache) - - adds "all IPs" CIDR notation to `debuggers` list to allow debugging from any IP - - on Varnish 7, enable logging of access control list matching for both `invalidators` and `debuggers` lists - (new Varnish 7 syntax, it was enabled by default on previous versions) -3. Sets main `varnish*.vcl` file to use and "path to VCL directory" argument name depending on Varnish version -4. Copies the main VCL file to `.ddev/varnish/` -5. Sets the Varnish version to use and its demon starting parameters to use the files -6. Adds the Varnish container -7. Sets Varnish as the HTTP cache server -8. Restarts the DDEV cluster and clear the [[= product_name =]] cache - -```bash -VARNISH_VERSION=7.1 -mkdir -p .ddev/varnish -sed 's/.host = "127.0.0.1";/.host = "web";/' vendor/ibexa/http-cache/docs/varnish/vcl/parameters.vcl > .ddev/varnish/parameters.vcl -sed -i '/^acl invalidators {$/a \\ "web";' .ddev/varnish/parameters.vcl -sed -i '/^acl debuggers {$/a \\ "0.0.0.0"/0; \/\/ debug from any IP' .ddev/varnish/parameters.vcl -if [[ $VARNISH_VERSION == 7.* ]]; then - sed -i 's/acl invalidators {/acl invalidators +log {/' .ddev/varnish/parameters.vcl - sed -i 's/acl debuggers {/acl debuggers +log {/' .ddev/varnish/parameters.vcl - vcl_path=vcl_path - vcl_file=varnish7.vcl -elif [[ $VARNISH_VERSION == 6.* ]]; then - vcl_path=vcl_dir - vcl_file=varnish6.vcl -fi -cp vendor/ibexa/http-cache/docs/varnish/vcl/$vcl_file .ddev/varnish/ -ddev dotenv set .ddev/.env.varnish --varnish-docker-image=varnish:$VARNISH_VERSION --varnish-varnishd-params " -p $vcl_path=/etc/varnish -f /etc/varnish/$vcl_file" - -ddev add-on get ddev/ddev-varnish - -ddev config --web-environment-add HTTPCACHE_PURGE_SERVER=http://varnish -ddev config --web-environment-add HTTPCACHE_PURGE_TYPE=varnish -ddev config --web-environment-add TRUSTED_PROXIES=varnish - -ddev restart -ddev php bin/console cache:clear -``` - -To use Varnish 6.0LTS, set the following variable instead: - -```bash -VARNISH_VERSION=6.0 -``` - -If you're using [Apache as web server](install_with_ddev.md#switch-to-apache-and-its-virtual-host), -you must set `varnish` as a trusted proxy in `.ddev/apache/apache-site.conf` before restarting DDEV: - -```bash -sed -i 's/#SetEnv TRUSTED_PROXIES ""/SetEnv TRUSTED_PROXIES "varnish"/' .ddev/apache/apache-site.conf - -ddev restart -``` - -The Varnish server acts as the application’s primary entry point. -If you run `ddev describe`, you can see that Varnish is now the one responding to DDEV domain `.ddev.site` -while the web server still replies to `127.0.0.1` with its own ports. - -You can see Varnish headers in HTTP responses, for example: - -```console -% curl -s -c cookies.txt -b cookies.txt -I https://.ddev.site:/ -HTTP/2 200 -server: Apache/2.4.65 (Debian) -vary: Origin,X-Editorial-Mode -via: 1.1 varnish (Varnish/7.1) -x-cache: HIT -x-cache-debug: 1 -x-cache-hits: 5 -x-cache-ttl: 87654.321 -x-debug-token: 012345 -x-debug-token-link: https://.ddev.site://_profiler/012345 -x-powered-by: Ibexa Experience v5 -x-robots-tag: noindex -x-varnish: 12345 67890 -xkey: ez-all c52 ct42 l2 pl1 p1 p2 -content-length: 45678 -``` - -You can see how the `web` server is responding to `varnish`: - -```console -% curl -s -H "Surrogate-Capability: abc=ESI/1.0" http://127.0.0.1:/product-catalog | grep 'esi:include' - ` command after adding the `ddev/ddev-redis` add-on. -For example, you can switch to Valkey by running `ddev add-on get ddev/ddev-redis; ddev redis-backend valkey/valkey:9`. -For more information, see [Swappable Redis backends](https://github.com/ddev/ddev-redis?tab=readme-ov-file#swappable-redis-backends) in DDEV's `dddev-redis` add-on documentation. - -The following sequence of commands: - -1. Adds the Redis container. -1. Set Redis as the cache pool. -1. Sets Redis as the session handler. -1. Changes `maxmemory-policy` from default `allkeys-lfu` to a [value accepted by the `RedisTagAwareAdapter`](https://github.com/symfony/cache/blob/5.4/Adapter/RedisTagAwareAdapter.php#L95). -1. Restarts the DDEV cluster and clears application cache. - -```bash -ddev add-on get ddev/ddev-redis -ddev config --web-environment-add CACHE_POOL=cache.redis -ddev config --web-environment-add CACHE_DSN=redis -ddev config --web-environment-add SESSION_HANDLER_ID='Ibexa\\Bundle\\Core\\Session\\Handler\\NativeSessionHandler' -ddev config --web-environment-add SESSION_SAVE_PATH=tcp://redis:6379 -sed -i 's/maxmemory-policy allkeys-lfu/maxmemory-policy volatile-lfu/' .ddev/redis/redis.conf; -ddev restart -ddev php bin/console cache:clear -``` - -You can now check whether the data store backend works. - -For example, the `ddev redis-cli MONITOR` command returns outputs, for example, `"SETEX" "ezp:`, `"MGET" "ezp:`, `"SETEX" "PHPREDIS_SESSION:`, or `"GET" "PHPREDIS_SESSION:`, while navigating into the website, in particular the back office. - -See [Redis commands](https://redis.io/docs/latest/commands/) for more details such as information about the [`MONITOR`](https://redis.io/docs/latest/commands/monitor/) command used in the previous example. diff --git a/docs/infrastructure_and_maintenance/databases.md b/docs/infrastructure_and_maintenance/databases.md index eba92e555ed..63c94b08cea 100644 --- a/docs/infrastructure_and_maintenance/databases.md +++ b/docs/infrastructure_and_maintenance/databases.md @@ -14,7 +14,7 @@ To use PostgreSQL, you need to have the `pdo_pgsql` PHP extension installed. ### Provide parameters -When you run `composer install`, you're asked to [provide installation parameters](install_cohesivo.md#change-installation-parameters). +When you run `composer install`, you're asked to provide installation parameters. !!! tip diff --git a/docs/infrastructure_and_maintenance/security/security_checklist.md b/docs/infrastructure_and_maintenance/security/security_checklist.md index b7b5cfeae90..004b216051c 100644 --- a/docs/infrastructure_and_maintenance/security/security_checklist.md +++ b/docs/infrastructure_and_maintenance/security/security_checklist.md @@ -223,7 +223,7 @@ For more information, see [PHP's own security manual](https://www.php.net/manual ### Block execution of scripts in `var` directory Make sure that the web server blocks the execution of PHP files and other scripts in the `var` directory. -See the line below `# Disable .php(3) and other executable extensions in the var directory` in the example virtual host files for Apache and Nginx, provided in the [installation documentation](install_cohesivo.md#set-up-virtual-host). +In your web server's virtual host configuration, see the line below `# Disable .php(3) and other executable extensions in the var directory`. ### Security headers diff --git a/docs/multisite/languages/back_office_translations.md b/docs/multisite/languages/back_office_translations.md index c861234a389..d72ab64f639 100644 --- a/docs/multisite/languages/back_office_translations.md +++ b/docs/multisite/languages/back_office_translations.md @@ -33,10 +33,6 @@ If your browser language is set to French, the back office is displayed in Frenc Then, run `composer run post-update-cmd` and `php bin/console cache:clear --siteaccess=admin`. -### Contributing back office translations - -To learn how to contribute to a translation, see [Contributing translations](contribute_translations.md). - ### Selecting back office language Once you have language packages enabled, you can switch the language of the back office in the **User Settings** menu. diff --git a/docs/permissions/limitation_reference.md b/docs/permissions/limitation_reference.md index 412f783c77f..e91605627c8 100644 --- a/docs/permissions/limitation_reference.md +++ b/docs/permissions/limitation_reference.md @@ -52,46 +52,6 @@ The Change Owner (`ChangeOwner`) limitation specifies whether the user can chang |------|------|------| |`1`|"Forbid"|The user cannot change owner of a content item| -## Collaborative editing limitations - -The Collaborative editing limitations specify how the user can use the [Collaborative editing](collaborative_editing.md) feature. - -### Collaborative editing Owner limitation - -The Owner limitation specifies whose drafts the user can share. -If not specified, user can share: - -- their drafts -- drafts they have been invited to collaborate on - -#### Possible values - -|Value|UI value|Description| -|------|------|------| -|"self"|"self"| User can only share drafts that they own | - -### Collaborative editing Scope limitation - -The Scope limitation specifies whether the user can share the preview and editing view with other users. - -#### Possible values - -|Value|UI value|Description| -|------|------|------| -|"edit"|"Edit"| User can invite other users to edit| -|"view"|"View"| User can share the preview with other users| - -### Collaborative editing PublicLink limitation - -The Public Link (`PublicLink`) limitation specifies whether the user can manage the settings of the shareable preview link. - -#### Possible values - -|Value|UI value|Description| -|------|------|------| -|"Off"|"off"| User can't manage the settings| -|"On"|"on"| User can manage the settings| - ## Content type Group limitation The Content Type Group (`UserGroup`) limitation specifies that only users with at least one common *direct* user group with the owner of content get the selected access right. diff --git a/docs/permissions/permission_use_cases.md b/docs/permissions/permission_use_cases.md index 649e56b2346..2e3805be4f1 100644 --- a/docs/permissions/permission_use_cases.md +++ b/docs/permissions/permission_use_cases.md @@ -133,8 +133,6 @@ For example, to enable the user to edit only content in the "Design" stage and t - `content/edit` with `WorkflowStageLimitation` set to "Design". - `workflow/change_stage` with `WorkflowTransitionLimitation` set to `to_proofreading` -When using the [Collaborative editing feature](collaborative_editing.md), refer to the [Collaborative editing policies](policies.md#content-collaborative-editing) for guidance on editing without a strict workflow. - ## Multi-file upload Creating content through multi-file upload is treated in the same way as regular creation. diff --git a/docs/permissions/policies.md b/docs/permissions/policies.md index 15b405b6649..8611e376c65 100644 --- a/docs/permissions/policies.md +++ b/docs/permissions/policies.md @@ -136,13 +136,6 @@ Each role you assign to user or user group consists of policies which define, wh | | `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) | -| `rte` | `edit` | use [Real-time editing](collaborative_editing_guide.md#real-time-editing) | | - #### Content types | Module | Function | Effect | Possible limitations | @@ -212,12 +205,6 @@ Each role you assign to user or user group consists of policies which define, wh The `ProductType` limitation can't be used when using [[[= pim_product_name =]]](/product_catalog/quable/quable.md). -#### Product collaborative editing - -| 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 types | Module | Function | Effect | Possible limitations | diff --git a/docs/product_catalog/product_catalog_configuration.md b/docs/product_catalog/product_catalog_configuration.md index 17a145f6464..c81748b657b 100644 --- a/docs/product_catalog/product_catalog_configuration.md +++ b/docs/product_catalog/product_catalog_configuration.md @@ -104,21 +104,6 @@ ibexa_product_catalog: You can also [create your own custom code generation strategy](create_product_code_generator.md). -## Attribute rendering templates - -You can configure which Twig templates are used to render product attribute values with the [`ibexa_format_product_attribute` Twig filter](product_twig_functions.md#ibexa_format_product_attribute). - -```yaml -ibexa_product_catalog: - templates: - attributes: - - 'templates/product/attributes/my_attribute_blocks.html.twig' -``` - -The default template (`@ibexadesign/product_catalog/product/attributes/attribute_blocks.html.twig`) is always appended as the last fallback, even if not listed explicitly. - -For more information, see [Customize product attribute templates](customize_product_attribute_templates.md). - ## Catalogs ### Catalog filters diff --git a/docs/product_catalog/quable/quable.md b/docs/product_catalog/quable/quable.md index c5c9c511780..e02f00ccd76 100644 --- a/docs/product_catalog/quable/quable.md +++ b/docs/product_catalog/quable/quable.md @@ -27,7 +27,6 @@ Products can be viewed, selected, and embedded in [[= product_name =]], while al "product_catalog/quable/install_quable", "product_catalog/quable/configure_quable_connector", "product_catalog/quable/quable_api", - "templating/twig_function_reference/quable_twig_functions", "product_catalog/customize_product_attribute_templates", ("https://developers.quable.com/", "Quable technical documentation", "Explore Quable's technical documentation"), ]) =]] diff --git a/docs/product_guides/product_guides.md b/docs/product_guides/product_guides.md index 4e2582c5d74..76e986fe292 100644 --- a/docs/product_guides/product_guides.md +++ b/docs/product_guides/product_guides.md @@ -15,7 +15,6 @@ Discover the primary ones with the help of product guides. Condensed content all "content_management/rich_text/online_editor_guide", "content_management/pages/page_builder_guide", "content_management/forms/form_builder_guide", - "content_management/collaborative_editing/collaborative_editing_guide", "customer_management/customer_portal", "product_catalog/product_catalog_guide", "product_catalog/quable/quable_guide", diff --git a/docs/raptor_cdp/raptor_cdp_data_export_schedule.md b/docs/raptor_cdp/raptor_cdp_data_export_schedule.md index 1eaf3c883e5..a9ddbc11d62 100644 --- a/docs/raptor_cdp/raptor_cdp_data_export_schedule.md +++ b/docs/raptor_cdp/raptor_cdp_data_export_schedule.md @@ -69,5 +69,3 @@ php bin/console ibexa:cdp:stream-content-data --help ``` The configuration is executed by `ibexa:cron:run` command which must be configured as a cron job. - -For more information, see [Schedule tasks](install_cohesivo.md#schedule-tasks). diff --git a/docs/recommendations/raptor_integration/connector_installation_configuration.md b/docs/recommendations/raptor_integration/connector_installation_configuration.md index 10614f92028..28527b31564 100644 --- a/docs/recommendations/raptor_integration/connector_installation_configuration.md +++ b/docs/recommendations/raptor_integration/connector_installation_configuration.md @@ -32,7 +32,7 @@ To configure the [[= product_name_cdp_base =]] connector, use the `ibexa.system. - `enabled` - enables or disables the connector for a given scope. Default value: `true`. If set to `false`, no tracking or recommendation requests are executed. - `customer_id` - an identifier used to authenticate requests to the recommendation engine. You can find this value as ["Account number"](connector_installation_configuration.md#customer-id) in [[= product_name_cdp_base =]] Control Panel. - `tracking_type` - defines how user events are sent to the tracking API. Default value: `client`. Possible values: - - `client` - tracking is executed in the browser using JavaScript snippets generated by the [Twig functions](recommendations_twig_functions.md) and included in the templates. This approach may be blocked by ad blockers. + - `client` - tracking is executed in the browser using JavaScript snippets generated by the Twig functions and included in the templates. This approach may be blocked by ad blockers. - `server` - tracking is handled on the backend, with events sent directly to the tracking API. It's not affected by ad blockers. - `hybrid` - tracking is executed in the browser by a first-party JavaScript provided by [[= product_name =]] instead of [[= product_name_cdp_base =]] and then forwarded by the [[= product_name =]] server to the [[= product_name_cdp_base =]] SaaS. For more information, see [Hybrid tracking](hybrid_tracking.md). - `recommendations_api_key` - an API key used to authenticate requests to the Recommendations API. This key allows the connector to retrieve personalized recommendations from the recommendation engine. You can find this value as ["API key"](connector_installation_configuration.md#recommendations-api-key) in [[= product_name_cdp_base =]] Control Panel. diff --git a/docs/recommendations/raptor_integration/hybrid_tracking.md b/docs/recommendations/raptor_integration/hybrid_tracking.md index a343c1ddd82..234762b4b6d 100644 --- a/docs/recommendations/raptor_integration/hybrid_tracking.md +++ b/docs/recommendations/raptor_integration/hybrid_tracking.md @@ -1,6 +1,7 @@ --- description: Enable hybrid tracking to avoid ad blockers and proxy events through your server. -month_change: false +month_change: true +delete: true --- # Hybrid tracking @@ -105,8 +106,6 @@ php bin/console debug:router | grep raptor By default, the tracking script waits for user consent before sending tracking events. -For more information, see [Handle tracking consent](recommendations_twig_functions.md#handle-tracking-consent). - The Twig API remains identical regardless of the configured tracking mode: ``` html+twig diff --git a/docs/recommendations/raptor_integration/raptor_connector.md b/docs/recommendations/raptor_integration/raptor_connector.md index 8b2a4cfb303..529531dd002 100644 --- a/docs/recommendations/raptor_integration/raptor_connector.md +++ b/docs/recommendations/raptor_integration/raptor_connector.md @@ -32,5 +32,4 @@ For more information about tracking, check the [[= product_name_cdp_base =]] doc "recommendations/raptor_integration/tracking_php_api", "recommendations/raptor_integration/recommendation_blocks", "recommendations/raptor_integration/custom_recommendation_rendering", - "templating/twig_function_reference/recommendations_twig_functions", ], columns=3) =]] diff --git a/docs/recommendations/raptor_integration/raptor_connector_guide.md b/docs/recommendations/raptor_integration/raptor_connector_guide.md index c0e4b110dd1..b50d699ff49 100644 --- a/docs/recommendations/raptor_integration/raptor_connector_guide.md +++ b/docs/recommendations/raptor_integration/raptor_connector_guide.md @@ -50,7 +50,7 @@ You can switch between tracking modes at any time by changing the tracking type [[= product_name_cdp_base =]] [tracking functions](tracking_functions.md) allow you to collect data about how users interact with your products and content. You can track product visits to better understand what users are viewing. -Provided [Twig functions](../../templating/twig_function_reference/recommendations_twig_functions.md) simplify the implementation, allowing developers to quickly add tracking to templates without complex setup. +Provided Twig functions simplify the implementation, allowing developers to quickly add tracking to templates without complex setup. This gives you the data you need to better understand user behavior, improve recommendations, and support personalization. diff --git a/docs/recommendations/raptor_integration/tracking_functions.md b/docs/recommendations/raptor_integration/tracking_functions.md index 42c227fc356..5d6af3f5b8d 100644 --- a/docs/recommendations/raptor_integration/tracking_functions.md +++ b/docs/recommendations/raptor_integration/tracking_functions.md @@ -1,6 +1,7 @@ --- description: Integrate the tracking script to collect user interactions. -month_change: false +month_change: true +delete: true --- # Tracking functions @@ -10,8 +11,8 @@ The implementation includes product visit tracking with mapping to tracking para [[= product_name_cdp_base =]] integration introduces two Twig functions: -- [`ibexa_tracking_script()`](../../templating/twig_function_reference/recommendations_twig_functions.md#ibexa_tracking_script-function) - allows you to embed main tracking script into the website. -- [`ibexa_tracking_track_event()`](../../templating/twig_function_reference/recommendations_twig_functions.md#ibexa_tracking_track_event-function) - is responsible for sending event data to the service, enabling tracking of user interactions and behaviors. +- `ibexa_tracking_script()` - allows you to embed main tracking script into the website. +- `ibexa_tracking_track_event()` - is responsible for sending event data to the service, enabling tracking of user interactions and behaviors. ## Embed tracking script diff --git a/docs/recommendations/raptor_integration/tracking_php_api.md b/docs/recommendations/raptor_integration/tracking_php_api.md index f37955cad64..806caa560be 100644 --- a/docs/recommendations/raptor_integration/tracking_php_api.md +++ b/docs/recommendations/raptor_integration/tracking_php_api.md @@ -1,6 +1,7 @@ --- description: Tracking with PHP API. month_change: false +delete: true --- # Tracking with PHP API @@ -19,7 +20,7 @@ For more information, see the available events in the [tracking event namespace] The recommended method is [`EventMapperInterface::map()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-EventMapperInterface.html#method_map). This method receives an [`EventType`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-EventType.html#cases) case, a data depending on the event type (a [`ProductInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-ProductInterface.html), a [`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html), or a `string`), and a context's associative array that uses [`EventContext`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-EventContext.html) constants as keys. -For more information, see the same arguments of the Twig function [`ibexa_tracking_track_event`](recommendations_twig_functions.md#ibexa_tracking_track_event-function). +For more information, see the same arguments of the `ibexa_tracking_track_event` Twig function. | Event type | Data class | Context keys | |:---------------------------|:------------------------|:--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| diff --git a/docs/resources/contributing/contribute_translations.md b/docs/resources/contributing/contribute_translations.md deleted file mode 100644 index 5102ec50b45..00000000000 --- a/docs/resources/contributing/contribute_translations.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -description: You can contribute back office translations to Cohesivo by using Crowdin. -month_change: false ---- - -# Contribute translations - -If you'd like to see [[= product_name =]] in your language, you can contribute to the translations. - -[`ibexa-i18n`](https://github.com/ibexa/i18n) contains the XLIFF files providing translations under a `/translations` directory. -You can use an XLIFF editor of your choice to contribute strings in your language. - -!!! note "Professional localization" - - Translations into French, German and Spanish are managed through [[= product_name_base =]]’s internal localization process and are therefore not open for community contributions. - -## Translating interface using Crowdin - -If you wish to contribute to an existing translation of back office or start a new one you can use the Crowdin website. - -Visit [[[= product_name =]]'s Crowdin page](https://crowdin.com/project/ibexa-dxp), choose a language, and you can see a list of files containing strings. Here you can suggest your translations. - -If the language you want to translate to isn't available, you can ask for it to be added in the [Crowdin discussion forum for [[= product_name =]]](https://crowdin.com/project/ibexa-dxp/discussions). - -Crowdin then automatically creates a GitHub PR and the translations are updated in the product. diff --git a/docs/resources/contributing/package_structure.md b/docs/resources/contributing/package_structure.md deleted file mode 100644 index 3035acfe700..00000000000 --- a/docs/resources/contributing/package_structure.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -description: All code contributions to Cohesivo must follow package and bundle structure and namespace standards. ---- - -# Package and bundle structure and namespaces - -If you wish to contribute to [[= product_name =]] development, you need to adhere to the package and bundle structure and namespace standards. - -The following conventions apply to contributions to [[= product_name =]] core code, not to third party packages. - -!!! note - - New code needs to follow the rules outlined here. - They're being applied progressively to existing code. - -## Root PHP namespace - -Define [[= product_name =]] core PHP code in a namespace with the following prefix: - -``` php {skip-validation} -namespace Ibexa; -``` - -A package which groups some [[= product_name =]] features can use an additional prefix: - -``` php {skip-validation} -namespace Ibexa\; -``` - -## Packages - -The general package directory structure and corresponding PHP namespace mapping are: - -```text -. -+-- src -| +-- bundle (`Ibexa\Bundle\`) -| +-- contracts (`Ibexa\Contracts\`) -| +-- lib (`Ibexa\`) -+-- tests -| +-- bundle (`Ibexa\Tests\Bundle\`) -| +-- integration (`Ibexa\Tests\Integration\`) -| +-- lib (`Ibexa\Tests\`) -``` - -If a package doesn't contain some of the described parts, you can skip those directories. - -### Implementation (lib) - -The `src/lib` directory and its corresponding `Ibexa\` namespace are meant for internal implementation not tied to the Symfony Framework. - -Examples: - -``` php {skip-validation} -namespace Ibexa\Search; -``` - -### Bundles - -The bundle class definition in the `src/bundle` directory must be: - -``` php {skip-validation} -namespace Ibexa\Bundle\; - -class Ibexa[ProductGroup]Bundle // ... -``` - -Examples: - -``` php {skip-validation} -namespace Ibexa\Bundle\Search; - -class IbexaSearchBundle // ... -``` - -### Contracts - -A package may introduce a namespace for contracts, to be consumed by first and third party packages and projects, which must be prefixed as: - -``` php {skip-validation} -namespace Ibexa\Contracts; -``` - -Examples: - -``` php {skip-validation} -namespace Ibexa\Contracts\Kernel; -``` - -``` php {skip-validation} -namespace Ibexa\Contracts\SiteFactory; -``` - -That namespace needs to be mapped to the `src/contracts` directory of a package. - -!!! note - - Backward compatibility for interfaces and objects defined in the `Contracts` namespace is guaranteed. diff --git a/docs/resources/contributing/report_and_follow_issues.md b/docs/resources/contributing/report_and_follow_issues.md deleted file mode 100644 index 0bcdd0005dc..00000000000 --- a/docs/resources/contributing/report_and_follow_issues.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -description: You can report encountered issues to Service Portal ---- - -# Report and follow issues - -If you have a [[= product_name =]] subscription, report your issues through the [Service portal](https://support.ibexa.co). -To do it, log in to your Service portal at , click "New Ticket", and report the issue as you would report a normal support request. -[[= product_name_base =]] Product Support will respond, take care of the report, and keep you informed of the developments. -This ensures the issue can be quickly prioritized according to its impact. - -## Reporting security issues - -!!! caution "Security issues" - - If you discover a security issue, please don't report it through regular channels, but instead take a look at the [Security section](reporting_issues.md). diff --git a/docs/resources/img/phpstorm_plugin_create_project.png b/docs/resources/img/phpstorm_plugin_create_project.png deleted file mode 100644 index dc29f6ed41c..00000000000 Binary files a/docs/resources/img/phpstorm_plugin_create_project.png and /dev/null differ diff --git a/docs/resources/img/phpstorm_plugin_file_template.png b/docs/resources/img/phpstorm_plugin_file_template.png deleted file mode 100644 index 37dee6f286a..00000000000 Binary files a/docs/resources/img/phpstorm_plugin_file_template.png and /dev/null differ diff --git a/docs/resources/img/phpstorm_plugin_intention.png b/docs/resources/img/phpstorm_plugin_intention.png deleted file mode 100644 index b2308a6dff9..00000000000 Binary files a/docs/resources/img/phpstorm_plugin_intention.png and /dev/null differ diff --git a/docs/resources/img/phpstorm_plugin_query_type_params.png b/docs/resources/img/phpstorm_plugin_query_type_params.png deleted file mode 100644 index 9cfcc3e3162..00000000000 Binary files a/docs/resources/img/phpstorm_plugin_query_type_params.png and /dev/null differ diff --git a/docs/resources/img/phpstorm_plugin_settings.png b/docs/resources/img/phpstorm_plugin_settings.png deleted file mode 100644 index 61604e745c7..00000000000 Binary files a/docs/resources/img/phpstorm_plugin_settings.png and /dev/null differ diff --git a/docs/resources/new_in_doc.md b/docs/resources/new_in_doc.md deleted file mode 100644 index 09b06e3f445..00000000000 --- a/docs/resources/new_in_doc.md +++ /dev/null @@ -1,1435 +0,0 @@ ---- -description: Overview of major recent additions to Ibexa DXP and Cohesivo documentation. -month_change: true ---- - -# New in documentation - -This page contains recent highlights and notable changes in Ibexa DXP and [[= product_name =]] documentation. - -## July 2026 - -### AI - -- Expanded the [MCP usage](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_usage/#perform-copilot-or-claude-code-test) examples to include Claude Code -- Documented how to reuse the default cache service as the [discovery cache](https://doc.ibexa.co/en/5.0/ai/mcp/mcp_config/#discovery-cache), or disable caching to ease development -- Improved documentation to make it easier to use with AI Agents. For more information, see [Documentation improvements](#documentation-improvements) below. - -### Documentation improvements - -- Added a **View as Markdown** button to every documentation page -- Improved page structure so that HTML-to-Markdown converters used by AI agents produce cleaner output - -Combined, these changes make the documentation easier to use with AI Agents. - -### Background tasks - -- Described the [stamps available for Ibexa Messenger](https://doc.ibexa.co/en/5.0/infrastructure_and_maintenance/background_tasks/#stamps) - -### Data migration - -- Documented the [`service_call` migration type](https://doc.ibexa.co/en/5.0/content_management/data_migration/importing_data/#service-calls) -- Described the `set` and `list` modes of the [`reference` type](https://doc.ibexa.co/en/5.0/content_management/data_migration/managing_migrations/#references), and completed the list of [available reference types](https://doc.ibexa.co/en/5.0/content_management/data_migration/managing_migrations/#available-reference-types) with `section`, `user`, and `language_code` -- Added the `company` and `shipping_method` entries to the [list of available migrations](https://doc.ibexa.co/en/5.0/content_management/data_migration/importing_data/#available-migrations) -- Documented the [`update` mode for content items](https://doc.ibexa.co/en/5.0/content_management/data_migration/importing_data/#content-items), together with the optional `metadata` and `location` properties available when you create one -- Added an example of defining [product availability and stock](https://doc.ibexa.co/en/5.0/content_management/data_migration/importing_data/#product-availability) -- Described the [`assign_dashboard_to_user` action](https://doc.ibexa.co/en/5.0/content_management/data_migration/data_migration_actions/#content) - -### Caching - -- Described [clearing caches](https://doc.ibexa.co/en/5.0/infrastructure_and_maintenance/devops/#cache-clearing) in more detail, covering the differences between system, [persistence](https://doc.ibexa.co/en/5.0/infrastructure_and_maintenance/cache/persistence_cache/#clearing-persistence-cache), and HTTP caches -- Expanded the example showing how to [inject `PurgeClientInterface`](https://doc.ibexa.co/en/5.0/infrastructure_and_maintenance/cache/http_cache/content_aware_cache/#custom-purging-from-code) - -### Security - -- Added a [Security advisories](https://doc.ibexa.co/en/5.0/infrastructure_and_maintenance/security/security_advisories/) page describing where [[= product_name_base =]] advisories are published and how to handle Composer package advisories - -### [[= product_name_cloud =]] - -- Created a dedicated page for the [[[= product_name_cloud =]] CLI](https://doc.ibexa.co/en/5.0/ibexa_cloud/ibexa_cloud_cli/) - -### Recommendations - -- Documented the [`websiteId` parameter](https://doc.ibexa.co/en/5.0/templating/twig_function_reference/recommendations_twig_functions/#websiteid-parameter) for tracking - -### DDEV - -- Added instructions on how to [schedule tasks](https://doc.ibexa.co/en/5.0/getting_started/install_with_ddev/#configure-scheduled-tasks-optional) with the DDEV Cron add-on -- Added instructions on how to [launch Ibexa Messenger](https://doc.ibexa.co/en/5.0/getting_started/install_with_ddev/#configure-background-tasks-optional) on DDEV project start - -## June 2026 - -### Releases - -- [v5.0.9 release notes](https://doc.ibexa.co/en/5.0/release_notes/ibexa_dxp_v5.0/#ibexa-dxp-v509) -- [v4.6.31 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#ibexa-dxp-v4631) -- [Ibexa DXP 3.3 has reached End of Life (EOL) on 30 June 2026](https://support.ibexa.co/Public/service-life). You can access the 3.3 documentation by unfolding **Older versions** in the **Change version** drop-down menu. - -### Users - -- Updated [user authentication customization example](user_authentication.md) - -### Background tasks and scheduled tasks - -- Reworked documentation about [scheduled tasks](install_cohesivo.md#schedule-tasks) -- Described [Ibexa Messenger configuration for production](background_tasks.md#configure-for-production-environment) - -## May 2026 - -### Releases - -- [v5.0.8 release notes](https://doc.ibexa.co/en/5.0/release_notes/ibexa_dxp_v5.0/#ibexa-dxp-v508) -- [v4.6.30 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#ibexa-dxp-v4630) - -### AI - -- Grouped [AI Actions](ai_actions.md) and [MCP Servers](mcp.md) under [AI](ai.md) - -### Search - -- Documented how to [disable the total count in search results](search_api.md#disable-result-count) - -### Notifications - -- Covered the [notification channels](https://doc.ibexa.co/en/6.0/api/notification_channels/) feature from `ibexa/notifications` package -- Revamped the [back office notifications documentation](notifications.md) - -### Users - -- Add how to disable [Recent activity log](recent_activity.md#disable-activity-log) - -### HTTP Cache - -- Listed the [value types supported by the response taggers](content_aware_cache.md#delegator-and-value-taggers) - -### PHP API - -- Enhanced the PHP API reference with the following new classes and namespaces: - - [`Ibexa\Contracts\Cdp\Exception\MembershipApiException`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cdp-Exception-MembershipApiException.html) - - [`Ibexa\Contracts\Cdp\Membership`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-cdp-membership.html) - - [`Ibexa\Contracts\ConnectorRaptor\Message\TrackServerSideEventMessage`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Message-TrackServerSideEventMessage.html) - - [`Ibexa\Contracts\ConnectorRaptor\Tracking\Event\PageViewEventData`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-Event-PageViewEventData.html) - - [`Ibexa\Contracts\ConnectorRaptor\Tracking\PageViewTrackerInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-PageViewTrackerInterface.html) - - [`Ibexa\Contracts\Mcp`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-mcp.html) - -### DDEV - -- Added how to [configure a mail catcher in DDEV](install_with_ddev.md#configure-mailer-optional) for email testing - -## April 2026 - -### Releases - -- [v5.0.7 release notes](https://doc.ibexa.co/en/5.0/release_notes/ibexa_dxp_v5.0/#ibexa-dxp-v507) -- [v4.6.29 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#ibexa-dxp-v4629) - -### Configuration - -- Added trailing slashes to all `excluded_uri_prefixes` items to avoid collision with other URIs (for example, `/media` matches on both `/media` and `/mediation` while `/media/` only on `/media/`) - -### PHP API - -- [`Ibexa\Contracts\ConnectorRaptor`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-connectorraptor.html) -- [`Ibexa\Contracts\IntegratedHelp`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-integratedhelp.html) - -## March 2026 - -### Products - -- Distinguish [physical and virtual products in product catalog guide](https://doc.ibexa.co/en/5.0/product_catalog/product_catalog_guide/#virtual-and-physical-products) -- Added [creating product type example in product API](https://doc.ibexa.co/en/5.0/product_catalog/product_api/#creating-product-types) -- Detailed [how to add a custom attribute type to an existing storage definition](https://doc.ibexa.co/en/5.0/product_catalog/create_custom_attribute_type/#storage-definition) - -### Collaborative editing - -- Documented [how to extend collaboration](https://doc.ibexa.co/en/5.0/content_management/collaborative_editing/extend_collaborative_editing/) with a shared cart example - -### Search - -- Introduced [embeddings search API for taxonomy](https://doc.ibexa.co/en/5.0/search/embeddings_reference/embeddings_reference/) - -### Images - -- Illustrated [image optimizer customization](https://doc.ibexa.co/en/5.0/content_management/images/images/#customizing-image-optimizers) - -## February 2026 - -### Releases - -- [v5.0.6 release notes](https://doc.ibexa.co/en/5.0/release_notes/ibexa_dxp_v5.0/#ibexa-dxp-v506) -- [v4.6.28 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#ibexa-dxp-v4628) - -### CDP - -- Illustrated how to [export additional user data](raptor_cdp_data_customization.md#export-additional-user-data) -- Detailed [Ibexa Messenger support for large batches of data](raptor_cdp_data_export.md#ibexa-messenger-support-for-large-batches-of-data) -- Introduced the [CDP Monolog channel](raptor_cdp_data_export.md#cdp-monolog-channel) -- Added [`Ibexa\Contracts\Cdp` PHP API reference](/api/php_api/php_api_reference/namespaces/ibexa-contracts-cdp.html) - -### Infrastructure - -#### Modified 5.0 update instructions - -To [update from v5.0.x to v5.0.latest](https://doc.ibexa.co/en/5.0/update_and_migration/from_5.0/update_from_5.0/), you have to ensure that Yarn dependencies are up-to-date before running Composer. - -#### [[= product_name_cloud =]] - -- Added documentation describing [how to use the new `ibexa/cloud` package](https://doc.ibexa.co/en/5.0/ibexa_cloud/install_on_ibexa_cloud/) and the [environment variables it provides](https://doc.ibexa.co/en/5.0/ibexa_cloud/environment_variables/) - -#### DFS configuration - -- Updated [DFS](clustering.md#configuring-the-dfs-io-handler) and [Solr](install_solr.md#configure-the-bundle) configuration examples to use environment variables directly with [Environment Variable Processors]([[= symfony_doc =]]/configuration/env_var_processors.html) syntax instead of intermediate parameters. -This promotes skipping the rebuild of the Symfony container when environment variable values change. - -## January 2026 - -### Releases - -- [v5.0.5 release notes](https://doc.ibexa.co/en/5.0/release_notes/ibexa_dxp_v5.0/#ibexa-dxp-v505) -- [v4.6.27 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#ibexa-dxp-v4627) - -### Getting started - -- Added a description of password constraints in [Install Ibexa DXP](install_cohesivo.md#create-a-database) and [Install with DDEV](install_with_ddev.md#6-install-the-platform-and-its-database) - -### Administration - -- Updated icon function and icon set usage instructions in [Custom icons](custom_icons.md) - -### Discounts - -- Added Ibexa Messenger instructions for Ibexa DXP 4.6 - - Modified [discounts configuration](https://doc.ibexa.co/en/4.6/discounts/configure_discounts/#discount-re-indexing) - - Added [installation instructions](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/background_tasks/#installation) - -### Multisite - -- Site Factory - - Fixed an issue with [design configuration](site_factory.md#configure-designs) - -### Search - -- Added support for Elasticsearch 8.19+: - - Updated the [requirements](https://doc.ibexa.co/en/5.0/getting_started/requirements/) - - Updated the [Elasticsearch overview](elasticsearch_overview.md) - - Modified the [configuration instructions](configure_elasticsearch.md) - - Modified the [installation instructions](install_elasticsearch.md) - - Modified the [system update instructions](https://doc.ibexa.co/en/5.0/update_and_migration/from_5.0/update_from_5.0/) - -### Infrastructure and maintenance - -- Added [reverse proxy installation instructions](clustering_with_ddev.md#install-reverse-proxy) to DDEV cluster description -- Modified the [system update instructions](https://doc.ibexa.co/en/5.0/update_and_migration/from_5.0/update_from_5.0/) to account for numerous changes in the product -- Detailed the Varnish [reverse proxy configuration instructions](reverse_proxy.md#vcl-base-files) by mentioning specific VCL files that must be used - -## December 2025 - -### Discounts - -- Extending Discounts - - Added documentation about how to [create custom conditions and rules](https://doc.ibexa.co/en/5.0/discounts/extend_discounts/#create-custom-conditions-and-rules) and [change discount priority](https://doc.ibexa.co/en/5.0/discounts/extend_discounts/#change-discount-priority) - - Added documentation about how to [extend Discounts wizard](https://doc.ibexa.co/en/5.0/discounts/extend_discounts_wizard/) - - Example [how to deal with discounts products using the API](https://doc.ibexa.co/en/5.0/discounts/discounts_api/#example-api-usage) added in the Discounts API page - -### Infrastructure - -- Updated [requirements](https://doc.ibexa.co/en/4.6/getting_started/requirements/) for Ibexa DXP 4.6 and 5.0: PostgreSQL 18 is now officially supported - -### Ibexa Cloud - -- Naming update in the documentation: [renamed Platform.sh to Upsun](https://upsun.com/platform-sh-is-now-upsun/) - -## November 2025 - -### Releases - -- [v5.0.4 release notes](https://doc.ibexa.co/en/5.0/release_notes/ibexa_dxp_v5.0/#ibexa-dxp-v504) -- [v4.6.26 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#ibexa-dxp-v4626) - -### Infrastructure - -- [MariaDB 11.4 is officially supported on v5 and v4.6](https://doc.ibexa.co/en/5.0/getting_started/requirements/#dbms) - -### Taxonomy - -- Described [Taxonomy suggestions](taxonomy.md#taxonomy-suggestions) - -### Collaborative editing - -- Improved Collaborative editing: - - Added [real-time editing configuration](configure_collaborative_editing.md#configure-real-time-editing) - - Added Collaborative editing policies for [content items](policies.md#content-collaborative-editing) and [products](policies.md#product-collaborative-editing) - - Added [Collaborative editing limitations](limitation_reference.md#collaborative-editing-limitations) - -### Search - -- Expended search API to content types: - - [Finding and filtering content types](managing_content.md#finding-and-filtering-content-types) - - [Content Type Search Criteria reference](content_type_criteria.md) - - [Content Type Search Sort Clauses](content_type_sort_clauses.md) - - [Filter content types REST resource](/api/rest_api/rest_api_reference/rest_api_reference.html#tag/Type/operation/api_contenttypesview_post) - -### LTS Updates - -- Added documentation for Integrated help (v5 and v4.6): - - [how to install](integrated_help.md) - - [how to customize](customize_integrated_help.md) -- Added [Anthropic connector installation](configure_ai_actions.md#install-anthropic-connector) (v5 only) - -### DDEV - -- Updated [Solr installation in DDEV cluster](clustering_with_ddev.md#solr) - -### PHP API - -- Enhanced the PHP API reference with the following new classes for Ibexa DXP 4.6 and 5.0: - - - [`Ibexa\Contracts\Elasticsearch\Query\EmbeddingVisitor`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Elasticsearch-Query-EmbeddingVisitor.html) - - [`Ibexa\Contracts\AdminUi\ContentType\ContentTypeFieldsByExpressionServiceInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-ContentType-ContentTypeFieldsByExpressionServiceInterface.html) - - [`Ibexa\Contracts\Collaboration\Invitation\Query\Criterion\ParticipantScope`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-Criterion-ParticipantScope.html) - - [`Ibexa\Contracts\Collaboration\Invitation\Query\Criterion\ParticipantType`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-Criterion-ParticipantType.html) - - [`Ibexa\Contracts\Collaboration\Participant\ParticipantDiscriminator`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Participant-ParticipantDiscriminator.html) - - [`Ibexa\Contracts\ConnectorAi\Action\DataType\Taxonomy`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Action-DataType-Taxonomy.html) - - [`Ibexa\Contracts\ConnectorAi\Action\DataType\TaxonomyEntry`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Action-DataType-TaxonomyEntry.html) - - [`Ibexa\Contracts\ConnectorAi\Action\DataType\TaxonomySuggestion`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Action-DataType-TaxonomySuggestion.html) - - [`Ibexa\Contracts\ConnectorAi\Action\DataType\TaxonomySuggestionInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Action-DataType-TaxonomySuggestionInterface.html) - - [`Ibexa\Contracts\ConnectorAi\Action\DataType\TextToTaxonomyInput`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Action-DataType-TextToTaxonomyInput.html) - - [`Ibexa\Contracts\ConnectorAi\Action\Response\TaxonomyResponse`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Action-Response-TaxonomyResponse.html) - - [`Ibexa\Contracts\ConnectorAi\Action\SuggestTaxonomyAction`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorAi-Action-SuggestTaxonomyAction.html) - - [`Ibexa\Contracts\ConnectorAi\Action\TextToTaxonomy`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-connectorai-action-texttotaxonomy.html) - - [`Ibexa\Contracts\Core\Repository\Values\Content\EmbeddingQuery`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-EmbeddingQuery.html) - - [`Ibexa\Contracts\Core\Repository\Values\Content\EmbeddingQueryBuilder`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-EmbeddingQueryBuilder.html) - - [`Ibexa\Contracts\Core\Repository\Values\ContentType\Query\Criterion\ContentTypeGroupName`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-ContentType-Query-Criterion-ContentTypeGroupName.html) - - [`Ibexa\Contracts\Core\Repository\Values\Content\Query\Embedding`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Query-Embedding.html) - - [`Ibexa\Contracts\Core\Repository\Values\Content\QueryValidatorInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-QueryValidatorInterface.html) - - [`Ibexa\Contracts\Core\Search\Embedding`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-core-search-embedding.html) - - [`Ibexa\Contracts\Core\Search\FieldType\EmbeddingField`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Search-FieldType-EmbeddingField.html) - - [`Ibexa\Contracts\Core\Search\FieldType\EmbeddingFieldFactory`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Search-FieldType-EmbeddingFieldFactory.html) - - [`Ibexa\Contracts\FieldTypeRichTextRTE`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-fieldtyperichtextrte.html) - - [`Ibexa\Contracts\Share\Mapper`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-share-mapper.html) - - [`Ibexa\Contracts\Solr\Query\EmbeddingVisitor`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Solr-Query-EmbeddingVisitor.html) - - [`Ibexa\Contracts\Taxonomy\Embedding`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-taxonomy-embedding.html) - - [`Ibexa\Contracts\Taxonomy\Search\Query\Value\TaxonomyEmbedding`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Taxonomy-Search-Query-Value-TaxonomyEmbedding.html) - - [`Ibexa\Contracts\User\PasswordReset\NotifierInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-User-PasswordReset-NotifierInterface.html) - - In addition, few only for 5.0 version: - - - [`Ibexa\Contracts\CoreSearch\Values\Query\PaginationAwareInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-CoreSearch-Values-Query-PaginationAwareInterface.html) - - [`Ibexa\Contracts\ProductCatalog\CapabilitiesEnum`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-CapabilitiesEnum.html) - - [`Ibexa\Contracts\ProductCatalog\CapabilitiesServiceInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-CapabilitiesServiceInterface.html) - - [`Ibexa\Contracts\SiteFactory\Values\Query\Criterion\MatchTreeRootLocationIds`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-SiteFactory-Values-Query-Criterion-MatchTreeRootLocationIds.html) - -### Contributions - -We want to thank - -- [romank](https://github.com/romank) for fixing a parse error in [Customize registration forms](8_enable_account_registration.md#customize-registration-forms) example -- [todomagichere](https://github.com/todomagichere) for correcting `ibexa_path()` description in [URL Twig functions](url_twig_functions.md) - -## October 2025 - -### Releases - -- [v5.0.3 release notes](https://doc.ibexa.co/en/5.0/release_notes/ibexa_dxp_v5.0/#ibexa-dxp-v503) -- [v4.6.25 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#ibexa-dxp-v4625) - -### Collaborative editing - -- Described: - - [installation and configuration](configure_collaborative_editing.md) in more detail - - [search criteria](collaboration_criteria.md) and [sort clauses](collaboration_sort_clauses.md) for [Collaborative editing](collaborative_editing.md) - - [events](collaboration_events.md) - -### Extending Page Builder and Form builder - -- Expanded the [custom block for Page Builder](create_custom_page_block.md) and [custom field for Form Builder](create_custom_form_field.md) examples to showcase providing translations - -### Search - -- Added documentation for [CustomField](customfield_criterion.md) criterion - -### Localization - -- Added a note about disabling [community contributions](contribute_translations.md) for French, German and Spanish translations, in preparation for the upcoming release - -### Trainings - -- The [Advanced Developer training](https://learn.ibexa.co) for Ibexa DXP v5 is now available - -### Documentation improvements - -- Improved the landing page for [AI Actions](ai_actions.md) for easier navigation -- Improved the experience when switching between different versions of the documentation site - -## September 2025 - -### Releases - -- [v5.0.2 release notes](https://doc.ibexa.co/en/5.0/release_notes/ibexa_dxp_v5.0/#ibexa-dxp-v502) -- [v4.6.24 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#ibexa-dxp-v4624) - -### Background operations - -- Added documentation for handling [background tasks](background_tasks.md) using the new integration with Symfony Messenger -- Described the configuration required to [asynchronously reindex discounted product prices](https://doc.ibexa.co/en/5.0/discounts/configure_discounts/#discount-re-indexing) and the new discount [events](https://doc.ibexa.co/en/5.0/api/event_reference/discounts_events/) and [search criteria](https://doc.ibexa.co/en/5.0/search/discounts_search_reference/discounts_criteria/) - -### Revamped notifications - -- Updated the [notifications](notifications.md) page after recent [improvements to notifications](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#improvements-to-notifications), including the [new notification criteria](notification_search_criteria.md) - -### Custom Page Builder blocks - -- Updated the [custom block example](create_custom_page_block.md), highlighting usage of [`udw_config_name` option](page_block_attributes.md#block-attribute-types) to customize the [Universal Discovery Module](browser.md) - -### Migrations - -- Illustrated how to [send a location to trash](importing_data.md#locations) using data migrations - -### Search - -- Added documentation for the [`IsContainer`](iscontainer_criterion.md) criterion - -### Collaborative editing - -- Added the [Collaborative editing product guide](collaborative_editing_guide.md), describing the high-level overview of this feature -- Described collaborative editing endpoints to the [REST API reference](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#collaborative-editing) for Ibexa DXP v4.6 - -### Infrastructure - -- Marked Redis 7.2 as supported in the [requirements for Ibexa DXP 4.6](https://doc.ibexa.co/en/4.6/getting_started/requirements/#clustering) - -### PHP API - -- Enhanced the PHP API reference with the following new classes for Ibexa DXP 4.6 and 5.0: - - [`Ibexa\Contracts\AdminUi\Event\ResolveVersionPreviewUrlEvent`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Event-ResolveVersionPreviewUrlEvent.html) - - [`Ibexa\Contracts\AdminUi\Exception\UnresolvedPreviewUrlException`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Exception-UnresolvedPreviewUrlException.html) - - [`Ibexa\Contracts\AdminUi\PreviewUrlResolver\VersionPreviewUrlResolverInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-PreviewUrlResolver-VersionPreviewUrlResolverInterface.html) - - [`Ibexa\Contracts\Core\Validation\Constraint\UniqueIdentifier`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Validation-Constraint-UniqueIdentifier.html) - - [`Ibexa\Contracts\Core\Validation\Constraint\UniqueIdentifierValidator`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Validation-Constraint-UniqueIdentifierValidator.html) - - [`Ibexa\Contracts\Discounts\Event\EnableDiscountEvent`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-EnableDiscountEvent.html) - - [`Ibexa\Contracts\Discounts\Event\BeforeDisableDiscountEvent`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-BeforeDisableDiscountEvent.html) - - [`Ibexa\Contracts\Discounts\Event\BeforeEnableDiscountEvent`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-BeforeEnableDiscountEvent.html) - - [`Ibexa\Contracts\Discounts\Event\DisableDiscountEvent`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Event-DisableDiscountEvent.html) - - [`Ibexa\Contracts\Discounts\Value\Query\Criterion\IndexedAtCriterion`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-IndexedAtCriterion.html) - - [`Ibexa\Contracts\Discounts\Value\Query\Criterion\UpdatedAtCriterion`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Value-Query-Criterion-UpdatedAtCriterion.html) - - [`Ibexa\Contracts\Messenger\Transport\MessageProviderInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-Messenger-Transport-MessageProviderInterface.html) - - [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilderRegistry`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilderRegistry.html) - - [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilderRegistryInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilderRegistryInterface.html) - - [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilder\AttributeCriterionBuilderInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilder-AttributeCriterionBuilderInterface.html) - - [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilder\CheckboxBuilder`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilder-CheckboxBuilder.html) - - [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilder\ColorBuilder`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilder-ColorBuilder.html) - - [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilder\FloatBuilder`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilder-FloatBuilder.html) - - [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilder\IntegerBuilder`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilder-IntegerBuilder.html) - - [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\AttributeCriterionBuilder\SelectionBuilder`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-AttributeCriterionBuilder-SelectionBuilder.html) - - In addition, a new exception is available in the 5.0 version: - - - [`Ibexa\Contracts\AutomatedTranslation\Exception\ClientNotConfiguredException`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-AutomatedTranslation-Exception-ClientNotConfiguredException.html) - -## August 2025 - -### Security - -- Added instructions on [how to generate PEM keypair](https://doc.ibexa.co/en/5.0/infrastructure_and_maintenance/security/development_security/#jwt-authentication) for JWT authentication - -### Administration - -- Updated a list of [bundles available in the product](https://doc.ibexa.co/en/5.0/administration/project_organization/bundles/#core-packages) - -### Training - -- A new version of Ibexa DXP Developer Training has been released, this time focusing on the v5.0.x. - -### v5.0.1 - -- [v5.0.1 release notes](https://doc.ibexa.co/en/5.0/release_notes/ibexa_dxp_v5.0/#ibexa-dxp-v501) - -### v4.6.23 - -- [v4.6.23 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#ibexa-dxp-v4623) - -### v4.6.22 - -- [v4.6.22 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#ibexa-dxp-v4622) - -### PHP API - -- Enhanced the PHP API reference with the following new classes: - - [`Ibexa\Contracts\ProductCatalogSymbolAttribute\Search\Criterion\SymbolAttribute`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalogSymbolAttribute-Search-Criterion-SymbolAttribute.html) - - [`Ibexa\Contracts\ProductCatalogSymbolAttribute\Value\ChecksumInterface`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalogSymbolAttribute-Value-ChecksumInterface.html) - - [`Ibexa\Contracts\Cart\Exception\VatCalculationExceptionInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-Exception-VatCalculationExceptionInterface.html) - - [`Ibexa\Contracts\Core\Repository\Values\Notification\CriterionHandlerInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Notification-CriterionHandlerInterface.html) - - [`Ibexa\Contracts\Core\Repository\Values\Notification\Query\CriterionInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Notification-Query-CriterionInterface.html) - - [`Ibexa\Contracts\Core\Repository\Values\Notification\Query\Criterion\DateCreated`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Notification-Query-Criterion-DateCreated.html) - - [`Ibexa\Contracts\Core\Repository\Values\Notification\Query\NotificationQuery`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Notification-Query-NotificationQuery.html) - - [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\Criterion\AbstractPriceRange`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-Criterion-AbstractPriceRange.html) - - [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\Criterion\CustomPriceRange`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-Criterion-CustomPriceRange.html) - -## July 2025 - -### v5.0.0 - -[Ibexa DXP v5.0.0](https://doc.ibexa.co/en/5.0/release_notes/ibexa_dxp_v5.0/#ibexa-dxp-v500) is now available, accompanied by [v5.0 documentation](https://doc.ibexa.co/en/5.0/). -Ibexa DXP 5.0 LTS benefits of the [Long-Term Support](https://www.ibexa.co/blog/continuous-innovation-how-ibexa-dxp-s-lifecycle-enhances-feature-delivery). - -See how to [update from 4.6 to 5.0](https://doc.ibexa.co/en/5.0/update_and_migration/from_4.6/update_to_5.0/). - -#### LTS Updates - -LTS Updates from v4.6 are included out of the box in v5.0 as features. -Installation instructions for v4.6 are not needed in v5.0, or replaced by configuration instructions. - -| 4.6 | 5.0 | -|:-----------------------------------------------------------------------------------------------------------------|:--------------------------------------------------------------------------------------------------| -| [Install AI Actions](https://doc.ibexa.co/en/4.6/ai_actions/install_ai_actions/) | [Configure AI Actions](https://doc.ibexa.co/en/5.0/ai_actions/configure_ai_actions/) | -| [Install Discounts](https://doc.ibexa.co/en/4.6/discounts/install_discounts/) | [Customize Discounts](https://doc.ibexa.co/en/5.0/discounts/configure_discounts/) directly | -| [Date and time attribute: Installation](https://doc.ibexa.co/en/4.6/pim/attributes/date_and_time/#installation) | [Date and time attribute: Usage](https://doc.ibexa.co/en/5.0/product_catalog/attributes/date_and_time/#usage) | -| [Symbol attribute: Installation](https://doc.ibexa.co/en/4.6/pim/attributes/symbol_attribute_type/#installation) | [Symbol attribute](https://doc.ibexa.co/en/5.0/pim/attributes/symbol_attribute_type/) | - -#### PHP API - -Documentation examples and [PHP API Reference](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/) have been updated for v5.0. -You can use [`ibexa/rector`](https://github.com/ibexa/rector#ibexa-dxp-rector) package that allows to maintain your custom PHP code quality. -Consult the [Ibexa DXP v5.0 renames, deprecations and removals](https://doc.ibexa.co/en/5.0/release_notes/ibexa_dxp_v5.0_deprecations/) to learn more about the changes. - -Major additions to the PHP API Reference are [`Ibexa\Contracts\Collaboration`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/namespaces/ibexa-contracts-collaboration.html) and [`Ibexa\Contracts\Share`](https://doc.ibexa.co/en/5.0/api/php_api/php_api_reference/namespaces/ibexa-contracts-share.html) namespaces, the building blocks for the [collaboration framework](https://doc.ibexa.co/en/5.0/release_notes/ibexa_dxp_v5.0/#collaboration). - -#### REST API - -Layout for [v5.0 REST API Reference](https://doc.ibexa.co/en/5.0/api/rest_api/rest_api_reference/rest_api_reference.html) is now changed. -As [Ibexa DXP 5.0 is OpenAPI compliant](https://doc.ibexa.co/en/5.0/api/rest_api/rest_api_usage/rest_api_usage/#openapi-support), the specification output is used to generate the online reference. -You can also check the documentation directly on your development installations at `/api/ibexa/v2/doc`. - -## June 2025 - -### Security - -- Added [warning about code block access](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/security/security_checklist/#limit-access-to-code-blocks) - -### v4.6.21 - -- [v4.6.21 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#ibexa-dxp-v4621) - -### Discounts - -- Introduced new [Discounts](https://doc.ibexa.co/en/4.6/discounts/discounts/) feature that allows online stores to temporarily or permanently reduce prices on specific products or categories. -Discounts documentation includes: - - [Product guide](https://doc.ibexa.co/en/4.6/discounts/discounts_guide/) - - [Installation documentation](https://doc.ibexa.co/en/4.6/discounts/install_discounts/) - - [Configuration documentation](https://doc.ibexa.co/en/4.6/discounts/configure_discounts/) - - [API usage](https://doc.ibexa.co/en/4.6/discounts/discounts_api/) - - New [Search Sort Clauses](https://doc.ibexa.co/en/4.6/search/discounts_search_reference/discounts_sort_clauses/) and [Search Criteria](https://doc.ibexa.co/en/4.6/search/discounts_search_reference/discounts_criteria/) - - New [events](https://doc.ibexa.co/en/4.6/api/event_reference/discounts_events/) - - Rest API for [Discounts](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#discounts) and [Discount Codes](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#discount-codes) - - New [Twig functions](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/discounts_twig_functions/) and [Twig Components groups](https://doc.ibexa.co/en/4.6/administration/back_office/back_office_elements/custom_components/#discounts) - - New [policies](https://doc.ibexa.co/en/4.6/permissions/policies/#discounts) and [limitations](https://doc.ibexa.co/en/4.6/permissions/limitation_reference/#discount-owner-limitation) - -### PHP API - -- Enhanced the PHP API reference with the following new classes: - - [`Ibexa\Contracts\Checkout\Exception`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/namespaces/ibexa-contracts-checkout-exception.html) - - [`Ibexa\Contracts\Checkout\Exception\CheckoutException`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Checkout-Exception-CheckoutException.html) - - [`Ibexa\Contracts\Checkout\Discounts\DiscountsValidationFailedException`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Checkout-Discounts-DiscountsValidationFailedException.html) - - [`Ibexa\Contracts\Discounts\Exception\DiscountValueResolutionException`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Discounts-Exception-DiscountValueResolutionException.html) - -## May 2025 - -### v4.6.20 - -- [v4.6.20 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#ibexa-dxp-v4620) - -### Twig Components - -- Documented new [Twig Components](https://doc.ibexa.co/en/4.6/templating/components/) feature that allows you to effortlessly build customizable and reusable Twig templates in Ibexa DXP - -### Extending Sub-items view - -- Added documentation about how to [add new views or overwrite existing ones in the Sub-items list](https://doc.ibexa.co/en/4.6/administration/back_office/subitems_list/#create-custom-sub-items-list-view) - -### PHP API - -- Enhanced the PHP API with the following new classes: - - [`Ibexa\Contracts\AdminUi\Menu\AbstractActionBuilder`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-AdminUi-Menu-AbstractActionBuilder.html) - - [`Ibexa\Contracts\TwigComponents\ComponentInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-TwigComponents-ComponentInterface.html) - - [`Ibexa\Contracts\TwigComponents\ComponentRegistryInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-TwigComponents-ComponentRegistryInterface.html) - - [`Ibexa\Contracts\TwigComponents\Event\RenderGroupEvent`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-TwigComponents-Event-RenderGroupEvent.html) - - [`Ibexa\Contracts\TwigComponents\Event\RenderSingleEvent`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-TwigComponents-Event-RenderSingleEvent.html) - - [`Ibexa\Contracts\TwigComponents\Exception\InvalidArgumentException`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-TwigComponents-Exception-InvalidArgumentException.html) - - [`Ibexa\Contracts\TwigComponents\Renderer\RendererInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-TwigComponents-Renderer-RendererInterface.html) - -### Requirements update - -- Updated [requirements](https://doc.ibexa.co/en/4.6/getting_started/requirements/) for Ibexa DXP 4.6: MySQL 8.4, Node 20 and Node 22 are now officially supported - -### AI Actions Connect handler - -- Documented [how to use the `ibexa:connect:init-custom-property-structures` command](https://doc.ibexa.co/en/4.6/ai_actions/install_ai_actions/#initiate-integration) to integrate [AI actions](https://doc.ibexa.co/en/4.6/ai_actions/ai_actions_guide/) with [Ibexa Connect]([[= connect_doc =]]/) - -### Contributions - -We want to thank [todomagichere](https://github.com/todomagichere) and [hgiesenow](https://github.com/hgiesenow) for their help in improving the [Order management API](https://doc.ibexa.co/en/4.6/commerce/order_management/order_management_api) and [Reverse proxy](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/cache/http_cache/reverse_proxy) documentation pages - -## April 2025 - -### Content management - -- Introduced a [custom DAM connector example](add_image_asset_from_dam.md#extend-dam-support-by-adding-custom-connector) -- Added [grace period definition and configuration](repository_configuration.md#grace-period-for-archived-versions) - -### AI Actions - -- Documented [how to couple AI Actions and Ibexa Connect](configure_ai_actions.md#configure-access-to-ibexa-connect) to build complex data transformation workflows without having to rely on custom code - -### REST API - -- Added [`/cart/{identifier}/summary` REST resource's `ShortCartSummary` response format](/api/rest_api/rest_api_reference/rest_api_reference.html#managing-commerce-carts-cart-summary) - -### Infrastructure and maintenance - -- Announced [v4.6.19 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/#ibexa-dxp-v4619) and [v4.6.19 upgrade instructions](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.6/update_from_4.6/#v4619) with an important security notice about RichText XML, and introducing [Ibexa Rector](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.6/update_from_4.6/#ibexa-rector) to help to maintain custom code - -## March 2025 - -### Release notes - -- Redesigned [Release notes page](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.6/) now includes filters to easily sort by product edition or LTS Update type, while the updated documentation homepage provides quick access to essential details, showcasing changes introduced in the latest patch and LTS Update releases - -### Requirements update - -- Updated [requirements](https://doc.ibexa.co/en/4.6/getting_started/requirements/#operating-system) for Ibexa DXP: RHEL 9.5 and CentOS Stream 9 are now supported for v4.6 - -### AI Actions - -- Specified minimum Ibexa DXP version supported while working with AI Actions - - AI Actions product guide: [Availability](https://doc.ibexa.co/en/4.6/ai_actions/ai_actions_guide/#availability) - - AI Actions section: [Install AI Actions](https://doc.ibexa.co/en/4.6/ai_actions/install_ai_actions/) - -### Online Editor - -- Added an example in the Online Editor documentation showing how to [add characters and shortcuts for specific characters to the SpecialCharacters plugin in CKEditor configuration](https://doc.ibexa.co/en/4.6/content_management/rich_text/extend_online_editor/#change-ckeditor-configuration) - -### Templating - -- Updated a description of the [`ibexa_render`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/content_twig_functions/#content-rendering) Twig function to mention its support for objects implementing the [`ContentAwareInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) as argument - -## February 2025 - -### Security - -- Expanded security recommendations to follow when working with [images submitted by users](https://doc.ibexa.co/en/4.6/content_management/images/images/#configuring-image-variations) - -### Date and time attributes - -- Added documentation for the latest LTS Update: [Date and time attributes](https://doc.ibexa.co/en/4.6/pim/attributes/date_and_time/) - -### Automated Translation - -- Added information about how you can install and extend the [Automated Translation](https://doc.ibexa.co/en/4.6/multisite/languages/automated_translations/) feature - -### Interactive demos - -- Updated [Form Builder](https://doc.ibexa.co/en/4.6/content_management/forms/form_builder_guide/#how-does-form-builder-work), [Page Builder](https://doc.ibexa.co/en/4.6/content_management/pages/page_builder_guide/#create-page), and [Online Editor](https://doc.ibexa.co/en/4.6/content_management/rich_text/online_editor_guide/) product guides by adding interactive demos that present these features - -### Page Builder clipboard - -- Described how you can use the [Page Builder's clipboard](https://doc.ibexa.co/projects/userguide/en/4.6/content_management/create_edit_pages/#copy-blocks) to copy blocks between pages - -### REST API - -- Described endpoints for [Segment](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#segments) and [Segment Group](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#segment-groups) management -- Described endpoints for [AI Action Configurations](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#ai-actions-list-action-configurations) and [AI Action Types](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#ai-actions-list-action-types) -- Improved the example for [creating Orders](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#orders-create-order), to show how to pass shipping cost data - -### HTTP Cache - -- Improved the VCL snippet to cache the first ESI request when [using Basic Auth with Fastly](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/cache/http_cache/fastly/#enable-basic-auth-on-fastly) - -### Search - -- Expanded the lists of [search criteria](https://doc.ibexa.co/en/4.6/search/criteria_reference/search_criteria_reference/) and [sort clauses](https://doc.ibexa.co/en/4.6/search/sort_clause_reference/sort_clause_reference/) to show their support for [searching in Trash](https://doc.ibexa.co/en/4.6/search/search_in_trash_reference/) - -### Templating - -- Added the [icon reference](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/icon_twig_functions/#icons-reference) that lists all the icons you can use when extending the back office -- Updated descriptions of the following Twig functions to mention their support for objects implementing the [`ContentAwareInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) as arguments: - - [`ibexa_content_field_identifier_first_filled_image`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/image_twig_functions/#ibexa_content_field_identifier_first_filled_image) - - [`ibexa_content_name`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/content_twig_functions/#ibexa_content_name) - - [`ibexa_field_is_empty`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/field_twig_functions/#ibexa_field_is_empty) - - [`ibexa_field_description`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/field_twig_functions/#ibexa_field_description) - - [`ibexa_field_name`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/field_twig_functions/#ibexa_field_name) - - [`ibexa_field_value`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/field_twig_functions/#ibexa_field_value) - - [`ibexa_field`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/field_twig_functions/#ibexa_field) - - [`ibexa_has_field`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/field_twig_functions/#ibexa_has_field) - - [`ibexa_render_field`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/field_twig_functions/#field-rendering) - - [`ibexa_seo_is_empty`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/content_twig_functions/#ibexa_content_name) - - [`ibexa_seo`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/content_twig_functions/#ibexa_seo_is_empty) - - [`ibexa_taxonomy_entries_for_content`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/content_twig_functions/#ibexa_seo) -- Described new Twig filter for product attributes grouping: [`ibexa_product_catalog_group_attributes`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/product_twig_functions/#ibexa_product_catalog_group_attributes) - -### DDEV - -- Described how you can use the [Ibexa Cloud addons](https://doc.ibexa.co/en/4.6/ibexa_cloud/ddev_and_ibexa_cloud/#with-ibexa-cloud-add-ons) when working with [[= product_name_cloud =]] projects - -### [[= product_name_cloud =]] - -- Described how to [set up Composer authentication](https://doc.ibexa.co/en/4.6/ibexa_cloud/install_on_ibexa_cloud/#composer-authentication-using-the-web-console) when creating an [[= product_name_cloud =]] project - -#### PHP API - -Enhanced the PHP API with the following new classes and interfaces: - -- `Ibexa\Contracts\Cart`: - - [`Value\Query\Criterion\LogicalAnd`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-Value-Query-Criterion-LogicalAnd.html) - - [`Value\Query\Criterion\OwnerCriterion`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-Value-Query-Criterion-OwnerCriterion.html) - - [`Value\Query\CriterionInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Cart-Value-Query-CriterionInterface.html) -- `Ibexa\Contracts\Segmentation`: - - [`Exception\ValidationFailedExceptionInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Segmentation-Exception-ValidationFailedExceptionInterface.html) -- `Ibexa\Contracts\ProductCatalog`: - - [`Iterator\BatchIteratorAdapter\RegionFetchAdapter`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Iterator-BatchIteratorAdapter-RegionFetchAdapter.html) -- `Ibexa\Contracts\Connect`: - - [`ConnectClientInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-ConnectClientInterface.html) - - [`Exception\BadResponseException`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Exception-BadResponseException.html) - - [`Exception\UnserializablePayload`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Exception-UnserializablePayload.html) - - [`Exception\UnserializableResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Exception-UnserializableResponse.html) - - [`PaginationInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-PaginationInterface.html) - - [`Resource\DataStructure\DataStructureBuilder`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructure-DataStructureBuilder.html) - - [`Resource\DataStructure\DataStructureCreateStruct`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructure-DataStructureCreateStruct.html) - - [`Resource\DataStructure\DataStructureFilter`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructure-DataStructureFilter.html) - - [`Resource\DataStructure\DataStructureProperty`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructure-DataStructureProperty.html) - - [`Resource\DataStructure\DataStructurePropertyType`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructure-DataStructurePropertyType.html) - - [`Resource\DataStructureInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-DataStructureInterface.html) - - [`Resource\Hook\HookCreateStruct`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Hook-HookCreateStruct.html) - - [`Resource\Hook\HookFilter`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Hook-HookFilter.html) - - [`Resource\Hook\HookSetDetailsStruct`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Hook-HookSetDetailsStruct.html) - - [`Resource\HookInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-HookInterface.html) - - [`Resource\Scenario\ScenarioCreateStruct`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Scenario-ScenarioCreateStruct.html) - - [`Resource\Scenario\ScenarioFilter`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Scenario-ScenarioFilter.html) - - [`Resource\ScenarioInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-ScenarioInterface.html) - - [`Resource\Team\TeamVariableCreateStruct`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Team-TeamVariableCreateStruct.html) - - [`Resource\Team\TeamVariableFilter`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Team-TeamVariableFilter.html) - - [`Resource\Team\TeamVariableUpdateStruct`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Team-TeamVariableUpdateStruct.html) - - [`Resource\TeamInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-TeamInterface.html) - - [`Resource\Template\TemplateCreateStruct`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Template-TemplateCreateStruct.html) - - [`Resource\Template\TemplateFilter`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-Template-TemplateFilter.html) - - [`Resource\TemplateInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Resource-TemplateInterface.html) - - [`Response\DataStructure\CreateResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-DataStructure-CreateResponse.html) - - [`Response\DataStructure\ListResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-DataStructure-ListResponse.html) - - [`Response\DataStructure\RetrieveResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-DataStructure-RetrieveResponse.html) - - [`Response\Hook\CreateResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Hook-CreateResponse.html) - - [`Response\Hook\ListResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Hook-ListResponse.html) - - [`Response\Hook\RetrieveResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Hook-RetrieveResponse.html) - - [`Response\Hook\SetDetailsResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Hook-SetDetailsResponse.html) - - [`Response\Scenario\CreateResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Scenario-CreateResponse.html) - - [`Response\Scenario\ListResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Scenario-ListResponse.html) - - [`Response\Scenario\RetrieveResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Scenario-RetrieveResponse.html) - - [`Response\Team\TeamVariableCreateResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Team-TeamVariableCreateResponse.html) - - [`Response\Team\TeamVariableListResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Team-TeamVariableListResponse.html) - - [`Response\Team\TeamVariableRetrieveResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Team-TeamVariableRetrieveResponse.html) - - [`Response\Team\TeamVariableUpdateResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Team-TeamVariableUpdateResponse.html) - - [`Response\Template\BlueprintResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Template-BlueprintResponse.html) - - [`Response\Template\CreateResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Template-CreateResponse.html) - - [`Response\Template\ListResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Template-ListResponse.html) - - [`Response\Template\RetrieveResponse`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Response-Template-RetrieveResponse.html) - - [`ResponseInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-ResponseInterface.html) - - [`TransportInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-TransportInterface.html) - - [`Value\Blueprint\Flow`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Flow.html) - - [`Value\Blueprint\Metadata\Scenario`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Metadata-Scenario.html) - - [`Value\Blueprint\Metadata`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Metadata.html) - - [`Value\Blueprint\Module\CustomWebhook`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Module-CustomWebhook.html) - - [`Value\Blueprint\Module\JsonCreate`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Module-JsonCreate.html) - - [`Value\Blueprint\Module\ModuleDesigner`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Module-ModuleDesigner.html) - - [`Value\Blueprint\Module\WebhookRespond`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint-Module-WebhookRespond.html) - - [`Value\Blueprint`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Blueprint.html) - - [`Value\Controller`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Controller.html) - - [`Value\Scheduling`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Connect-Value-Scheduling.html) - -## January 2025 - -### Trainings - -- The Content Editor Training has been released. Learn more in the [announcement blog post](https://www.ibexa.co/blog/constant-development-is-key-so-here-s-a-new-training-for-content-editors) - -### Infrastructure and maintenance - -- The upgrade instructions from v3.3 to v4.6 have been expanded with a section describing the [GraphQL changes in v4](https://doc.ibexa.co/en/4.6/update_and_migration/from_3.3/to_4.0/#graphql) -- Ubuntu 24.04 has been added to the [list of officially supported operating systems](https://doc.ibexa.co/en/4.6/getting_started/requirements/#operating-system) - -### PHP API - -- Added the following interfaces and classes to the public PHP API: - - [`Ibexa\Contracts\Share\Values\PermissionCheckContext`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Share-Values-PermissionCheckContext.html) - - [`Ibexa\Contracts\Checkout\Discounts\DataMapper\DiscountsDataMapperInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Checkout-Discounts-DataMapper-DiscountsDataMapperInterface.html) - - [`Ibexa\Contracts\Seo\Resolver\FieldValueResolverInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Seo-Resolver-FieldValueResolverInterface.html) - -## December 2024 - -### Infrastructure and maintenance - -- Added [v4.6.14 to v4.6.15 update instructions](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.6/update_from_4.6/#v4615) - -## AI Actions - -- Added [extending AI Actions](extend_ai_actions.md) documentation - -### Security - -- Expanded the [Security checklist](security_checklist.md) with advice on TLS, HSTS, DNSSEC, CAA, and domain update protection - -### PHP API - -- Added the following interfaces to the public PHP API: - - [`Ibexa\Contracts\ProductCatalog\Values\Price\PriceEnvelopeInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Price-PriceEnvelopeInterface.html) - - [`Ibexa\Contracts\ProductCatalog\Values\Price\PriceStampInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Price-PriceStampInterface.html) - - [`Ibexa\Contracts\ProductCatalog\Values\StampInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-StampInterface.html) - -## November 2024 - -### Infrastructure and maintenance - -- Added [v4.6.13 to v4.6.14 update instructions](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.6/update_from_4.6/#v4614) which include security fixes -- Added [v3.3.40 to v3.3.41 update instructions](https://doc.ibexa.co/en/4.6/update_and_migration/from_3.3/update_from_3.3/#v3341) which include security fixes - -### Content management - -- Added [AI Actions documentation](https://doc.ibexa.co/en/4.6/ai_actions/ai_actions/) - -### Search - -- New [`IsBookmarked` location criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/isbookmarked_criterion/) -- [`IsUserEnabled` is now available on Solr and Elasticsearch](https://doc.ibexa.co/en/4.6/search/criteria_reference/isuserenabled_criterion/) - -### Documentation - -- When you search using the top bar, if there are more than the 10 listed results, you can see a link to a page with further results at the bottom of the drop-down suggestion list - -### PHP API - -- Added the following namespaces, interfaces, and classes to the public PHP API: - - [`Ibexa\Contracts\Core\Validation`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/namespaces/ibexa-contracts-core-validation.html) namespace and its descendants - - [`Ibexa\Contracts\Notifications\SystemNotification`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/namespaces/ibexa-contracts-notifications-systemnotification.html) namespace and its descendants - - [`Ibexa\Contracts\Notifications\Value\Recipent\UserRecipientInterface`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-Notifications-Value-Recipent-UserRecipientInterface.html) - - [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\Criterion\UpdatedAt`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-Criterion-UpdatedAt.html) - - [`Ibexa\Contracts\ProductCatalog\Values\Product\Query\Criterion\UpdatedAtRange`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-Product-Query-Criterion-UpdatedAtRange.html) - - [`Ibexa\Contracts\ProductCatalog\ProductReferencesResolverStrategy`](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-ProductReferencesResolverStrategy.html) - -## October 2024 - -### Content management - -- Added a caution at the end of the [Create custom Page block](https://doc.ibexa.co/en/4.6/content_management/pages/create_custom_page_block/#add-edit-template) article -- Added `add_block_to_available_blocks` to a [list of available data migration actions](https://doc.ibexa.co/en/4.6/content_management/data_migration/data_migration_actions/#available-migration-actions) - -### Infrastructure and maintenance - -- Updated the [reverse proxy configuration instructions](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/cache/http_cache/reverse_proxy/#varnish-and-basic-auth) by mentioning Basic Auth setup for Varnish -- Reorganized the [Updating Ibexa DXP](https://doc.ibexa.co/en/4.6/update_and_migration/update_ibexa_dxp/) section to put information in logical order and remove duplicates -- [Added v4.6.11 to v4.6.12 update instructions](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.6/update_from_4.6/#v4612) -- [Added v4.6.12 to v4.6.13 update instructions](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.6/update_from_4.6/#v4613) mentioning a command to clean up duplicated entries in the `ezcontentobject_attribute` table -- Changed the [Update to v3.3](https://doc.ibexa.co/en/4.6/update_and_migration/from_2.5/to_3.3/#b-update-the-app) instructions to help avoid an error at `composer update` stage -- Changed the instructions by adding a requirement to handle the [[= product_name_cloud =]] configuration: - - [Update to v4.0](https://doc.ibexa.co/en/4.6/update_and_migration/from_3.3/to_4.0/#ibexa-cloud) - - [Update to v3.3.latest](https://doc.ibexa.co/en/4.6/update_and_migration/from_3.3/update_from_3.3/#v3313) -- Added a suggestion to [remove obsolete database tables](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.3/update_from_4.3_new_commerce/#update-the-database) that were used by a legacy Commerce package - -## Personalization - -- Added dynamic attribute submodels information by: - - mentioning them in customizing the recommendation request instructions - - describing them in user documentation -- Added time-slot based models information by: - - changing the list of parameters available when customizing the recommendation request - - describing them in user documentation - -- Updated configuration details (including endpoint addresses and code examples) in multiple how-to articles - -### Product catalog - -- Updated the [Product API](https://doc.ibexa.co/en/4.6/pim/product_api/) article by fixing method signatures and adding links to the PHP API reference - -### PHP API - -- Added the following new classes to the public PHP API: - - [Ibexa\Contracts\AdminUi\Menu](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/namespaces/ibexa-contracts-adminui-menu.html) - - [Ibexa\Contracts\Core\Pool](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/namespaces/ibexa-contracts-core-pool.html) - - [Ibexa\Contracts\CoreSearch\Values\Query](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/namespaces/ibexa-contracts-coresearch-values-query.html) - - [Ibexa\Contracts\ProductCatalog\Local\Attribute\ContextAwareValueValidatorInterface](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Local-Attribute-ContextAwareValueValidatorInterface.html) - -### REST API - -- Updated the [REST API authentication](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_authentication/) instructions - -## September 2024 - -### Getting started - -- Updated product version requirements and database connection configuration instructions in [Install Ibexa DXP with DDEV](https://doc.ibexa.co/en/4.6/getting_started/install_with_ddev/#2-configure-ddev) - -### Infrastructure and maintenance - -- Modified v4.5.x to v4.6 update instructions by adding [Update Solr configuration](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.5/update_from_4.5/#update-solr-configuration) section -- Added [v4.6.8 to v4.6.11 update instructions](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.6/update_from_4.6/#v4611) - -### PHP API - -- Added edition information to [PHP API reference](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/) to aid navigation - -### REST API - -- Removed multiple obsolete RAML types from the [REST API reference](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html) - -### User management - -- Updated the OAuth server [installation instructions](https://doc.ibexa.co/en/4.6/users/oauth_server/#server-installation) - -## August 2024 - -### Product guides - -- [[[= product_name_exp =]] product guide](https://doc.ibexa.co/en/4.6/ibexa_products/ibexa_experience/) -- [[[= product_name_com =]] product guide](https://doc.ibexa.co/en/4.6/ibexa_products/ibexa_commerce/) -- Added [page collecting all feature product guides](https://doc.ibexa.co/en/4.6/product_guides/product_guides/) - -### Content management - -- Added how to [hide a taxonomy menu item](https://doc.ibexa.co/en/4.6/content_management/taxonomy/taxonomy/#hide-menu-item) - -### Data migration - -- Added a note about [multi-repository and dynamic migration folders](https://doc.ibexa.co/en/4.6/content_management/data_migration/managing_migrations/#migration-folders) - -## July 2024 - -### Getting started - -- Added instructions in [Install Ibexa DXP](https://doc.ibexa.co/en/4.6/getting_started/install_ibexa_dxp/#create-project) about using PHP 8.3 to create a project -- Updated the [requirements for running v3.3.x on PHP 8.3](https://doc.ibexa.co/en/4.6/getting_started/requirements/#php) - -### Infrastructure and maintenance - -- Added [v4.6.4 to v4.6.8 update instructions](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.6/update_from_4.6/#v468) -- Modified [v3.3.x to v3.3.latest update instructions](https://doc.ibexa.co/en/4.6/update_and_migration/from_3.3/update_from_3.3/#update-the-application) -- Updated the recommendations in [Performance](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/performance/#symfony) by mentioning Symfony - -### Data migration - -- Added a note about multi-repository scenario in [Managing migration](https://doc.ibexa.co/en/4.6/content_management/data_migration/managing_migrations/#migration-folders) -- Updated the instructions for [Importing data](https://doc.ibexa.co/en/4.6/content_management/data_migration/importing_data/#built-in-functions) by mentioning the `env` function and a possibility of swapping content items assigned to a location - -### [[= product_name_cloud =]] - -- Placed all articles about [[= product_name_cloud =]] [in a common location](https://doc.ibexa.co/en/4.6/ibexa_cloud/ibexa_cloud/) - -### [[= product_name_engage =]] - -- [Added a landing page in the [[= product_name_engage =]] area](https://doc.ibexa.co/en/4.6/ibexa_engage/ibexa_engage/) - -### Product guides - -- [[[= product_name_cloud =]] product guide](https://doc.ibexa.co/en/4.6/ibexa_cloud/ibexa_cloud_guide/) - -## June 2024 - -### [[= product_name_engage =]] - -- [Learn more about [[= product_name_engage =]]](https://doc.ibexa.co/en/4.6/ibexa_engage/install_ibexa_engage/) - -### Search - -- [Configuring Elasticsearch with analyzers for different languages](https://doc.ibexa.co/en/4.6/search/search_engines/elasticsearch/configure_elasticsearch/#add-language-specific-analysers) -- [ContentName search criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/contentname_criterion/) - -### Dashboard - -- [Customizing the content type for Dashboard container](https://doc.ibexa.co/en/4.6/administration/dashboard/configure_default_dashboard/#container-content-type-identifier) - -### Infrastructure and maintenance - -- [Updated [[= product_name_cloud =]] domain to ibexa.cloud](https://doc.ibexa.co/en/4.6/ibexa_cloud/install_on_ibexa_cloud/#4-push-the-project) -- [v4.6.3 to v4.6.4 update instructions](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.6/update_from_4.6/#v464) - -### Documentation - -- A "new" pill now appears in the table of content alongside pages which have been recently created, or have recent important updates or additions - -## May 2024 - -### PHP API - -- [PHP API Reference](https://doc.ibexa.co/en/4.6/api/php_api/php_api_reference/) - -### Users - -- [Warning about recent activity log and user privacy](https://doc.ibexa.co/en/4.6/administration/recent_activity/recent_activity/#user-privacy) - -## April 2024 - -### Product guides - -- [[[= product_name_cdp =]] product guide](https://doc.ibexa.co/en/4.6/cdp/cdp_guide/) - -### Infrastructure and maintenance - -- [v4.6.0 to v4.6.3 update instructions](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.6/update_from_4.6/#v463) - -### Users - -- [Recent activity](https://doc.ibexa.co/en/4.6/administration/recent_activity/recent_activity/) -- [OAuth server](https://doc.ibexa.co/en/4.6/users/oauth_server/) -- Updated [OAuth client](https://doc.ibexa.co/en/4.6/users/oauth_client/) - -### Back office - -- [Customize back office search suggestions](https://doc.ibexa.co/en/4.6/administration/back_office/customize_search_suggestion/) -- [Customize back office search result sorting](https://doc.ibexa.co/en/4.6/administration/back_office/customize_search_sorting/) - -### Templating - -- [Site context Twig function `ibexa_site_context_aware`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/site_context_twig_functions/#ibexa_site_context_aware) -- [Storefront Twig function `ibexa_get_anonymous_user_id`](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/storefront_twig_functions/#ibexa_get_anonymous_user_id) - -## March 2024 - -### Permissions - -- Updated [Custom policies](https://doc.ibexa.co/en/4.6/permissions/custom_policies/) article - -### Content management - -- Updated [BinaryFile field type](https://doc.ibexa.co/en/4.6/content_management/field_types/field_type_reference/binaryfilefield/) description - -### Commerce - -- Description of [integration with Payum](https://doc.ibexa.co/en/4.6/commerce/payment/payum_integration/) and payment processing gateways - -### Search - -- Updated [Elasticsearch search engine](https://doc.ibexa.co/en/4.6/search/search_engines/elasticsearch/elasticsearch_overview/) description -- New Search Criteria: - - [Image](https://doc.ibexa.co/en/4.6/search/criteria_reference/image_criterion/) - - [ImageDimensions](https://doc.ibexa.co/en/4.6/search/criteria_reference/imagedimensions_criterion/) - - [ImageFileSize](https://doc.ibexa.co/en/4.6/search/criteria_reference/imagefilesize_criterion/) - - [ImageHeight](https://doc.ibexa.co/en/4.6/search/criteria_reference/imageheight_criterion/) - - [ImageMimeType](https://doc.ibexa.co/en/4.6/search/criteria_reference/imagemimetype_criterion/) - - [ImageOrientation](https://doc.ibexa.co/en/4.6/search/criteria_reference/imageorientation_criterion/) - - [ImageWidth](https://doc.ibexa.co/en/4.6/search/criteria_reference/imagewidth_criterion/) - -## February 2024 - -### Dashboard - -- New dashboard sections in User Documentation: - - [Dashboard](https://doc.ibexa.co/projects/userguide/en/4.6/getting_started/dashboard/dashboard/) - - [Work with dashboard](https://doc.ibexa.co/projects/userguide/en/4.6/getting_started/dashboard/work_with_dashboard/) - - [Dashboard block reference](https://doc.ibexa.co/projects/userguide/en/4.6/getting_started/dashboard/dashboard_block_reference/) -- Dashboard section in Developer Documentation: - - [Configure default dashboard](https://doc.ibexa.co/en/4.6/administration/dashboard/configure_default_dashboard/) - - [Customize dashboard](https://doc.ibexa.co/en/4.6/administration/dashboard/customize_dashboard/) - - [PHP API Dashboard service](https://doc.ibexa.co/en/4.6/administration/dashboard/php_api_dashboard_service/) - -### DAM - -- [Ibexa DAM](https://doc.ibexa.co/projects/userguide/en/4.6/dam/ibexa_dam/) - -### Product catalog - -- [Price engine REST API](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#product-catalog-load-the-list-of-product-prices) - -### REST API - -- [Shipment REST API](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#shipments) - -### Others - -- [Updated Create custom view matcher article](https://doc.ibexa.co/en/4.6/templating/templates/create_custom_view_matcher/) -- [Actito transactional email integration](https://doc.ibexa.co/en/4.6/commerce/transactional_emails/transactional_emails/#configure-actito-integration) -- [Described user profile](https://doc.ibexa.co/projects/userguide/en/4.6/getting_started/get_started/#view-and-edit-user-profile) - -## January 2024 - -### Administration - -- [Enhanced data migration doc](https://doc.ibexa.co/en/4.6/content_management/data_migration/importing_data/) -- [Enhanced update to v3.3 procedure](https://doc.ibexa.co/en/4.6/update_and_migration/from_2.5/to_3.3/) - -### Content management - -- New sections in taxonomy documentation: - - [How to hide the delete button in large subtrees](https://doc.ibexa.co/en/4.6/content_management/taxonomy/taxonomy/#hide-delete-button-on-large-subtree) - - [How to remove orphaned content items](https://doc.ibexa.co/en/4.6/content_management/taxonomy/taxonomy/#remove-orphaned-content-items) -- Updated information in User Documentation: - - [Enhanced create and edit pages article](https://doc.ibexa.co/projects/userguide/en/4.6/content_management/create_edit_pages/) - - [Edit embedded content items](https://doc.ibexa.co/projects/userguide/en/4.6/content_management/create_edit_content_items/#edit-embedded-content-items) - -### DAM - -- [Ibexa DAM](https://doc.ibexa.co/projects/userguide/en/4.6/dam/ibexa_dam/) - -### Getting started - -- [[[= product_name_headless =]] product guide](https://doc.ibexa.co/en/4.6/ibexa_products/headless/) -- [Enhanced get started article](https://doc.ibexa.co/projects/userguide/en/4.6/getting_started/get_started/#view-and-edit-user-profile) in User Documentation - -### Image management - -- [Upload and store images](https://doc.ibexa.co/projects/userguide/en/4.6/image_management/upload_images/) -- [Moved Edit images from Content management](https://doc.ibexa.co/projects/userguide/en/4.6/image_management/edit_images/) - -### Personalization - -- Customize recommendation request with segment parameters - -### Product catalog - -- Product search Aggregations: - - [BasePriceStatsAggregation](https://doc.ibexa.co/en/4.6/search/aggregation_reference/basepricestats_aggregation/) - - [CustomPriceStatsAggregation](https://doc.ibexa.co/en/4.6/search/aggregation_reference/custompricestats_aggregation/) - -## December 2023 - -### Content management - -- [Segmentation events](https://doc.ibexa.co/en/4.6/api/event_reference/segmentation_events/) -- [Checkbox page block attribute type](https://doc.ibexa.co/en/4.6/content_management/pages/page_block_attributes/#block-attribute-types) -- [Updated Create Form Builder Form attribute procedure](https://doc.ibexa.co/en/4.6/content_management/forms/create_form_attribute/#create-form-builder-form-attribute) - -### Product catalog - -- [Reorganized and updated information in User Documentation](https://doc.ibexa.co/projects/userguide/en/4.6/pim/pim/) - -### Templating - -- [Taxonomy view matchers](https://doc.ibexa.co/en/4.6/templating/templates/view_matcher_reference/#taxonomy-entry-id) -- [Get content category Twig filter](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/content_twig_functions/#ibexa_taxonomy_entries_for_content-filter) -- [Updated arguments list for `ibexa_render()` method](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/content_twig_functions/#ibexa_render) -- [New Field information Twig functions](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/field_twig_functions/#ibexa_field_group_name) -- [Updated get user Twig functions](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/user_twig_functions/) - -### User management - -- [Reorganized information in the User Management area](https://doc.ibexa.co/en/4.6/users/users/) - -## November 2023 - -### Commerce - -- [Option to handle multiple checkout workflows](https://doc.ibexa.co/en/4.6/commerce/checkout/customize_checkout/#manage-multiple-workflows) - -### CDP - -- [CDP activation](https://doc.ibexa.co/en/4.6/cdp/cdp_activation/cdp_activation/) - -### Product guides - -- [Page Builder product guide](https://doc.ibexa.co/en/4.6/content_management/pages/page_builder_guide/) - -### Infrastructure and maintenance - -- [Updated enable Symfony Reverse Proxy](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/cache/http_cache/reverse_proxy/#using-symfony-reverse-proxy) - -### Others - -- [Redesigned requirements page](https://doc.ibexa.co/en/4.6/getting_started/requirements/) -- [Updated [[= product_name_cloud =]] CLI](https://doc.ibexa.co/en/4.6/getting_started/install_on_ibexa_cloud/) -- [Updated React app block procedure](https://doc.ibexa.co/en/4.6/content_management/pages/react_app_block/) -- [Added fulltext features in search](https://doc.ibexa.co/en/4.6/search/criteria_reference/fulltext_criterion/#supported-syntax) - -## October 2023 - -### Commerce - -- [Adding context data to cart](https://doc.ibexa.co/en/4.6/commerce/cart/cart_api/#adding-context-data-to-cart) - -### Personalization - -- Post visit and price drop triggers -- Wishlist and Deletefromwishlist events - -### Product catalog - -- [VAT category configuration update](https://doc.ibexa.co/en/4.6/pim/pim_configuration/#vat-rates) -- [Payment Method Name Criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/payment_method_name_criterion/) - -### Product guides - -- [User management product guide](https://doc.ibexa.co/en/4.6/users/user_management_guide/) - -### Migration - -- [Enhance data migration doc](https://doc.ibexa.co/en/4.6/content_management/data_migration/importing_data/) -- [Images migration example](https://doc.ibexa.co/en/4.6/content_management/data_migration/importing_data/#images) -- [Expression language functions](https://doc.ibexa.co/en/4.6/content_management/data_migration/importing_data/#built-in-functions) - -## September 2023 - -### Commerce - -- Cart - - [Merge carts API](https://doc.ibexa.co/en/4.6/commerce/cart/cart_api/#merge-carts) -- Checkout - - [Reorder](https://doc.ibexa.co/en/4.6/commerce/checkout/reorder/) - - [Hide checkout step](https://doc.ibexa.co/en/4.6/commerce/checkout/customize_checkout/#hide-checkout-step) -- Order management - - [Define cancel order](https://doc.ibexa.co/en/4.6/commerce/order_management/configure_order_management/#define-cancel-order) - -### Personalization - -- Updated configuration for triggers -- Send messages with recommendations -- Email triggers in User Documentation - -### Product catalog - -- [Product availability Twig extension](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/product_twig_functions/#ibexa_has_product_availability) -- [PriceQuery with its criteria](https://doc.ibexa.co/en/4.6/search/criteria_reference/price_search_criteria/) - - [Price API](https://doc.ibexa.co/en/4.6/pim/price_api/#prices) - -### REST API - -- Added GET endpoint for all available [Sales Representatives Users](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#corporate-account-read-list-of-sales-representatives) - -### Storefront - -- [Display language name instead of its code in language switcher](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/storefront_twig_functions/#ibexa_storefront_get_language_name_by_code) - -### Templating - -- [Render content in PHP](https://doc.ibexa.co/en/4.6/templating/render_content/render_content_in_php/) - -### Others - -- Product guides integrated into Developer Documentation - - [Content management](https://doc.ibexa.co/en/4.6/content_management/content_management_guide/) - - [Customer portal](https://doc.ibexa.co/en/4.6/customer_management/customer_portal/) - - [Form Builder](https://doc.ibexa.co/en/4.6/content_management/forms/form_builder_guide/) - - [Online editor](https://doc.ibexa.co/en/4.6/content_management/rich_text/online_editor_guide/) - - Personalization - - [Product catalog](https://doc.ibexa.co/en/4.6/pim/pim_guide/) - -- [Updated bundles list](https://doc.ibexa.co/en/4.6/administration/project_organization/bundles/) - -## August 2023 - -### New home page - -- Redesigned [home page for User Documentation](https://doc.ibexa.co/projects/userguide/en/4.6/) - -### Administration - -- [Install Ibexa DXP with DDEV](https://doc.ibexa.co/en/4.6/getting_started/install_with_ddev/) -- [Update from v3.3.x to v3.3.latest](https://doc.ibexa.co/en/4.6/update_and_migration/from_3.3/update_from_3.3/) - -### Commerce - -- [Importing data](https://doc.ibexa.co/en/4.6/content_management/data_migration/importing_data/#commerce) -- Cart - - [Quick order](https://doc.ibexa.co/en/4.6/commerce/cart/quick_order/) -- Checkout - - [Create custom strategy](https://doc.ibexa.co/en/4.6/commerce/checkout/customize_checkout/#create-custom-strategy) -- Payments - - [Implement payment method filtering](https://doc.ibexa.co/en/4.6/commerce/payment/payment_method_filtering/) - - [Filter payment methods](https://doc.ibexa.co/projects/userguide/en/4.6/commerce/payment/work_with_payment_methods/#filter-payment-methods) -- Shipping - - [Extend shipping](https://doc.ibexa.co/en/4.6/commerce/shipping_management/extend_shipping/) - - [Filter shipping methods](https://doc.ibexa.co/projects/userguide/en/4.6/commerce/shipping_management/work_with_shipping_methods/#filter-shipping-methods) - -### Online Editor - -- [Add CKEditor plugins](https://doc.ibexa.co/en/4.6/content_management/rich_text/extend_online_editor/#add-ckeditor-plugins) - -### Product catalog - -- [Custom name schema strategy](https://doc.ibexa.co/en/4.6/pim/create_custom_name_schema_strategy/) -- [IsVirtual Search Criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/isvirtual_criterion/) - -### Security - -- [Hidden state clarification](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/security/security_checklist/#dont-use-hide-for-read-access-restriction) -- [Add timeouts information](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/security/security_checklist/#protect-against-brute-force-attacks) - -## July 2023 - -### v4.5.1 - -- [v4.5.1 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.5/#v451) - -### New home page - -- Redesigned [home page for Developer Documentation](https://doc.ibexa.co/en/4.6/) - -### Getting started - -- New cautions in [Install on [[= product_name_cloud =]]](https://doc.ibexa.co/en/4.6/getting_started/install_on_ibexa_cloud/) about using `cloud.ibexa.co` instead of `platform.sh` - -### Content management - -- New Page block [[[= product_name_connect =]] scenario block](https://doc.ibexa.co/en/4.6/content_management/pages/ibexa_connect_scenario_block/) -- Updated [Create custom Page blocks](https://doc.ibexa.co/en/4.6/content_management/pages/create_custom_page_block/#add-block-javascript) - -### Customer Portal - -- Updated [Creating a Customer Portal](https://doc.ibexa.co/en/4.6/customer_management/cp_page_builder/) - -### Personalization - -- Multiple attributes in submodel computation -- Multiple attributes in submodel computation in User Documentation - -### Product catalog - -- Updated [Enable purchasing products](https://doc.ibexa.co/en/4.6/pim/enable_purchasing_products/#region-and-currency) -- [Virtual products](https://doc.ibexa.co/en/4.6/pim/products/#product-types) -- [Virtual products in User Documentation](https://doc.ibexa.co/projects/userguide/en/4.6/pim/create_virtual_product/) -- [Work with product attributes](https://doc.ibexa.co/projects/userguide/en/4.6/pim/work_with_product_attributes/) in User Documentation - -### REST API - -- Added example of input payload in JSON format for [ContentTypeCreate in REST API reference](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#managing-content-create-content-type) -- [Expected user](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_usage/rest_requests/#expected-user) header support - -### Commerce - -- [Virtual products in checkout](https://doc.ibexa.co/en/4.6/commerce/checkout/checkout/#virtual-products-checkout) -- New Order and Shipment Search Criteria: - - [Order Owner Criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/order_owner_criterion/) - - [Shipment Owner Criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/shipment_owner_criterion/) - -### Search - -- REST API examples in multiple [existing Search Criteria descriptions](https://doc.ibexa.co/en/4.6/search/search_criteria_and_sort_clauses/) -- New REST API-only Search Criteria: - - Content search: - - [ParentLocationRemoteId Criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/parentlocationremoteId_criterion/) - - Product search: - - [AttributeGroupIdentifier Criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/attributegroupidentifier_criterion/) - - [AttributeName Criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/attributename_criterion/) - - [CatalogIdentifier Criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/catalogidentifier_criterion/) - - [CatalogName Criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/catalogname_criterion/) - - [CatalogStatus Criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/catalogstatus_criterion/) - - [FloatAttributeRange Criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/floatattributerange_criterion/) - - [IntegerAttributeRange Criterion](https://doc.ibexa.co/en/4.6/search/criteria_reference/integerattributerange_criterion/) - -### Infrastructure and maintenance - -- [Configure and customize Fastly](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/cache/http_cache/fastly/) -- Updated Security checklist: - - [Block upload of unwanted file types](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/security/security_checklist/#block-upload-of-unwanted-file-types) - - [Minimise exposure](https://doc.ibexa.co/en/4.6/infrastructure_and_maintenance/security/security_checklist/#minimize-exposure) - -## June 2023 - -### Personalization - -- Email triggers -- Email triggers in User Documentation - -### Search - -- [Updated search engines documentation](https://doc.ibexa.co/en/4.6/search/search_engines/search_engines/): - - [Elasticsearch search engine](https://doc.ibexa.co/en/4.6/search/search_engines/elasticsearch/elasticsearch_overview/) - - [Solr search engine](https://doc.ibexa.co/en/4.6/search/search_engines/solr_search_engine/solr_overview/) - - [Legacy search engine](https://doc.ibexa.co/en/4.6/search/search_engines/legacy_search_engine/legacy_search_overview/#legacy-search-engine) - -### Commerce - -- [Shipping methods management](https://doc.ibexa.co/projects/userguide/en/4.6/commerce/shipping_management/work_with_shipping_methods/) in User Documentation -- [Payment methods management](https://doc.ibexa.co/projects/userguide/en/4.6/commerce/payment/work_with_payments/) in User Documentation -- Stock Search Criteria and Aggregation: - - [ProductStockRangeAggregation](https://doc.ibexa.co/en/4.6/search/aggregation_reference/productstockrange_aggregation/) - - [ProductStock](https://doc.ibexa.co/en/4.6/search/criteria_reference/productstock_criterion/) - - [ProductStockRange](https://doc.ibexa.co/en/4.6/search/criteria_reference/productstockrange_criterion/) - -## May 2023 - -### v4.5 - -- [v4.5 release notes](https://doc.ibexa.co/en/4.6/release_notes/ibexa_dxp_v4.5/) and guide on how to [update to v4.5](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.4/update_from_4.4/) - -### Customer Portal - -- [Corporate account company and member REST API reference](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#corporate-account) -- [Creating a Customer Portal](https://doc.ibexa.co/en/4.6/customer_management/cp_page_builder/) - -### Commerce - -- [Extending payments](https://doc.ibexa.co/en/4.6/commerce/payment/extend_payment/) -- Reference for commerce-related events: - - [Cart events](https://doc.ibexa.co/en/4.6/api/event_reference/cart_events/) - - [Order management events](https://doc.ibexa.co/en/4.6/api/event_reference/order_management_events/) - - [Payment events](https://doc.ibexa.co/en/4.6/api/event_reference/payment_events/) - -## April 2023 - -### Payment - -- [Payment management](https://doc.ibexa.co/en/4.6/commerce/payment/payment/), including [configuring payment workflow](https://doc.ibexa.co/en/4.6/commerce/payment/configure_payment/), [payment](https://doc.ibexa.co/en/4.6/commerce/payment/payment_api/), and [payment method PHP API](https://doc.ibexa.co/en/4.6/commerce/payment/payment_method_api/) - -### Orders - -- [Order management](https://doc.ibexa.co/en/4.6/commerce/order_management/order_management/), including [configuring order workflow](https://doc.ibexa.co/en/4.6/commerce/order_management/configure_order_management/) and [Orders REST API reference](https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#orders) - -### Shipping - -- [Shipping management](https://doc.ibexa.co/en/4.6/commerce/shipping_management/shipping_management/), including [configuring shipment workflow](https://doc.ibexa.co/en/4.6/commerce/shipping_management/configure_shipment/), [shipment](https://doc.ibexa.co/en/4.6/commerce/shipping_management/shipment_api/), and [shipping method PHP API](https://doc.ibexa.co/en/4.6/commerce/shipping_management/shipping_method_api/) - -### Search - -- Search Criteria and Sort Clauses covering the new commerce features: - - Order [Search Criteria](https://doc.ibexa.co/en/4.6/search/criteria_reference/order_search_criteria/) - and [Sort Clauses](https://doc.ibexa.co/en/4.6/search/sort_clause_reference/order_sort_clauses/) - - Payment [Search Criteria](https://doc.ibexa.co/en/4.6/search/criteria_reference/payment_search_criteria/) - and [Sort Clauses](https://doc.ibexa.co/en/4.6/search/sort_clause_reference/payment_sort_clauses/) - - Payment method [Search Criteria](https://doc.ibexa.co/en/4.6/search/criteria_reference/payment_method_search_criteria/) - and [Sort Clauses](https://doc.ibexa.co/en/4.6/search/sort_clause_reference/payment_method_sort_clauses/) - - Shipment [Search Criteria](https://doc.ibexa.co/en/4.6/search/criteria_reference/shipment_search_criteria/) - and [Sort Clauses](https://doc.ibexa.co/en/4.6/search/sort_clause_reference/shipment_sort_clauses/) - -### New Page blocks - -- [React app Page block](https://doc.ibexa.co/en/4.6/content_management/pages/react_app_block/) -- Bestsellers block - -### Others - -- [Translation comparison](https://doc.ibexa.co/projects/userguide/en/4.6/content_management/translate_content/#translation-comparison) -- Managing Segments - -## March 2023 - -- [Order management API](https://doc.ibexa.co/en/4.6/commerce/order_management/order_management_api/) -- [Customizing checkout](https://doc.ibexa.co/en/4.6/commerce/checkout/customize_checkout/) -- Extended [table reusable component documentation](https://doc.ibexa.co/en/4.6/administration/back_office/back_office_elements/reusable_components/#tables) -- How to [add GraphQL support to custom field types](https://doc.ibexa.co/en/4.6/api/graphql/graphql_custom_ft/) -- How to [customize field type metadata](https://doc.ibexa.co/en/4.6/content_management/field_types/customize_field_type_metadata/) - -## February 2023 - -### Storefront - -- [Storefront](https://doc.ibexa.co/en/4.6/commerce/storefront/storefront/) documentation, -including how to [configure](https://doc.ibexa.co/en/4.6/commerce/storefront/configure_storefront/) -and [extend Storefront](https://doc.ibexa.co/en/4.6/commerce/storefront/extend_storefront/). - -### Cart - -- [Cart](https://doc.ibexa.co/en/4.6/commerce/cart/cart/) documentation, including -[PHP API](https://doc.ibexa.co/en/4.6/commerce/cart/cart_api/). - -### Checkout - -- [Checkout](https://doc.ibexa.co/en/4.6/commerce/checkout/checkout/) documentation, including [how to configure checkout](https://doc.ibexa.co/en/4.6/commerce/checkout/configure_checkout/), description of main [PHP API methods](https://doc.ibexa.co/en/4.6/commerce/checkout/checkout_api/), and [checkout-related Twig functions](https://doc.ibexa.co/en/4.6/templating/twig_function_reference/checkout_twig_functions/) - -### Other - -- How to [create a Form Builder Form attribute](https://doc.ibexa.co/en/4.6/content_management/forms/create_form_attribute/) -- [Update guide for v4.4](https://doc.ibexa.co/en/4.6/update_and_migration/from_4.3/update_from_4.3/) - -## January 2023 - -### Page Builder - -- Description of new Page Builder blocks: [Catalog](https://doc.ibexa.co/projects/userguide/en/4.6/content_management/block_reference/#catalog-block) and [Product collection](https://doc.ibexa.co/projects/userguide/en/4.6/content_management/block_reference/#product-collection-block) - -### Other - -- [Fastly Image Optimizer](https://doc.ibexa.co/en/4.6/content_management/images/fastly_io/) -- [Storing field type settings externally](https://doc.ibexa.co/en/4.6/content_management/field_types/field_type_storage/#storing-field-type-settings-externally) diff --git a/docs/resources/phpstorm_plugin.md b/docs/resources/phpstorm_plugin.md deleted file mode 100644 index 5a33d0ee7d3..00000000000 --- a/docs/resources/phpstorm_plugin.md +++ /dev/null @@ -1,240 +0,0 @@ ---- -description: The Ibexa DXP PhpStorm plugin helps you speed up your development by providing file templates, autocompletion, a quick installation wizard, and more. ---- - -# Ibexa plugin for PhpStorm - -Ibexa plugin for PhpStorm helps you to work with [[= product_name =]] by speeding up installation and providing file templates, intentions, autocompletion, and other features. - -## Requirements - -- PhpStorm 2021.2 or newer -- Enabled Symfony support plugin - -## Install PhpStorm plugin - -You can install the Ibexa plugin for PhpStorm from the JetBrains Marketplace, or manually, from a downloaded .jar file. - -### Install from JetBrains Marketplace - -To install plugin from JetBrains marketplace: - -Look for "Ibexa DXP" in the plugin browser and click **Install**. - -### Install from file - -You can also install the plugin manually from a `.jar` file: - -1\. Download the latest version of the plugin from [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/17239-ibexa-dxp/versions). - -2\. In PhpStorm settings/preferences (depending on your system), select **Plugins** > (gear icon) > **Install plugin from Disk...** and select the downloaded file. - -## Configuration - -Plugin configuration is available in PhpStorm settings/preferences (depending on your system), under **PHP** > **Frameworks** > **Ibexa DXP**. - -You can use it to: - -- Enable and disable plugin features for the current project -- Change product edition and version by the current project - -![Intention](phpstorm_plugin_settings.png) - -!!! note - - Some plugin features depends on the selected product edition and version. - For example, "deprecated namespaces usage" inspection is enabled only if the project uses v4.x. - -Plugin configuration is automatically resolved when opening [[= product_name =]] project for the first time. -If detection is successful, a notification appears with an "Enable Ibexa DXP support for this project" link. - -If you created your project by using Ibexa DXP project wizard, the plugin is automatically enabled and configured based on wizard data. - -## Features - -### Project wizard - -The plugin enables creating a new [[= product_name =]] project directly from PhpStorm. -To do it, select **File** > **New Project...** > **Ibexa DXP**. - -In project settings form you can choose: - -- Location of the project -- Product edition: [[= product_name_oss =]], [[= product_name_headless =]], [[= product_name_exp =]] -- Authentication token (for Content and Experience editions) -- Product version: Default (latest LTS version), Latest (fast track or LTS), Latest LTS and "Next 3.x" (unstable, based on the 3.x branch) and "Next 4.x" (unstable, based on the 4.x branch) -- Composer settings - -![Create a project](phpstorm_plugin_create_project.png) - -If you don't provide credentials for https://updates.ibexa.co/, the plugin uses the installation key and token password stored in global Composer configuration. Otherwise, it creates an `auth.json` file. - -You can find details of the installation procedure in Composer log window. - -### File templates - -The plugin provides the following built-in file templates: - -| Name | Comment | -|---|---| -| Back office tab | Class implementing `Ibexa\Contracts\AdminUi\Tab` | -| Block event subscriber | Event subscriber for `BlockRenderEvents::getBlockPreRenderEventName(...)` event | -| Command | Symfony command that uses content repository | -| Composite Criterion | Criterion class based on `\Ibexa\Contracts\Core\Repository\Values\Content\Query\Criterion\CompositeCriterion` | -| Field definition form mapper | Class implementing `Ibexa\AdminUi\FieldType\FieldDefinitionFormMapperInterface` | -| Field type | Field type class based on `Ibexa\Contracts\Core\FieldType\Generic\Type` | -| Field type Comparable | Class implementing `Ibexa\Contracts\VersionComparison\FieldType\Comparable` | -| Field type Indexable | Class implementing `Ibexa\Contracts\Core\FieldType\Indexable` | -| Field value form mapper | Class implementing `Ibexa\Contracts\ContentForms\FieldType\FieldValueFormMapperInterface` | -| Field value object | Field type value class | -| Installer Provisioner | Class implementing `\Ibexa\Installer\Provisioner\ProvisionerInterface` | -| Menu configuration event subscriber | Event subscriber for `Ibexa\AdminUi\Menu\Event\ConfigureMenuEvent::MAIN_MENU` | -| Policy provider | Class implementing `Ibexa\Bundle\Core\DependencyInjection\Security\PolicyProvider\PolicyProviderInterface` | -| Policy provider (YAML) | Policy provider class based on `Ibexa\Bundle\Core\DependencyInjection\Security\PolicyProvider\YamlPolicyProvider` | -| Query Type | Query Type class based on `Ibexa\Core\QueryType\OptionsResolverBasedQueryType` | -| Schema builder subscriber | Event subscriber for `Ibexa\Contracts\DoctrineSchema\Event\SchemaBuilderEvent::BUILD_SCHEMA` event | -| SiteAccess-aware configuration | SiteAccess-aware configuration definition class based on `Ibexa\Bundle\Core\DependencyInjection\Configuration\AbstractParser` | -| Value object input parser | REST input parser class based on `Ibexa\Rest\Input\BaseParser` | -| Value object visitor | REST value visitor class based on `Ibexa\Contracts\Rest\Output\ValueObjectVisitor` | -| Workflow action listener | Workflow action listener class based on `Ibexa\Contracts\Workflow\Event\Action\AbstractTransitionWorkflowActionListener` | - -The templates are available in, for example, the context menu in **Project window** > **New** > **Ibexa DXP**. - -The list of available file templates depends on the [[= product_name =]] edition used by the project. - -For all file templates you can customize: - -- class name -- class namespace -- file name -- directory - -![File template](phpstorm_plugin_file_template.png) - -To customize file templates, go to **File** > **Settings**/**Preferences** > **Editor** > **File and Code templates**. - -!!! tip - - For more information about file templates, see [JetBrains documentation](https://www.jetbrains.com/help/phpstorm/settings-file-and-code-templates.html). - -### Live templates - -The plugin provides the following built-in live templates in Twig files: - -| Abbreviation | Comment | -|---|---| -| `ezcn` | `ibexa_content_name` | -| `ezfd` | `ibexa_field_description` | -| `ezfd?` | `ibexa_field_description` wrapped in an `ibexa_field_is_empty` check | -| `ezfn` | `ibexa_field_name` | -| `ezfn?` | `ibexa_field_name` wrapped in an `ibexa_field_is_empty` check | -| `ezrc` | `ibexa_render_content` | -| `ezrcq` | `ibexa_render_content_query` | -| `ezrf` | `ibexa_render_field` | -| `ezrf?` | `ibexa_render_field` wrapped in an `ibexa_field_is_empty` check | -| `ezrl` | `ibexa_render_location` | -| `ezrlq` | `ibexa_render_location_query` | - -and in PHP files: - -| Abbreviation | Comment | -|---|---| -| `ibx_create_c` | Create content | -| `ibx_create_cd` | Create content draft | -| `ibx_create_ct` | Create content type | -| `ibx_find_c` | Create and execute content query | -| `ibx_find_ci` | Create and execute content info query | -| `ibx_find_l` | Create and execute location query | -| `ibx_load_c` | Load content by ID | -| `ibx_load_ci` | Load content info by ID | -| `ibx_load_ct` | Load content type by identifier | -| `ibx_load_l` | Load location by ID | -| `ibx_param` | Get SiteAccess parameter value | -| `ibx_pub` | Publish content draft | -| `ibx_switch_user` | Switch user context | -| `ibx_trans` | Repository transaction | -| `ibx_update_c` | Update content | -| `ibx_update_ct` | Update content type | - -To customize live templates, go to **File** > **Settings**/**Preferences** > **Editor** > **Live Templates**. - -!!! tip - - For more information about live templates, see [JetBrains documentation](https://www.jetbrains.com/help/idea/using-live-templates.html). - -### Autocompletion in configuration files - -Plugin provides autocompletion for [[= product_name =]] configuration structure in YAML files placed in `config/packages/`. - -Besides configuration structure, for the following YAML keys addition suggestions are available: - -- List of available view matchers, for: - - `ibexa..content_view...match` - - `ibexa..content_create_view...match` - - `ibexa..content_edit_view...match` - - `ibexa..content_translate_view...match` -- List of available SiteAccess matchers, for: - - `ibexa.siteaccess.match` -- List of available block attribute types, for: - - `ibexa_fieldtype_page.blocks..attributes..type` -- List of available configuration scopes, for: - - `ibexa` -- List of available siteaccess names, for: - - `ibexa.siteaccess.default_siteaccess` - - `ibexa.siteaccess.groups` - - `ibexa.system..translation_siteaccesses$` -- List of available design names, for: - - `ibexadesign.design_list` - - `ibexa.system..design` -- List of available repositories, for: - - `ibexa.system..repository` -- List of available search engines, for: - - `ibexa.repositories..search.engine` -- List of available custom tags, for: - - `ibexa.system..fieldtypes.ibexa_richtext.custom_tags` -- List of available view types, for: - - `ibexa..content_view` - - `ibexa..content_create_view` - - `ibexa..content_edit_view` - - `ibexa..content_translate_view` - -### Structure autocompletion in DBAL schema file - -Autocompletion is also available for DBAL schema file structure. - -To enable autocompletion, you must place the file in the `config` directory and name it `schema.yaml`. - -### Dynamic settings autocompletion - -Parameter names suggestions are available in `Ibexa\Contracts\Core\SiteAccess\ConfigResolverInterface::{hasParameter,getParameter}` method calls. - -Suggested results take into account namespace argument, if its value can be resolved without running interpreter (for example, string literal or const reference). - -### Query type name autocompletion - -Query type name suggestions are available in `Ibexa\Core\QueryType\QueryTypeRegistry::getQueryType` method calls. - -Suggestions are based on service definitions tagged as `ibexa.query_type`. - -### Query type parameter autocompletion - -Parameter name suggestions are available for Query types which implement the `Ibexa\Core\QueryType\QueryType` interface or extend the `Ibexa\Core\QueryType\OptionsResolverBasedQueryType` class in the following places: - -- `Ibexa\Core\QueryType\QueryType::getQuery` method calls -- `Ibexa\Core\QueryType\QueryType::getQuery` method definition -- `Ibexa\Core\QueryType\OptionsResolverBasedQueryType::doGetQuery` method definition - -![Query Type parameter autocompletion](phpstorm_plugin_query_type_params.png) - -### Intentions and inspections - -The plugin also brings several new intentions and inspections (with related quick fixes where possible). - -For example, when plugin detects deprecated configuration key usage, it marks the key as deprecated and suggests a replacement: - -![Intention](phpstorm_plugin_intention.png) - -## Known issues - -It's not possible to create new project with Docker as PHP remote interpreter. -See [related JetBrains issue](https://youtrack.jetbrains.com/issue/WI-61330) for more details. diff --git a/docs/resources/release_process_and_roadmap.md b/docs/resources/release_process_and_roadmap.md deleted file mode 100644 index 3696fc34c04..00000000000 --- a/docs/resources/release_process_and_roadmap.md +++ /dev/null @@ -1,63 +0,0 @@ ---- -description: Cohesivo releases new versions periodically in different flavors - Headless, Experience and Commerce, plus open-source OSS. ---- - -# [[= product_name =]] release process and roadmap - -## Release process - -### Distributions - -[[= product_name =]] has three distributions: - -- [[= product_name_headless =]] is a multichannel and headless content management system. -- [[= product_name_exp =]] is a modern modular Digital Experience Platform to build outstanding customer experiences -- [[= product_name_com =]] is a commerce-ready B2B platform designed to digitalize your business from customer awareness to purchase and beyond. - -Additionally, [[= product_name =]] also has an open-source version called [[= product_name_oss =]]. -[[= product_name_oss =]] is developed by [[= product_name_base =]] together with the open source community. -The [[= product_name_oss =]] code is available on GitHub under the GPLv2 license. -It comes with no commercial support and maintenance services. - -### Long Term Support releases - -[[= product_name_base =]] manages the release of [[= product_name =]] by using an agile iterative process and a continuous software development model, which is why we provide Long Term Support releases (LTS) of [[= product_name =]] releases. - -Long Term Support releases (LTS) are supported by [[= product_name_base =]] for a long period of time. -They're suitable for highly stable enterprise rollouts. - -LTS releases provide you with: - -- **Reliability and stability**, as they go through extensive testing to ensure they are free from major bugs and issues. -- **Long-term security**, as a result of updates and security patches. -- **Predictability** that comes from following an established release plan. -- **Reduced maintenance**, because you avoid the frequent upgrade cycles. - -### LTS Updates - -With LTS Updates customers can maintain their competitiveness by incorporating cutting-edge technologies into their LTS releases without losing stability. -LTS Updates are intended to improve the current platform by providing new features. -What's important, you are not required to switch to a newer version of [[= product_name =]] to use LTS Updates. -You can install them whenever you choose, and you can be sure that the next LTS release will include them by default. -You won't have to manually install or configure them after upgrading, so you can make the switch smoothly when the time comes. - -## Versioning conventions - -All [[= product_name =]] editions use [semantic versioning](https://semver.org/). - -The version number of [[= product_name =]] and all its internal components follows the semantic versioning conventions: vX.Y.Z. - -- Changes to X indicate breaking changes. They usually concern mostly internal things, but developers should check in our change logs if they need to adjust their code to continue using the API or features. If there are larger breaks, this is announced well in advance of the upcoming release. -- Y represents new features and functionalities. -- Z represents patches, bug fixes, or smaller improvements. - -Distribution files of [[= product_name_base =]] three editions are as follows: - -- for [[= product_name_headless =]]: ibexa-headless-vX.Y.Z.tgz -- for [[= product_name_exp =]]: ibexa-experience-vX.Y.Z.tgz -- for [[= product_name_com =]]: ibexa-commerce-vX.Y.Z.tgz - -[[= product_name_base =]]'s support and maintenance services specific to each release are only available from a given start date until an end date. -The time in between the start and end dates is what [[= product_name_base =]] calls the product's **Service Life**. - -You can find the specific dates of service life for each release on [[= product_name_base =]] [service life page](https://support.ibexa.co/Public/Service-Life). diff --git a/docs/resources/resources.md b/docs/resources/resources.md deleted file mode 100644 index 530f59386ab..00000000000 --- a/docs/resources/resources.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -description: See additional information about Cohesivo development process, helpful tools, and learn how you can contribute to the creation of the platform. -page_type: landing_page ---- - -# Resources - -See additional information about [[= product_name =]] development process, helpful tools, and learn how you can contribute to the creation of the platform. - -[[= cards([ - "resources/release_process_and_roadmap", - "resources/phpstorm_plugin", - "resources/rector", - "resources/contributing/report_and_follow_issues", -], columns=3) =]] diff --git a/docs/search/collaboration_search_reference/collaboration_criteria.md b/docs/search/collaboration_search_reference/collaboration_criteria.md deleted file mode 100644 index fae7e90c876..00000000000 --- a/docs/search/collaboration_search_reference/collaboration_criteria.md +++ /dev/null @@ -1,59 +0,0 @@ ---- -month_change: false -description: Search Criteria available for Collaboration search ---- - -# Collaboration Search Criterion reference - -Search Criteria are found in the `Ibexa\Contracts\Collaboration\Invitation\Query\Criterion` namespace. -Use them to work with objects related to [Collaborative editing API](collaborative_editing_api.md). - -## Invitation Search Criteria - -Invitation Search Criteria are implementing the [CriterionInterface](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-CriterionInterface.html) interface: - -| Criterion | Description | -|---|---| -| [CreatedAt](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-Criterion-CreatedAt.html) | Find invitations based on the date they were created | -| [Id](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-Criterion-Id.html) | Find invitations with given invitation ID | -| [LogicalAnd](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-Criterion-LogicalAnd.html) | Composite criterion to group multiple criteria using the AND condition | -| [LogicalOr](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-Criterion-LogicalOr.html) | Composite criterion to group multiple criteria using the OR condition | -| [ParticipantScope](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-Criterion-ParticipantScope.html) | Find invitations based on participant's scope, see [`ContentSessionScope`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Share-Collaboration-ContentSessionScope.html) for content-sharing sessions | -| [ParticipantType](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-Criterion-ParticipantType.html) | Find invitations based on participant type, see [`ParticipantDiscriminator`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Participant-ParticipantDiscriminator.html) | -| [Sender](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-Criterion-Sender.html) | Find invitations by invitation sender | -| [Session](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-Criterion-Session.html) | Find invitations by collaboration session | -| [Status](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-Criterion-Status.html) | Find invitations with given status| -| [UpdatedAt](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-Criterion-UpdatedAt.html) | Find invitations based on the date they were updated | - -## Session Search Criteria - -Session Search Criteria are implementing the [CriterionInterface](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-CriterionInterface.html) interface: - -| Criterion | Description | -|---|---| -| [CreatedAt](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-Criterion-CreatedAt.html) | Find sessions based on the date they were created | -| [Email](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-Criterion-Email.html) | Find sessions based on external participant email | -| [Id](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-Criterion-Id.html) | Find sessions with the session ID | -| [IsActive](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-Criterion-IsActive.html) | Find sessions based on active status | -| [LogicalAnd](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-Criterion-LogicalAnd.html) | Composite criterion to group multiple criteria using the AND condition | -| [LogicalOr](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-Criterion-LogicalOr.html) | Composite criterion to group multiple criteria using the OR condition | -| [Owner](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-Criterion-Owner.html) | Find sessions by their owner | -| [ParticipantToken](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-Criterion-ParticipantToken.html) | Find sessions by participant token | -| [Token](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-Criterion-Token.html) | Find sessions with given token| -| [Type](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-Criterion-Type.html) | Find sessions by type | -| [UpdatedAt](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-Criterion-UpdatedAt.html) | Find sessions based on the date they were updated | -| [UserId](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-Criterion-UserId.html) | Find sessions with given user ID | - -### Example - -The following example shows how you can use the criteria to find all the currently active sessions: - -``` php hl_lines="11-15" -[[= include_code('code_samples/collaboration/src/Query/Search.php') =]] -``` - -The criteria limit the result set to sessions matching all of the conditions listed below: - -- session has an active status -- session has a `content` type -- session creation date is within the last week diff --git a/docs/search/collaboration_search_reference/collaboration_sort_clauses.md b/docs/search/collaboration_search_reference/collaboration_sort_clauses.md deleted file mode 100644 index 8d8882175f5..00000000000 --- a/docs/search/collaboration_search_reference/collaboration_sort_clauses.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -month_change: false -description: Sort Clauses available for Collaboration search ---- - -# Collaboration Search Sort Clauses reference - -Sort Clauses are found in the [`Ibexa\Contracts\Collaboration\Value\Query\SortClause`](/api/php_api/php_api_reference/namespaces/ibexa-contracts-collaboration-invitation-query-sortclause.html) namespace. -Use them to work with objects related to [Collaborative editing API](collaborative_editing_api.md). - -## Invitation Search Sort Clauses - -Invitation Search Sort Clauses are implementing the [SortClauseInterface](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-SortClauseInterface.html) interface: - -| Name | Description | -| --- | --- | -| [CreatedAt](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-SortClause-CreatedAt.html) | Sort by invitation's creation date | -| [Id](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-SortClause-Id.html) | Sort by invitation's ID | -| [Status](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-SortClause-Status.html)| Sort by invitation's status | -| [UpdatedAt](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Invitation-Query-SortClause-UpdatedAt.html) | Sort by the date and time when invitation was updated | - -## Session Search Sort Clauses - -Session Search Sort Clauses are implementing the [SortClauseInterface](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-SortClauseInterface.html) interface: - -| Name | Description | -| --- | --- | -| [CreatedAt](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-SortClause-CreatedAt.html) | Sort by session's creation date | -| [Id](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-SortClause-Id.html) | Sort by session's ID | -| [UpdatedAt](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-Session-Query-SortClause-UpdatedAt.html) | Sort by the date and time when session was updated | - -### Example - -The following example shows how to use them to sort the searched sessions: - -``` php hl_lines="17" -[[= include_code('code_samples/collaboration/src/Query/Search.php') =]] -``` - -The returned active sessions are sorted by creation date (descending). diff --git a/docs/search/search_engines/elasticsearch/install_elasticsearch.md b/docs/search/search_engines/elasticsearch/install_elasticsearch.md deleted file mode 100644 index 9c56aba55a9..00000000000 --- a/docs/search/search_engines/elasticsearch/install_elasticsearch.md +++ /dev/null @@ -1,95 +0,0 @@ ---- -month_change: false -description: Install Elasticsearch to use it with Cohesivo. ---- - -# Install Elasticsearch - -## Download and install Elasticsearch - -[Install Elasticsearch](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/install-elasticsearch.html) on your server. -As an example, use the following [Docker](https://docs.docker.com/get-started/docker-overview/) command: - -```yml -docker run -d --name ibexa-dxp-elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:8.19.0 -``` - -!!! note - - [[= product_name =]] supports Elasticsearch in versions 7.16 and 8.19. - -## Verify the instance - -To make sure that the Elasticsearch instance operates properly, access the instance, for example, with `curl http://localhost:9200/`. - -If Elasticsearch operates properly, an object with cluster details is displayed. -It should be similar to the following example: - -``` json -{ - "name" : "f45b86ab3726", - "cluster_name" : "docker-cluster", - "cluster_uuid" : "5OAEghGPTLSd4jUJColoNQ", - "version" : { - "number" : "8.19.0", - "build_flavor" : "default", - "build_type" : "docker", - "build_hash" : "93788a8c2882eb5b606510680fac214cff1c7a22", - "build_date" : "2025-07-23T22:10:18.138212839Z", - "build_snapshot" : false, - "lucene_version" : "9.12.2", - "minimum_wire_compatibility_version" : "7.17.0", - "minimum_index_compatibility_version" : "7.0.0" - }, - "tagline" : "You Know, for Search" -} -``` - -## Set the default search engine - -Set the following environment variable (for example, in the `.env` or `.env.local` file): - -``` yaml -SEARCH_ENGINE=elasticsearch -``` - -## Configure the search engine - -[[= product_name =]] comes pre-configured to work with an Elasticsearch cluster that uses default settings, and you can use this initial setup for testing purposes. -However, to effectively search through actual data, you must provide specific settings. -All configuration is made in the `/config/packages/ibexa_elasticsearch.yaml` file. - -!!! note - - All the settings, their order and meaning, correspond to the settings that are described in the Elasticsearch documentation. - -First, decide how [[= product_name =]] connects to Elasticsearch and configure other connection settings. - -For more information, see [Configuring connections](configure_elasticsearch.md#configure-connections). - -Then, define a field type mappings template that instructs Elasticsearch to interpret [[= product_name =]] fields as specific types. - -For more information, see [Configuring field type mappings](configure_elasticsearch.md#define-field-type-mapping-templates). - -## Push the templates - -For each of your defined connections, push the templates to the Elasticsearch engine by running the following command: - -``` bash -php bin/console ibexa:elasticsearch:put-index-template -``` - -You can modify the behavior of the command with a number of switches. Use the `-h` switch to display a complete list of available options. - -## Reindex the database - -After creating index templates, run the following command to reindex your data: - -``` bash -php bin/console ibexa:reindex -``` - -!!! caution "Risks of premature indexing" - - Don't reindex your data before you create index templates. - Otherwise, Elasticsearch attempts to use its [dynamic field mapping](https://www.elastic.co/guide/en/elasticsearch/reference/8.19/dynamic-field-mapping.html) feature to create type mappings automatically. diff --git a/docs/search/search_engines/solr_search_engine/install_solr.md b/docs/search/search_engines/solr_search_engine/install_solr.md deleted file mode 100644 index 1c31adcfdfb..00000000000 --- a/docs/search/search_engines/solr_search_engine/install_solr.md +++ /dev/null @@ -1,383 +0,0 @@ ---- -description: Install Solr search engine to use it with Cohesivo. ---- - -# Install Solr search engine - -## Configure and start Solr - -The example presents a configuration with a single core. -For configuring Solr in other ways, including examples, see [Solr configuration files](https://solr.apache.org/guide/solr/9_8/configuration-guide/configuration-files.html) and [core discovery](https://solr.apache.org/guide/solr/9_8/configuration-guide/core-discovery.html). - -### Download Solr files - -!!! note "Solr versions" - - Supported Solr versions are Solr 8 and 9. - Using the most recent version of Solr is recommended. - -Download and extract Solr: - -- [solr-8.11.2.tgz](https://www.apache.org/dyn/closer.lua/lucene/solr/8.11.2/solr-8.11.2.tgz) or [solr-8.11.2.zip](https://www.apache.org/dyn/closer.lua/lucene/solr/8.11.2/solr-8.11.2.zip) -- [solr-9.8.1.tgz](https://archive.apache.org/dist/solr/solr/9.8.1/solr-9.8.1.tgz) - -Copy the necessary configuration files. -The examples below copy from the root of your [[= product_name =]] project to the place you've extracted Solr: - -=== "Solr 9" - - [[= product_name =]] provides the following required configuration files: - - - `vendor/ibexa/solr/src/lib/Resources/config/solr/solr.languages` directory - - `vendor/ibexa/solr/src/lib/Resources/config/solr/managed-schema.xml` - - `vendor/ibexa/solr/src/lib/Resources/config/solr/custom-fields-types-solr9.xml` - - `vendor/ibexa/solr/src/lib/Resources/config/solr/language-fieldtypes.xml` - - - ``` bash - # Make sure to replace the /opt/solr/ path with where you have placed Solr - cd /opt/solr - mkdir -p server/ibexa/template/conf - cp -R /vendor/ibexa/solr/src/lib/Resources/config/solr/solr.languages server/ibexa/template/conf - cp -R /vendor/ibexa/solr/src/lib/Resources/config/solr/{managed-schema.xml,custom-fields-types-solr9.xml,language-fieldtypes.xml} server/ibexa/template/conf - cp server/solr/configsets/_default/conf/{solrconfig.xml,stopwords.txt,synonyms.txt} server/ibexa/template/conf - cp server/solr/solr.xml server/ibexa - - # Modify solrconfig.xml to remove the section that doesn't agree with your schema - sed -i.bak '//d' server/ibexa/template/conf/solrconfig.xml - - # Start Solr (but apply autocommit settings below first if you need to) - # The configuration path is an absolute path - bin/solr -s ibexa - bin/solr create_core -c collection1 -d /opt/solr/server/ibexa/template - ``` - -=== "Solr 8" - - [[= product_name =]] provides the following required configuration files: - - - `vendor/ibexa/solr/src/lib/Resources/config/solr/solr.languages` directory - - `vendor/ibexa/solr/src/lib/Resources/config/solr/schema.xml` - - `vendor/ibexa/solr/src/lib/Resources/config/solr/custom-fields-types.xml` - - `vendor/ibexa/solr/src/lib/Resources/config/solr/language-fieldtypes.xml` - - ``` bash - # Make sure to replace the /opt/solr/ path with where you have placed Solr - cd /opt/solr - mkdir -p server/ibexa/template - cp -R /vendor/ibexa/solr/src/lib/Resources/config/solr/solr.languages server/ibexa/template - cp -R /vendor/ibexa/solr/src/lib/Resources/config/solr/{schema.xml,custom-fields-types.xml,language-fieldtypes.xml} server/ibexa/template - cp server/solr/configsets/_default/conf/{solrconfig.xml,stopwords.txt,synonyms.txt} server/ibexa/template - cp server/solr/solr.xml server/ibexa - - # Modify solrconfig.xml to remove the section that doesn't agree with your schema - sed -i.bak '//d' server/ibexa/template/solrconfig.xml - - # Start Solr (but apply autocommit settings below first if you need to) - bin/solr -s ibexa - bin/solr create_core -c collection1 -d server/ibexa/template - ``` - -#### Set up SolrCloud - -SolrCloud is a cluster of Solr servers. It enables you to: - -- centralize configuration -- automatically load balance and fail-over for queries -- integrate ZooKeeper for cluster coordination and configuration - -To set SolrCloud up follow [Getting Started with SolrCloud](https://solr.apache.org/guide/solr/9_8/getting-started/tutorial-solrcloud.html). - -### Continue Solr configuration - -#### Configure commit frequency - -The bundle doesn't commit Solr index changes directly on repository updates, leaving it up to you to tune this using `solrconfig.xml` as best practice suggests. - -This setting is **required** if you want to see the changes after publish. -It's strongly recommended to set-up `solrconfig.xml` like this: - -``` xml - - - - ${solr.autoCommit.maxTime:15000} - false - - - - - ${solr.autoSoftCommit.maxTime:20} - -``` - -#### Configure spellcheck - -Configure the spellcheck component in `solrconfig.xml`: - -```xml - - - default - meta_content__text_t - solr.DirectSolrSpellChecker - internal - 0.5 - 2 - 1 - 5 - 4 - 0.01 - - -``` - -Add this `spellcheck` component to the `/select` request handler: - -```xml - - - spellcheck - - - -``` - -### Generate Solr configuration automatically - -The command line tool `bin/generate-solr-config.sh` generates Solr configuration automatically. -It can be used for deploying to [[= product_name_cloud =]] (Upsun) and on-premise installs. - -Execute the script from the [[= product_name =]] root directory for further information: - -``` bash -./vendor/ibexa/solr/bin/generate-solr-config.sh --help -``` - -## Configure the bundle - -The Solr Search Engine Bundle can be configured in many ways. -The config further below assumes you have parameters set up for Solr DSN and search engine *(however both are optional)*, for example: - -``` yaml -env(SEARCH_ENGINE): solr -env(SOLR_DSN): 'http://localhost:8983/solr' -env(SOLR_CORE): collection1 -``` - -### Configure Solr version - -When using Solr 9, it's required to set the `version` parameter with the Solr version. -The parameter is optional when using lower Solr versions. - -``` yaml -ibexa_solr: - version: '9.8.1' -``` - -### Single-core example (default) - -Out of the box in [[= product_name =]] the following is enabled for a setup: - -``` yaml -ibexa_solr: - endpoints: - endpoint0: - dsn: '%env(string:SOLR_DSN)%' - core: '%env(string:SOLR_CORE)%' - connections: - default: - entry_endpoints: - - endpoint0 - mapping: - default: endpoint0 -``` - -### Shared-core example - -The following example separates one language. -The installation contains several similar languages, and one different language that should receive proper language analysis for proper stemming and sorting behavior by Solr: - -``` yaml -ibexa_solr: - endpoints: - endpoint0: - dsn: '%env(string:SOLR_DSN)%' - core: core0 - endpoint1: - dsn: '%env(string:SOLR_DSN)%' - core: core1 - connections: - default: - entry_endpoints: - - endpoint0 - - endpoint1 - mapping: - translations: - jpn-JP: endpoint1 - # Other languages, for instance eng-US and other western languages are sharing core - default: endpoint0 -``` - -### Multi-core example - -If full language analysis features are preferred, then each language can be configured with separate cores. - -!!! note - - Make sure to test this setup against a single-core setup, as it might perform worse than single-core if your project uses a lot of language fallbacks per SiteAccess, as queries are then performed across several cores at once. - -``` yaml -ibexa_solr: - version: '9.8.1' # Required only if using Solr 9 - endpoints: - endpoint0: - dsn: '%env(string:SOLR_DSN)%' - core: core0 - endpoint1: - dsn: '%env(string:SOLR_DSN)%' - core: core1 - endpoint2: - dsn: '%env(string:SOLR_DSN)%' - core: core2 - endpoint3: - dsn: '%env(string:SOLR_DSN)%' - core: core3 - endpoint4: - dsn: '%env(string:SOLR_DSN)%' - core: core4 - endpoint5: - dsn: '%env(string:SOLR_DSN)%' - core: core5 - endpoint6: - dsn: '%env(string:SOLR_DSN)%' - core: core6 - connections: - default: - entry_endpoints: - - endpoint0 - - endpoint1 - - endpoint2 - - endpoint3 - - endpoint4 - - endpoint5 - - endpoint6 - mapping: - translations: - jpn-JP: endpoint1 - eng-US: endpoint2 - fre-FR: endpoint3 - ger-DE: endpoint4 - esp-ES: endpoint5 - # Not really used, but specified here for fallback if more languages are suddenly added by content admins - default: endpoint0 - # Also use separate core for main languages (differs from content object to content object) - # This is useful to reduce number of cores queried for always available language fallbacks - main_translations: endpoint6 -``` - -### SolrCloud example - -To use SolrCloud you need to specify data distribution strategy for connection via the `distribution_strategy` option to [`cloud`](https://solr.apache.org/guide/solr/9_8/getting-started/tutorial-solrcloud.html). - -The example is based on multi-core setup so any specific language analysis options could be specified on the collection level. - -``` yaml -ibexa_solr: - endpoints: - main: - dsn: '%env(string:SOLR_DSN)%' - core: '%solr_main_core%' - en: - dsn: '%env(string:SOLR_DSN)%' - core: '%solr_en_core%' - fr: - dsn: '%env(string:SOLR_DSN)%' - core: '%solr_fr_core%' - # ... - connections: - default: - distribution_strategy: cloud - entry_endpoints: - - main - - en - - fr - # - ... - mapping: - translations: - eng-GB: en - fre-FR: fr - # ... - main_translations: main -``` - -This solution uses the default SolrCloud [document routing strategy: `compositeId`](https://solr.apache.org/guide/solr/9_8/deployment-guide/solrcloud-shards-indexing.html#document-routing). - -### Solr Basic HTTP Authorization - -Solr core can be secured with Basic HTTP Authorization. - -For more information, see [Solr Basic Authentication Plugin](https://solr.apache.org/guide/solr/9_8/deployment-guide/basic-authentication-plugin.html). - -In the example below we configured Solr Bundle to work with secured Solr core. - -``` yaml -ibexa_solr: - endpoints: - endpoint0: - dsn: '%env(string:SOLR_DSN)%' - core: core0 - user: example - pass: password -``` - -Obviously, you should pass credentials for every configured and HTTP Basic secured Solr core. Configuration for multi core setup is exactly the same. - -## Configure repository with the specific search engine - -The following is an example of configuring Solr search engine, where `connection` name is same as in the example above, and engine is set to `solr`: - -``` yaml -ibexa: - repositories: - default: - storage: ~ - search: - engine: '%search_engine%' - connection: default -``` - -`%search_engine%` is a parameter that is configured in `config/packages/ibexa.yaml`, and should be changed from its default value `legacy` to `solr` to activate Solr as the search engine. - -## Clear prod cache - -While Symfony `dev` environment keeps track of changes to YAML files, `prod` doesn't, so clear the cache to make sure Symfony reads the new config: - -``` bash -php bin/console --env=prod cache:clear -``` - -## Run CLI indexing command - -The last step is to execute the initial indexation of data: - -``` bash -php bin/console --env=prod --siteaccess= ibexa:reindex -``` - -### Possible exceptions - -If you haven't configured your setup correctly, some exceptions might happen on indexing. -Here are the most common issues you may encounter: - -- Exception if Binary files in database have an invalid path prefix - - Make sure `var_dir` is configured properly in `ibexa.yaml` configuration. - - If your database is inconsistent in regards to file paths, try to update entries to be correct *(make sure to make a backup first)*. -- Exception on unsupported field types - - Make sure to implement all field types in your installation, or to configure missing ones as [NullType](nullfield.md) if implementation isn't needed. -- Content isn't immediately available - - Solr Bundle on purpose doesn't commit changes directly on Repository updates *(on indexing)*, - but lets you control this using Solr configuration. Adjust Solr's `autoSoftCommit` (visibility of changes to search index) and/or `autoCommit` (hard commit, for durability and replication) - to balance performance and load on your Solr instance against needs you have for [Near Real Time (NRT) searching)](https://solr.apache.org/guide/solr/9_8/deployment-guide/solrcloud-distributed-requests.html#near-real-time-nrt-use-cases). -- Running out of memory during indexing - - In general make sure to run indexing using the prod environment to avoid debuggers and loggers from filling up memory. diff --git a/docs/templating/components.md b/docs/templating/components.md index d90421734e4..6d19eb3bea6 100644 --- a/docs/templating/components.md +++ b/docs/templating/components.md @@ -1,6 +1,7 @@ --- description: Twig components allow you to inject any custom widgets into selected places of the user interface. month_change: false +delete: true --- # Twig Components @@ -96,7 +97,7 @@ The following example shows how you can use each of the built-in components to c ## Render Twig Components -Render both single Twig Components and whole groups using the [dedicated Twig functions](component_twig_functions.md). +Render both single Twig Components and whole groups using the dedicated Twig functions. You can modify the Component rendering process by: - listening to one of the [related events](twig_component_events.md) diff --git a/docs/templating/embed_and_list_content/list_content.md b/docs/templating/embed_and_list_content/list_content.md index cacd5aa84be..74edb97f55c 100644 --- a/docs/templating/embed_and_list_content/list_content.md +++ b/docs/templating/embed_and_list_content/list_content.md @@ -1,5 +1,6 @@ --- description: Create and render a list of content items, for example, content in a folder or blog posts in a blog. +delete: true --- # List content @@ -36,7 +37,7 @@ Then, place the following template in `templates/themes//full/folder.h [[= include_file('code_samples/front/list_content/templates/themes/my_theme/full/folder.html.twig') =]] ``` -This template uses the [`ibexa_render()` Twig function](content_twig_functions.md#ibexa_render) to render every child of the folder with the default template for the `line` view. +This template uses the `ibexa_render()` Twig function to render every child of the folder with the default template for the `line` view. ## List children in Content query Field diff --git a/docs/templating/embed_and_list_content/render_images.md b/docs/templating/embed_and_list_content/render_images.md index c1db208733a..ef4eda1b2b0 100644 --- a/docs/templating/embed_and_list_content/render_images.md +++ b/docs/templating/embed_and_list_content/render_images.md @@ -1,10 +1,11 @@ --- description: Render content images and configure their variations. +delete: true --- # Render images -To render images contained in Image Asset or Image fields, use the [`ibexa_render_field()`](field_twig_functions.md#ibexa_render_field) Twig function. +To render images contained in Image Asset or Image fields, use the `ibexa_render_field()` Twig function. ``` html+twig {{ ibexa_render_field(content, 'image') }} @@ -26,7 +27,7 @@ If a content item contains more than one image, you may want to select the first This enables you to avoid a situation where, for example, the featured image in an article is missing, because the first image field was left empty. -The [`ibexa_content_field_identifier_first_filled_image()`](image_twig_functions.md#ibexa_content_field_identifier_first_filled_image) Twig function returns the identifier of the first image field that isn't empty. +The `ibexa_content_field_identifier_first_filled_image()` Twig function returns the identifier of the first image field that isn't empty. ``` html+twig {% set firstImage = ibexa_content_field_identifier_first_filled_image(content) %} diff --git a/docs/templating/layout/add_navigation_menu.md b/docs/templating/layout/add_navigation_menu.md index 8df10df9fc6..7e5ebe5fa62 100644 --- a/docs/templating/layout/add_navigation_menu.md +++ b/docs/templating/layout/add_navigation_menu.md @@ -1,5 +1,6 @@ --- description: Enrich you site front with a menu displaying selected content items. +delete: true --- # Add navigation menu @@ -27,7 +28,7 @@ In this case, it queries for all visible children of location `2`, the root loca The Query Type has the name `Menu` (line 28). You can use it in the template to render the menu. -Add the following [`ibexa_render_content_query` function](content_twig_functions.md#ibexa_render_content_query) to the `pagelayout_html.twig` template: +Add the following `ibexa_render_content_query` function to the `pagelayout_html.twig` template: ``` html+twig [[= include_file('code_samples/front/layouts/menu/templates/themes/my_theme/pagelayout.html.twig', 0, 7) =]] @@ -50,7 +51,7 @@ To use it, first create a `MenuBuilder.php` file in `src/Menu`: ``` In the builder, you can define items that you want in the menu. -For example, lines 21-23 add a specific location by using the [`ibexa.url.alias`](url_twig_functions.md#ibexaurlalias) route. +For example, lines 21-23 add a specific location by using the `ibexa.url.alias` route. Line 27 adds a defined system route that leads to the search form. Next, register the menu builder as a service: diff --git a/docs/templating/render_content/render_content.md b/docs/templating/render_content/render_content.md index 43cd786d26d..cbb149c3c94 100644 --- a/docs/templating/render_content/render_content.md +++ b/docs/templating/render_content/render_content.md @@ -1,5 +1,6 @@ --- description: Customize rendering of content items on the site front end by using templates with proper content view configuration. +delete: true --- # Render content @@ -40,7 +41,7 @@ The configuration requires that you add the `article.html.twig` template file to ## Get content information -To render general content information, such as content name, use the [`ibexa_content_name()`](content_twig_functions.md#ibexa_content_name) Twig function. +To render general content information, such as content name, use the `ibexa_content_name()` Twig function. Content name is based on the [content name pattern](content_types.md#content-type-metadata) of the content type. @@ -59,7 +60,7 @@ For example, to get the publication date of the current content item, use: ## Render fields -You can render a single field of a content item by using the [`ibexa_render_field()`](field_twig_functions.md#ibexa_render_field) Twig function. +You can render a single field of a content item by using the `ibexa_render_field()` Twig function. It takes the content item and the identifier of the Field as arguments: ``` html+twig @@ -74,7 +75,7 @@ You can pass additional arguments to this function, for example, an HTML class: ### Field templates -You can use a custom Field template by passing the template as an argument to [`ibexa_render_field()`](field_twig_functions.md#ibexa_render_field): +You can use a custom Field template by passing the template as an argument to `ibexa_render_field()`: ``` html+twig [[= include_file('code_samples/front/render_content/templates/themes/my_theme/full/article.html.twig', 15, 18) =]] diff --git a/docs/templating/templating.md b/docs/templating/templating.md index dbc930a884c..04a312ccff6 100644 --- a/docs/templating/templating.md +++ b/docs/templating/templating.md @@ -15,6 +15,5 @@ Content view configuration is SiteAccess-aware. [[= cards([ "templating/templates/templates", "templating/queries_and_controllers/content_queries", - "templating/twig_function_reference/twig_function_reference", "templating/design_engine/design_engine", ], columns=4) =]] diff --git a/docs/templating/twig_function_reference/ai_actions_twig_functions.md b/docs/templating/twig_function_reference/ai_actions_twig_functions.md deleted file mode 100644 index 89ee7bd3794..00000000000 --- a/docs/templating/twig_function_reference/ai_actions_twig_functions.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -description: AI Actions functions allows you to embed AI Actions in your templates -page_type: reference -month_change: false ---- - -# AI Actions Twig functions - -AI Actions functions allows you to pass information about AI Actions to the Twig templates. - -## `ibexa_ai_config()` - -The `ibexa_ai_config` function loads the configuration of an Action Type with given identifier. - -``` html+twig - {% set ai_config = ibexa_ai_config('refine_text') %} - {% set ai_config2 = ibexa_ai_config('refine_text', { 'some': 'optional data' }) %} - - -``` - -You can use the [ResolveActionConfigurationWidgetConfigEvent](ai_action_events.md#others) event to modify the configuration after it's been loaded. The optional data provided in the function call is available in the event object. diff --git a/docs/templating/twig_function_reference/catalog_twig_functions.md b/docs/templating/twig_function_reference/catalog_twig_functions.md deleted file mode 100644 index 0e7a556418a..00000000000 --- a/docs/templating/twig_function_reference/catalog_twig_functions.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -description: Catalog Twig functions enable getting and rendering certain catalog information. -page_type: reference ---- - -# Catalog Twig functions - -With the catalog Twig functions you can get catalog location and render catalog status. - -## `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`). - -``` html+twig -{{ ibexa_url(ibexa_get_product_catalog_root()) }} -``` - -## `ibexa_render_catalog_status` - -The `ibexa_render_catalog_status` filter renders the status of the catalog, translated into the current language. - -### Examples - -``` html+twig -{% import "@ibexadesign/product_catalog/catalog_macros.html.twig" as catalog_macros %} -{{ catalog_macros.status_node(catalog.status) }} -``` diff --git a/docs/templating/twig_function_reference/component_twig_functions.md b/docs/templating/twig_function_reference/component_twig_functions.md deleted file mode 100644 index 5be79e10664..00000000000 --- a/docs/templating/twig_function_reference/component_twig_functions.md +++ /dev/null @@ -1,32 +0,0 @@ ---- -description: Twig Components allow you to inject custom widgets into selected templates -page_type: reference ---- - -# Twig Component functions - -## `ibexa_twig_component_group` - -The `ibexa_twig_component_group` function renders the specified [Twig Component](components.md) group. -You can pass optional parameters as the second argument. They are passed to the `\Ibexa\Contracts\TwigComponents\Renderer\RendererInterface` service and then to the rendered component. - -### Examples - -``` html+twig -{{ ibexa_twig_component_group('storefront-before-maincart', { - 'cart' : cart|default(null) -}) }} -``` - -## `ibexa_twig_component` - -The `ibexa_twig_component` function renders a single Twig Component from the specified group. -You can pass optional parameters as the third argument. They are passed to the `\Ibexa\Contracts\TwigComponents\Renderer\RendererInterface` service and then to the rendered component. - -### Examples - -``` html+twig -{{ ibexa_twig_component('storefront-before-maincart', 'my-component', { - 'cart' : cart|default(null) -}) }} -``` diff --git a/docs/templating/twig_function_reference/content_twig_functions.md b/docs/templating/twig_function_reference/content_twig_functions.md deleted file mode 100644 index c1e9b125be2..00000000000 --- a/docs/templating/twig_function_reference/content_twig_functions.md +++ /dev/null @@ -1,168 +0,0 @@ ---- -description: Content Twig function enable rendering whole content items and their information. -page_type: reference -month_change: false ---- - -# Content Twig functions - -- [`ibexa_render()`](#ibexa_render) renders a content item. -- [`ibexa_content_name()`](#ibexa_content_name) renders the name of a content item. -- [`ibexa_render_content_query()`](#ibexa_render_content_query) renders the results of a non-content related query. -- [`ibexa_render_location_query()`](#ibexa_render_location_query) renders the results of a non-content related Location query. -- [`ibexa_seo_is_empty()`](#ibexa_seo_is_empty) returns a Boolean indication of whether SEO data is available for a content item. -- [`ibexa_seo()`](#ibexa_seo) attaches SEO tags to content item's HTML code. - -## Content rendering - -### `ibexa_render()` - -`ibexa_render()` renders the indicated content item. - -It uses the `embed` view by default, but you can pass a different view as an argument. - -You can provide `ibexa_render()` with either a content item or a Location object. - -!!! tip - - Depending on whether you pass a content item or a Location object, the helper automatically selects and uses one of internal Twig functions: `ibexa_render_content()` or `ibexa_render_location()`. - -|Argument|Type|Description| -|------|------|------| -|`content` or `location`|[`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html), [`ContentAwareInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) or [`Location`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Location.html)|Content item or its location.| -|`method`|`string`|(optional) [Rendering method](#rendering-methods). One of: `direct`, `inline`, `esi`, `ssi`. (Default method is `direct`)| -|`viewType`|`string`|(optional) [View type](template_configuration.md#view-types). (Default view type is `embed`)| -|`params`|`array`|(optional) Hash of variables to pass to the template.| - -#### Rendering methods - -You can pass one of the following rendering methods to `ibexa_render()`: - -- `direct` - (default) renders the content item without using a request -- `inline` - Symfony inline rendering method, sends a request to the server and inserts the response -- `esi` - uses the Symfony [Edge Side Include mechanism]([[= symfony_doc =]]/http_cache/esi.html) to render the correct tag that is handled by the reverse proxy -- `ssi` - uses the Symfony [Server Side Include mechanism]([[= symfony_doc =]]/http_cache/ssi.html) to render the correct tag that is handled by the web server - -``` html+twig -{{ ibexa_render(location) }} - -{{ ibexa_render(content, {'viewType': 'line'}) }} - -{{ ibexa_render(content, {'method': 'inline'}) }} - -{{ ibexa_render(content, { - 'viewType': 'line', - 'params': { - 'custom_param': 'custom_value' - } -}) }} -``` - -## Content information - -### `ibexa_content_name()` - -`ibexa_content_name()` renders the name of a content item. - -The function uses prioritized languages from SiteAccess settings unless you pass another language as `forcedLanguage`. -If the content item doesn't have a translation in the prioritized or passed language, the function returns the name in the main language. - -| Argument | Type | Description | -|---------------|------|-------------| -| `content` | [`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html), [`ContentInfo`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentInfo.html), or [`ContentAwareInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) | Content item, its ContentInfo object, or ContentAwareInterface object.| -| `forcedLanguage` | `string` | (optional) Language to use (for example, `fre-FR`). | - -``` html+twig -{{ ibexa_content_name(content) }} - -{{ ibexa_content_name(content, 'pol-PL') }} -``` - -``` html+twig -{{ ibexa_content_name(product) }} - -{{ ibexa_content_name(product, 'fr-FR') }} -``` - -### `ibexa_seo_is_empty()` - -`ibexa_seo_is_empty()` returns a Boolean value which indicates whether [SEO]([[= user_doc =]]/search_engine_optimization/seo/) data is available for the content item that is passed as an argument. - -| Argument | Type | Description | -|---------------|------|-------------| -| `content` | [`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html) or [`ContentAwareInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) | Content item or ContentAwareInterface object.| - -``` html+twig -{{ ibexa_seo_is_empty(content) }} -``` - -``` html+twig -{{ ibexa_seo_is_empty(product) }} -``` - -### `ibexa_seo()` - -`ibexa_seo()` attaches [SEO]([[= user_doc =]]/search_engine_optimization/seo/) data to the content item's HTML code. - -| Argument | Type | Description | -|---------------|------|-------------| -| `content` | [`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html) or [`ContentAwareInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) | Content item or ContentAwareInterface object.| - -``` html+twig -{{ ibexa_seo(content) }} -``` - -``` html+twig -{{ ibexa_seo(product) }} -``` - -!!! tip - - The following example uses both SEO-related functions: - - ``` html+twig - {% if not ibexa_seo_is_empty(content) %} - {{ ibexa_seo(content)}} - {% else %} - {{ ibexa_content_name(content) }} - # Generate other tags - {% endif %} - ``` - -### `ibexa_taxonomy_entries_for_content()` filter - -`ibexa_taxonomy_entries_for_content()` fetches names of content categories. - -| Argument | Type | Description | -|---------------|------|-------------| -| `content` | [`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html) or [`ContentAwareInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) | Content item to display the category name for. | - -```html+twig -{{ content|ibexa_taxonomy_entries_for_content|map(entry => "#{entry.name}")|join(', ') }} -``` - -```html+twig -{{ product|ibexa_taxonomy_entries_for_content|map(entry => "#{entry.name}")|join(', ') }} -``` - -## Non-content related queries - -### `ibexa_render_content_query()` - -`ibexa_render_content_query` renders the results of a non-content related query made by using a Query type. - -|Argument|Type|Description| -|------|------|------| -|`options`|array|Available options are: `query`, `pagination`, `template`.| - -!!! tip - - For an example of using `ibexa_render_content_query`, see [Add navigation menu](add_navigation_menu.md#render-menu-using-a-query). - -### `ibexa_render_location_query()` - -`ibexa_render_location_query` renders the results of a non-content related location query made by using a Query type. - -|Argument|Type|Description| -|------|------|------| -|`options`|array|Available options are: `query`, `pagination`, `template`.| diff --git a/docs/templating/twig_function_reference/date_twig_filters.md b/docs/templating/twig_function_reference/date_twig_filters.md deleted file mode 100644 index 42a27e4f19e..00000000000 --- a/docs/templating/twig_function_reference/date_twig_filters.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -description: Use date Twig filters to select the date and time format used in templates. -page_type: reference ---- - -# Date Twig filters - -Date and time Twig filters format a date and time object (`DateTimeInterface`) in one of the formats defined in [user preferences](formatting_date_and_time.md#within-user-settings-menu). - -- `ibexa_full_datetime` -- `ibexa_full_date` -- `ibexa_full_time` -- `ibexa_short_datetime` -- `ibexa_short_date` -- `ibexa_short_time` - -If the `DateTimeInterface` argument is null, the filter returns the current date and time in the selected format. - -``` html+twig -{{ content.contentInfo.publishedDate|ibexa_full_datetime }} -``` - -The filters also accept an optional `timezone` parameter for displaying date and time in a chosen time zone: - -``` html+twig -{{ content.contentInfo.publishedDate|ibexa_short_datetime('PST') }} -``` - -## Considerations for use outside the back office - -The filters rely on user preferences. -When the preferences are not set, for example, for logged out users, the filters fall back to a default date format. -For some filters, the fallback date format includes locale-aware fragments, such as the full month or day name. -When combined with [reverse proxies like Varnish or Fastly](http_cache.md), it's possible to cache a localized version of a date and display it to other users, even if they're not using the same locale. - -Consider these alternatives: - -- Use Twig's built-in `date` filter with a fixed, locale-independent format - - ``` html+twig - {{ content.contentInfo.publishedDate|date('Y-m-d H:i:s') }} - ``` - -- Use ESI for dynamic rendering of the date - - ``` html+twig - {{ render_esi(controller('App\\Controller\\CustomDateController::format', { - 'date': content.contentInfo.publishedDate - })) }} - ``` - - Don't cache the ESI response. - By implementing this solution, you can keep the date format locale-aware. - -- Client-side JavaScript formatting - - ``` html+twig - {{ content.contentInfo.publishedDate|date('Y-m-d H:i:s') }} - … - - ``` - -For more information, see [HTTP Cache](http_cache.md) and [Delivering personalized responses](context_aware_cache.md#personalize-responses). diff --git a/docs/templating/twig_function_reference/field_twig_functions.md b/docs/templating/twig_function_reference/field_twig_functions.md deleted file mode 100644 index 60f2c3b38ce..00000000000 --- a/docs/templating/twig_function_reference/field_twig_functions.md +++ /dev/null @@ -1,232 +0,0 @@ ---- -description: Field Twig function enable rendering content fields, their values and their information. -page_type: reference ---- - -# Field Twig functions - -Field Twig functions render specific fields of a content item and provide information about them. - -- [`ibexa_render_field()`](#ibexa_render_field) renders the selected field of a content item. -- [`ibexa_field_value()`](#ibexa_field_value) returns the field value object. -- [`ibexa_field()`](#ibexa_field) returns the field object. - -`ibexa_field()` returns the *Field object*, and `ibexa_field_value()` returns the *Field's raw value*. -`ibexa_render_field()` is the Twig function intended for rendering the field on the front page. - -You can get additional information about a field by using the following Twig functions: - -- [`ibexa_field_name()`](#ibexa_field_name) returns the name of a content item's field. -- [`ibexa_field_description()`](#ibexa_field_description) returns the description of a content item's field. -- [`ibexa_field_is_empty()`](#ibexa_field_is_empty) returns Boolean information whether a field of a content item is empty. -- [`ibexa_field_group_name()`](#ibexa_field_group_name) returns a human-readable name of the field group. -- [`ibexa_has_field()`](#ibexa_has_field) checks whether a field is present in the content item. - -## Field rendering - -### `ibexa_render_field()` - -`ibexa_render_field()` renders the selected field of a content item. -The field is rendered with the default template, but you can optionally pass a different template as parameter as well. - -| Argument | Type | Description | -| ------ | ----- | ----- | -| `content` | [`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html) or [`ContentAwareInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) | Content item the field belongs to. | -| `fieldDefinitionIdentifier` | `string` | Field identifier. | -| `params` | `hash` | (optional) Hash of parameters passed to the template block. | - -``` html+twig -[[= include_code('code_samples/templates/field_twig_functions/render_content.html.twig') =]] -``` - -``` html+twig -[[= include_code('code_samples/templates/field_twig_functions/render_product.html.twig') =]] -``` - -#### Parameters - -You can pass the following parameters to `ibexa_render_field()`: - -- `lang` - language to render the field in (overrides the current language), must be a valid locale in xxx-YY format -- `template` - field template to use -- `attr` - hash of HTML attributes to add to the tag -- parameters - arbitrary parameters to pass to the template block. -Some field types, like the [MapLocation field type](maplocationfield.md), expect specific parameters. - -#### Examples - -``` html+twig -{{ ibexa_render_field(content, 'title', { - 'attr': { - class: 'article-title' - } -}) }} -``` - -## Field values - -### `ibexa_field_value()` - -`ibexa_field_value()` returns the field value object. - -The function returns the value of the field only. -To render the field with default or custom templates, use [`ibexa_render_field()`](#ibexa_render_field) instead. -If the content item doesn't have a translation in the prioritized or passed language, the function returns the value in the main language. - -| Argument | Type | Description | -|-----|------|-----| -| `content` | [`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html) or [`ContentAwareInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) | Content item the field belongs to.| -| `fieldDefIdentifier` | `string` | Identifier of the field. | -| `forcedLanguage` | `string` | (optional) Language to use (for example, "fre-FR"). | - -``` html+twig -{{ ibexa_field_value(content, 'image') }} -``` - -``` html+twig -{{ ibexa_field_value(product, 'image') }} -``` - -### `ibexa_field()` - -`ibexa_field()` returns the field object. -The field gives you access to the field value, the field's definition identifier, and field type identifier. -If the content item doesn't have a translation in the prioritized or passed language, the function returns the field object in the main language. - -| Argument | Type | Description | -|-------|------|------| -| `content` | [`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html) or [`ContentAwareInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) | Content item the field belongs to.| -| `fieldDefIdentifier` | `string` | Identifier of the field. | -| `forcedLanguage` | `string` | {optional) Language to use (for example, "fre-FR"). | - -You can access the field's value by using `(ibexa_field(content, 'my_field').value)`, -but it's recommended to use the dedicated [`ibexa_field_value()`](#ibexa_field_value) function for this. - -You can use `ibexa_field()` to access the field type identifier: - -``` html+twig -{{ ibexa_field(content, 'my_field').fieldTypeIdentifier }} -``` - -``` html+twig -{{ ibexa_field(product, 'my_field').fieldTypeIdentifier }} -``` - -## Field information - -### `ibexa_field_name()` - -`ibexa_field_name()` returns the name of a content item's field. - -The function uses prioritized languages from SiteAccess settings unless you pass another language as `forcedLanguage`. -If the content item doesn't have a translation in the prioritized or passed language, the function returns the name in the main language. - -| Argument | Type | Description | -|---------------|------|-------------| -| `content` | [`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html), [`ContentInfo`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentInfo.html), or [`ContentAwareInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) | Content item the field belongs to. | -| `fieldDefIdentifier` | `string` | Identifier of the field. | -| `forcedLanguage` | `string` | (optional) Language to use (for example, `fre-FR`). | - -``` html+twig -{{ ibexa_field_name(content, 'title') }} - -{{ ibexa_field_name(content, 'title', 'ger-DE') }} -``` - -``` html+twig -{{ ibexa_field_name(product, 'name') }} - -{{ ibexa_field_name(product, 'name', 'pl-PL') }} -``` - -### `ibexa_field_description()` - -`ibexa_field_description()` returns the description of a content item's field. - -The function uses prioritized languages from SiteAccess settings unless you pass another language as `forcedLanguage`. -If the content item doesn't have a translation in the prioritized or passed language, the function returns the description in the main language. - -| Argument | Type | Description | -|---------------|------|-------------| -| `content` | [`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html), [`ContentInfo`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentInfo.html), or [`ContentAwareInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) | Content item the field belongs to. | -| `fieldDefIdentifier` | `string` | Identifier of the field. | -| `forcedLanguage` | `string` | (optional) Language to use (for example, `fre-FR`). | - -``` html+twig -{{ ibexa_field_description(content, 'title') }} - -{{ ibexa_field_description(content, 'title', 'ger-DE') }} -``` - -``` html+twig -{{ ibexa_field_description(product, 'name') }} - -{{ ibexa_field_description(product, 'name', 'fr-FR') }} -``` - -### `ibexa_field_is_empty()` - -`ibexa_field_is_empty()` returns Boolean information whether a given field of a content item is empty. - -| Argument | Type | Description | -|---------------|------|-------------| -| `content` | [`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html) or [`ContentAwareInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) | Content item the field belongs to. | -| `fieldDefIdentifier` | `string` | Identifier of the field. | -| `forcedLanguage` | `string` | (optional) Language to use (for example, `fre-FR`). | - -``` html+twig -{{ ibexa_field_is_empty(content, 'title') }} -``` - -``` html+twig -{{ ibexa_field_is_empty(product, 'name') }} -``` - -#### Examples - -For example, use `ibexa_field_is_empty()` to check whether a field is empty or filled before rendering it: - -``` html+twig -{% if not ibexa_field_is_empty(content, 'image') %} - {{ ibexa_render_field(content, 'image') }} -{% endif %} -``` - -``` html+twig -{% if not ibexa_field_is_empty(product, 'image') %} - {{ ibexa_render_field(product, 'image') }} -{% endif %} -``` - -### `ibexa_field_group_name()` - -`ibexa_field_group_name()` returns a human-readable name of a field group. - -| Argument | Type | Description | -|---------------|------|-------------| -| `fieldGroupIdentifier` | `string` | Field group [identifier](repository_configuration.md#field-groups-configuration). | - -``` html+twig -{{ ibexa_field_group_name('content') }} -``` - -### `ibexa_has_field()` - -`ibexa_has_field()` returns Boolean information whether a field is present in the content item. - -| Argument | Type | Description | -|---------------|------|-------------| -| `content` | [`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html) or [`ContentAwareInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) | Content item the field may belong to. | -| `fieldDefIdentifier` | `string` | Identifier of the field. | - -``` html+twig -{% if ibexa_has_field(content, 'existing') %} - {{ ibexa_render_field(content, 'existing') }} -{% endif %} -``` - -``` html+twig -{% if ibexa_has_field(product, 'existing') %} - {{ ibexa_render_field(product, 'existing') }} -{% endif %} -``` diff --git a/docs/templating/twig_function_reference/icon_twig_functions.md b/docs/templating/twig_function_reference/icon_twig_functions.md deleted file mode 100644 index c0a2fdfe0a3..00000000000 --- a/docs/templating/twig_function_reference/icon_twig_functions.md +++ /dev/null @@ -1,615 +0,0 @@ ---- -description: Icon Twig functions enable referencing SVG icons in templates. -page_type: reference -month_change: false ---- - -# Icon Twig functions - -## `ibexa_icon_path()` - -`ibexa_icon_path()` generates a path to the selected icon from an [icon set](custom_icons.md#icon-sets). - -| Argument | Type | Description | -|----------|----------|--------------------------------------------------------------------------------| -| `icon` | `string` | Identifier of an icon in the icon set. | -| `set` | `string` | Identifier of the configured icon set. If empty, the default icon set is used. | - -```html+twig - - - -``` - -The icons can be displayed in different colors and sizes. - -### Icon color variants - -By default, the icon inherits the [`fill`](https://developer.mozilla.org/docs/Web/CSS/Reference/Properties/fill) attribute from the parent element. -You can change it by using one of the available CSS modifiers: - -|Modifier|Usage| -|---|---| -| `--light` | To be used on dark backgrounds | -| `--dark` | To be used on light backgrounds | -| `--base-dark` | To be used on light backgrounds | -| `--primary` | To use the primary back office color | -| `--secondary` | To use the secondary back office color | - -```html+twig - - - -``` - -### Icon size variants - -The default icon size in the back office is `32px`. -To change the default size, in the template add the modifier to the class name. - -``` html+twig - - - -``` - -The list of available icon sizes: - -|Modifier|Size| -|----|---------| -|`--tiny`|`8px`| -|`--tiny-small`|`12px`| -|`--small`|`16px`| -|`--small-medium`|`20px`| -|`--medium`|`24px`| -|`--medium-large`|`38px`| -|`--large`|`48px`| -|`--extra-large`|`64px`| - -### Icons reference - -The following icons are available out-of-the-box: - -| Icon | Identifier | -|---------------------------------------------------------------------------------|--------------------------------| -| ![accessibility](img/icons/accessibility.svg.png) | `accessibility` | -| ![action-compare](img/icons/action-compare.svg.png) | `action-compare` | -| ![action-compare-versions](img/icons/action-compare-versions.svg.png) | `action-compare-versions` | -| ![action-redo](img/icons/action-redo.svg.png) | `action-redo` | -| ![action-undo](img/icons/action-undo.svg.png) | `action-undo` | -| ![activate](img/icons/activate.svg.png) | `activate` | -| ![activity-clock](img/icons/activity-clock.svg.png) | `activity-clock` | -| ![add](img/icons/add.svg.png) | `add` | -| ![add-circle](img/icons/add-circle.svg.png) | `add-circle` | -| ![ai](img/icons/ai.svg.png) | `ai` | -| ![alert-error](img/icons/alert-error.svg.png) | `alert-error` | -| ![alert-warning](img/icons/alert-warning.svg.png) | `alert-warning` | -| ![align-block-center](img/icons/align-block-center.svg.png) | `align-block-center` | -| ![align-block-left](img/icons/align-block-left.svg.png) | `align-block-left` | -| ![align-block-right](img/icons/align-block-right.svg.png) | `align-block-right` | -| ![align-text-center](img/icons/align-text-center.svg.png) | `align-text-center` | -| ![align-text-justified](img/icons/align-text-justified.svg.png) | `align-text-justified` | -| ![align-text-left](img/icons/align-text-left.svg.png) | `align-text-left` | -| ![align-text-right](img/icons/align-text-right.svg.png) | `align-text-right` | -| ![app](img/icons/app.svg.png) | `app` | -| ![app-blog](img/icons/app-blog.svg.png) | `app-blog` | -| ![app-drawer](img/icons/app-drawer.svg.png) | `app-drawer` | -| ![app-edit](img/icons/app-edit.svg.png) | `app-edit` | -| ![app-money](img/icons/app-money.svg.png) | `app-money` | -| ![app-preview](img/icons/app-preview.svg.png) | `app-preview` | -| ![app-recent](img/icons/app-recent.svg.png) | `app-recent` | -| ![app-settings](img/icons/app-settings.svg.png) | `app-settings` | -| ![app-user](img/icons/app-user.svg.png) | `app-user` | -| ![app-www](img/icons/app-www.svg.png) | `app-www` | -| ![archived-restore](img/icons/archived-restore.svg.png) | `archived-restore` | -| ![archived-version](img/icons/archived-version.svg.png) | `archived-version` | -| ![arrow-caret-down](img/icons/arrow-caret-down.svg.png) | `arrow-caret-down` | -| ![arrow-caret-left](img/icons/arrow-caret-left.svg.png) | `arrow-caret-left` | -| ![arrow-caret-right](img/icons/arrow-caret-right.svg.png) | `arrow-caret-right` | -| ![arrow-caret-up](img/icons/arrow-caret-up.svg.png) | `arrow-caret-up` | -| ![arrow-chevron-down](img/icons/arrow-chevron-down.svg.png) | `arrow-chevron-down` | -| ![arrow-chevron-left](img/icons/arrow-chevron-left.svg.png) | `arrow-chevron-left` | -| ![arrow-chevron-right](img/icons/arrow-chevron-right.svg.png) | `arrow-chevron-right` | -| ![arrow-chevron-up](img/icons/arrow-chevron-up.svg.png) | `arrow-chevron-up` | -| ![arrow-collapse-expand](img/icons/arrow-collapse-expand.svg.png) | `arrow-collapse-expand` | -| ![arrow-collapse-left](img/icons/arrow-collapse-left.svg.png) | `arrow-collapse-left` | -| ![arrow-collapse-right](img/icons/arrow-collapse-right.svg.png) | `arrow-collapse-right` | -| ![arrow-decrease](img/icons/arrow-decrease.svg.png) | `arrow-decrease` | -| ![arrow-double-left](img/icons/arrow-double-left.svg.png) | `arrow-double-left` | -| ![arrow-double-right](img/icons/arrow-double-right.svg.png) | `arrow-double-right` | -| ![arrow-down](img/icons/arrow-down.svg.png) | `arrow-down` | -| ![arrow-down-text](img/icons/arrow-down-text.svg.png) | `arrow-down-text` | -| ![arrow-expand-left](img/icons/arrow-expand-left.svg.png) | `arrow-expand-left` | -| ![arrow-expand-right](img/icons/arrow-expand-right.svg.png) | `arrow-expand-right` | -| ![arrow-increase](img/icons/arrow-increase.svg.png) | `arrow-increase` | -| ![arrow-left](img/icons/arrow-left.svg.png) | `arrow-left` | -| ![arrow-move-left](img/icons/arrow-move-left.svg.png) | `arrow-move-left` | -| ![arrow-move-right](img/icons/arrow-move-right.svg.png) | `arrow-move-right` | -| ![arrow-reload-dot](img/icons/arrow-reload-dot.svg.png) | `arrow-reload-dot` | -| ![arrow-restore](img/icons/arrow-restore.svg.png) | `arrow-restore` | -| ![arrow-right](img/icons/arrow-right.svg.png) | `arrow-right` | -| ![arrow-rotate](img/icons/arrow-rotate.svg.png) | `arrow-rotate` | -| ![arrow-to-down](img/icons/arrow-to-down.svg.png) | `arrow-to-down` | -| ![arrow-to-down-circle](img/icons/arrow-to-down-circle.svg.png) | `arrow-to-down-circle` | -| ![arrow-to-left](img/icons/arrow-to-left.svg.png) | `arrow-to-left` | -| ![arrow-to-right](img/icons/arrow-to-right.svg.png) | `arrow-to-right` | -| ![arrow-to-up](img/icons/arrow-to-up.svg.png) | `arrow-to-up` | -| ![arrow-up](img/icons/arrow-up.svg.png) | `arrow-up` | -| ![arrow-up-text](img/icons/arrow-up-text.svg.png) | `arrow-up-text` | -| ![arrow-upgrade](img/icons/arrow-upgrade.svg.png) | `arrow-upgrade` | -| ![arrows-chevron-up-and-down](img/icons/arrows-chevron-up-and-down.svg.png) | `arrows-chevron-up-and-down` | -| ![arrows-circle](img/icons/arrows-circle.svg.png) | `arrows-circle` | -| ![arrows-full-view](img/icons/arrows-full-view.svg.png) | `arrows-full-view` | -| ![arrows-full-view-out](img/icons/arrows-full-view-out.svg.png) | `arrows-full-view-out` | -| ![arrows-inside](img/icons/arrows-inside.svg.png) | `arrows-inside` | -| ![arrows-outside](img/icons/arrows-outside.svg.png) | `arrows-outside` | -| ![arrows-recycle](img/icons/arrows-recycle.svg.png) | `arrows-recycle` | -| ![arrows-reload](img/icons/arrows-reload.svg.png) | `arrows-reload` | -| ![arrows-reload-user](img/icons/arrows-reload-user.svg.png) | `arrows-reload-user` | -| ![arrows-right-and-left](img/icons/arrows-right-and-left.svg.png) | `arrows-right-and-left` | -| ![arrows-round](img/icons/arrows-round.svg.png) | `arrows-round` | -| ![arrows-switch](img/icons/arrows-switch.svg.png) | `arrows-switch` | -| ![arrows-synchronize](img/icons/arrows-synchronize.svg.png) | `arrows-synchronize` | -| ![arrows-up-and-down](img/icons/arrows-up-and-down.svg.png) | `arrows-up-and-down` | -| ![assign](img/icons/assign.svg.png) | `assign` | -| ![assign-tag](img/icons/assign-tag.svg.png) | `assign-tag` | -| ![assign-user](img/icons/assign-user.svg.png) | `assign-user` | -| ![automation](img/icons/automation.svg.png) | `automation` | -| ![badge-certificate-horizontal](img/icons/badge-certificate-horizontal.svg.png) | `badge-certificate-horizontal` | -| ![badge-certificate-vertical](img/icons/badge-certificate-vertical.svg.png) | `badge-certificate-vertical` | -| ![badge-star](img/icons/badge-star.svg.png) | `badge-star` | -| ![banner](img/icons/banner.svg.png) | `banner` | -| ![bell](img/icons/bell.svg.png) | `bell` | -| ![block-add](img/icons/block-add.svg.png) | `block-add` | -| ![block-hidden](img/icons/block-hidden.svg.png) | `block-hidden` | -| ![block-lock](img/icons/block-lock.svg.png) | `block-lock` | -| ![block-visible](img/icons/block-visible.svg.png) | `block-visible` | -| ![book](img/icons/book.svg.png) | `book` | -| ![book-open](img/icons/book-open.svg.png) | `book-open` | -| ![bookmark-filled](img/icons/bookmark-filled.svg.png) | `bookmark-filled` | -| ![bookmark-outline](img/icons/bookmark-outline.svg.png) | `bookmark-outline` | -| ![bookmarks](img/icons/bookmarks.svg.png) | `bookmarks` | -| ![box-component](img/icons/box-component.svg.png) | `box-component` | -| ![bulb-idea](img/icons/bulb-idea.svg.png) | `bulb-idea` | -| ![business-card](img/icons/business-card.svg.png) | `business-card` | -| ![calculator](img/icons/calculator.svg.png) | `calculator` | -| ![calendar](img/icons/calendar.svg.png) | `calendar` | -| ![calendar-add](img/icons/calendar-add.svg.png) | `calendar-add` | -| ![calendar-back](img/icons/calendar-back.svg.png) | `calendar-back` | -| ![calendar-block](img/icons/calendar-block.svg.png) | `calendar-block` | -| ![calendar-check](img/icons/calendar-check.svg.png) | `calendar-check` | -| ![calendar-clock](img/icons/calendar-clock.svg.png) | `calendar-clock` | -| ![calendar-discard](img/icons/calendar-discard.svg.png) | `calendar-discard` | -| ![calendar-hidden](img/icons/calendar-hidden.svg.png) | `calendar-hidden` | -| ![calendar-number](img/icons/calendar-number.svg.png) | `calendar-number` | -| ![calendar-reload](img/icons/calendar-reload.svg.png) | `calendar-reload` | -| ![calendar-schedule](img/icons/calendar-schedule.svg.png) | `calendar-schedule` | -| ![calendar-visible](img/icons/calendar-visible.svg.png) | `calendar-visible` | -| ![camera](img/icons/camera.svg.png) | `camera` | -| ![car](img/icons/car.svg.png) | `car` | -| ![car-truck](img/icons/car-truck.svg.png) | `car-truck` | -| ![catalog](img/icons/catalog.svg.png) | `catalog` | -| ![chart-area](img/icons/chart-area.svg.png) | `chart-area` | -| ![chart-area-line](img/icons/chart-area-line.svg.png) | `chart-area-line` | -| ![chart-bar](img/icons/chart-bar.svg.png) | `chart-bar` | -| ![chart-donut](img/icons/chart-donut.svg.png) | `chart-donut` | -| ![chart-donut-element](img/icons/chart-donut-element.svg.png) | `chart-donut-element` | -| ![chart-dots](img/icons/chart-dots.svg.png) | `chart-dots` | -| ![chart-dots-other](img/icons/chart-dots-other.svg.png) | `chart-dots-other` | -| ![chart-gauges](img/icons/chart-gauges.svg.png) | `chart-gauges` | -| ![chart-histogram](img/icons/chart-histogram.svg.png) | `chart-histogram` | -| ![chart-line](img/icons/chart-line.svg.png) | `chart-line` | -| ![chart-line-graph](img/icons/chart-line-graph.svg.png) | `chart-line-graph` | -| ![check-circle](img/icons/check-circle.svg.png) | `check-circle` | -| ![chevron-down-circle](img/icons/chevron-down-circle.svg.png) | `chevron-down-circle` | -| ![chevron-left-circle](img/icons/chevron-left-circle.svg.png) | `chevron-left-circle` | -| ![chevron-right-circle](img/icons/chevron-right-circle.svg.png) | `chevron-right-circle` | -| ![chevron-up-circle](img/icons/chevron-up-circle.svg.png) | `chevron-up-circle` | -| ![clipboard-check](img/icons/clipboard-check.svg.png) | `clipboard-check` | -| ![clipboard-list](img/icons/clipboard-list.svg.png) | `clipboard-list` | -| ![clock](img/icons/clock.svg.png) | `clock` | -| ![clock-play](img/icons/clock-play.svg.png) | `clock-play` | -| ![cloud](img/icons/cloud.svg.png) | `cloud` | -| ![cloud-carbon](img/icons/cloud-carbon.svg.png) | `cloud-carbon` | -| ![cloud-check](img/icons/cloud-check.svg.png) | `cloud-check` | -| ![cloud-discard](img/icons/cloud-discard.svg.png) | `cloud-discard` | -| ![cloud-download](img/icons/cloud-download.svg.png) | `cloud-download` | -| ![cloud-error](img/icons/cloud-error.svg.png) | `cloud-error` | -| ![cloud-synch](img/icons/cloud-synch.svg.png) | `cloud-synch` | -| ![collaboration](img/icons/collaboration.svg.png) | `collaboration` | -| ![collection](img/icons/collection.svg.png) | `collection` | -| ![collection-products](img/icons/collection-products.svg.png) | `collection-products` | -| ![column-one](img/icons/column-one.svg.png) | `column-one` | -| ![column-two](img/icons/column-two.svg.png) | `column-two` | -| ![company](img/icons/company.svg.png) | `company` | -| ![connection](img/icons/connection.svg.png) | `connection` | -| ![connection-erp](img/icons/connection-erp.svg.png) | `connection-erp` | -| ![content-tree](img/icons/content-tree.svg.png) | `content-tree` | -| ![content-tree-arrow-up](img/icons/content-tree-arrow-up.svg.png) | `content-tree-arrow-up` | -| ![content-tree-copy](img/icons/content-tree-copy.svg.png) | `content-tree-copy` | -| ![content-tree-create-location](img/icons/content-tree-create-location.svg.png) | `content-tree-create-location` | -| ![content-tree-restore-parent](img/icons/content-tree-restore-parent.svg.png) | `content-tree-restore-parent` | -| ![content-tree-site-structure](img/icons/content-tree-site-structure.svg.png) | `content-tree-site-structure` | -| ![copy](img/icons/copy.svg.png) | `copy` | -| ![copyright](img/icons/copyright.svg.png) | `copyright` | -| ![core](img/icons/core.svg.png) | `core` | -| ![credit-card](img/icons/credit-card.svg.png) | `credit-card` | -| ![credit-card-hourglass](img/icons/credit-card-hourglass.svg.png) | `credit-card-hourglass` | -| ![credit-card-payment](img/icons/credit-card-payment.svg.png) | `credit-card-payment` | -| ![crop](img/icons/crop.svg.png) | `crop` | -| ![cursor](img/icons/cursor.svg.png) | `cursor` | -| ![cursor-clicked](img/icons/cursor-clicked.svg.png) | `cursor-clicked` | -| ![cursor-clicked-hand](img/icons/cursor-clicked-hand.svg.png) | `cursor-clicked-hand` | -| ![cursor-hand](img/icons/cursor-hand.svg.png) | `cursor-hand` | -| ![cursor-hand-click](img/icons/cursor-hand-click.svg.png) | `cursor-hand-click` | -| ![cursor-hand-grab](img/icons/cursor-hand-grab.svg.png) | `cursor-hand-grab` | -| ![cursor-hand-pointer](img/icons/cursor-hand-pointer.svg.png) | `cursor-hand-pointer` | -| ![cursor-hand-swipe](img/icons/cursor-hand-swipe.svg.png) | `cursor-hand-swipe` | -| ![dashboard](img/icons/dashboard.svg.png) | `dashboard` | -| ![dashboard-type](img/icons/dashboard-type.svg.png) | `dashboard-type` | -| ![database](img/icons/database.svg.png) | `database` | -| ![database-settings](img/icons/database-settings.svg.png) | `database-settings` | -| ![database-share](img/icons/database-share.svg.png) | `database-share` | -| ![database-synch](img/icons/database-synch.svg.png) | `database-synch` | -| ![deactivate](img/icons/deactivate.svg.png) | `deactivate` | -| ![device-desktop-all-in-one](img/icons/device-desktop-all-in-one.svg.png) | `device-desktop-all-in-one` | -| ![device-laptop](img/icons/device-laptop.svg.png) | `device-laptop` | -| ![device-mobile](img/icons/device-mobile.svg.png) | `device-mobile` | -| ![device-monitor](img/icons/device-monitor.svg.png) | `device-monitor` | -| ![device-monitor-card](img/icons/device-monitor-card.svg.png) | `device-monitor-card` | -| ![device-monitor-check](img/icons/device-monitor-check.svg.png) | `device-monitor-check` | -| ![device-monitor-package](img/icons/device-monitor-package.svg.png) | `device-monitor-package` | -| ![device-monitor-settings](img/icons/device-monitor-settings.svg.png) | `device-monitor-settings` | -| ![device-monitor-type](img/icons/device-monitor-type.svg.png) | `device-monitor-type` | -| ![device-monitor-user](img/icons/device-monitor-user.svg.png) | `device-monitor-user` | -| ![device-tablet](img/icons/device-tablet.svg.png) | `device-tablet` | -| ![discard](img/icons/discard.svg.png) | `discard` | -| ![discard-circle](img/icons/discard-circle.svg.png) | `discard-circle` | -| ![discount](img/icons/discount.svg.png) | `discount` | -| ![discount-ticket](img/icons/discount-ticket.svg.png) | `discount-ticket` | -| ![download](img/icons/download.svg.png) | `download` | -| ![draft](img/icons/draft.svg.png) | `draft` | -| ![drag](img/icons/drag.svg.png) | `drag` | -| ![drag-and-drop](img/icons/drag-and-drop.svg.png) | `drag-and-drop` | -| ![duplicate](img/icons/duplicate.svg.png) | `duplicate` | -| ![edit](img/icons/edit.svg.png) | `edit` | -| ![edit-draft](img/icons/edit-draft.svg.png) | `edit-draft` | -| ![edit-draft-clock](img/icons/edit-draft-clock.svg.png) | `edit-draft-clock` | -| ![exclamation-mark](img/icons/exclamation-mark.svg.png) | `exclamation-mark` | -| ![facebook](img/icons/facebook.svg.png) | `facebook` | -| ![factbox](img/icons/factbox.svg.png) | `factbox` | -| ![favourite-filled](img/icons/favourite-filled.svg.png) | `favourite-filled` | -| ![favourite-outline](img/icons/favourite-outline.svg.png) | `favourite-outline` | -| ![feather](img/icons/feather.svg.png) | `feather` | -| ![file](img/icons/file.svg.png) | `file` | -| ![file-add](img/icons/file-add.svg.png) | `file-add` | -| ![file-arrow-up](img/icons/file-arrow-up.svg.png) | `file-arrow-up` | -| ![file-badge-certificate](img/icons/file-badge-certificate.svg.png) | `file-badge-certificate` | -| ![file-code](img/icons/file-code.svg.png) | `file-code` | -| ![file-copyright](img/icons/file-copyright.svg.png) | `file-copyright` | -| ![file-css](img/icons/file-css.svg.png) | `file-css` | -| ![file-edit](img/icons/file-edit.svg.png) | `file-edit` | -| ![file-history](img/icons/file-history.svg.png) | `file-history` | -| ![file-info](img/icons/file-info.svg.png) | `file-info` | -| ![file-js](img/icons/file-js.svg.png) | `file-js` | -| ![file-link](img/icons/file-link.svg.png) | `file-link` | -| ![file-pdf](img/icons/file-pdf.svg.png) | `file-pdf` | -| ![file-php](img/icons/file-php.svg.png) | `file-php` | -| ![file-settings](img/icons/file-settings.svg.png) | `file-settings` | -| ![file-statistics](img/icons/file-statistics.svg.png) | `file-statistics` | -| ![file-text](img/icons/file-text.svg.png) | `file-text` | -| ![file-text-edit](img/icons/file-text-edit.svg.png) | `file-text-edit` | -| ![file-text-money](img/icons/file-text-money.svg.png) | `file-text-money` | -| ![file-text-other](img/icons/file-text-other.svg.png) | `file-text-other` | -| ![file-text-question-mark](img/icons/file-text-question-mark.svg.png) | `file-text-question-mark` | -| ![file-text-search](img/icons/file-text-search.svg.png) | `file-text-search` | -| ![file-text-write](img/icons/file-text-write.svg.png) | `file-text-write` | -| ![file-type](img/icons/file-type.svg.png) | `file-type` | -| ![file-warning](img/icons/file-warning.svg.png) | `file-warning` | -| ![filters](img/icons/filters.svg.png) | `filters` | -| ![filters-funnel](img/icons/filters-funnel.svg.png) | `filters-funnel` | -| ![flag](img/icons/flag.svg.png) | `flag` | -| ![flip-horizontal](img/icons/flip-horizontal.svg.png) | `flip-horizontal` | -| ![flip-vertical](img/icons/flip-vertical.svg.png) | `flip-vertical` | -| ![focus-centered](img/icons/focus-centered.svg.png) | `focus-centered` | -| ![focus-target](img/icons/focus-target.svg.png) | `focus-target` | -| ![folder](img/icons/folder.svg.png) | `folder` | -| ![folder-browse](img/icons/folder-browse.svg.png) | `folder-browse` | -| ![folder-open](img/icons/folder-open.svg.png) | `folder-open` | -| ![folder-open-move](img/icons/folder-open-move.svg.png) | `folder-open-move` | -| ![folders](img/icons/folders.svg.png) | `folders` | -| ![forbidden](img/icons/forbidden.svg.png) | `forbidden` | -| ![form-captcha](img/icons/form-captcha.svg.png) | `form-captcha` | -| ![form-check](img/icons/form-check.svg.png) | `form-check` | -| ![form-check-list](img/icons/form-check-list.svg.png) | `form-check-list` | -| ![form-check-square](img/icons/form-check-square.svg.png) | `form-check-square` | -| ![form-checkbox](img/icons/form-checkbox.svg.png) | `form-checkbox` | -| ![form-data](img/icons/form-data.svg.png) | `form-data` | -| ![form-dropdown](img/icons/form-dropdown.svg.png) | `form-dropdown` | -| ![form-input](img/icons/form-input.svg.png) | `form-input` | -| ![form-input-check](img/icons/form-input-check.svg.png) | `form-input-check` | -| ![form-input-hidden](img/icons/form-input-hidden.svg.png) | `form-input-hidden` | -| ![form-input-multi-line](img/icons/form-input-multi-line.svg.png) | `form-input-multi-line` | -| ![form-input-number](img/icons/form-input-number.svg.png) | `form-input-number` | -| ![form-input-rename](img/icons/form-input-rename.svg.png) | `form-input-rename` | -| ![form-input-single-line](img/icons/form-input-single-line.svg.png) | `form-input-single-line` | -| ![form-input-visible](img/icons/form-input-visible.svg.png) | `form-input-visible` | -| ![form-radio](img/icons/form-radio.svg.png) | `form-radio` | -| ![form-radio-list](img/icons/form-radio-list.svg.png) | `form-radio-list` | -| ![handshake](img/icons/handshake.svg.png) | `handshake` | -| ![hash](img/icons/hash.svg.png) | `hash` | -| ![header-1](img/icons/header-1.svg.png) | `header-1` | -| ![header-2](img/icons/header-2.svg.png) | `header-2` | -| ![header-3](img/icons/header-3.svg.png) | `header-3` | -| ![header-4](img/icons/header-4.svg.png) | `header-4` | -| ![header-5](img/icons/header-5.svg.png) | `header-5` | -| ![header-6](img/icons/header-6.svg.png) | `header-6` | -| ![headphones-support](img/icons/headphones-support.svg.png) | `headphones-support` | -| ![heart](img/icons/heart.svg.png) | `heart` | -| ![help](img/icons/help.svg.png) | `help` | -| ![hierarchy-circle](img/icons/hierarchy-circle.svg.png) | `hierarchy-circle` | -| ![hierarchy-circle-more](img/icons/hierarchy-circle-more.svg.png) | `hierarchy-circle-more` | -| ![hierarchy-items](img/icons/hierarchy-items.svg.png) | `hierarchy-items` | -| ![hierarchy-schema](img/icons/hierarchy-schema.svg.png) | `hierarchy-schema` | -| ![hierarchy-site-map](img/icons/hierarchy-site-map.svg.png) | `hierarchy-site-map` | -| ![hierarchy-square](img/icons/hierarchy-square.svg.png) | `hierarchy-square` | -| ![hierarchy-square-more](img/icons/hierarchy-square-more.svg.png) | `hierarchy-square-more` | -| ![hierarchy-topology](img/icons/hierarchy-topology.svg.png) | `hierarchy-topology` | -| ![history](img/icons/history.svg.png) | `history` | -| ![home](img/icons/home.svg.png) | `home` | -| ![home-settings](img/icons/home-settings.svg.png) | `home-settings` | -| ![image](img/icons/image.svg.png) | `image` | -| ![image-edit](img/icons/image-edit.svg.png) | `image-edit` | -| ![image-focus](img/icons/image-focus.svg.png) | `image-focus` | -| ![image-gallery](img/icons/image-gallery.svg.png) | `image-gallery` | -| ![image-insert](img/icons/image-insert.svg.png) | `image-insert` | -| ![image-upload](img/icons/image-upload.svg.png) | `image-upload` | -| ![info-circle](img/icons/info-circle.svg.png) | `info-circle` | -| ![info-rounded](img/icons/info-rounded.svg.png) | `info-rounded` | -| ![info-square](img/icons/info-square.svg.png) | `info-square` | -| ![layout](img/icons/layout.svg.png) | `layout` | -| ![layout-navbar](img/icons/layout-navbar.svg.png) | `layout-navbar` | -| ![layout-navbar-add](img/icons/layout-navbar-add.svg.png) | `layout-navbar-add` | -| ![layout-navbar-preview](img/icons/layout-navbar-preview.svg.png) | `layout-navbar-preview` | -| ![layout-navbar-visible](img/icons/layout-navbar-visible.svg.png) | `layout-navbar-visible` | -| ![layout-switch](img/icons/layout-switch.svg.png) | `layout-switch` | -| ![lift](img/icons/lift.svg.png) | `lift` | -| ![lightning](img/icons/lightning.svg.png) | `lightning` | -| ![like](img/icons/like.svg.png) | `like` | -| ![like-shine](img/icons/like-shine.svg.png) | `like-shine` | -| ![line-vertical](img/icons/line-vertical.svg.png) | `line-vertical` | -| ![link](img/icons/link.svg.png) | `link` | -| ![link-anchor](img/icons/link-anchor.svg.png) | `link-anchor` | -| ![list-bullet](img/icons/list-bullet.svg.png) | `list-bullet` | -| ![list-content](img/icons/list-content.svg.png) | `list-content` | -| ![list-number](img/icons/list-number.svg.png) | `list-number` | -| ![list-tasks](img/icons/list-tasks.svg.png) | `list-tasks` | -| ![lock](img/icons/lock.svg.png) | `lock` | -| ![lock-focus](img/icons/lock-focus.svg.png) | `lock-focus` | -| ![lock-rounded](img/icons/lock-rounded.svg.png) | `lock-rounded` | -| ![log-in](img/icons/log-in.svg.png) | `log-in` | -| ![log-out](img/icons/log-out.svg.png) | `log-out` | -| ![magnet](img/icons/magnet.svg.png) | `magnet` | -| ![measure-ruler-bent](img/icons/measure-ruler-bent.svg.png) | `measure-ruler-bent` | -| ![measure-ruler-straight](img/icons/measure-ruler-straight.svg.png) | `measure-ruler-straight` | -| ![media-type](img/icons/media-type.svg.png) | `media-type` | -| ![menu-hamburger](img/icons/menu-hamburger.svg.png) | `menu-hamburger` | -| ![menu-hamburger-aligned](img/icons/menu-hamburger-aligned.svg.png) | `menu-hamburger-aligned` | -| ![merge](img/icons/merge.svg.png) | `merge` | -| ![message](img/icons/message.svg.png) | `message` | -| ![message-blog-post](img/icons/message-blog-post.svg.png) | `message-blog-post` | -| ![message-bubble](img/icons/message-bubble.svg.png) | `message-bubble` | -| ![message-bubble-dots](img/icons/message-bubble-dots.svg.png) | `message-bubble-dots` | -| ![message-bubble-edit](img/icons/message-bubble-edit.svg.png) | `message-bubble-edit` | -| ![message-bubble-info](img/icons/message-bubble-info.svg.png) | `message-bubble-info` | -| ![message-bubble-quote](img/icons/message-bubble-quote.svg.png) | `message-bubble-quote` | -| ![message-edit](img/icons/message-edit.svg.png) | `message-edit` | -| ![message-email](img/icons/message-email.svg.png) | `message-email` | -| ![message-email-read](img/icons/message-email-read.svg.png) | `message-email-read` | -| ![message-empty](img/icons/message-empty.svg.png) | `message-empty` | -| ![message-exchange](img/icons/message-exchange.svg.png) | `message-exchange` | -| ![message-text](img/icons/message-text.svg.png) | `message-text` | -| ![microphone](img/icons/microphone.svg.png) | `microphone` | -| ![minus](img/icons/minus.svg.png) | `minus` | -| ![minus-circle](img/icons/minus-circle.svg.png) | `minus-circle` | -| ![money-bag](img/icons/money-bag.svg.png) | `money-bag` | -| ![money-bills](img/icons/money-bills.svg.png) | `money-bills` | -| ![money-coin](img/icons/money-coin.svg.png) | `money-coin` | -| ![money-coins](img/icons/money-coins.svg.png) | `money-coins` | -| ![mood-happy-face](img/icons/mood-happy-face.svg.png) | `mood-happy-face` | -| ![mood-sad-face](img/icons/mood-sad-face.svg.png) | `mood-sad-face` | -| ![more](img/icons/more.svg.png) | `more` | -| ![mountain](img/icons/mountain.svg.png) | `mountain` | -| ![news](img/icons/news.svg.png) | `news` | -| ![note](img/icons/note.svg.png) | `note` | -| ![note-blog](img/icons/note-blog.svg.png) | `note-blog` | -| ![note-check](img/icons/note-check.svg.png) | `note-check` | -| ![note-text](img/icons/note-text.svg.png) | `note-text` | -| ![notebook](img/icons/notebook.svg.png) | `notebook` | -| ![notebook-text](img/icons/notebook-text.svg.png) | `notebook-text` | -| ![notes-list](img/icons/notes-list.svg.png) | `notes-list` | -| ![official-building](img/icons/official-building.svg.png) | `official-building` | -| ![open-new-window](img/icons/open-new-window.svg.png) | `open-new-window` | -| ![open-same-window](img/icons/open-same-window.svg.png) | `open-same-window` | -| ![overdue](img/icons/overdue.svg.png) | `overdue` | -| ![path-route](img/icons/path-route.svg.png) | `path-route` | -| ![path-two-directions](img/icons/path-two-directions.svg.png) | `path-two-directions` | -| ![pause](img/icons/pause.svg.png) | `pause` | -| ![pen-write](img/icons/pen-write.svg.png) | `pen-write` | -| ![phone](img/icons/phone.svg.png) | `phone` | -| ![pin](img/icons/pin.svg.png) | `pin` | -| ![pin-location](img/icons/pin-location.svg.png) | `pin-location` | -| ![pin-location-money](img/icons/pin-location-money.svg.png) | `pin-location-money` | -| ![pin-location-question-mark](img/icons/pin-location-question-mark.svg.png) | `pin-location-question-mark` | -| ![pins-locations](img/icons/pins-locations.svg.png) | `pins-locations` | -| ![plane](img/icons/plane.svg.png) | `plane` | -| ![price](img/icons/price.svg.png) | `price` | -| ![product](img/icons/product.svg.png) | `product` | -| ![product-arrow-down](img/icons/product-arrow-down.svg.png) | `product-arrow-down` | -| ![product-catalog](img/icons/product-catalog.svg.png) | `product-catalog` | -| ![product-catalog-number](img/icons/product-catalog-number.svg.png) | `product-catalog-number` | -| ![product-check](img/icons/product-check.svg.png) | `product-check` | -| ![product-clock](img/icons/product-clock.svg.png) | `product-clock` | -| ![product-collection](img/icons/product-collection.svg.png) | `product-collection` | -| ![product-discard](img/icons/product-discard.svg.png) | `product-discard` | -| ![product-search](img/icons/product-search.svg.png) | `product-search` | -| ![product-settings](img/icons/product-settings.svg.png) | `product-settings` | -| ![product-tag](img/icons/product-tag.svg.png) | `product-tag` | -| ![product-variant](img/icons/product-variant.svg.png) | `product-variant` | -| ![prompt](img/icons/prompt.svg.png) | `prompt` | -| ![qa-admin](img/icons/qa-admin.svg.png) | `qa-admin` | -| ![qa-catalog](img/icons/qa-catalog.svg.png) | `qa-catalog` | -| ![qa-click](img/icons/qa-click.svg.png) | `qa-click` | -| ![qa-clipboard](img/icons/qa-clipboard.svg.png) | `qa-clipboard` | -| ![qa-cloud](img/icons/qa-cloud.svg.png) | `qa-cloud` | -| ![qa-company](img/icons/qa-company.svg.png) | `qa-company` | -| ![qa-editor](img/icons/qa-editor.svg.png) | `qa-editor` | -| ![qa-file](img/icons/qa-file.svg.png) | `qa-file` | -| ![qa-form-check](img/icons/qa-form-check.svg.png) | `qa-form-check` | -| ![qa-info](img/icons/qa-info.svg.png) | `qa-info` | -| ![qa-product](img/icons/qa-product.svg.png) | `qa-product` | -| ![qa-store](img/icons/qa-store.svg.png) | `qa-store` | -| ![quote](img/icons/quote.svg.png) | `quote` | -| ![receipt](img/icons/receipt.svg.png) | `receipt` | -| ![receipt-check](img/icons/receipt-check.svg.png) | `receipt-check` | -| ![receipt-clock](img/icons/receipt-clock.svg.png) | `receipt-clock` | -| ![receipt-number](img/icons/receipt-number.svg.png) | `receipt-number` | -| ![receipt-settings](img/icons/receipt-settings.svg.png) | `receipt-settings` | -| ![reveal](img/icons/reveal.svg.png) | `reveal` | -| ![robot](img/icons/robot.svg.png) | `robot` | -| ![rocket](img/icons/rocket.svg.png) | `rocket` | -| ![sales-revenue](img/icons/sales-revenue.svg.png) | `sales-revenue` | -| ![save](img/icons/save.svg.png) | `save` | -| ![save-exit](img/icons/save-exit.svg.png) | `save-exit` | -| ![search](img/icons/search.svg.png) | `search` | -| ![seen-this](img/icons/seen-this.svg.png) | `seen-this` | -| ![segments](img/icons/segments.svg.png) | `segments` | -| ![send](img/icons/send.svg.png) | `send` | -| ![send-review](img/icons/send-review.svg.png) | `send-review` | -| ![server](img/icons/server.svg.png) | `server` | -| ![settings](img/icons/settings.svg.png) | `settings` | -| ![settings-cog](img/icons/settings-cog.svg.png) | `settings-cog` | -| ![settings-configure](img/icons/settings-configure.svg.png) | `settings-configure` | -| ![share](img/icons/share.svg.png) | `share` | -| ![shield](img/icons/shield.svg.png) | `shield` | -| ![shipment](img/icons/shipment.svg.png) | `shipment` | -| ![shipment-arrow](img/icons/shipment-arrow.svg.png) | `shipment-arrow` | -| ![shipment-free](img/icons/shipment-free.svg.png) | `shipment-free` | -| ![shop](img/icons/shop.svg.png) | `shop` | -| ![shopping-basket](img/icons/shopping-basket.svg.png) | `shopping-basket` | -| ![shopping-cart](img/icons/shopping-cart.svg.png) | `shopping-cart` | -| ![shopping-cart-add](img/icons/shopping-cart-add.svg.png) | `shopping-cart-add` | -| ![shopping-cart-arrow-up](img/icons/shopping-cart-arrow-up.svg.png) | `shopping-cart-arrow-up` | -| ![shopping-cart-heart](img/icons/shopping-cart-heart.svg.png) | `shopping-cart-heart` | -| ![shopping-cart-settings](img/icons/shopping-cart-settings.svg.png) | `shopping-cart-settings` | -| ![shopping-cart-star](img/icons/shopping-cart-star.svg.png) | `shopping-cart-star` | -| ![signal-radio](img/icons/signal-radio.svg.png) | `signal-radio` | -| ![signal-rss](img/icons/signal-rss.svg.png) | `signal-rss` | -| ![signal-wifi](img/icons/signal-wifi.svg.png) | `signal-wifi` | -| ![site](img/icons/site.svg.png) | `site` | -| ![sites](img/icons/sites.svg.png) | `sites` | -| ![slider](img/icons/slider.svg.png) | `slider` | -| ![speaker](img/icons/speaker.svg.png) | `speaker` | -| ![square](img/icons/square.svg.png) | `square` | -| ![square-selection](img/icons/square-selection.svg.png) | `square-selection` | -| ![stack-overflow](img/icons/stack-overflow.svg.png) | `stack-overflow` | -| ![star-badge](img/icons/star-badge.svg.png) | `star-badge` | -| ![star-circle](img/icons/star-circle.svg.png) | `star-circle` | -| ![stars](img/icons/stars.svg.png) | `stars` | -| ![suitcase](img/icons/suitcase.svg.png) | `suitcase` | -| ![table-add](img/icons/table-add.svg.png) | `table-add` | -| ![table-cell](img/icons/table-cell.svg.png) | `table-cell` | -| ![table-column](img/icons/table-column.svg.png) | `table-column` | -| ![table-row](img/icons/table-row.svg.png) | `table-row` | -| ![table-settings-column](img/icons/table-settings-column.svg.png) | `table-settings-column` | -| ![tag](img/icons/tag.svg.png) | `tag` | -| ![tag-settings](img/icons/tag-settings.svg.png) | `tag-settings` | -| ![tags](img/icons/tags.svg.png) | `tags` | -| ![target](img/icons/target.svg.png) | `target` | -| ![target-click](img/icons/target-click.svg.png) | `target-click` | -| ![target-dynamic](img/icons/target-dynamic.svg.png) | `target-dynamic` | -| ![target-location](img/icons/target-location.svg.png) | `target-location` | -| ![target-other](img/icons/target-other.svg.png) | `target-other` | -| ![telephone](img/icons/telephone.svg.png) | `telephone` | -| ![text-bold](img/icons/text-bold.svg.png) | `text-bold` | -| ![text-code](img/icons/text-code.svg.png) | `text-code` | -| ![text-embedded](img/icons/text-embedded.svg.png) | `text-embedded` | -| ![text-embedded-inline](img/icons/text-embedded-inline.svg.png) | `text-embedded-inline` | -| ![text-italic](img/icons/text-italic.svg.png) | `text-italic` | -| ![text-paragraph](img/icons/text-paragraph.svg.png) | `text-paragraph` | -| ![text-paragraph-add](img/icons/text-paragraph-add.svg.png) | `text-paragraph-add` | -| ![text-slash](img/icons/text-slash.svg.png) | `text-slash` | -| ![text-strikethrough](img/icons/text-strikethrough.svg.png) | `text-strikethrough` | -| ![text-subscript](img/icons/text-subscript.svg.png) | `text-subscript` | -| ![text-superscript](img/icons/text-superscript.svg.png) | `text-superscript` | -| ![text-underline](img/icons/text-underline.svg.png) | `text-underline` | -| ![timeline](img/icons/timeline.svg.png) | `timeline` | -| ![tool](img/icons/tool.svg.png) | `tool` | -| ![tool-group](img/icons/tool-group.svg.png) | `tool-group` | -| ![tools](img/icons/tools.svg.png) | `tools` | -| ![translation-language](img/icons/translation-language.svg.png) | `translation-language` | -| ![trash](img/icons/trash.svg.png) | `trash` | -| ![trash-discard](img/icons/trash-discard.svg.png) | `trash-discard` | -| ![trash-open](img/icons/trash-open.svg.png) | `trash-open` | -| ![trash-send](img/icons/trash-send.svg.png) | `trash-send` | -| ![twitter](img/icons/twitter.svg.png) | `twitter` | -| ![umbrella](img/icons/umbrella.svg.png) | `umbrella` | -| ![unarchive](img/icons/unarchive.svg.png) | `unarchive` | -| ![unassign-tag](img/icons/unassign-tag.svg.png) | `unassign-tag` | -| ![unlink](img/icons/unlink.svg.png) | `unlink` | -| ![unlock](img/icons/unlock.svg.png) | `unlock` | -| ![unpin](img/icons/unpin.svg.png) | `unpin` | -| ![upload](img/icons/upload.svg.png) | `upload` | -| ![user](img/icons/user.svg.png) | `user` | -| ![user-add](img/icons/user-add.svg.png) | `user-add` | -| ![user-admin](img/icons/user-admin.svg.png) | `user-admin` | -| ![user-block](img/icons/user-block.svg.png) | `user-block` | -| ![user-cart](img/icons/user-cart.svg.png) | `user-cart` | -| ![user-check](img/icons/user-check.svg.png) | `user-check` | -| ![user-customer](img/icons/user-customer.svg.png) | `user-customer` | -| ![user-customer-number](img/icons/user-customer-number.svg.png) | `user-customer-number` | -| ![user-edit](img/icons/user-edit.svg.png) | `user-edit` | -| ![user-editor](img/icons/user-editor.svg.png) | `user-editor` | -| ![user-focus](img/icons/user-focus.svg.png) | `user-focus` | -| ![user-group](img/icons/user-group.svg.png) | `user-group` | -| ![user-group-customer](img/icons/user-group-customer.svg.png) | `user-group-customer` | -| ![user-id](img/icons/user-id.svg.png) | `user-id` | -| ![user-mail](img/icons/user-mail.svg.png) | `user-mail` | -| ![user-money](img/icons/user-money.svg.png) | `user-money` | -| ![user-profile](img/icons/user-profile.svg.png) | `user-profile` | -| ![user-target](img/icons/user-target.svg.png) | `user-target` | -| ![user-type](img/icons/user-type.svg.png) | `user-type` | -| ![users-add](img/icons/users-add.svg.png) | `users-add` | -| ![variation-1-1](img/icons/variation-1-1.svg.png) | `variation-1-1` | -| ![variation-16-9](img/icons/variation-16-9.svg.png) | `variation-16-9` | -| ![variation-3-2](img/icons/variation-3-2.svg.png) | `variation-3-2` | -| ![variation-4-3](img/icons/variation-4-3.svg.png) | `variation-4-3` | -| ![variation-custom](img/icons/variation-custom.svg.png) | `variation-custom` | -| ![video](img/icons/video.svg.png) | `video` | -| ![video-play](img/icons/video-play.svg.png) | `video-play` | -| ![view-custom](img/icons/view-custom.svg.png) | `view-custom` | -| ![view-grid](img/icons/view-grid.svg.png) | `view-grid` | -| ![view-list](img/icons/view-list.svg.png) | `view-list` | -| ![view-panels](img/icons/view-panels.svg.png) | `view-panels` | -| ![vinyl](img/icons/vinyl.svg.png) | `vinyl` | -| ![visibility](img/icons/visibility.svg.png) | `visibility` | -| ![visibility-hidden](img/icons/visibility-hidden.svg.png) | `visibility-hidden` | -| ![wand](img/icons/wand.svg.png) | `wand` | -| ![workflow](img/icons/workflow.svg.png) | `workflow` | -| ![world](img/icons/world.svg.png) | `world` | -| ![world-add](img/icons/world-add.svg.png) | `world-add` | -| ![world-cursor](img/icons/world-cursor.svg.png) | `world-cursor` | -| ![world-settings](img/icons/world-settings.svg.png) | `world-settings` | -| ![x](img/icons/x.svg.png) | `x` | -| ![zoom-in](img/icons/zoom-in.svg.png) | `zoom-in` | -| ![zoom-out](img/icons/zoom-out.svg.png) | `zoom-out` | - -## `ibexa_content_type_icon()` - -`ibexa_content_type_icon()` generates a path to a content type icon. - -| Argument | Type | Description | -|----------------|----------|--------------------------| -| `content_type` | `string` | Content type identifier. | - -See [Customize content type icons](custom_icons.md#customize-content-type-icons) to associate icons to content types. diff --git a/docs/templating/twig_function_reference/image_twig_functions.md b/docs/templating/twig_function_reference/image_twig_functions.md deleted file mode 100644 index 97e27a63f35..00000000000 --- a/docs/templating/twig_function_reference/image_twig_functions.md +++ /dev/null @@ -1,68 +0,0 @@ ---- -description: Image Twig functions enable rendering images in a specific variation. -page_type: reference ---- - -# Image Twig functions - -- [`ibexa_image_alias`](#ibexa_image_alias) returns the selected variation of an image field. -- [`ibexa_content_field_identifier_first_filled_image`](#ibexa_content_field_identifier_first_filled_image) returns the identifier of the first image field in a content item that isn't empty. - -## Image rendering - -To render images, use the [`ibexa_render_field()`](field_twig_functions.md#ibexa_render_field) Twig function with the variation name passed as an argument, for example: - -``` html+twig -[[= include_code('code_samples/templates/field_twig_functions/render_content.html.twig', 3, 9, remove_indent=True) =]] -``` - -## Image information - -### `ibexa_image_alias()` - -`ibexa_image_alias()` returns the selected variation of an image field. - -| Argument | Type | Description | -|-----|-----|-----| -| `field` | `Ibexa\Contracts\Core\Repository\Values\Content\Field` | The image field. | -| `versionInfo` | `Ibexa\Contracts\Core\Repository\Values\Content\VersionInfo` | The VersionInfo that the field belongs to. | -| `variantName` | `string` | Name of the image variation to be used. To display the original image variation, use `original` as the variation name. | - -``` html+twig -{% set thumbnail = ibexa_image_alias(imageField, content.versionInfo, 'small') %} -``` - -!!! tip - - You can access the name of a variation from the variation object with `variation.name`. - You can, for example, use it as parameter in the [`ibexa_render_field()`](field_twig_functions.md#ibexa_render_field) Twig function. - -### `ibexa_content_field_identifier_first_filled_image()` - -`ibexa_content_field_identifier_first_filled_image()` returns the identifier of the first image field that isn't empty. - -!!! caution - - This function works only for [Image](imagefield.md) fields. - It doesn't work for [ImageAsset](imageassetfield.md) fields. - -| Argument | Type | Description | -| ------ |----- | ----- | -| `content` | [`Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html) or [`ContentAwareInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-ContentAwareInterface.html) | Content item to display the image for. | - -``` html+twig -{% set firstImage = ibexa_content_field_identifier_first_filled_image(content) %} -``` - -``` html+twig -{% set firstImage = ibexa_content_field_identifier_first_filled_image(product) %} -``` - -#### Examples - -You can use `ibexa_content_field_identifier_first_filled_image()` to find and render the first existing image in an article: - -``` html+twig -{% set firstImage = ibexa_content_field_identifier_first_filled_image(content) %} -{{ ibexa_render_field(content, firstImage) }} -``` diff --git a/docs/templating/twig_function_reference/img/icons/accessibility.svg.png b/docs/templating/twig_function_reference/img/icons/accessibility.svg.png deleted file mode 100644 index 9e91ded05a4..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/accessibility.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/action-compare-versions.svg.png b/docs/templating/twig_function_reference/img/icons/action-compare-versions.svg.png deleted file mode 100644 index d6a3d0b6b70..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/action-compare-versions.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/action-compare.svg.png b/docs/templating/twig_function_reference/img/icons/action-compare.svg.png deleted file mode 100644 index 3b8ac8c464b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/action-compare.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/action-redo.svg.png b/docs/templating/twig_function_reference/img/icons/action-redo.svg.png deleted file mode 100644 index ce3b2cb0486..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/action-redo.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/action-undo.svg.png b/docs/templating/twig_function_reference/img/icons/action-undo.svg.png deleted file mode 100644 index 8a38723ef27..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/action-undo.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/activate.svg.png b/docs/templating/twig_function_reference/img/icons/activate.svg.png deleted file mode 100644 index 2da53cb9468..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/activate.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/activity-clock.svg.png b/docs/templating/twig_function_reference/img/icons/activity-clock.svg.png deleted file mode 100644 index 7651573eb39..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/activity-clock.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/add-circle.svg.png b/docs/templating/twig_function_reference/img/icons/add-circle.svg.png deleted file mode 100644 index bcf8212c1fa..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/add-circle.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/add.svg.png b/docs/templating/twig_function_reference/img/icons/add.svg.png deleted file mode 100644 index 88ff204ac4a..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/add.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/ai.svg.png b/docs/templating/twig_function_reference/img/icons/ai.svg.png deleted file mode 100644 index 9e2a202feb2..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/ai.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/alert-error.svg.png b/docs/templating/twig_function_reference/img/icons/alert-error.svg.png deleted file mode 100644 index f685738265b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/alert-error.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/alert-warning.svg.png b/docs/templating/twig_function_reference/img/icons/alert-warning.svg.png deleted file mode 100644 index 1dd26810519..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/alert-warning.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/align-block-center.svg.png b/docs/templating/twig_function_reference/img/icons/align-block-center.svg.png deleted file mode 100644 index 5f9c76ec9d1..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/align-block-center.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/align-block-left.svg.png b/docs/templating/twig_function_reference/img/icons/align-block-left.svg.png deleted file mode 100644 index 2d0acd68ca1..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/align-block-left.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/align-block-right.svg.png b/docs/templating/twig_function_reference/img/icons/align-block-right.svg.png deleted file mode 100644 index 358a135ab2a..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/align-block-right.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/align-text-center.svg.png b/docs/templating/twig_function_reference/img/icons/align-text-center.svg.png deleted file mode 100644 index 4eaf199f2a1..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/align-text-center.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/align-text-justified.svg.png b/docs/templating/twig_function_reference/img/icons/align-text-justified.svg.png deleted file mode 100644 index b8df4b85c95..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/align-text-justified.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/align-text-left.svg.png b/docs/templating/twig_function_reference/img/icons/align-text-left.svg.png deleted file mode 100644 index 4d55504bbb6..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/align-text-left.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/align-text-right.svg.png b/docs/templating/twig_function_reference/img/icons/align-text-right.svg.png deleted file mode 100644 index 1aa9ad6ef23..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/align-text-right.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/app-blog.svg.png b/docs/templating/twig_function_reference/img/icons/app-blog.svg.png deleted file mode 100644 index 7f4f75d6605..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/app-blog.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/app-drawer.svg.png b/docs/templating/twig_function_reference/img/icons/app-drawer.svg.png deleted file mode 100644 index 98bfa3eb348..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/app-drawer.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/app-edit.svg.png b/docs/templating/twig_function_reference/img/icons/app-edit.svg.png deleted file mode 100644 index 13439b16e68..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/app-edit.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/app-money.svg.png b/docs/templating/twig_function_reference/img/icons/app-money.svg.png deleted file mode 100644 index fcb05656866..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/app-money.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/app-preview.svg.png b/docs/templating/twig_function_reference/img/icons/app-preview.svg.png deleted file mode 100644 index 58779853775..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/app-preview.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/app-recent.svg.png b/docs/templating/twig_function_reference/img/icons/app-recent.svg.png deleted file mode 100644 index a632a202ee2..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/app-recent.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/app-settings.svg.png b/docs/templating/twig_function_reference/img/icons/app-settings.svg.png deleted file mode 100644 index 6b1796c4a74..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/app-settings.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/app-user.svg.png b/docs/templating/twig_function_reference/img/icons/app-user.svg.png deleted file mode 100644 index 32c5ed45401..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/app-user.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/app-www.svg.png b/docs/templating/twig_function_reference/img/icons/app-www.svg.png deleted file mode 100644 index b294abdb26e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/app-www.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/app.svg.png b/docs/templating/twig_function_reference/img/icons/app.svg.png deleted file mode 100644 index ccbe129a5ea..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/app.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/archived-restore.svg.png b/docs/templating/twig_function_reference/img/icons/archived-restore.svg.png deleted file mode 100644 index fbb359c92f8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/archived-restore.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/archived-version.svg.png b/docs/templating/twig_function_reference/img/icons/archived-version.svg.png deleted file mode 100644 index 73dd7e5754e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/archived-version.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-caret-down.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-caret-down.svg.png deleted file mode 100644 index 101906259db..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-caret-down.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-caret-left.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-caret-left.svg.png deleted file mode 100644 index aabfa26b3c7..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-caret-left.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-caret-right.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-caret-right.svg.png deleted file mode 100644 index c7f75bd2053..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-caret-right.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-caret-up.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-caret-up.svg.png deleted file mode 100644 index e053ca4e1dc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-caret-up.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-chevron-down.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-chevron-down.svg.png deleted file mode 100644 index 4ace00f728e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-chevron-down.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-chevron-left.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-chevron-left.svg.png deleted file mode 100644 index 004dc7125f8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-chevron-left.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-chevron-right.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-chevron-right.svg.png deleted file mode 100644 index b22031715f1..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-chevron-right.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-chevron-up.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-chevron-up.svg.png deleted file mode 100644 index 259a10b9580..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-chevron-up.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-collapse-expand.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-collapse-expand.svg.png deleted file mode 100644 index 2d877dd36be..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-collapse-expand.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-collapse-left.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-collapse-left.svg.png deleted file mode 100644 index 57a7ee26666..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-collapse-left.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-collapse-right.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-collapse-right.svg.png deleted file mode 100644 index cb0fdd5bde5..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-collapse-right.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-decrease.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-decrease.svg.png deleted file mode 100644 index 2feb7d7c7f7..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-decrease.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-double-left.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-double-left.svg.png deleted file mode 100644 index b188fce9be7..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-double-left.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-double-right.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-double-right.svg.png deleted file mode 100644 index bedf46dc1c1..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-double-right.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-down-text.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-down-text.svg.png deleted file mode 100644 index fbf168c3c9f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-down-text.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-down.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-down.svg.png deleted file mode 100644 index 100b2a17bde..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-down.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-expand-left.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-expand-left.svg.png deleted file mode 100644 index 214bbd65ed6..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-expand-left.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-expand-right.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-expand-right.svg.png deleted file mode 100644 index 06f45949dcb..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-expand-right.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-increase.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-increase.svg.png deleted file mode 100644 index fc56d978510..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-increase.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-left.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-left.svg.png deleted file mode 100644 index 2be6ef84416..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-left.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-move-left.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-move-left.svg.png deleted file mode 100644 index cd4268b6eff..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-move-left.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-move-right.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-move-right.svg.png deleted file mode 100644 index 56fe371f63f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-move-right.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-reload-dot.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-reload-dot.svg.png deleted file mode 100644 index 17e32168698..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-reload-dot.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-restore.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-restore.svg.png deleted file mode 100644 index 699fb215ecd..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-restore.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-right.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-right.svg.png deleted file mode 100644 index 02f8fc430a8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-right.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-rotate.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-rotate.svg.png deleted file mode 100644 index 4e5967b77af..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-rotate.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-to-down-circle.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-to-down-circle.svg.png deleted file mode 100644 index f6c3ecaeeed..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-to-down-circle.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-to-down.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-to-down.svg.png deleted file mode 100644 index 2dd69220382..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-to-down.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-to-left.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-to-left.svg.png deleted file mode 100644 index 0e9e446127e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-to-left.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-to-right.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-to-right.svg.png deleted file mode 100644 index a8eaa6c8484..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-to-right.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-to-up.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-to-up.svg.png deleted file mode 100644 index 93575b99a9a..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-to-up.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-up-text.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-up-text.svg.png deleted file mode 100644 index 80921fe175a..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-up-text.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-up.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-up.svg.png deleted file mode 100644 index 28e980440d7..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-up.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrow-upgrade.svg.png b/docs/templating/twig_function_reference/img/icons/arrow-upgrade.svg.png deleted file mode 100644 index bf3b2b50b6c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrow-upgrade.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrows-chevron-up-and-down.svg.png b/docs/templating/twig_function_reference/img/icons/arrows-chevron-up-and-down.svg.png deleted file mode 100644 index 9d2c194263b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrows-chevron-up-and-down.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrows-circle.svg.png b/docs/templating/twig_function_reference/img/icons/arrows-circle.svg.png deleted file mode 100644 index fd219c44854..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrows-circle.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrows-full-view-out.svg.png b/docs/templating/twig_function_reference/img/icons/arrows-full-view-out.svg.png deleted file mode 100644 index 1fe9f40a114..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrows-full-view-out.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrows-full-view.svg.png b/docs/templating/twig_function_reference/img/icons/arrows-full-view.svg.png deleted file mode 100644 index 15fe5fa3865..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrows-full-view.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrows-inside.svg.png b/docs/templating/twig_function_reference/img/icons/arrows-inside.svg.png deleted file mode 100644 index 3b7ce74ddac..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrows-inside.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrows-outside.svg.png b/docs/templating/twig_function_reference/img/icons/arrows-outside.svg.png deleted file mode 100644 index 09961faf037..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrows-outside.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrows-recycle.svg.png b/docs/templating/twig_function_reference/img/icons/arrows-recycle.svg.png deleted file mode 100644 index 0b8b8bb3fd8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrows-recycle.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrows-reload-user.svg.png b/docs/templating/twig_function_reference/img/icons/arrows-reload-user.svg.png deleted file mode 100644 index a037f6c17b5..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrows-reload-user.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrows-reload.svg.png b/docs/templating/twig_function_reference/img/icons/arrows-reload.svg.png deleted file mode 100644 index e8a9ce94523..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrows-reload.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrows-right-and-left.svg.png b/docs/templating/twig_function_reference/img/icons/arrows-right-and-left.svg.png deleted file mode 100644 index c5dd77957ef..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrows-right-and-left.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrows-round.svg.png b/docs/templating/twig_function_reference/img/icons/arrows-round.svg.png deleted file mode 100644 index d4b0a480cf3..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrows-round.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrows-switch.svg.png b/docs/templating/twig_function_reference/img/icons/arrows-switch.svg.png deleted file mode 100644 index f8e92e6c8dd..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrows-switch.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrows-synchronize.svg.png b/docs/templating/twig_function_reference/img/icons/arrows-synchronize.svg.png deleted file mode 100644 index ddc3a75b0e4..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrows-synchronize.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/arrows-up-and-down.svg.png b/docs/templating/twig_function_reference/img/icons/arrows-up-and-down.svg.png deleted file mode 100644 index 73ef988d02a..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/arrows-up-and-down.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/assign-tag.svg.png b/docs/templating/twig_function_reference/img/icons/assign-tag.svg.png deleted file mode 100644 index aaaa4a9db7d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/assign-tag.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/assign-user.svg.png b/docs/templating/twig_function_reference/img/icons/assign-user.svg.png deleted file mode 100644 index 75cd1f6016e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/assign-user.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/assign.svg.png b/docs/templating/twig_function_reference/img/icons/assign.svg.png deleted file mode 100644 index e893d322413..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/assign.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/automation.svg.png b/docs/templating/twig_function_reference/img/icons/automation.svg.png deleted file mode 100644 index 1ac3a56f762..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/automation.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/badge-certificate-horizontal.svg.png b/docs/templating/twig_function_reference/img/icons/badge-certificate-horizontal.svg.png deleted file mode 100644 index 41be8970934..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/badge-certificate-horizontal.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/badge-certificate-vertical.svg.png b/docs/templating/twig_function_reference/img/icons/badge-certificate-vertical.svg.png deleted file mode 100644 index 400395a80dc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/badge-certificate-vertical.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/badge-star.svg.png b/docs/templating/twig_function_reference/img/icons/badge-star.svg.png deleted file mode 100644 index cec43b7d02a..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/badge-star.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/banner.svg.png b/docs/templating/twig_function_reference/img/icons/banner.svg.png deleted file mode 100644 index 5d57ca416af..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/banner.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/bell.svg.png b/docs/templating/twig_function_reference/img/icons/bell.svg.png deleted file mode 100644 index 51566e2f266..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/bell.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/block-add.svg.png b/docs/templating/twig_function_reference/img/icons/block-add.svg.png deleted file mode 100644 index dab4b2314b9..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/block-add.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/block-hidden.svg.png b/docs/templating/twig_function_reference/img/icons/block-hidden.svg.png deleted file mode 100644 index 635fd1e9ffc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/block-hidden.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/block-lock.svg.png b/docs/templating/twig_function_reference/img/icons/block-lock.svg.png deleted file mode 100644 index ea59028f355..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/block-lock.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/block-visible.svg.png b/docs/templating/twig_function_reference/img/icons/block-visible.svg.png deleted file mode 100644 index f30658f24f6..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/block-visible.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/book-open.svg.png b/docs/templating/twig_function_reference/img/icons/book-open.svg.png deleted file mode 100644 index 690e11dbf78..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/book-open.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/book.svg.png b/docs/templating/twig_function_reference/img/icons/book.svg.png deleted file mode 100644 index 8a0b01eed02..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/book.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/bookmark-filled.svg.png b/docs/templating/twig_function_reference/img/icons/bookmark-filled.svg.png deleted file mode 100644 index 6a0f08b68ff..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/bookmark-filled.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/bookmark-outline.svg.png b/docs/templating/twig_function_reference/img/icons/bookmark-outline.svg.png deleted file mode 100644 index 2ee354e6761..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/bookmark-outline.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/bookmarks.svg.png b/docs/templating/twig_function_reference/img/icons/bookmarks.svg.png deleted file mode 100644 index 3eab79b7e3f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/bookmarks.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/box-component.svg.png b/docs/templating/twig_function_reference/img/icons/box-component.svg.png deleted file mode 100644 index 79775963164..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/box-component.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/bulb-idea.svg.png b/docs/templating/twig_function_reference/img/icons/bulb-idea.svg.png deleted file mode 100644 index c49a5a5d862..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/bulb-idea.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/business-card.svg.png b/docs/templating/twig_function_reference/img/icons/business-card.svg.png deleted file mode 100644 index 56bc4dec20a..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/business-card.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/calculator.svg.png b/docs/templating/twig_function_reference/img/icons/calculator.svg.png deleted file mode 100644 index e68e33dbfd1..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/calculator.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/calendar-add.svg.png b/docs/templating/twig_function_reference/img/icons/calendar-add.svg.png deleted file mode 100644 index 6bc89852e5a..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/calendar-add.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/calendar-back.svg.png b/docs/templating/twig_function_reference/img/icons/calendar-back.svg.png deleted file mode 100644 index f94bfbbcf0c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/calendar-back.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/calendar-block.svg.png b/docs/templating/twig_function_reference/img/icons/calendar-block.svg.png deleted file mode 100644 index 68a00b81e91..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/calendar-block.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/calendar-check.svg.png b/docs/templating/twig_function_reference/img/icons/calendar-check.svg.png deleted file mode 100644 index c52fccea6ce..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/calendar-check.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/calendar-clock.svg.png b/docs/templating/twig_function_reference/img/icons/calendar-clock.svg.png deleted file mode 100644 index 79c343fe8d5..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/calendar-clock.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/calendar-discard.svg.png b/docs/templating/twig_function_reference/img/icons/calendar-discard.svg.png deleted file mode 100644 index 0deeeb3c295..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/calendar-discard.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/calendar-hidden.svg.png b/docs/templating/twig_function_reference/img/icons/calendar-hidden.svg.png deleted file mode 100644 index 20eb404b110..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/calendar-hidden.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/calendar-number.svg.png b/docs/templating/twig_function_reference/img/icons/calendar-number.svg.png deleted file mode 100644 index 091a2059169..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/calendar-number.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/calendar-reload.svg.png b/docs/templating/twig_function_reference/img/icons/calendar-reload.svg.png deleted file mode 100644 index f500c11cca4..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/calendar-reload.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/calendar-schedule.svg.png b/docs/templating/twig_function_reference/img/icons/calendar-schedule.svg.png deleted file mode 100644 index 73d9b015ab6..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/calendar-schedule.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/calendar-visible.svg.png b/docs/templating/twig_function_reference/img/icons/calendar-visible.svg.png deleted file mode 100644 index 68aec53cced..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/calendar-visible.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/calendar.svg.png b/docs/templating/twig_function_reference/img/icons/calendar.svg.png deleted file mode 100644 index b3f5d29a4d2..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/calendar.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/camera.svg.png b/docs/templating/twig_function_reference/img/icons/camera.svg.png deleted file mode 100644 index d8813d71553..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/camera.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/car-truck.svg.png b/docs/templating/twig_function_reference/img/icons/car-truck.svg.png deleted file mode 100644 index 003af7e2892..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/car-truck.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/car.svg.png b/docs/templating/twig_function_reference/img/icons/car.svg.png deleted file mode 100644 index 8a82f081dae..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/car.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/catalog.svg.png b/docs/templating/twig_function_reference/img/icons/catalog.svg.png deleted file mode 100644 index d66e91e37de..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/catalog.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/chart-area-line.svg.png b/docs/templating/twig_function_reference/img/icons/chart-area-line.svg.png deleted file mode 100644 index d411294d4a3..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/chart-area-line.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/chart-area.svg.png b/docs/templating/twig_function_reference/img/icons/chart-area.svg.png deleted file mode 100644 index eeaed397dff..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/chart-area.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/chart-bar.svg.png b/docs/templating/twig_function_reference/img/icons/chart-bar.svg.png deleted file mode 100644 index ab0cdf6c116..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/chart-bar.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/chart-donut-element.svg.png b/docs/templating/twig_function_reference/img/icons/chart-donut-element.svg.png deleted file mode 100644 index c98006a632b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/chart-donut-element.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/chart-donut.svg.png b/docs/templating/twig_function_reference/img/icons/chart-donut.svg.png deleted file mode 100644 index f9992f3de76..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/chart-donut.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/chart-dots-other.svg.png b/docs/templating/twig_function_reference/img/icons/chart-dots-other.svg.png deleted file mode 100644 index d51efb6e839..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/chart-dots-other.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/chart-dots.svg.png b/docs/templating/twig_function_reference/img/icons/chart-dots.svg.png deleted file mode 100644 index d5b8c99c8e0..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/chart-dots.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/chart-gauges.svg.png b/docs/templating/twig_function_reference/img/icons/chart-gauges.svg.png deleted file mode 100644 index 3d78f435234..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/chart-gauges.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/chart-histogram.svg.png b/docs/templating/twig_function_reference/img/icons/chart-histogram.svg.png deleted file mode 100644 index 1e7f0e060bf..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/chart-histogram.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/chart-line-graph.svg.png b/docs/templating/twig_function_reference/img/icons/chart-line-graph.svg.png deleted file mode 100644 index 1befe3f21ac..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/chart-line-graph.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/chart-line.svg.png b/docs/templating/twig_function_reference/img/icons/chart-line.svg.png deleted file mode 100644 index 97988e4f016..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/chart-line.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/check-circle.svg.png b/docs/templating/twig_function_reference/img/icons/check-circle.svg.png deleted file mode 100644 index be7ebab3385..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/check-circle.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/chevron-down-circle.svg.png b/docs/templating/twig_function_reference/img/icons/chevron-down-circle.svg.png deleted file mode 100644 index bc8069f92dc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/chevron-down-circle.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/chevron-left-circle.svg.png b/docs/templating/twig_function_reference/img/icons/chevron-left-circle.svg.png deleted file mode 100644 index d74d70a37d0..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/chevron-left-circle.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/chevron-right-circle.svg.png b/docs/templating/twig_function_reference/img/icons/chevron-right-circle.svg.png deleted file mode 100644 index 0a51a71e4c4..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/chevron-right-circle.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/chevron-up-circle.svg.png b/docs/templating/twig_function_reference/img/icons/chevron-up-circle.svg.png deleted file mode 100644 index 89e7beb89be..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/chevron-up-circle.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/clipboard-check.svg.png b/docs/templating/twig_function_reference/img/icons/clipboard-check.svg.png deleted file mode 100644 index a4bb33dcf3d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/clipboard-check.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/clipboard-list.svg.png b/docs/templating/twig_function_reference/img/icons/clipboard-list.svg.png deleted file mode 100644 index 56955f6669f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/clipboard-list.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/clock-play.svg.png b/docs/templating/twig_function_reference/img/icons/clock-play.svg.png deleted file mode 100644 index 0543137badd..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/clock-play.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/clock.svg.png b/docs/templating/twig_function_reference/img/icons/clock.svg.png deleted file mode 100644 index f9f3cc9aa12..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/clock.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/cloud-carbon.svg.png b/docs/templating/twig_function_reference/img/icons/cloud-carbon.svg.png deleted file mode 100644 index 75188098532..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/cloud-carbon.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/cloud-check.svg.png b/docs/templating/twig_function_reference/img/icons/cloud-check.svg.png deleted file mode 100644 index 1fbbbadedd1..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/cloud-check.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/cloud-discard.svg.png b/docs/templating/twig_function_reference/img/icons/cloud-discard.svg.png deleted file mode 100644 index 36cf60db89d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/cloud-discard.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/cloud-download.svg.png b/docs/templating/twig_function_reference/img/icons/cloud-download.svg.png deleted file mode 100644 index 96bf4cfd2da..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/cloud-download.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/cloud-error.svg.png b/docs/templating/twig_function_reference/img/icons/cloud-error.svg.png deleted file mode 100644 index dc77b60610c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/cloud-error.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/cloud-synch.svg.png b/docs/templating/twig_function_reference/img/icons/cloud-synch.svg.png deleted file mode 100644 index c2571c7d94d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/cloud-synch.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/cloud.svg.png b/docs/templating/twig_function_reference/img/icons/cloud.svg.png deleted file mode 100644 index 9e1bc13dee6..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/cloud.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/collaboration.svg.png b/docs/templating/twig_function_reference/img/icons/collaboration.svg.png deleted file mode 100644 index 9938ca0cc99..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/collaboration.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/collection-products.svg.png b/docs/templating/twig_function_reference/img/icons/collection-products.svg.png deleted file mode 100644 index 2c3dac5152e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/collection-products.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/collection.svg.png b/docs/templating/twig_function_reference/img/icons/collection.svg.png deleted file mode 100644 index e0102ec53dc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/collection.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/column-one.svg.png b/docs/templating/twig_function_reference/img/icons/column-one.svg.png deleted file mode 100644 index 8299d52aa69..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/column-one.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/column-two.svg.png b/docs/templating/twig_function_reference/img/icons/column-two.svg.png deleted file mode 100644 index 7aec27d9d7c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/column-two.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/company.svg.png b/docs/templating/twig_function_reference/img/icons/company.svg.png deleted file mode 100644 index c78ad605100..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/company.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/connection-erp.svg.png b/docs/templating/twig_function_reference/img/icons/connection-erp.svg.png deleted file mode 100644 index ab76447a331..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/connection-erp.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/connection.svg.png b/docs/templating/twig_function_reference/img/icons/connection.svg.png deleted file mode 100644 index 4ff61862114..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/connection.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/content-tree-arrow-up.svg.png b/docs/templating/twig_function_reference/img/icons/content-tree-arrow-up.svg.png deleted file mode 100644 index 7c4eedabafb..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/content-tree-arrow-up.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/content-tree-copy.svg.png b/docs/templating/twig_function_reference/img/icons/content-tree-copy.svg.png deleted file mode 100644 index 907186e509c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/content-tree-copy.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/content-tree-create-location.svg.png b/docs/templating/twig_function_reference/img/icons/content-tree-create-location.svg.png deleted file mode 100644 index 3d07bc30b5a..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/content-tree-create-location.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/content-tree-restore-parent.svg.png b/docs/templating/twig_function_reference/img/icons/content-tree-restore-parent.svg.png deleted file mode 100644 index 49404113962..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/content-tree-restore-parent.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/content-tree-site-structure.svg.png b/docs/templating/twig_function_reference/img/icons/content-tree-site-structure.svg.png deleted file mode 100644 index 10893db35ea..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/content-tree-site-structure.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/content-tree.svg.png b/docs/templating/twig_function_reference/img/icons/content-tree.svg.png deleted file mode 100644 index e4e4fb3e5a8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/content-tree.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/copy.svg.png b/docs/templating/twig_function_reference/img/icons/copy.svg.png deleted file mode 100644 index 043d7cc8db0..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/copy.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/copyright.svg.png b/docs/templating/twig_function_reference/img/icons/copyright.svg.png deleted file mode 100644 index b4e1f1db3da..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/copyright.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/core.svg.png b/docs/templating/twig_function_reference/img/icons/core.svg.png deleted file mode 100644 index 4a778b2934e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/core.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/credit-card-hourglass.svg.png b/docs/templating/twig_function_reference/img/icons/credit-card-hourglass.svg.png deleted file mode 100644 index 92ee3e1e702..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/credit-card-hourglass.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/credit-card-payment.svg.png b/docs/templating/twig_function_reference/img/icons/credit-card-payment.svg.png deleted file mode 100644 index 90eaa35f6ec..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/credit-card-payment.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/credit-card.svg.png b/docs/templating/twig_function_reference/img/icons/credit-card.svg.png deleted file mode 100644 index 0e456f89e59..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/credit-card.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/crop.svg.png b/docs/templating/twig_function_reference/img/icons/crop.svg.png deleted file mode 100644 index 263349d2cf5..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/crop.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/cursor-clicked-hand.svg.png b/docs/templating/twig_function_reference/img/icons/cursor-clicked-hand.svg.png deleted file mode 100644 index 8cbc8debe74..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/cursor-clicked-hand.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/cursor-clicked.svg.png b/docs/templating/twig_function_reference/img/icons/cursor-clicked.svg.png deleted file mode 100644 index 2d4257ee0fc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/cursor-clicked.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/cursor-hand-click.svg.png b/docs/templating/twig_function_reference/img/icons/cursor-hand-click.svg.png deleted file mode 100644 index c445bbae223..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/cursor-hand-click.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/cursor-hand-grab.svg.png b/docs/templating/twig_function_reference/img/icons/cursor-hand-grab.svg.png deleted file mode 100644 index f0d9d4d86f6..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/cursor-hand-grab.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/cursor-hand-pointer.svg.png b/docs/templating/twig_function_reference/img/icons/cursor-hand-pointer.svg.png deleted file mode 100644 index ed5ceae540e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/cursor-hand-pointer.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/cursor-hand-swipe.svg.png b/docs/templating/twig_function_reference/img/icons/cursor-hand-swipe.svg.png deleted file mode 100644 index 403e4032ea3..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/cursor-hand-swipe.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/cursor-hand.svg.png b/docs/templating/twig_function_reference/img/icons/cursor-hand.svg.png deleted file mode 100644 index 41af1a3478f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/cursor-hand.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/cursor.svg.png b/docs/templating/twig_function_reference/img/icons/cursor.svg.png deleted file mode 100644 index 6e988f76312..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/cursor.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/dashboard-type.svg.png b/docs/templating/twig_function_reference/img/icons/dashboard-type.svg.png deleted file mode 100644 index b8ef9f5d241..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/dashboard-type.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/dashboard.svg.png b/docs/templating/twig_function_reference/img/icons/dashboard.svg.png deleted file mode 100644 index 6c4f1c9795d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/dashboard.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/database-settings.svg.png b/docs/templating/twig_function_reference/img/icons/database-settings.svg.png deleted file mode 100644 index 509fe50ee43..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/database-settings.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/database-share.svg.png b/docs/templating/twig_function_reference/img/icons/database-share.svg.png deleted file mode 100644 index 84ead37036e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/database-share.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/database-synch.svg.png b/docs/templating/twig_function_reference/img/icons/database-synch.svg.png deleted file mode 100644 index 90ce1ce6df8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/database-synch.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/database.svg.png b/docs/templating/twig_function_reference/img/icons/database.svg.png deleted file mode 100644 index 57d1ce1bf3b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/database.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/deactivate.svg.png b/docs/templating/twig_function_reference/img/icons/deactivate.svg.png deleted file mode 100644 index 3c8e3c716fc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/deactivate.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/device-desktop-all-in-one.svg.png b/docs/templating/twig_function_reference/img/icons/device-desktop-all-in-one.svg.png deleted file mode 100644 index 64a40e04628..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/device-desktop-all-in-one.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/device-laptop.svg.png b/docs/templating/twig_function_reference/img/icons/device-laptop.svg.png deleted file mode 100644 index 8a365aed9f7..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/device-laptop.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/device-mobile.svg.png b/docs/templating/twig_function_reference/img/icons/device-mobile.svg.png deleted file mode 100644 index 48583b9f6b5..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/device-mobile.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/device-monitor-card.svg.png b/docs/templating/twig_function_reference/img/icons/device-monitor-card.svg.png deleted file mode 100644 index 1056eb73fdc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/device-monitor-card.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/device-monitor-check.svg.png b/docs/templating/twig_function_reference/img/icons/device-monitor-check.svg.png deleted file mode 100644 index c93ec4882be..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/device-monitor-check.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/device-monitor-package.svg.png b/docs/templating/twig_function_reference/img/icons/device-monitor-package.svg.png deleted file mode 100644 index ef88da61343..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/device-monitor-package.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/device-monitor-settings.svg.png b/docs/templating/twig_function_reference/img/icons/device-monitor-settings.svg.png deleted file mode 100644 index 75e37935f05..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/device-monitor-settings.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/device-monitor-type.svg.png b/docs/templating/twig_function_reference/img/icons/device-monitor-type.svg.png deleted file mode 100644 index 195f5d7b628..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/device-monitor-type.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/device-monitor-user.svg.png b/docs/templating/twig_function_reference/img/icons/device-monitor-user.svg.png deleted file mode 100644 index 490e4591789..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/device-monitor-user.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/device-monitor.svg.png b/docs/templating/twig_function_reference/img/icons/device-monitor.svg.png deleted file mode 100644 index 768a79aa424..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/device-monitor.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/device-tablet.svg.png b/docs/templating/twig_function_reference/img/icons/device-tablet.svg.png deleted file mode 100644 index 8cec5b86d82..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/device-tablet.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/discard-circle.svg.png b/docs/templating/twig_function_reference/img/icons/discard-circle.svg.png deleted file mode 100644 index e5b9a136b5e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/discard-circle.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/discard.svg.png b/docs/templating/twig_function_reference/img/icons/discard.svg.png deleted file mode 100644 index 1719d39d037..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/discard.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/discount-ticket.svg.png b/docs/templating/twig_function_reference/img/icons/discount-ticket.svg.png deleted file mode 100644 index afa4ef39016..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/discount-ticket.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/discount.svg.png b/docs/templating/twig_function_reference/img/icons/discount.svg.png deleted file mode 100644 index 7b4cef45d91..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/discount.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/download.svg.png b/docs/templating/twig_function_reference/img/icons/download.svg.png deleted file mode 100644 index 2c8a8cd1d75..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/download.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/draft.svg.png b/docs/templating/twig_function_reference/img/icons/draft.svg.png deleted file mode 100644 index 7c2ca73a6f2..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/draft.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/drag-and-drop.svg.png b/docs/templating/twig_function_reference/img/icons/drag-and-drop.svg.png deleted file mode 100644 index 12bdc5d744d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/drag-and-drop.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/drag.svg.png b/docs/templating/twig_function_reference/img/icons/drag.svg.png deleted file mode 100644 index 924cb052b47..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/drag.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/duplicate.svg.png b/docs/templating/twig_function_reference/img/icons/duplicate.svg.png deleted file mode 100644 index 541e14dfd3f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/duplicate.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/edit-draft-clock.svg.png b/docs/templating/twig_function_reference/img/icons/edit-draft-clock.svg.png deleted file mode 100644 index f1cce847edc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/edit-draft-clock.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/edit-draft.svg.png b/docs/templating/twig_function_reference/img/icons/edit-draft.svg.png deleted file mode 100644 index fe5499f2867..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/edit-draft.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/edit.svg.png b/docs/templating/twig_function_reference/img/icons/edit.svg.png deleted file mode 100644 index f5b0513f0b1..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/edit.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/exclamation-mark.svg.png b/docs/templating/twig_function_reference/img/icons/exclamation-mark.svg.png deleted file mode 100644 index 372af768c6b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/exclamation-mark.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/facebook.svg.png b/docs/templating/twig_function_reference/img/icons/facebook.svg.png deleted file mode 100644 index 578652213df..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/facebook.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/factbox.svg.png b/docs/templating/twig_function_reference/img/icons/factbox.svg.png deleted file mode 100644 index d8c9c852452..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/factbox.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/favourite-filled.svg.png b/docs/templating/twig_function_reference/img/icons/favourite-filled.svg.png deleted file mode 100644 index 540990d2246..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/favourite-filled.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/favourite-outline.svg.png b/docs/templating/twig_function_reference/img/icons/favourite-outline.svg.png deleted file mode 100644 index 2ea2c4110de..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/favourite-outline.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/feather.svg.png b/docs/templating/twig_function_reference/img/icons/feather.svg.png deleted file mode 100644 index fcd10cdc1a4..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/feather.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-add.svg.png b/docs/templating/twig_function_reference/img/icons/file-add.svg.png deleted file mode 100644 index 1d83827789d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-add.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-arrow-up.svg.png b/docs/templating/twig_function_reference/img/icons/file-arrow-up.svg.png deleted file mode 100644 index 16b5f31ede7..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-arrow-up.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-badge-certificate.svg.png b/docs/templating/twig_function_reference/img/icons/file-badge-certificate.svg.png deleted file mode 100644 index 08de92facdc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-badge-certificate.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-code.svg.png b/docs/templating/twig_function_reference/img/icons/file-code.svg.png deleted file mode 100644 index 899c07b3f84..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-code.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-copyright.svg.png b/docs/templating/twig_function_reference/img/icons/file-copyright.svg.png deleted file mode 100644 index aea59aac3a3..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-copyright.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-css.svg.png b/docs/templating/twig_function_reference/img/icons/file-css.svg.png deleted file mode 100644 index 3a24ab7a7a3..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-css.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-edit.svg.png b/docs/templating/twig_function_reference/img/icons/file-edit.svg.png deleted file mode 100644 index 3f9611862a8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-edit.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-history.svg.png b/docs/templating/twig_function_reference/img/icons/file-history.svg.png deleted file mode 100644 index 15af5eb339d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-history.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-info.svg.png b/docs/templating/twig_function_reference/img/icons/file-info.svg.png deleted file mode 100644 index 6e095227a0f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-info.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-js.svg.png b/docs/templating/twig_function_reference/img/icons/file-js.svg.png deleted file mode 100644 index ba781add38c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-js.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-link.svg.png b/docs/templating/twig_function_reference/img/icons/file-link.svg.png deleted file mode 100644 index 6d99c94e453..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-link.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-pdf.svg.png b/docs/templating/twig_function_reference/img/icons/file-pdf.svg.png deleted file mode 100644 index 52c7605e7ee..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-pdf.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-php.svg.png b/docs/templating/twig_function_reference/img/icons/file-php.svg.png deleted file mode 100644 index 23a2eac67b8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-php.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-settings.svg.png b/docs/templating/twig_function_reference/img/icons/file-settings.svg.png deleted file mode 100644 index b1d79ef4077..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-settings.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-statistics.svg.png b/docs/templating/twig_function_reference/img/icons/file-statistics.svg.png deleted file mode 100644 index 92ac99b6ee9..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-statistics.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-text-edit.svg.png b/docs/templating/twig_function_reference/img/icons/file-text-edit.svg.png deleted file mode 100644 index f3206d2771d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-text-edit.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-text-money.svg.png b/docs/templating/twig_function_reference/img/icons/file-text-money.svg.png deleted file mode 100644 index 151e0e92d00..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-text-money.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-text-other.svg.png b/docs/templating/twig_function_reference/img/icons/file-text-other.svg.png deleted file mode 100644 index 8f2b24188c6..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-text-other.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-text-question-mark.svg.png b/docs/templating/twig_function_reference/img/icons/file-text-question-mark.svg.png deleted file mode 100644 index c7e23b93e11..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-text-question-mark.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-text-search.svg.png b/docs/templating/twig_function_reference/img/icons/file-text-search.svg.png deleted file mode 100644 index 46e32be938f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-text-search.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-text-write.svg.png b/docs/templating/twig_function_reference/img/icons/file-text-write.svg.png deleted file mode 100644 index bde7c148a9d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-text-write.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-text.svg.png b/docs/templating/twig_function_reference/img/icons/file-text.svg.png deleted file mode 100644 index 0f3c151c5c9..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-text.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-type.svg.png b/docs/templating/twig_function_reference/img/icons/file-type.svg.png deleted file mode 100644 index f089d35ba44..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-type.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file-warning.svg.png b/docs/templating/twig_function_reference/img/icons/file-warning.svg.png deleted file mode 100644 index 3bd4c34c30d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file-warning.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/file.svg.png b/docs/templating/twig_function_reference/img/icons/file.svg.png deleted file mode 100644 index 27120cd6f5b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/file.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/filters-funnel.svg.png b/docs/templating/twig_function_reference/img/icons/filters-funnel.svg.png deleted file mode 100644 index 3462617713e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/filters-funnel.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/filters.svg.png b/docs/templating/twig_function_reference/img/icons/filters.svg.png deleted file mode 100644 index ef875114b72..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/filters.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/flag.svg.png b/docs/templating/twig_function_reference/img/icons/flag.svg.png deleted file mode 100644 index d5173c0d8f2..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/flag.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/flip-horizontal.svg.png b/docs/templating/twig_function_reference/img/icons/flip-horizontal.svg.png deleted file mode 100644 index a32c98bec8f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/flip-horizontal.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/flip-vertical.svg.png b/docs/templating/twig_function_reference/img/icons/flip-vertical.svg.png deleted file mode 100644 index a41f640eaef..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/flip-vertical.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/focus-centered.svg.png b/docs/templating/twig_function_reference/img/icons/focus-centered.svg.png deleted file mode 100644 index fd2bb6e3620..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/focus-centered.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/focus-target.svg.png b/docs/templating/twig_function_reference/img/icons/focus-target.svg.png deleted file mode 100644 index e3ae07b8863..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/focus-target.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/folder-browse.svg.png b/docs/templating/twig_function_reference/img/icons/folder-browse.svg.png deleted file mode 100644 index b7cc5600add..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/folder-browse.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/folder-open-move.svg.png b/docs/templating/twig_function_reference/img/icons/folder-open-move.svg.png deleted file mode 100644 index fc0d1da36e8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/folder-open-move.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/folder-open.svg.png b/docs/templating/twig_function_reference/img/icons/folder-open.svg.png deleted file mode 100644 index 60b1a53ffea..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/folder-open.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/folder.svg.png b/docs/templating/twig_function_reference/img/icons/folder.svg.png deleted file mode 100644 index 442b292cb87..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/folder.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/folders.svg.png b/docs/templating/twig_function_reference/img/icons/folders.svg.png deleted file mode 100644 index 6f96d564d6e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/folders.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/forbidden.svg.png b/docs/templating/twig_function_reference/img/icons/forbidden.svg.png deleted file mode 100644 index 4f688b40f08..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/forbidden.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-captcha.svg.png b/docs/templating/twig_function_reference/img/icons/form-captcha.svg.png deleted file mode 100644 index e3a939480aa..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-captcha.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-check-list.svg.png b/docs/templating/twig_function_reference/img/icons/form-check-list.svg.png deleted file mode 100644 index 9183e897687..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-check-list.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-check-square.svg.png b/docs/templating/twig_function_reference/img/icons/form-check-square.svg.png deleted file mode 100644 index 4f44371c780..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-check-square.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-check.svg.png b/docs/templating/twig_function_reference/img/icons/form-check.svg.png deleted file mode 100644 index 9cfa1fc04e4..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-check.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-checkbox.svg.png b/docs/templating/twig_function_reference/img/icons/form-checkbox.svg.png deleted file mode 100644 index afec3c9ccd6..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-checkbox.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-data.svg.png b/docs/templating/twig_function_reference/img/icons/form-data.svg.png deleted file mode 100644 index 9eecb634f02..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-data.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-dropdown.svg.png b/docs/templating/twig_function_reference/img/icons/form-dropdown.svg.png deleted file mode 100644 index 6bb18eb681b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-dropdown.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-input-check.svg.png b/docs/templating/twig_function_reference/img/icons/form-input-check.svg.png deleted file mode 100644 index 6e61accd21a..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-input-check.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-input-hidden.svg.png b/docs/templating/twig_function_reference/img/icons/form-input-hidden.svg.png deleted file mode 100644 index 30d1ffa80da..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-input-hidden.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-input-multi-line.svg.png b/docs/templating/twig_function_reference/img/icons/form-input-multi-line.svg.png deleted file mode 100644 index 5a6ee7435f8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-input-multi-line.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-input-number.svg.png b/docs/templating/twig_function_reference/img/icons/form-input-number.svg.png deleted file mode 100644 index 8ae20fcc3ce..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-input-number.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-input-rename.svg.png b/docs/templating/twig_function_reference/img/icons/form-input-rename.svg.png deleted file mode 100644 index ea062091ecb..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-input-rename.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-input-single-line.svg.png b/docs/templating/twig_function_reference/img/icons/form-input-single-line.svg.png deleted file mode 100644 index bfb038c767f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-input-single-line.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-input-visible.svg.png b/docs/templating/twig_function_reference/img/icons/form-input-visible.svg.png deleted file mode 100644 index 469068a22d8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-input-visible.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-input.svg.png b/docs/templating/twig_function_reference/img/icons/form-input.svg.png deleted file mode 100644 index 20f780493c9..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-input.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-radio-list.svg.png b/docs/templating/twig_function_reference/img/icons/form-radio-list.svg.png deleted file mode 100644 index e4057681b65..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-radio-list.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/form-radio.svg.png b/docs/templating/twig_function_reference/img/icons/form-radio.svg.png deleted file mode 100644 index b2452f724da..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/form-radio.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/handshake.svg.png b/docs/templating/twig_function_reference/img/icons/handshake.svg.png deleted file mode 100644 index 0d21ccf34d3..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/handshake.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/hash.svg.png b/docs/templating/twig_function_reference/img/icons/hash.svg.png deleted file mode 100644 index f5043682d5e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/hash.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/header-1.svg.png b/docs/templating/twig_function_reference/img/icons/header-1.svg.png deleted file mode 100644 index ae5104a2b0a..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/header-1.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/header-2.svg.png b/docs/templating/twig_function_reference/img/icons/header-2.svg.png deleted file mode 100644 index 48c432e402d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/header-2.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/header-3.svg.png b/docs/templating/twig_function_reference/img/icons/header-3.svg.png deleted file mode 100644 index 06f1a1f51b5..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/header-3.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/header-4.svg.png b/docs/templating/twig_function_reference/img/icons/header-4.svg.png deleted file mode 100644 index 6eb95a02503..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/header-4.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/header-5.svg.png b/docs/templating/twig_function_reference/img/icons/header-5.svg.png deleted file mode 100644 index ea474105421..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/header-5.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/header-6.svg.png b/docs/templating/twig_function_reference/img/icons/header-6.svg.png deleted file mode 100644 index 661c36c2a6b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/header-6.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/headphones-support.svg.png b/docs/templating/twig_function_reference/img/icons/headphones-support.svg.png deleted file mode 100644 index bdc9df1b448..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/headphones-support.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/heart.svg.png b/docs/templating/twig_function_reference/img/icons/heart.svg.png deleted file mode 100644 index 4964da8b205..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/heart.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/help.svg.png b/docs/templating/twig_function_reference/img/icons/help.svg.png deleted file mode 100644 index e08f7558124..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/help.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/hierarchy-circle-more.svg.png b/docs/templating/twig_function_reference/img/icons/hierarchy-circle-more.svg.png deleted file mode 100644 index 567904b108c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/hierarchy-circle-more.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/hierarchy-circle.svg.png b/docs/templating/twig_function_reference/img/icons/hierarchy-circle.svg.png deleted file mode 100644 index 5ef12bfce24..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/hierarchy-circle.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/hierarchy-items.svg.png b/docs/templating/twig_function_reference/img/icons/hierarchy-items.svg.png deleted file mode 100644 index b32da9c1c5f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/hierarchy-items.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/hierarchy-schema.svg.png b/docs/templating/twig_function_reference/img/icons/hierarchy-schema.svg.png deleted file mode 100644 index 28a4efb9536..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/hierarchy-schema.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/hierarchy-site-map.svg.png b/docs/templating/twig_function_reference/img/icons/hierarchy-site-map.svg.png deleted file mode 100644 index f42de592121..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/hierarchy-site-map.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/hierarchy-square-more.svg.png b/docs/templating/twig_function_reference/img/icons/hierarchy-square-more.svg.png deleted file mode 100644 index 6fd61c7eb66..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/hierarchy-square-more.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/hierarchy-square.svg.png b/docs/templating/twig_function_reference/img/icons/hierarchy-square.svg.png deleted file mode 100644 index 3b5a9429aae..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/hierarchy-square.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/hierarchy-topology.svg.png b/docs/templating/twig_function_reference/img/icons/hierarchy-topology.svg.png deleted file mode 100644 index 28a3c81c5e6..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/hierarchy-topology.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/history.svg.png b/docs/templating/twig_function_reference/img/icons/history.svg.png deleted file mode 100644 index 0c51da2a1c1..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/history.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/home-settings.svg.png b/docs/templating/twig_function_reference/img/icons/home-settings.svg.png deleted file mode 100644 index d304f7c8062..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/home-settings.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/home.svg.png b/docs/templating/twig_function_reference/img/icons/home.svg.png deleted file mode 100644 index 7941dc7a34f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/home.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/image-edit.svg.png b/docs/templating/twig_function_reference/img/icons/image-edit.svg.png deleted file mode 100644 index 536cda55277..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/image-edit.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/image-focus.svg.png b/docs/templating/twig_function_reference/img/icons/image-focus.svg.png deleted file mode 100644 index 8160423bdda..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/image-focus.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/image-gallery.svg.png b/docs/templating/twig_function_reference/img/icons/image-gallery.svg.png deleted file mode 100644 index 036235e89d9..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/image-gallery.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/image-insert.svg.png b/docs/templating/twig_function_reference/img/icons/image-insert.svg.png deleted file mode 100644 index 65c55749386..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/image-insert.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/image-upload.svg.png b/docs/templating/twig_function_reference/img/icons/image-upload.svg.png deleted file mode 100644 index 33bc34aa0a2..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/image-upload.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/image.svg.png b/docs/templating/twig_function_reference/img/icons/image.svg.png deleted file mode 100644 index e0d9db25064..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/image.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/info-circle.svg.png b/docs/templating/twig_function_reference/img/icons/info-circle.svg.png deleted file mode 100644 index 4a7c62ca8bf..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/info-circle.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/info-rounded.svg.png b/docs/templating/twig_function_reference/img/icons/info-rounded.svg.png deleted file mode 100644 index 43f81d2be14..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/info-rounded.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/info-square.svg.png b/docs/templating/twig_function_reference/img/icons/info-square.svg.png deleted file mode 100644 index e6f8dbec528..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/info-square.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/layout-navbar-add.svg.png b/docs/templating/twig_function_reference/img/icons/layout-navbar-add.svg.png deleted file mode 100644 index aa2ccae9722..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/layout-navbar-add.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/layout-navbar-preview.svg.png b/docs/templating/twig_function_reference/img/icons/layout-navbar-preview.svg.png deleted file mode 100644 index 51b883263f0..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/layout-navbar-preview.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/layout-navbar-visible.svg.png b/docs/templating/twig_function_reference/img/icons/layout-navbar-visible.svg.png deleted file mode 100644 index ea1546a54d3..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/layout-navbar-visible.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/layout-navbar.svg.png b/docs/templating/twig_function_reference/img/icons/layout-navbar.svg.png deleted file mode 100644 index 444b6441c77..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/layout-navbar.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/layout-switch.svg.png b/docs/templating/twig_function_reference/img/icons/layout-switch.svg.png deleted file mode 100644 index c2d74e916b1..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/layout-switch.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/layout.svg.png b/docs/templating/twig_function_reference/img/icons/layout.svg.png deleted file mode 100644 index 867f2f33b30..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/layout.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/lift.svg.png b/docs/templating/twig_function_reference/img/icons/lift.svg.png deleted file mode 100644 index a870b535eb8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/lift.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/lightning.svg.png b/docs/templating/twig_function_reference/img/icons/lightning.svg.png deleted file mode 100644 index fa5b346b455..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/lightning.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/like-shine.svg.png b/docs/templating/twig_function_reference/img/icons/like-shine.svg.png deleted file mode 100644 index 73165611be9..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/like-shine.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/like.svg.png b/docs/templating/twig_function_reference/img/icons/like.svg.png deleted file mode 100644 index 040c6fcaa76..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/like.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/line-vertical.svg.png b/docs/templating/twig_function_reference/img/icons/line-vertical.svg.png deleted file mode 100644 index 9c61747a120..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/line-vertical.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/link-anchor.svg.png b/docs/templating/twig_function_reference/img/icons/link-anchor.svg.png deleted file mode 100644 index 2a2efec05fc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/link-anchor.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/link.svg.png b/docs/templating/twig_function_reference/img/icons/link.svg.png deleted file mode 100644 index ce8fe81193c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/link.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/list-bullet.svg.png b/docs/templating/twig_function_reference/img/icons/list-bullet.svg.png deleted file mode 100644 index 75945c517a5..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/list-bullet.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/list-content.svg.png b/docs/templating/twig_function_reference/img/icons/list-content.svg.png deleted file mode 100644 index 3f2f7877472..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/list-content.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/list-number.svg.png b/docs/templating/twig_function_reference/img/icons/list-number.svg.png deleted file mode 100644 index 26f3c6b5b5a..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/list-number.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/list-tasks.svg.png b/docs/templating/twig_function_reference/img/icons/list-tasks.svg.png deleted file mode 100644 index cf099d395f2..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/list-tasks.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/lock-focus.svg.png b/docs/templating/twig_function_reference/img/icons/lock-focus.svg.png deleted file mode 100644 index 22cfc5c173a..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/lock-focus.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/lock-rounded.svg.png b/docs/templating/twig_function_reference/img/icons/lock-rounded.svg.png deleted file mode 100644 index ec693d7e616..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/lock-rounded.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/lock.svg.png b/docs/templating/twig_function_reference/img/icons/lock.svg.png deleted file mode 100644 index 667a4dad601..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/lock.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/log-in.svg.png b/docs/templating/twig_function_reference/img/icons/log-in.svg.png deleted file mode 100644 index 015acfcd6ea..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/log-in.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/log-out.svg.png b/docs/templating/twig_function_reference/img/icons/log-out.svg.png deleted file mode 100644 index 0b4a0140923..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/log-out.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/magnet.svg.png b/docs/templating/twig_function_reference/img/icons/magnet.svg.png deleted file mode 100644 index 5b2cc144f45..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/magnet.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/measure-ruler-bent.svg.png b/docs/templating/twig_function_reference/img/icons/measure-ruler-bent.svg.png deleted file mode 100644 index 49fe322ad48..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/measure-ruler-bent.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/measure-ruler-straight.svg.png b/docs/templating/twig_function_reference/img/icons/measure-ruler-straight.svg.png deleted file mode 100644 index 0e5ed352db2..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/measure-ruler-straight.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/media-type.svg.png b/docs/templating/twig_function_reference/img/icons/media-type.svg.png deleted file mode 100644 index b6275a2a81e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/media-type.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/menu-hamburger-aligned.svg.png b/docs/templating/twig_function_reference/img/icons/menu-hamburger-aligned.svg.png deleted file mode 100644 index 0289bd334be..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/menu-hamburger-aligned.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/menu-hamburger.svg.png b/docs/templating/twig_function_reference/img/icons/menu-hamburger.svg.png deleted file mode 100644 index 0ff72f60547..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/menu-hamburger.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/merge.svg.png b/docs/templating/twig_function_reference/img/icons/merge.svg.png deleted file mode 100644 index 91ad3e44f24..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/merge.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/message-blog-post.svg.png b/docs/templating/twig_function_reference/img/icons/message-blog-post.svg.png deleted file mode 100644 index bfd0d7e8403..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/message-blog-post.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/message-bubble-dots.svg.png b/docs/templating/twig_function_reference/img/icons/message-bubble-dots.svg.png deleted file mode 100644 index 7b80d5cc0f9..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/message-bubble-dots.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/message-bubble-edit.svg.png b/docs/templating/twig_function_reference/img/icons/message-bubble-edit.svg.png deleted file mode 100644 index 035a51e4049..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/message-bubble-edit.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/message-bubble-info.svg.png b/docs/templating/twig_function_reference/img/icons/message-bubble-info.svg.png deleted file mode 100644 index 22fcbf737a8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/message-bubble-info.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/message-bubble-quote.svg.png b/docs/templating/twig_function_reference/img/icons/message-bubble-quote.svg.png deleted file mode 100644 index a2bb244cf26..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/message-bubble-quote.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/message-bubble.svg.png b/docs/templating/twig_function_reference/img/icons/message-bubble.svg.png deleted file mode 100644 index d0d6e4a2674..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/message-bubble.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/message-edit.svg.png b/docs/templating/twig_function_reference/img/icons/message-edit.svg.png deleted file mode 100644 index 202aeabf17d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/message-edit.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/message-email-read.svg.png b/docs/templating/twig_function_reference/img/icons/message-email-read.svg.png deleted file mode 100644 index 2cfe4e7f759..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/message-email-read.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/message-email.svg.png b/docs/templating/twig_function_reference/img/icons/message-email.svg.png deleted file mode 100644 index 6f649d72244..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/message-email.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/message-empty.svg.png b/docs/templating/twig_function_reference/img/icons/message-empty.svg.png deleted file mode 100644 index 124a0a9c262..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/message-empty.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/message-exchange.svg.png b/docs/templating/twig_function_reference/img/icons/message-exchange.svg.png deleted file mode 100644 index a768de0e57e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/message-exchange.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/message-text.svg.png b/docs/templating/twig_function_reference/img/icons/message-text.svg.png deleted file mode 100644 index 657ae7ff164..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/message-text.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/message.svg.png b/docs/templating/twig_function_reference/img/icons/message.svg.png deleted file mode 100644 index 071893e1456..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/message.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/microphone.svg.png b/docs/templating/twig_function_reference/img/icons/microphone.svg.png deleted file mode 100644 index 8d58d0debf4..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/microphone.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/minus-circle.svg.png b/docs/templating/twig_function_reference/img/icons/minus-circle.svg.png deleted file mode 100644 index adbc1ffeb65..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/minus-circle.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/minus.svg.png b/docs/templating/twig_function_reference/img/icons/minus.svg.png deleted file mode 100644 index dffa736edcd..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/minus.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/money-bag.svg.png b/docs/templating/twig_function_reference/img/icons/money-bag.svg.png deleted file mode 100644 index 2eaebd7a603..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/money-bag.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/money-bills.svg.png b/docs/templating/twig_function_reference/img/icons/money-bills.svg.png deleted file mode 100644 index 1d190edccc3..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/money-bills.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/money-coin.svg.png b/docs/templating/twig_function_reference/img/icons/money-coin.svg.png deleted file mode 100644 index 06f4540642b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/money-coin.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/money-coins.svg.png b/docs/templating/twig_function_reference/img/icons/money-coins.svg.png deleted file mode 100644 index d4de045cf2f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/money-coins.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/mood-happy-face.svg.png b/docs/templating/twig_function_reference/img/icons/mood-happy-face.svg.png deleted file mode 100644 index dfa651504fa..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/mood-happy-face.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/mood-sad-face.svg.png b/docs/templating/twig_function_reference/img/icons/mood-sad-face.svg.png deleted file mode 100644 index 27ef95661bc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/mood-sad-face.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/more.svg.png b/docs/templating/twig_function_reference/img/icons/more.svg.png deleted file mode 100644 index a225f6854ec..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/more.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/mountain.svg.png b/docs/templating/twig_function_reference/img/icons/mountain.svg.png deleted file mode 100644 index 16a4f0a333d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/mountain.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/news.svg.png b/docs/templating/twig_function_reference/img/icons/news.svg.png deleted file mode 100644 index 866e9966eb0..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/news.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/note-blog.svg.png b/docs/templating/twig_function_reference/img/icons/note-blog.svg.png deleted file mode 100644 index f267c99fb3c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/note-blog.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/note-check.svg.png b/docs/templating/twig_function_reference/img/icons/note-check.svg.png deleted file mode 100644 index eaa6f72223d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/note-check.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/note-text.svg.png b/docs/templating/twig_function_reference/img/icons/note-text.svg.png deleted file mode 100644 index fe75c295b58..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/note-text.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/note.svg.png b/docs/templating/twig_function_reference/img/icons/note.svg.png deleted file mode 100644 index f3aa7497eb2..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/note.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/notebook-text.svg.png b/docs/templating/twig_function_reference/img/icons/notebook-text.svg.png deleted file mode 100644 index 863082f6146..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/notebook-text.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/notebook.svg.png b/docs/templating/twig_function_reference/img/icons/notebook.svg.png deleted file mode 100644 index 006b246bd95..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/notebook.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/notes-list.svg.png b/docs/templating/twig_function_reference/img/icons/notes-list.svg.png deleted file mode 100644 index aa4232fcf6b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/notes-list.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/official-building.svg.png b/docs/templating/twig_function_reference/img/icons/official-building.svg.png deleted file mode 100644 index 1c746b96861..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/official-building.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/open-new-window.svg.png b/docs/templating/twig_function_reference/img/icons/open-new-window.svg.png deleted file mode 100644 index f845dab91b1..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/open-new-window.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/open-same-window.svg.png b/docs/templating/twig_function_reference/img/icons/open-same-window.svg.png deleted file mode 100644 index 94e37df4bea..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/open-same-window.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/overdue.svg.png b/docs/templating/twig_function_reference/img/icons/overdue.svg.png deleted file mode 100644 index 01acdd53a92..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/overdue.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/path-route.svg.png b/docs/templating/twig_function_reference/img/icons/path-route.svg.png deleted file mode 100644 index 80d03ec6fdc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/path-route.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/path-two-directions.svg.png b/docs/templating/twig_function_reference/img/icons/path-two-directions.svg.png deleted file mode 100644 index cd7b9c59fe3..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/path-two-directions.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/pause.svg.png b/docs/templating/twig_function_reference/img/icons/pause.svg.png deleted file mode 100644 index 55ff2111ae5..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/pause.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/pen-write.svg.png b/docs/templating/twig_function_reference/img/icons/pen-write.svg.png deleted file mode 100644 index 86da7e29a49..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/pen-write.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/phone.svg.png b/docs/templating/twig_function_reference/img/icons/phone.svg.png deleted file mode 100644 index 2c28d7f6438..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/phone.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/pin-location-money.svg.png b/docs/templating/twig_function_reference/img/icons/pin-location-money.svg.png deleted file mode 100644 index d5f605ea395..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/pin-location-money.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/pin-location-question-mark.svg.png b/docs/templating/twig_function_reference/img/icons/pin-location-question-mark.svg.png deleted file mode 100644 index 2d993e8e901..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/pin-location-question-mark.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/pin-location.svg.png b/docs/templating/twig_function_reference/img/icons/pin-location.svg.png deleted file mode 100644 index cb4d69b4687..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/pin-location.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/pin.svg.png b/docs/templating/twig_function_reference/img/icons/pin.svg.png deleted file mode 100644 index de7fd1fec78..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/pin.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/pins-locations.svg.png b/docs/templating/twig_function_reference/img/icons/pins-locations.svg.png deleted file mode 100644 index 936509a3273..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/pins-locations.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/plane.svg.png b/docs/templating/twig_function_reference/img/icons/plane.svg.png deleted file mode 100644 index fa4bc95584b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/plane.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/price.svg.png b/docs/templating/twig_function_reference/img/icons/price.svg.png deleted file mode 100644 index ed973b8c087..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/price.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/product-arrow-down.svg.png b/docs/templating/twig_function_reference/img/icons/product-arrow-down.svg.png deleted file mode 100644 index 6369bab0623..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/product-arrow-down.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/product-catalog-number.svg.png b/docs/templating/twig_function_reference/img/icons/product-catalog-number.svg.png deleted file mode 100644 index 62b0b237e8a..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/product-catalog-number.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/product-catalog.svg.png b/docs/templating/twig_function_reference/img/icons/product-catalog.svg.png deleted file mode 100644 index 3b4ae31d25d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/product-catalog.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/product-check.svg.png b/docs/templating/twig_function_reference/img/icons/product-check.svg.png deleted file mode 100644 index 7a7110c282c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/product-check.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/product-clock.svg.png b/docs/templating/twig_function_reference/img/icons/product-clock.svg.png deleted file mode 100644 index 7a5694a476d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/product-clock.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/product-collection.svg.png b/docs/templating/twig_function_reference/img/icons/product-collection.svg.png deleted file mode 100644 index 2037589ae1b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/product-collection.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/product-discard.svg.png b/docs/templating/twig_function_reference/img/icons/product-discard.svg.png deleted file mode 100644 index bdcb83f57c7..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/product-discard.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/product-search.svg.png b/docs/templating/twig_function_reference/img/icons/product-search.svg.png deleted file mode 100644 index 1d35c6bf389..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/product-search.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/product-settings.svg.png b/docs/templating/twig_function_reference/img/icons/product-settings.svg.png deleted file mode 100644 index 7c67ca7ec07..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/product-settings.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/product-tag.svg.png b/docs/templating/twig_function_reference/img/icons/product-tag.svg.png deleted file mode 100644 index 356ccf3d998..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/product-tag.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/product-variant.svg.png b/docs/templating/twig_function_reference/img/icons/product-variant.svg.png deleted file mode 100644 index 8da46f2cb49..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/product-variant.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/product.svg.png b/docs/templating/twig_function_reference/img/icons/product.svg.png deleted file mode 100644 index 795d384f783..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/product.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/prompt.svg.png b/docs/templating/twig_function_reference/img/icons/prompt.svg.png deleted file mode 100644 index 1b7988740b5..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/prompt.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/qa-admin.svg.png b/docs/templating/twig_function_reference/img/icons/qa-admin.svg.png deleted file mode 100644 index baeb32c124e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/qa-admin.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/qa-catalog.svg.png b/docs/templating/twig_function_reference/img/icons/qa-catalog.svg.png deleted file mode 100644 index 3377d8c33dd..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/qa-catalog.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/qa-click.svg.png b/docs/templating/twig_function_reference/img/icons/qa-click.svg.png deleted file mode 100644 index f853cee8efe..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/qa-click.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/qa-clipboard.svg.png b/docs/templating/twig_function_reference/img/icons/qa-clipboard.svg.png deleted file mode 100644 index d45d3c79c05..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/qa-clipboard.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/qa-cloud.svg.png b/docs/templating/twig_function_reference/img/icons/qa-cloud.svg.png deleted file mode 100644 index 0976d70a7e2..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/qa-cloud.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/qa-company.svg.png b/docs/templating/twig_function_reference/img/icons/qa-company.svg.png deleted file mode 100644 index 781dbb0874b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/qa-company.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/qa-editor.svg.png b/docs/templating/twig_function_reference/img/icons/qa-editor.svg.png deleted file mode 100644 index 6cfb77ee856..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/qa-editor.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/qa-file.svg.png b/docs/templating/twig_function_reference/img/icons/qa-file.svg.png deleted file mode 100644 index 537b040bbfc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/qa-file.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/qa-form-check.svg.png b/docs/templating/twig_function_reference/img/icons/qa-form-check.svg.png deleted file mode 100644 index 730c6f19dd7..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/qa-form-check.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/qa-info.svg.png b/docs/templating/twig_function_reference/img/icons/qa-info.svg.png deleted file mode 100644 index 7ae892c4107..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/qa-info.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/qa-product.svg.png b/docs/templating/twig_function_reference/img/icons/qa-product.svg.png deleted file mode 100644 index 52c374dcc83..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/qa-product.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/qa-store.svg.png b/docs/templating/twig_function_reference/img/icons/qa-store.svg.png deleted file mode 100644 index 84417dea80b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/qa-store.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/quote.svg.png b/docs/templating/twig_function_reference/img/icons/quote.svg.png deleted file mode 100644 index 7faaa9336c2..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/quote.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/receipt-check.svg.png b/docs/templating/twig_function_reference/img/icons/receipt-check.svg.png deleted file mode 100644 index 8ee6b2d3a3c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/receipt-check.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/receipt-clock.svg.png b/docs/templating/twig_function_reference/img/icons/receipt-clock.svg.png deleted file mode 100644 index ef5432a98bb..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/receipt-clock.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/receipt-number.svg.png b/docs/templating/twig_function_reference/img/icons/receipt-number.svg.png deleted file mode 100644 index 404641a371f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/receipt-number.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/receipt-settings.svg.png b/docs/templating/twig_function_reference/img/icons/receipt-settings.svg.png deleted file mode 100644 index 9ec0ec3740e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/receipt-settings.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/receipt.svg.png b/docs/templating/twig_function_reference/img/icons/receipt.svg.png deleted file mode 100644 index aae180fe0d4..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/receipt.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/reveal.svg.png b/docs/templating/twig_function_reference/img/icons/reveal.svg.png deleted file mode 100644 index 664a1577f0e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/reveal.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/robot.svg.png b/docs/templating/twig_function_reference/img/icons/robot.svg.png deleted file mode 100644 index fac8184a4d2..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/robot.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/rocket.svg.png b/docs/templating/twig_function_reference/img/icons/rocket.svg.png deleted file mode 100644 index d40a39615ea..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/rocket.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/sales-revenue.svg.png b/docs/templating/twig_function_reference/img/icons/sales-revenue.svg.png deleted file mode 100644 index 4bf02e19547..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/sales-revenue.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/save-exit.svg.png b/docs/templating/twig_function_reference/img/icons/save-exit.svg.png deleted file mode 100644 index a477e05e281..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/save-exit.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/save.svg.png b/docs/templating/twig_function_reference/img/icons/save.svg.png deleted file mode 100644 index ca75ce56b42..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/save.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/search.svg.png b/docs/templating/twig_function_reference/img/icons/search.svg.png deleted file mode 100644 index 379b5ed9732..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/search.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/seen-this.svg.png b/docs/templating/twig_function_reference/img/icons/seen-this.svg.png deleted file mode 100644 index e4d97976cca..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/seen-this.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/segments.svg.png b/docs/templating/twig_function_reference/img/icons/segments.svg.png deleted file mode 100644 index 78cf2ec7343..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/segments.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/send-review.svg.png b/docs/templating/twig_function_reference/img/icons/send-review.svg.png deleted file mode 100644 index 6040df49318..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/send-review.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/send.svg.png b/docs/templating/twig_function_reference/img/icons/send.svg.png deleted file mode 100644 index bd09a49d3e8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/send.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/server.svg.png b/docs/templating/twig_function_reference/img/icons/server.svg.png deleted file mode 100644 index 70483a74fc0..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/server.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/settings-cog.svg.png b/docs/templating/twig_function_reference/img/icons/settings-cog.svg.png deleted file mode 100644 index f42526e62c1..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/settings-cog.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/settings-configure.svg.png b/docs/templating/twig_function_reference/img/icons/settings-configure.svg.png deleted file mode 100644 index 473e5c344f0..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/settings-configure.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/settings.svg.png b/docs/templating/twig_function_reference/img/icons/settings.svg.png deleted file mode 100644 index 880ac3ee346..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/settings.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/share.svg.png b/docs/templating/twig_function_reference/img/icons/share.svg.png deleted file mode 100644 index f042a36ac77..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/share.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/shield.svg.png b/docs/templating/twig_function_reference/img/icons/shield.svg.png deleted file mode 100644 index d3ba98c5171..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/shield.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/shipment-arrow.svg.png b/docs/templating/twig_function_reference/img/icons/shipment-arrow.svg.png deleted file mode 100644 index 9c1227fdce6..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/shipment-arrow.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/shipment-free.svg.png b/docs/templating/twig_function_reference/img/icons/shipment-free.svg.png deleted file mode 100644 index 62c72f0db30..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/shipment-free.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/shipment.svg.png b/docs/templating/twig_function_reference/img/icons/shipment.svg.png deleted file mode 100644 index ebf00ddf16f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/shipment.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/shop.svg.png b/docs/templating/twig_function_reference/img/icons/shop.svg.png deleted file mode 100644 index abc3828a999..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/shop.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/shopping-basket.svg.png b/docs/templating/twig_function_reference/img/icons/shopping-basket.svg.png deleted file mode 100644 index 96388cc2d8b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/shopping-basket.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/shopping-cart-add.svg.png b/docs/templating/twig_function_reference/img/icons/shopping-cart-add.svg.png deleted file mode 100644 index 78020b47f6d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/shopping-cart-add.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/shopping-cart-arrow-up.svg.png b/docs/templating/twig_function_reference/img/icons/shopping-cart-arrow-up.svg.png deleted file mode 100644 index 96fd3434eb0..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/shopping-cart-arrow-up.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/shopping-cart-heart.svg.png b/docs/templating/twig_function_reference/img/icons/shopping-cart-heart.svg.png deleted file mode 100644 index 2855efd973c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/shopping-cart-heart.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/shopping-cart-settings.svg.png b/docs/templating/twig_function_reference/img/icons/shopping-cart-settings.svg.png deleted file mode 100644 index fa75c8502a0..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/shopping-cart-settings.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/shopping-cart-star.svg.png b/docs/templating/twig_function_reference/img/icons/shopping-cart-star.svg.png deleted file mode 100644 index 36860a2cb48..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/shopping-cart-star.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/shopping-cart.svg.png b/docs/templating/twig_function_reference/img/icons/shopping-cart.svg.png deleted file mode 100644 index 97e2d32e84b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/shopping-cart.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/signal-radio.svg.png b/docs/templating/twig_function_reference/img/icons/signal-radio.svg.png deleted file mode 100644 index d680e01a1bd..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/signal-radio.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/signal-rss.svg.png b/docs/templating/twig_function_reference/img/icons/signal-rss.svg.png deleted file mode 100644 index c511f4c2c1c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/signal-rss.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/signal-wifi.svg.png b/docs/templating/twig_function_reference/img/icons/signal-wifi.svg.png deleted file mode 100644 index abfadec408d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/signal-wifi.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/site.svg.png b/docs/templating/twig_function_reference/img/icons/site.svg.png deleted file mode 100644 index cb40ff2690b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/site.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/sites.svg.png b/docs/templating/twig_function_reference/img/icons/sites.svg.png deleted file mode 100644 index 8f7246efc6e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/sites.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/slider.svg.png b/docs/templating/twig_function_reference/img/icons/slider.svg.png deleted file mode 100644 index f682feda27e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/slider.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/speaker.svg.png b/docs/templating/twig_function_reference/img/icons/speaker.svg.png deleted file mode 100644 index 80bde285e15..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/speaker.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/square-selection.svg.png b/docs/templating/twig_function_reference/img/icons/square-selection.svg.png deleted file mode 100644 index 2289ea631f6..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/square-selection.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/square.svg.png b/docs/templating/twig_function_reference/img/icons/square.svg.png deleted file mode 100644 index f1a53fdb667..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/square.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/stack-overflow.svg.png b/docs/templating/twig_function_reference/img/icons/stack-overflow.svg.png deleted file mode 100644 index f18af1fe386..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/stack-overflow.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/star-badge.svg.png b/docs/templating/twig_function_reference/img/icons/star-badge.svg.png deleted file mode 100644 index 93a2aa4fb5d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/star-badge.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/star-circle.svg.png b/docs/templating/twig_function_reference/img/icons/star-circle.svg.png deleted file mode 100644 index 4bd0f27b81f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/star-circle.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/stars.svg.png b/docs/templating/twig_function_reference/img/icons/stars.svg.png deleted file mode 100644 index 30cff2dd909..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/stars.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/suitcase.svg.png b/docs/templating/twig_function_reference/img/icons/suitcase.svg.png deleted file mode 100644 index e2d9971139b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/suitcase.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/table-add.svg.png b/docs/templating/twig_function_reference/img/icons/table-add.svg.png deleted file mode 100644 index 5b6f80972fc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/table-add.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/table-cell.svg.png b/docs/templating/twig_function_reference/img/icons/table-cell.svg.png deleted file mode 100644 index 81e60ebc694..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/table-cell.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/table-column.svg.png b/docs/templating/twig_function_reference/img/icons/table-column.svg.png deleted file mode 100644 index 9aa0df075c6..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/table-column.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/table-row.svg.png b/docs/templating/twig_function_reference/img/icons/table-row.svg.png deleted file mode 100644 index 01b45461888..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/table-row.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/table-settings-column.svg.png b/docs/templating/twig_function_reference/img/icons/table-settings-column.svg.png deleted file mode 100644 index 6e33d678bd0..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/table-settings-column.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/tag-settings.svg.png b/docs/templating/twig_function_reference/img/icons/tag-settings.svg.png deleted file mode 100644 index d065fe107bc..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/tag-settings.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/tag.svg.png b/docs/templating/twig_function_reference/img/icons/tag.svg.png deleted file mode 100644 index 93d0d7bfd81..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/tag.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/tags.svg.png b/docs/templating/twig_function_reference/img/icons/tags.svg.png deleted file mode 100644 index c2baea3aadd..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/tags.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/target-click.svg.png b/docs/templating/twig_function_reference/img/icons/target-click.svg.png deleted file mode 100644 index 7363a344feb..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/target-click.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/target-dynamic.svg.png b/docs/templating/twig_function_reference/img/icons/target-dynamic.svg.png deleted file mode 100644 index 5c176aa9f04..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/target-dynamic.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/target-location.svg.png b/docs/templating/twig_function_reference/img/icons/target-location.svg.png deleted file mode 100644 index ea71b638f0e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/target-location.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/target-other.svg.png b/docs/templating/twig_function_reference/img/icons/target-other.svg.png deleted file mode 100644 index 7c8455361ba..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/target-other.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/target.svg.png b/docs/templating/twig_function_reference/img/icons/target.svg.png deleted file mode 100644 index 72f34a5631b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/target.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/telephone.svg.png b/docs/templating/twig_function_reference/img/icons/telephone.svg.png deleted file mode 100644 index bc494e620c2..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/telephone.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/text-bold.svg.png b/docs/templating/twig_function_reference/img/icons/text-bold.svg.png deleted file mode 100644 index 801458b4f0e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/text-bold.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/text-code.svg.png b/docs/templating/twig_function_reference/img/icons/text-code.svg.png deleted file mode 100644 index c95c88e9b56..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/text-code.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/text-embedded-inline.svg.png b/docs/templating/twig_function_reference/img/icons/text-embedded-inline.svg.png deleted file mode 100644 index 7d209a02ab5..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/text-embedded-inline.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/text-embedded.svg.png b/docs/templating/twig_function_reference/img/icons/text-embedded.svg.png deleted file mode 100644 index d3968b8405e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/text-embedded.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/text-italic.svg.png b/docs/templating/twig_function_reference/img/icons/text-italic.svg.png deleted file mode 100644 index bee9ff41317..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/text-italic.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/text-paragraph-add.svg.png b/docs/templating/twig_function_reference/img/icons/text-paragraph-add.svg.png deleted file mode 100644 index 5b5278e8524..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/text-paragraph-add.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/text-paragraph.svg.png b/docs/templating/twig_function_reference/img/icons/text-paragraph.svg.png deleted file mode 100644 index c1fb2810cae..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/text-paragraph.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/text-slash.svg.png b/docs/templating/twig_function_reference/img/icons/text-slash.svg.png deleted file mode 100644 index 39a75b7c146..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/text-slash.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/text-strikethrough.svg.png b/docs/templating/twig_function_reference/img/icons/text-strikethrough.svg.png deleted file mode 100644 index 6f64df0b0a8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/text-strikethrough.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/text-subscript.svg.png b/docs/templating/twig_function_reference/img/icons/text-subscript.svg.png deleted file mode 100644 index 190643ebb67..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/text-subscript.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/text-superscript.svg.png b/docs/templating/twig_function_reference/img/icons/text-superscript.svg.png deleted file mode 100644 index f1769979104..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/text-superscript.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/text-underline.svg.png b/docs/templating/twig_function_reference/img/icons/text-underline.svg.png deleted file mode 100644 index 5de1bfa25a1..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/text-underline.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/timeline.svg.png b/docs/templating/twig_function_reference/img/icons/timeline.svg.png deleted file mode 100644 index 8354676a792..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/timeline.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/tool-group.svg.png b/docs/templating/twig_function_reference/img/icons/tool-group.svg.png deleted file mode 100644 index 08fb21b005d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/tool-group.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/tool.svg.png b/docs/templating/twig_function_reference/img/icons/tool.svg.png deleted file mode 100644 index eb4eb99a8b3..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/tool.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/tools.svg.png b/docs/templating/twig_function_reference/img/icons/tools.svg.png deleted file mode 100644 index dc5bae49077..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/tools.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/translation-language.svg.png b/docs/templating/twig_function_reference/img/icons/translation-language.svg.png deleted file mode 100644 index 84aa2fc16c2..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/translation-language.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/trash-discard.svg.png b/docs/templating/twig_function_reference/img/icons/trash-discard.svg.png deleted file mode 100644 index c3f0602f9d2..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/trash-discard.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/trash-open.svg.png b/docs/templating/twig_function_reference/img/icons/trash-open.svg.png deleted file mode 100644 index 67a86434b9e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/trash-open.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/trash-send.svg.png b/docs/templating/twig_function_reference/img/icons/trash-send.svg.png deleted file mode 100644 index 4fb49488948..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/trash-send.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/trash.svg.png b/docs/templating/twig_function_reference/img/icons/trash.svg.png deleted file mode 100644 index 3f1954a5449..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/trash.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/twitter.svg.png b/docs/templating/twig_function_reference/img/icons/twitter.svg.png deleted file mode 100644 index 3d2444a7959..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/twitter.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/umbrella.svg.png b/docs/templating/twig_function_reference/img/icons/umbrella.svg.png deleted file mode 100644 index 2c6f1758363..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/umbrella.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/unarchive.svg.png b/docs/templating/twig_function_reference/img/icons/unarchive.svg.png deleted file mode 100644 index a0dcf3e96e4..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/unarchive.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/unassign-tag.svg.png b/docs/templating/twig_function_reference/img/icons/unassign-tag.svg.png deleted file mode 100644 index 05b2475fa4e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/unassign-tag.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/unlink.svg.png b/docs/templating/twig_function_reference/img/icons/unlink.svg.png deleted file mode 100644 index be6a5988568..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/unlink.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/unlock.svg.png b/docs/templating/twig_function_reference/img/icons/unlock.svg.png deleted file mode 100644 index aada7dd7c2b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/unlock.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/unpin.svg.png b/docs/templating/twig_function_reference/img/icons/unpin.svg.png deleted file mode 100644 index d64ad8afb67..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/unpin.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/upload.svg.png b/docs/templating/twig_function_reference/img/icons/upload.svg.png deleted file mode 100644 index 0e9e3e6e0cd..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/upload.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-add.svg.png b/docs/templating/twig_function_reference/img/icons/user-add.svg.png deleted file mode 100644 index f65b0109c0e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-add.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-admin.svg.png b/docs/templating/twig_function_reference/img/icons/user-admin.svg.png deleted file mode 100644 index c858e32794c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-admin.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-block.svg.png b/docs/templating/twig_function_reference/img/icons/user-block.svg.png deleted file mode 100644 index 54235ea2d3b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-block.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-cart.svg.png b/docs/templating/twig_function_reference/img/icons/user-cart.svg.png deleted file mode 100644 index 7221f7abe14..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-cart.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-check.svg.png b/docs/templating/twig_function_reference/img/icons/user-check.svg.png deleted file mode 100644 index 6ae47edd138..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-check.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-customer-number.svg.png b/docs/templating/twig_function_reference/img/icons/user-customer-number.svg.png deleted file mode 100644 index 2d6941fe788..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-customer-number.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-customer.svg.png b/docs/templating/twig_function_reference/img/icons/user-customer.svg.png deleted file mode 100644 index a07ee24969f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-customer.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-edit.svg.png b/docs/templating/twig_function_reference/img/icons/user-edit.svg.png deleted file mode 100644 index abf98722b66..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-edit.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-editor.svg.png b/docs/templating/twig_function_reference/img/icons/user-editor.svg.png deleted file mode 100644 index 4769f086219..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-editor.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-focus.svg.png b/docs/templating/twig_function_reference/img/icons/user-focus.svg.png deleted file mode 100644 index f43c1f5d1c3..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-focus.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-group-customer.svg.png b/docs/templating/twig_function_reference/img/icons/user-group-customer.svg.png deleted file mode 100644 index 71ad495c548..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-group-customer.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-group.svg.png b/docs/templating/twig_function_reference/img/icons/user-group.svg.png deleted file mode 100644 index db022d96d4c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-group.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-id.svg.png b/docs/templating/twig_function_reference/img/icons/user-id.svg.png deleted file mode 100644 index 802569a2920..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-id.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-mail.svg.png b/docs/templating/twig_function_reference/img/icons/user-mail.svg.png deleted file mode 100644 index e7e3928b1da..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-mail.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-money.svg.png b/docs/templating/twig_function_reference/img/icons/user-money.svg.png deleted file mode 100644 index 6d4534219a1..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-money.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-profile.svg.png b/docs/templating/twig_function_reference/img/icons/user-profile.svg.png deleted file mode 100644 index 28ab43206ea..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-profile.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-target.svg.png b/docs/templating/twig_function_reference/img/icons/user-target.svg.png deleted file mode 100644 index 54b25295365..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-target.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user-type.svg.png b/docs/templating/twig_function_reference/img/icons/user-type.svg.png deleted file mode 100644 index 454fff6e8f5..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user-type.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/user.svg.png b/docs/templating/twig_function_reference/img/icons/user.svg.png deleted file mode 100644 index c696bf55055..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/user.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/users-add.svg.png b/docs/templating/twig_function_reference/img/icons/users-add.svg.png deleted file mode 100644 index f5a34185c94..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/users-add.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/variation-1-1.svg.png b/docs/templating/twig_function_reference/img/icons/variation-1-1.svg.png deleted file mode 100644 index 34fb4968a23..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/variation-1-1.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/variation-16-9.svg.png b/docs/templating/twig_function_reference/img/icons/variation-16-9.svg.png deleted file mode 100644 index 8cc719f89fd..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/variation-16-9.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/variation-3-2.svg.png b/docs/templating/twig_function_reference/img/icons/variation-3-2.svg.png deleted file mode 100644 index 6a46e3bacac..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/variation-3-2.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/variation-4-3.svg.png b/docs/templating/twig_function_reference/img/icons/variation-4-3.svg.png deleted file mode 100644 index 923ff0914b8..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/variation-4-3.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/variation-custom.svg.png b/docs/templating/twig_function_reference/img/icons/variation-custom.svg.png deleted file mode 100644 index 495e7c280ad..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/variation-custom.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/video-play.svg.png b/docs/templating/twig_function_reference/img/icons/video-play.svg.png deleted file mode 100644 index dd009b8157c..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/video-play.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/video.svg.png b/docs/templating/twig_function_reference/img/icons/video.svg.png deleted file mode 100644 index e33b1db2ad5..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/video.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/view-custom.svg.png b/docs/templating/twig_function_reference/img/icons/view-custom.svg.png deleted file mode 100644 index 4b63595182f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/view-custom.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/view-grid.svg.png b/docs/templating/twig_function_reference/img/icons/view-grid.svg.png deleted file mode 100644 index f563cfad7ef..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/view-grid.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/view-list.svg.png b/docs/templating/twig_function_reference/img/icons/view-list.svg.png deleted file mode 100644 index ebb7e0a244b..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/view-list.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/view-panels.svg.png b/docs/templating/twig_function_reference/img/icons/view-panels.svg.png deleted file mode 100644 index a0baa782519..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/view-panels.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/vinyl.svg.png b/docs/templating/twig_function_reference/img/icons/vinyl.svg.png deleted file mode 100644 index 21786e0ac07..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/vinyl.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/visibility-hidden.svg.png b/docs/templating/twig_function_reference/img/icons/visibility-hidden.svg.png deleted file mode 100644 index 6db4785210e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/visibility-hidden.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/visibility.svg.png b/docs/templating/twig_function_reference/img/icons/visibility.svg.png deleted file mode 100644 index 62d070bbd01..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/visibility.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/wand.svg.png b/docs/templating/twig_function_reference/img/icons/wand.svg.png deleted file mode 100644 index 992f322999d..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/wand.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/workflow.svg.png b/docs/templating/twig_function_reference/img/icons/workflow.svg.png deleted file mode 100644 index 372be5c009f..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/workflow.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/world-add.svg.png b/docs/templating/twig_function_reference/img/icons/world-add.svg.png deleted file mode 100644 index 8e05fc3499e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/world-add.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/world-cursor.svg.png b/docs/templating/twig_function_reference/img/icons/world-cursor.svg.png deleted file mode 100644 index 7f881513489..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/world-cursor.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/world-settings.svg.png b/docs/templating/twig_function_reference/img/icons/world-settings.svg.png deleted file mode 100644 index c09dabcd457..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/world-settings.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/world.svg.png b/docs/templating/twig_function_reference/img/icons/world.svg.png deleted file mode 100644 index 800c97cd570..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/world.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/x.svg.png b/docs/templating/twig_function_reference/img/icons/x.svg.png deleted file mode 100644 index 5ecd682230e..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/x.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/zoom-in.svg.png b/docs/templating/twig_function_reference/img/icons/zoom-in.svg.png deleted file mode 100644 index ba0c153939a..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/zoom-in.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/img/icons/zoom-out.svg.png b/docs/templating/twig_function_reference/img/icons/zoom-out.svg.png deleted file mode 100644 index 45580d4c722..00000000000 Binary files a/docs/templating/twig_function_reference/img/icons/zoom-out.svg.png and /dev/null differ diff --git a/docs/templating/twig_function_reference/page_twig_functions.md b/docs/templating/twig_function_reference/page_twig_functions.md deleted file mode 100644 index 92bcf2ee000..00000000000 --- a/docs/templating/twig_function_reference/page_twig_functions.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -description: Page field and page block Twig functions provide access to configuration. -page_type: reference -edition: experience -month_change: false ---- - -# Page Twig functions - -## `ibexa_append_cacheable_query_params()` - -Get the query parameters of a page block as [configured in `cacheable_query_params`](page_blocks.md#block-configuration). -If the block type has no configured query parameters, an empty array is returned. - -```twig -{{ render_esi(controller('Ibexa\\Bundle\\FieldTypePage\\Controller\\BlockController::renderAction', { - 'locationId': locationId, - 'blockId': block.id, - 'versionNo': versionInfo.versionNo, - 'languageCode': field.languageCode -}, ibexa_append_cacheable_query_params(block))) }} -``` - -## `ibexa_page_layout()` - -Get the layout template of a landing page. - -```twig -{% include ibexa_page_layout(page) with {'zones': page.zones} %} -``` - -It can be used to render a [page field](pagefield.md). -For an example, you can look at how the default `vendor/ibexa/fieldtype-page/src/bundle/Resources/views/fields/ibexa_landing_page.html.twig` uses it. diff --git a/docs/templating/twig_function_reference/product_twig_functions.md b/docs/templating/twig_function_reference/product_twig_functions.md deleted file mode 100644 index 53b646369c3..00000000000 --- a/docs/templating/twig_function_reference/product_twig_functions.md +++ /dev/null @@ -1,153 +0,0 @@ ---- -description: Product Twig functions enable getting products and their attributes in templates. -page_type: reference ---- - -# Product Twig functions - -## `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 - -``` html+twig -{{ (product|ibexa_get_product).code }} -{{ (content|ibexa_get_product).code }} -``` - -## `ibexa_format_product_attribute` - -The `ibexa_format_product_attribute` filter formats the attribute value to a readable, translated form. -Rendering is performed by using Twig templates with named blocks, defined in a configurable list. - -You can customize this behavior by adding templates or by listening to the [`ProductAttributeRenderEvent`](product_catalog_events.md#attribute-rendering). -For more information, see [Customize product attribute templates](customize_product_attribute_templates.md). - -### Examples - -``` html+twig -{% for attribute in product.attributes %} - {{ attribute|ibexa_format_product_attribute }} -{% endfor %} -``` - -## `ibexa_product` - -`ibexa_product` enables you to check whether the provided object is a product. - -### Examples - -``` html+twig -{$ if content is ibexa_product %} -``` - -## `ibexa_has_product_availability` - -The `ibexa_has_product_availability` Twig function is used to check whether a product has defined availability. - -### Examples - -```html+twig -{% if ibexa_has_product_availability(product) %} - -{% else %} - -{% endif %} -``` - -## `ibexa_get_product_availability` - -The `ibexa_get_product_availability` Twig function retrieves the availability for a product. - -### Examples - -```html+twig -{% set availability = ibexa_get_product_availability(product) %} -{% if availability %} - - Availability: {{ availability }} -{% else %} - - Availability: Out of stock. -{% endif %} - -``` - -## `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 - -```html+twig -{% if ibexa_is_product_available(product) %} - - Add to cart -{% else %} - - Out of stock -{% endif %} - -``` - -## `ibexa_get_product_stock` - -The `ibexa_get_product_stock` Twig function retrieves the stock quantity for a product. - -### Examples - -```html+twig -{% set stock = ibexa_get_product_stock(product) %} -{% if stock > 0 %} - - In stock: {{ stock }} items -{% else %} - - Out of stock -{% endif %} - -``` - -## `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 - -``` html+twig -{{ order.getValue().getTotalGross()|ibexa_format_price }} - -{{ ibexa_get_original_price(discount_product)|ibexa_format_price ?: '-' }} -``` - -## `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 - -``` html+twig -{% if ibexa_is_pim_local() == true %} -
- -
-{% endif %} -``` - -## `ibexa_product_catalog_group_attributes` - -The `ibexa_product_catalog_group_attributes` filter groups product attributes based on the [attribute group]([[= user_doc =]]/product_catalog/work_with_product_attributes/#create-attribute-groups) they belong to. - -### Example - -``` html+twig -{% for group, attributes in product.attributes | ibexa_product_catalog_group_attributes %} -
    {{ group.name | capitalize }} - {% for attribute in attributes %} - {% set attribute_definition = attribute.attributeDefinition %} -
  • {{ attribute_definition.name }} : {{ attribute | ibexa_format_product_attribute }}
  • - {% endfor %} -
-{% endfor %} -``` diff --git a/docs/templating/twig_function_reference/quable_twig_functions.md b/docs/templating/twig_function_reference/quable_twig_functions.md deleted file mode 100644 index 775255b5687..00000000000 --- a/docs/templating/twig_function_reference/quable_twig_functions.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -description: Twig functions exposed by the Quable connector. -page_type: reference -month_change: false ---- - -# [[= pim_product_name =]] Twig functions - -The [[[= pim_product_name =]] connector](/product_catalog/quable/quable.md) provides the following Twig functions: - -## `ibexa_quable_instance_url()` - -Returns the [configured [[= pim_product_name =]] instance URL](/product_catalog/quable/configure_quable_connector.md#configuration-example), value of the `ibexa_connector_quable.instance_url` parameter. -You can use it to inject a link to the [[= pim_product_name =]]'s back office into [[= product_name =]]'s back office, to improve the experience for your editors. - -### Example - -``` html+twig - - Manage in Quable - -``` diff --git a/docs/templating/twig_function_reference/recommendations_twig_functions.md b/docs/templating/twig_function_reference/recommendations_twig_functions.md deleted file mode 100644 index 1eaa7cdce29..00000000000 --- a/docs/templating/twig_function_reference/recommendations_twig_functions.md +++ /dev/null @@ -1,289 +0,0 @@ ---- -description: Recommendations Twig Functions -month_change: true ---- - -# Recommendations Twig functions - -The following Twig functions are supported while using [Raptor connector](raptor_connector.md): - -## `ibexa_tracking_script()` function - -The `ibexa_tracking_script()` Twig function allows you to embed the main tracking script into the website. -It loads the initial script into `window.raptor`. -The script then enables event tracking, such as page visits, product views, or buys, from the front end. -It can be overridden in multiple ways to support custom implementations and to render code snippet through [[= product_name =]] in the [design engine](design_engine.md). - -Tracking can be conditionally initialized depending on cookie consent logic. -By default, for client-side use, the function returns a script, but it can return nothing when used server-side. - -This function accepts the following parameters: - -|Parameter |Type |Default value |Remarks | -|--------------|-------|-----------------------------|------------------------------------------| -|`customerId` |string |From SiteAccess configuration|[Raptor account ID](connector_installation_configuration.md#customer-id). Can be overridden for custom customer IDs.| -|`hasConsented`|boolean|false |Controls loading of tracking based on user consent at render time.| - -Default setup: - -``` html+twig -{{ ibexa_tracking_script() }} -``` - -Example setup using parameters: - -``` html+twig -{{ ibexa_tracking_script(customerId: '123', hasConsented: true) }} -``` - -If the custom `customerId` parameter is not set, the function uses the `customerID` from the [connector configuration](connector_installation_configuration.md#siteaccess-aware-configuration) to render the tracking script. -It can be overridden by providing a custom value if needed. - -### Handle tracking consent - -If the `hasConsented` parameter is set to `true` in the template, the tracking script is initialized automatically. -This value should be set if user consent for tracking cookies is already known at render time. -If `hasConsented` is set to `false`, tracking should be enabled by dispatching a custom JavaScript event after consent is granted, for example through a custom script in layout. -If it's set dynamically, avoid enabling the [HTTP cache](context_aware_cache.md) for users without consent. - -The recommended method to integrate the tracking script with custom front-end logic is to dispatch the `enableTracking` JavaScript event after tracking cookie consent is granted: - -``` js -document.dispatchEvent(new CustomEvent('enableTracking')); -``` - -!!! note - - In [Symfony's debug mode]([[= symfony_doc =]]/reference/configuration/kernel.html#kernel-debug), the provided script outputs diagnostic information to the console. - This output is not included in production environment. - -## `ibexa_tracking_track_event()` function - -The `ibexa_tracking_track_event()` function is responsible for sending event data to the service, which enables tracking of user interactions and behaviors. - -Tracking is handled through a Twig function that accept following parameters: - -``` html+twig -ibexa_tracking_track_event( - eventType, {# string: 'visit', 'contentvisit', 'buy', 'basket', 'itemclick' #} - data, {# mixed: product, content, or null (optional) #} - context, {# array: additional context data (optional) #} - template {# string: custom template path (optional) #} -) -``` - -- **eventType** - type: string, defines the type of tracking event to be sent, for example, `visit`, `contentvisit`, `buy`, `basket`, `itemclick`. For more information, see [Tracking events for recommendations](https://content.raptorservices.com/help-center/tracking-events-parameters-reference). -- **data** (optional) - type: mixed, accepts the primary object associated with the event, such as a Product or Content, can be null if not required. For more information, see [tracking event examples](#tracking-events). -- **context** (optional)- type: array, additional event data, such as quantity, basket details, [website ID](#websiteid-parameter), or custom parameters. For more information, see [example usage](#context-parameter-example-usage). -- **template** (optional) - type: string, path to a custom Twig template used to render the tracking event, allows overriding the default tracking output. - -### `websiteId` parameter - -The `websiteId`, also known as a **Login ID**, (`p7`) parameter for [Raptor tracking](https://content.raptorservices.com/help-center/introduction-to-tracking-documentation) can be optionally provided as a **context** to `ibexa_tracking_track_event()` function. - -When storing customer data in an external Customer Relationship Management (CRM) system, set the `websiteId` to an identifier of the customer stored there. - -The following example shows how you pass that value, assuming a custom Twig function `get_custom_crm_identifier` integrating with that CRM exists: - -``` html+twig -{# Section rendered only for logged-in users #} -{{ ibexa_tracking_track_event('visit', product, { - websiteId: get_custom_crm_identifier(ibexa_user_get_current().login) -}) }} -``` - -Set the `websiteId` parameter for logged-id users, for which you have data uniquely identifying them. -The value of this parameter serves as a persistent, cross-device identifier of the user. -Example values are [User ID](https://content.raptorservices.com/help-center/user-tracking-understanding-soft-ids-hard-ids-raptor-identity-matching#:~:text=IDs%3A-,UserId%20%28Website%20ID) or the Cookie ID. - -The value of `websiteId` parameter is resolved in the following order: - -1. Explicit `websiteId` passed in the `ibexa_tracking_track_event()` context. -2. Custom [`WebsiteIdContextProviderInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ConnectorRaptor-Tracking-ContextProvider-WebsiteIdContextProviderInterface.html) implementations (the first one returning a non-null value wins). -3. The built-in provider, which uses the logged-in user's identifier (`ruid`). - -If no value is resolved, the event is sent without the `p7` parameter. - -To resolve `websiteId` on the project level, implement the interface as follows: - -``` php -namespace App\Tracking; - -use Ibexa\Contracts\ConnectorRaptor\Tracking\ContextProvider\WebsiteIdContextProviderInterface; -use Ibexa\Contracts\Core\Repository\PermissionResolver; -use Ibexa\Contracts\Core\SiteAccess\ConfigResolverInterface; - -final readonly class MyCrmWebsiteUserIdProvider implements WebsiteIdContextProviderInterface -{ - public function __construct( - private ConfigResolverInterface $configResolver, - private PermissionResolver $permissionResolver, - ) { - } - - public function getWebsiteId(): ?string - { - $currentUserId = $this->permissionResolver->getCurrentUserReference()->getUserId(); - // Don't resolve for anynomous user - if ($this->isAnonymousUser($currentUserId)) { - return null; - } - - return $this->getWebsiteUserIdForCurrentUser($currentUserId); - } - - /** - * @phpstan-return non-empty-string - */ - private function getWebsiteUserIdForCurrentUser(int $userId): string - { - // Implement custom logic resolving user identifier from the CRM - return 'custom-identifier-for-the-user-retrieved-from-the-CRM'; - } - - private function isAnonymousUser(int $userId): bool - { - return (int) $this->configResolver->getParameter('anonymous_user_id') === $userId; - } -} -``` - -The provider is registered automatically. -Implementing the interface is sufficient, no service configuration is required. - -!!! note - - Custom provider takes precedence over the built-in one. - A provider must return either `null` or a non-empty string. - -If you register multiple providers, control their order by tagging the service with a priority (higher priority is checked first): - -``` yaml -App\Tracking\MyWebsiteIdProvider: - tags: - - { name: ibexa.connector.raptor.tracking.website_id_context_provider, priority: 50 } -``` - -### Tracking events - -The following events are supported and can be triggered from Twig templates: - -#### `pageview` event - -The `ibexa_tracking_script()` Twig function automatically sends a [`pageview`](https://content.raptorservices.com/help-center/tracking-events-parameters-reference) event to Raptor for every incoming GET request, in both `client` and `server` tracking types. - -Use it for basic page metrics and debugging the Live Tracking Stream. - -#### Product `visit` event - -This event tracks product page visits by users. -It's the most common e-commerce tracking event used to capture product views for analytics, recommendation models, and user behavior processing. - -Required data: - -- **Product object** - defines the product being tracked. It implements [`Ibexa\Contracts\ProductCatalog\Values\ProductInterface`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-ProductCatalog-Values-ProductInterface.html) so the system can read its information (for example, code, price, category). - -Example: - -``` html+twig -[[= include_file('code_samples/recommendations/events/product_visit_event.html.twig') =]] -``` - -#### `contentvisit` event - -This event tracks content page visits by users. -It implements [`Ibexa\Contracts\Core\Repository\Values\Content\Content`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Core-Repository-Values-Content-Content.html) and can be used to check content views for analytics, personalization, and user behavior tracking. - -- **Content object** - defines the content being tracked. - -Example: - -``` html+twig -[[= include_file('code_samples/recommendations/events/content_visit_event.html.twig') =]] -``` - -#### Product `buy` event - -This event tracks when a product is bought. - -- **Product object** defines the product being purchased. -- **Context array with purchase conditions** - provides optional data about the product purchase context, like quantity, price, or currency. - -``` html+twig -[[= include_file('code_samples/recommendations/events/buy_event.html.twig') =]] -``` - -#### Product `basket` event - -This event tracks when a product is added to the cart. - -It captures user interactions that indicate interest, which can be used for conversion tracking and to improve product recommendations. - -Required data: - -- **Product object** - defines the product being added to the basket. -- **Context array with cart information** - provides optional data about the cart, like product quantity or cart identifier, to provide context for the event. - -Example: - -``` html+twig -[[= include_file('code_samples/recommendations/events/basket_event.html.twig') =]] -``` - -#### `itemclicked` event - -This event tracks when a user clicks a Raptor recommendation, including adding products to the cart from the recommendation module. - -Required data: - -- **Product code** - code of the product the visitor interacted with. -- **Context** - provides optional data, like `moduleName` or `redirectUrl`, to provide context for the event. - -Example: - -``` html+twig -[[= include_file('code_samples/recommendations/events/itemclicked_event.html.twig') =]] -``` - -### `context` parameter - example usage - -You can use the `context` parameter to pass additional data. - -During tracking, for products assigned to multiple categories, the system uses the first category. -In this case, `context` allows to override the product category by passing a category identifier: - -``` html+twig -{% block content %} -
-

{{ product.name }}

- {# ... product content ... #} -
- - {# Track with category identifier - CategoryID automatic loading and formatting #} - {{ ibexa_tracking_track_event('visit', product, { - 'categoryIdentifier': 'electronics' - }) }} -{% endblock %} -``` - -For other usage examples, see the [`buy`](#product-buy-event) and [`basket`](#product-basket-event) events. - -### Custom templates - -You can create a custom template for tracking in the `/templates/tracking/` directory. -See the following example of `custom_visit.html.twig`: - -``` html+twig -[[= include_file('code_samples/recommendations/templates/tracking/custom_visit.html.twig') =]] -``` - -You can override the default tracking templates by providing a custom template path: - -``` html+twig -{{ ibexa_tracking_track_event( - 'visit', - product, - {}, - '@App/tracking/custom_visit.html.twig' -) }} -``` diff --git a/docs/templating/twig_function_reference/site_context_twig_functions.md b/docs/templating/twig_function_reference/site_context_twig_functions.md deleted file mode 100644 index 71f438ec2ae..00000000000 --- a/docs/templating/twig_function_reference/site_context_twig_functions.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -description: Site context Twig function determines if given location is site context-aware. -edition: experience -page_type: reference ---- - -# Site context Twig functions - -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()` 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 - -``` html+twig -{% if location is ibexa_site_context_aware %} -

I am aware of the site context!

-{% endif %} -``` diff --git a/docs/templating/twig_function_reference/twig_function_reference.md b/docs/templating/twig_function_reference/twig_function_reference.md deleted file mode 100644 index abf6dba50a7..00000000000 --- a/docs/templating/twig_function_reference/twig_function_reference.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -description: Built-in Twig functions speed up rendering content in Twig templates. -page_type: landing_page ---- - -# Twig function reference - -In addition to the [native functions provided by Twig](https://twig.symfony.com/doc/3.x/functions/index.html), and [Twig extensions provided by Symfony]([[= symfony_doc =]]/reference/twig_reference.html), [[= product_name =]] offers the following custom Twig functions and filters: - -[[= cards([ - "templating/twig_function_reference/catalog_twig_functions", - "templating/twig_function_reference/content_twig_functions", - "templating/twig_function_reference/component_twig_functions", - "templating/twig_function_reference/field_twig_functions", - "templating/twig_function_reference/page_twig_functions", - "templating/twig_function_reference/product_twig_functions", - "templating/twig_function_reference/recommendations_twig_functions", - "templating/twig_function_reference/site_context_twig_functions", - "templating/twig_function_reference/icon_twig_functions", - "templating/twig_function_reference/image_twig_functions", - "templating/twig_function_reference/url_twig_functions", - "templating/twig_function_reference/date_twig_filters", - "templating/twig_function_reference/ai_actions_twig_functions", - "templating/twig_function_reference/quable_twig_functions" -], columns=4) =]] diff --git a/docs/templating/twig_function_reference/url_twig_functions.md b/docs/templating/twig_function_reference/url_twig_functions.md deleted file mode 100644 index 136cf966eda..00000000000 --- a/docs/templating/twig_function_reference/url_twig_functions.md +++ /dev/null @@ -1,92 +0,0 @@ ---- -description: URL Twig functions enable rendering URLs and routes. -page_type: reference ---- - -# URL Twig functions - -- [`ibexa_path()`](#ibexa_path) returns the absolute path to a content item or location. -- [`ibexa_url()`](#ibexa_url) returns the absolute URL to a content item or location. -- [`ibexa.url.alias`](#ibexaurlalias) generates URLs for a location from the given arguments. -- [`ibexa_route()`](#ibexa_route) generates a RouteReference object from the given parameters. -- [`ibexa_oauth2_connect_path()`](#ibexa_oauth2_connect_path) generates a relative path for the given OAuth2 route. -- [`ibexa_oauth2_connect_url()`](#ibexa_oauth2_connect_url) generates an absolute URL for the given OAuth2 route. - -## URLs - -### `ibexa_path()` - -`ibexa_path()` returns the absolute path to a content item or location. - -|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.| -|`parameters`|`array`|Route parameters.| -|`relative`|`boolean`|Whether to generate a relative path.| - -``` html+twig -{{ ibexa_path(location) }} -``` - -### `ibexa_url()` - -`ibexa_url()` returns the absolute URL to a content item or location. - -|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.| -|`parameters`|`array`|Route parameters.| -|`schemeRelative`|`boolean`|Whether to generate a relative URL.| - -``` html+twig -{{ ibexa_url(location, {}, false) }} -``` - -### `ibexa.url.alias` - -`ibexa.url.alias` generates URLs for a Location from the given parameters. - -!!! note - - `ibexa.url.alias` is a not a Twig function, but a special route name. - -For more information about the use of `ibexa.url.alias` as a parameter of the [Symfony `path` Twig function]([[= symfony_doc =]]/reference/twig_reference.html#path), see [Links to other locations](urls_and_routes.md). - -``` html+twig -{% set href = path('ibexa.url.alias', { 'locationId': 2 }) %} -``` - -### `ibexa_route()` - -`ibexa_route()` generates a [RouteReference object](urls_and_routes.md#routereference) from the given parameters. - -|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.| -|`params`|`array`|Route parameters.| - -``` html+twig -{% set routeReference = ibexa_route("ibexa.url.alias", { 'locationId': 2 }) %} -``` - -## OAuth2 - -### `ibexa_oauth2_connect_path()` - -`ibexa_oauth2_connect_path()` generates a relative path for the given [OAuth2 client](oauth_client.md). - -|Argument|Type|Description| -|------|------|------| -|`identifier`|string|Identifier of the OAuth connection.| -|`parameters`|`array`|Route parameters.| -|`relative`|`boolean`|Whether to generate a relative path.| - -### `ibexa_oauth2_connect_url()` - -`ibexa_oauth2_connect_url()` generates an absolute URL for the given [OAuth2 client](oauth_client.md). - -|Argument|Type|Description| -|------|------|------| -|`identifier`|string|Identifier of the OAuth connection.| -|`parameters`|`array`|Route parameters.| -|`schemeRelative`|`boolean`|Whether to generate a relative URL.| diff --git a/docs/templating/twig_function_reference/user_twig_functions.md b/docs/templating/twig_function_reference/user_twig_functions.md deleted file mode 100644 index 212158b6242..00000000000 --- a/docs/templating/twig_function_reference/user_twig_functions.md +++ /dev/null @@ -1,36 +0,0 @@ ---- -description: User Twig functions enable getting repository user information. -page_type: reference ---- - -# User Twig functions - -## `ibexa_user_get_current()` - -`ibexa_user_get_current()` returns the User object (`Ibexa\Contracts\Core\Repository\Values\User\User`) of the current user. - -``` html+twig -{{ ibexa_user_get_current().login }} -``` - -You can get the underlying content item, for example to display the user's last name, by accessing the `content` property: - -``` html+twig -{{ ibexa_render_field(ibexa_user_get_current().content, 'last_name') }} -``` - -## `ibexa_current_user()` - -`ibexa_current_user()` is a deprecated alias of `ibexa_user_get_current()`. - -## `ibexa_is_current_user()` - -The `ibexa_is_current_user()` Twig function checks whether a user is the current repository user. - -### Examples - -```html+twig -{% if ibexa_is_current_user(version_info.author) %} - -{% endif %} -``` diff --git a/docs/templating/urls_and_routes/urls_and_routes.md b/docs/templating/urls_and_routes/urls_and_routes.md index 99cc365e392..465b1c58c07 100644 --- a/docs/templating/urls_and_routes/urls_and_routes.md +++ b/docs/templating/urls_and_routes/urls_and_routes.md @@ -1,10 +1,11 @@ --- description: Add links to content items or specific built-in and custom routes in your templates. +delete: true --- # URLs and routes -To link to a [Location](locations.md) or [Content item](content_model.md#content-items), use the [`ibexa_path()`](url_twig_functions.md#ibexa_path) Twig function. +To link to a [Location](locations.md) or [Content item](content_model.md#content-items), use the `ibexa_path()` Twig function. You need to provide the function with a location, content, ContentInfo, or [RouteReference](#routereference) object: ``` html+twig @@ -13,7 +14,7 @@ You need to provide the function with a location, content, ContentInfo, or [Rout

Content Info

``` -Use [`ibexa_url()`](url_twig_functions.md#ibexa_url) to get an absolute URL to a content item or location: +Use `ibexa_url()` to get an absolute URL to a content item or location: ``` html+twig

Location

@@ -21,7 +22,7 @@ Use [`ibexa_url()`](url_twig_functions.md#ibexa_url) to get an absolute URL to a ## RouteReference -You can use the [`ibexa_route()`](url_twig_functions.md#ibexa_route) Twig function to create a RouteReference object based on the provided information. +You can use the `ibexa_route()` Twig function to create a RouteReference object based on the provided information. A RouteReference contains a route with its parameters and can be modified after it's created. Here, the route is based on the ID of the location. diff --git a/docs/tutorials/beginner_tutorial/1_get_ready.md b/docs/tutorials/beginner_tutorial/1_get_ready.md index 162c7fc5cb6..1dc760fcd5d 100644 --- a/docs/tutorials/beginner_tutorial/1_get_ready.md +++ b/docs/tutorials/beginner_tutorial/1_get_ready.md @@ -6,9 +6,6 @@ description: Start the tutorial by getting a clean installation of Cohesivo. To begin the tutorial, you need a clean installation of [[= product_name =]]. -Get it by following the [Install [[= product_name =]]](../../getting_started/install_cohesivo.md) guide. -You need a web server, a relational database and PHP. - The clean installation contains only a root content item which displays a welcome page. ![Front page after clean installation](welcome_page.png) diff --git a/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md b/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md index 6020470971f..77f6d210948 100644 --- a/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md +++ b/docs/tutorials/generic_field_type/1_implement_the_point2d_value_class.md @@ -6,9 +6,7 @@ description: Learn how to create a Value class that stores the value of the fiel ## Project installation -To start the tutorial, you need to make a clean [[= product_name =]] installation. -Follow the guide for your system to [Install [[= product_name =]]](../../getting_started/install_cohesivo.md) and [start the web server](../../getting_started/install_cohesivo.md#use-phps-built-in-server). -Remember to install using the `dev` environment. +To start the tutorial, you need a clean [[= product_name =]] installation running in the `dev` environment. Open your project with a clean installation and create the base directory for a new Point 2D field type in `src/FieldType/Point2D`. diff --git a/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md b/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md index db6c20d89f3..ffd42da3dc7 100644 --- a/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md +++ b/docs/tutorials/page_and_form_tutorial/1_get_a_starter_website.md @@ -11,8 +11,6 @@ To set up the starter website, you need to follow these steps: To begin the tutorial, you need a clean installation of [[= product_name_exp =]]. -Get it by following the [Install [[= product_name =]]](../../getting_started/install_cohesivo.md) guide. - ## Add content types Log in to the back office – add `/admin` to your installation's address (`/admin`) and log in as `admin` user using the password specified during installation. diff --git a/docs/users/oauth_client.md b/docs/users/oauth_client.md index 9dbb80e6fc1..52c53d25ad2 100644 --- a/docs/users/oauth_client.md +++ b/docs/users/oauth_client.md @@ -1,5 +1,6 @@ --- description: Allow users to log into Cohesivo through external OAuth2 authorization servers. +delete: true --- # OAuth client @@ -108,7 +109,7 @@ Create the following template file in `templates/themes/admin/account/login/oaut [[= include_file('code_samples/user_management/oauth_google/templates/themes/admin/account/login/oauth2_login.html.twig') =]] ``` -For more information about the OAuth connection URL Twig functions, see [`ibexa_oauth2_connect_path`](url_twig_functions.md#ibexa_oauth2_connect_path) and [`ibexa_oauth2_connect_url`](url_twig_functions.md#ibexa_oauth2_connect_url). +The OAuth connection URL Twig functions are `ibexa_oauth2_connect_path` and `ibexa_oauth2_connect_url`. Finally, add the template to the login form by using the `admin-ui-login-form-after` [Twig component group](components.md): diff --git a/mkdocs.yml b/mkdocs.yml index 2d76c11f794..21d91eae911 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -26,11 +26,7 @@ nav: - Cohesivo Experience: ibexa_products/ibexa_experience.md - Getting started: - Getting started: getting_started/getting_started.md - - Install Cohesivo: getting_started/install_cohesivo.md - - Install on MacOS and Windows: getting_started/install_on_mac_os_and_windows.md - - Install with DDEV: getting_started/install_with_ddev.md - First steps: getting_started/first_steps.md - - Troubleshooting: getting_started/troubleshooting.md - Tutorials: - Tutorials: tutorials/tutorials.md - Beginner tutorial: @@ -101,7 +97,6 @@ nav: - Trash events: api/event_reference/trash_events.md - Twig Components: api/event_reference/twig_component_events.md - AI Action events: api/event_reference/ai_action_events.md - - Collaboration events: api/event_reference/collaboration_events.md - Integrated help events: api/event_reference/integrated_help_events.md - Translations management events: api/event_reference/translations_management_events.md - Other events: api/event_reference/other_events.md @@ -287,11 +282,6 @@ nav: - Time field type: content_management/field_types/field_type_reference/timefield.md - URL field type: content_management/field_types/field_type_reference/urlfield.md - User field type: content_management/field_types/field_type_reference/userfield.md - - Collaborative editing: - - Collaborative editing: content_management/collaborative_editing/collaborative_editing.md - - Collaborative editing product guide: content_management/collaborative_editing/collaborative_editing_guide.md - - Configure Collaborative editing: content_management/collaborative_editing/configure_collaborative_editing.md - - Collaborative editing API: content_management/collaborative_editing/collaborative_editing_api.md - Templating: - Templating: templating/templating.md - Render content: @@ -305,23 +295,6 @@ nav: - Create custom view matcher: templating/templates/create_custom_view_matcher.md - Assets: templating/assets.md - Image variations: templating/image_variations.md - - Twig function reference: - - Twig function reference: templating/twig_function_reference/twig_function_reference.md - - AI Twig functions: templating/twig_function_reference/ai_actions_twig_functions.md - - Catalog Twig functions: templating/twig_function_reference/catalog_twig_functions.md - - Component Twig functions: templating/twig_function_reference/component_twig_functions.md - - Content Twig functions: templating/twig_function_reference/content_twig_functions.md - - Date Twig filters: templating/twig_function_reference/date_twig_filters.md - - Field Twig functions: templating/twig_function_reference/field_twig_functions.md - - Icon Twig functions: templating/twig_function_reference/icon_twig_functions.md - - Image Twig functions: templating/twig_function_reference/image_twig_functions.md - - Page Twig functions: templating/twig_function_reference/page_twig_functions.md - - Product Twig functions: templating/twig_function_reference/product_twig_functions.md - - Quable Twig functions: templating/twig_function_reference/quable_twig_functions.md - - Recommendations Twig functions: templating/twig_function_reference/recommendations_twig_functions.md - - Site context Twig functions: templating/twig_function_reference/site_context_twig_functions.md - - URL Twig functions: templating/twig_function_reference/url_twig_functions.md - - User Twig functions: templating/twig_function_reference/user_twig_functions.md - Twig Components: templating/components.md - URLs and routes: - URLs and routes: templating/urls_and_routes/urls_and_routes.md @@ -471,11 +444,9 @@ nav: - Search engines: search/search_engines/search_engines.md - Elasticsearch search engine: - Overview: search/search_engines/elasticsearch/elasticsearch_overview.md - - Install Elasticsearch: search/search_engines/elasticsearch/install_elasticsearch.md - Configure Elasticsearch: search/search_engines/elasticsearch/configure_elasticsearch.md - Solr search engine: - Overview: search/search_engines/solr_search_engine/solr_overview.md - - Install Solr: search/search_engines/solr_search_engine/install_solr.md - Configure Solr: search/search_engines/solr_search_engine/configure_solr.md - Legacy search engine: - Overview: search/search_engines/legacy_search_engine/legacy_search_overview.md @@ -605,7 +576,6 @@ nav: - ObjectNameCriterion: search/activity_log_search_reference/object_name_criterion.md - UserCriterion: search/activity_log_search_reference/user_criterion.md - Action Configuration Search Criteria: search/ai_actions_search_reference/action_configuration_criteria.md - - Collaboration Search Criteria: search/collaboration_search_reference/collaboration_criteria.md - Notification Search Criteria: - Notification Search Criteria: search/criteria_reference/notification_search_criteria.md - DateCreated: search/criteria_reference/notification_datecreated_criterion.md @@ -651,7 +621,6 @@ nav: - Id Sort Clause: search/url_search_reference/id_url_sort_clause.md - Url Sort Clause: search/url_search_reference/url_url_sort_clause.md - Activity Log Sort Clauses: search/activity_log_search_reference/activity_log_sort_clauses.md - - Collaboration Sort Clauses: search/collaboration_search_reference/collaboration_sort_clauses.md - Action Configuration Sort Clauses: search/ai_actions_search_reference/action_configuration_sort_clauses.md - Aggregation reference: # Content aggregations @@ -721,7 +690,6 @@ nav: - Clustering: - Clustering: infrastructure_and_maintenance/clustering/clustering.md - Clustering with AWS S3: infrastructure_and_maintenance/clustering/clustering_with_aws_s3.md - - Clustering with DDEV: infrastructure_and_maintenance/clustering/clustering_with_ddev.md - DevOps: infrastructure_and_maintenance/devops.md - Backup: infrastructure_and_maintenance/backup.md - Performance: infrastructure_and_maintenance/performance.md @@ -734,16 +702,6 @@ nav: - Reporting issues: infrastructure_and_maintenance/security/reporting_issues.md - Security advisories: infrastructure_and_maintenance/security/security_advisories.md - Support and maintenance FAQ: infrastructure_and_maintenance/support_and_maintenance_faq.md - - Resources: - - Resources: resources/resources.md - - Release process and roadmap: resources/release_process_and_roadmap.md - - Ibexa DXP PhpStorm plugin: resources/phpstorm_plugin.md - - Ibexa DXP Rector: resources/rector.md - - New in documentation: resources/new_in_doc.md - - Contributing: - - Report and follow issues: resources/contributing/report_and_follow_issues.md - - Contribute translations: resources/contributing/contribute_translations.md - - Package structure: resources/contributing/package_structure.md - Product guides: - Product guides: product_guides/product_guides.md - Release notes: release_notes.md diff --git a/plugins.yml b/plugins.yml index 9d2b51e1930..46927b312f4 100644 --- a/plugins.yml +++ b/plugins.yml @@ -186,14 +186,6 @@ plugins: 'guide/content_rendering/templates/custom_view_matcher.md': 'templating/templates/create_custom_view_matcher.md' 'guide/content_rendering/assets.md': 'templating/assets.md' 'guide/content_rendering/image_variations.md': 'templating/image_variations.md' - 'guide/content_rendering/twig_function_reference/twig_functions_reference.md': 'templating/twig_function_reference/twig_function_reference.md' - 'guide/content_rendering/twig_function_reference/content_twig_functions.md': 'templating/twig_function_reference/content_twig_functions.md' - 'guide/content_rendering/twig_function_reference/field_twig_functions.md': 'templating/twig_function_reference/field_twig_functions.md' - 'guide/content_rendering/twig_function_reference/product_twig_functions.md': 'templating/twig_function_reference/product_twig_functions.md' - 'guide/content_rendering/twig_function_reference/image_twig_functions.md': 'templating/twig_function_reference/image_twig_functions.md' - 'guide/content_rendering/twig_function_reference/url_twig_functions.md': 'templating/twig_function_reference/url_twig_functions.md' - 'guide/content_rendering/twig_function_reference/date_twig_filters.md': 'templating/twig_function_reference/date_twig_filters.md' - 'guide/content_rendering/twig_function_reference/other_twig_filters.md': 'templating/twig_function_reference/icon_twig_functions.md' 'guide/content_rendering/urls_and_routes.md': 'templating/urls_and_routes/urls_and_routes.md' 'guide/content_rendering/design_engine/design_engine.md': 'templating/design_engine/design_engine.md' 'guide/content_rendering/design_engine/add_new_design.md': 'templating/design_engine/add_new_design.md' @@ -456,7 +448,6 @@ plugins: 'search/shop_search/search_indexing.md': 'search/search.md' 'search/shop_search/search_synonyms.md': 'search/search.md' 'search/shop_search/search_autosuggest.md': 'search/search.md' - 'search/search_engines/elastic_search/install_elastic_search.md': 'search/search_engines/elasticsearch/install_elasticsearch.md' 'search/search_engines/elastic_search/configure_elastic_search.md': 'search/search_engines/elasticsearch/configure_elasticsearch.md' 'search/search_engines/elastic_search/elastic_search_overview.md': 'search/search_engines/elasticsearch/elasticsearch_overview.md' @@ -481,19 +472,10 @@ plugins: 'guide/security_checklist.md': 'infrastructure_and_maintenance/security/security_checklist.md' 'guide/reporting_issues.md': 'infrastructure_and_maintenance/security/reporting_issues.md' 'community_resources/support_maintenance_faq.md': 'infrastructure_and_maintenance/support_and_maintenance_faq.md' - 'community_resources/release_process.md': 'resources/release_process_and_roadmap.md' - 'community_resources/phpstorm_plugin.md': 'resources/phpstorm_plugin.md' - 'community_resources/contributing.md': 'resources/contributing/report_and_follow_issues.md' - 'community_resources/report_follow_issues.md': 'resources/contributing/report_and_follow_issues.md' - 'community_resources/translations.md': 'resources/contributing/contribute_translations.md' - 'community_resources/package_structure.md': 'resources/contributing/package_structure.md' - 'getting_started/install_ez_platform.md': 'getting_started/install_cohesivo.md' - 'getting_started/install_ibexa_dxp.md': 'getting_started/install_cohesivo.md' 'templating/layout/create_user_registration_form.md': 'customer_management/create_user_registration_form.md' - 'templating/twig_function_reference/other_twig_filters.md': 'templating/twig_function_reference/icon_twig_functions.md' 'tutorials/platform_beginner/building_a_bicycle_route_tracker_in_ez_platform.md': 'tutorials/beginner_tutorial/beginner_tutorial.md' 'tutorials/platform_beginner/1_get_ready.md': 'tutorials/beginner_tutorial/1_get_ready.md' @@ -516,7 +498,6 @@ plugins: 'content_management/customize_field_type_metadata.md': 'content_management/field_types/customize_field_type_metadata.md' - 'content_management/collaborative_editing/install_collaborative_editing.md': 'content_management/collaborative_editing/configure_collaborative_editing.md' 'ai_actions/ai_actions.md': 'ai/ai_actions/ai_actions.md' 'ai_actions/ai_actions_guide.md': 'ai/ai_actions/ai_actions_guide.md' diff --git a/tests/yaml-validation-baseline.yaml b/tests/yaml-validation-baseline.yaml index a5f72f701fd..36d1cdcad4f 100644 --- a/tests/yaml-validation-baseline.yaml +++ b/tests/yaml-validation-baseline.yaml @@ -32,16 +32,6 @@ ignoreErrors: line: 26 hash: 4cfc5ac559eb8db38edb6c8a29872883a95886b61cdae2b343a5ebaf4a9bca8e message: '~The value "\" is not allowed for path "ibexa\.system\.\\>\.product_tour\.\\.type"\. Permissible values\: "general", "targetable"\.~' - - - path: docs/content_management/collaborative_editing/configure_collaborative_editing.md - line: 48 - hash: 629d37dcc688c9b11daec8de8c601522830f3b2175ac6ac692db3f17b89a01d7 - message: '~The child config "firewalls" under "security" must be configured\.~' - - - path: docs/content_management/collaborative_editing/configure_collaborative_editing.md - line: 78 - hash: c6488fad354e039350fd0c18bdd0b6dc2a1ff7300dbae9151155490278b840a0 - message: '~Invalid type for path "ibexa\.repositories\.\\.collaboration\.participants\.auto_invite"\. Expected "bool", but got "string"\.~' - path: docs/content_management/data_migration/data_migration_actions.md line: 171 @@ -269,7 +259,7 @@ ignoreErrors: message: '~Unable to parse at line 1 \(near " none\:"\)\.~' - path: docs/recommendations/raptor_integration/tracking_functions.md - line: 33 + line: 34 hash: ca52a936f86a66c78951579cee005c4f5b87d844b8ff5d0b2f587b6aa68054b9 message: '~Duplicate key "connector_raptor" detected at line 6 \(near "\# Hybrid tracking"\)\.~' - diff --git a/tools/icons/update_icon_reference.py b/tools/icons/update_icon_reference.py deleted file mode 100644 index ba1c12b9734..00000000000 --- a/tools/icons/update_icon_reference.py +++ /dev/null @@ -1,240 +0,0 @@ -#!/usr/bin/env python3 -""" -Script to update the Icon Reference documentation with new icons from remote SVG file. -Downloads the icon file from the specified version's repository. -""" - -import re -import xml.etree.ElementTree as ET -from pathlib import Path -from typing import List, Tuple -import subprocess -import os -import sys -import argparse -import urllib.request -import urllib.error - - -def extract_icon_ids_from_svg(svg_path: str) -> List[str]: - """Extract icon IDs from the SVG file.""" - with open(svg_path, 'r', encoding='utf-8') as f: - content = f.read() - - # Find all symbol elements with id attributes - pattern = r']*id="([^"]*)"[^>]*>' - matches = re.findall(pattern, content) - - # Remove duplicates and sort - icon_ids = sorted(list(set(matches))) - - return icon_ids - - -def extract_single_icon_svg(svg_content: str, icon_id: str) -> str: - """Extract a single icon's SVG content from the sprite.""" - # Find the symbol with the given ID - pattern = rf']*id="{re.escape(icon_id)}"[^>]*>(.*?)' - match = re.search(pattern, svg_content, re.DOTALL) - - if not match: - return None - - symbol_content = match.group(1) - - # Extract viewBox from the symbol - viewbox_pattern = rf']*id="{re.escape(icon_id)}"[^>]*viewBox="([^"]*)"[^>]*>' - viewbox_match = re.search(viewbox_pattern, svg_content) - viewbox = viewbox_match.group(1) if viewbox_match else "0 0 32 32" - - # Create a standalone SVG - standalone_svg = f''' - -{symbol_content} -''' - - return standalone_svg - - -def generate_png_images(svg_path: str, icon_ids: List[str], output_dir: str) -> None: - """Generate PNG images for each icon.""" - # Read the SVG sprite content - with open(svg_path, 'r', encoding='utf-8') as f: - svg_content = f.read() - - # Create output directory - os.makedirs(output_dir, exist_ok=True) - - print(f"Generating PNG images for {len(icon_ids)} icons...") - - for icon_id in icon_ids: - # Extract the icon SVG - icon_svg = extract_single_icon_svg(svg_content, icon_id) - - if icon_svg: - # Create temporary SVG file - temp_svg_path = f"/tmp/{icon_id}.svg" - with open(temp_svg_path, 'w', encoding='utf-8') as f: - f.write(icon_svg) - - # Generate PNG using librsvg or imagemagick (fallback methods) - png_path = f"{output_dir}/{icon_id}.svg.png" - - try: - # Try rsvg-convert first (usually better quality) - subprocess.run([ - 'rsvg-convert', '-w', '32', '-h', '32', - temp_svg_path, '-o', png_path - ], check=True, capture_output=True) - except (subprocess.CalledProcessError, FileNotFoundError): - try: - # Fallback to ImageMagick - subprocess.run([ - 'convert', '-background', 'transparent', '-size', '32x32', - temp_svg_path, png_path - ], check=True, capture_output=True) - except (subprocess.CalledProcessError, FileNotFoundError): - print(f"Warning: Could not generate PNG for {icon_id}") - continue - - # Clean up temporary file - os.remove(temp_svg_path) - - if os.path.exists(png_path): - print(f"Generated: {png_path}") - else: - print(f"Failed to generate: {png_path}") - - -def generate_icon_table_rows(icon_ids: List[str]) -> List[str]: - """Generate markdown table rows for the icon reference.""" - rows = [] - - for icon_id in icon_ids: - # Create the image reference - img_ref = f"![{icon_id}](img/icons/{icon_id}.svg.png)" - - # Create table row - row = f"| {img_ref} | `{icon_id}` |" - rows.append(row) - - return rows - - -def update_icon_reference_file(file_path: str, new_rows: List[str]) -> None: - """Update the icon reference markdown file with new icon table.""" - with open(file_path, 'r', encoding='utf-8') as f: - content = f.read() - - # Find the start of the icon reference table - table_start_pattern = r'(\| Icon\s+\| Identifier\s+\|\n\|[-\s]+\|[-\s]+\|)\n' - table_start_match = re.search(table_start_pattern, content) - - if not table_start_match: - print("Could not find icon reference table in the file") - return - - # Find the end of the table (next heading or end of file) - table_end_pattern = r'\n(?=\n##|\n###|\Z)' - table_end_match = re.search(table_end_pattern, content[table_start_match.end():]) - - if table_end_match: - table_end_pos = table_start_match.end() + table_end_match.start() - else: - table_end_pos = len(content) - - # Replace the table content - new_table_content = '\n'.join(new_rows) - new_content = ( - content[:table_start_match.end()] + - new_table_content + - '\n' + - content[table_end_pos:] - ) - - with open(file_path, 'w', encoding='utf-8') as f: - f.write(new_content) - - -def build_icon_url(version: str) -> str: - """Build the URL for the icon file based on version.""" - base_url = "https://raw.githubusercontent.com/ibexa/admin-ui-assets/refs/tags" - return f"{base_url}/v{version}/src/bundle/Resources/public/vendors/ids-assets/dist/img/all-icons.svg" - - -def download_icon_file(version: str, output_path: str) -> None: - """Download the icon file from the remote repository.""" - url = build_icon_url(version) - - print(f"Downloading icon file from: {url}") - - try: - urllib.request.urlretrieve(url, output_path) - print(f"Successfully downloaded to: {output_path}") - except urllib.error.HTTPError as e: - print(f"Error downloading file: HTTP {e.code} - {e.reason}") - print(f"URL: {url}") - sys.exit(1) - except urllib.error.URLError as e: - print(f"Error downloading file: {e.reason}") - sys.exit(1) - except Exception as e: - print(f"Error downloading file: {e}") - sys.exit(1) - - -def main(): - """Main function to update the icon reference.""" - # Parse command line arguments - parser = argparse.ArgumentParser( - description="Update Icon Reference documentation with icons from remote SVG file" - ) - parser.add_argument( - "version", - help="Version tag to download icons from (e.g., 5.0.0-rc1)" - ) - parser.add_argument( - "--keep-svg", - action="store_true", - help="Keep the downloaded SVG file after processing" - ) - - args = parser.parse_args() - - # Paths - svg_path = f"docs/templating/twig_function_reference/img/ibexa-icons-{args.version}.svg" - md_path = "docs/templating/twig_function_reference/icon_twig_functions.md" - icons_dir = "docs/templating/twig_function_reference/img/icons" - - # Download the icon file - download_icon_file(args.version, svg_path) - - try: - print(f"Processing SVG file: {svg_path}") - - # Extract icon IDs - icon_ids = extract_icon_ids_from_svg(svg_path) - print(f"Found {len(icon_ids)} icons") - - # Generate PNG images - generate_png_images(svg_path, icon_ids, icons_dir) - - # Generate table rows - table_rows = generate_icon_table_rows(icon_ids) - - # Update the markdown file - print(f"Updating documentation file: {md_path}") - update_icon_reference_file(md_path, table_rows) - - print("Icon reference documentation updated successfully!") - print(f"Icons processed: {len(icon_ids)}") - - finally: - # Clean up the downloaded SVG file unless --keep-svg is specified - if not args.keep_svg and os.path.exists(svg_path): - os.remove(svg_path) - print(f"Cleaned up downloaded file: {svg_path}") - - -if __name__ == "__main__": - main()