From 307050f00bfded026d0a68ab1000f4cb5c7889b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Tue, 25 Nov 2025 13:01:41 +0100 Subject: [PATCH 1/5] [TMP] TODO --- todo.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 todo.md diff --git a/todo.md b/todo.md new file mode 100644 index 0000000000..3d95051664 --- /dev/null +++ b/todo.md @@ -0,0 +1,9 @@ +TODO: + +1) Remove Safari mention +2) Add workflow mention +3) Add steps for setting up RTE +4) Policies +5) Describe the workflow when RTE T&C change +6) Reorganize card page +7) Dashboard changes From c2ffbc781f15981c0d053e4f282065b5567f7a1b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Tue, 25 Nov 2025 13:04:09 +0100 Subject: [PATCH 2/5] Removed Clipboard API mention --- .../collaborative_editing/collaborative_editing_guide.md | 5 ----- todo.md | 5 ++++- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/docs/content_management/collaborative_editing/collaborative_editing_guide.md b/docs/content_management/collaborative_editing/collaborative_editing_guide.md index 163b28ed49..fd853134a4 100644 --- a/docs/content_management/collaborative_editing/collaborative_editing_guide.md +++ b/docs/content_management/collaborative_editing/collaborative_editing_guide.md @@ -25,11 +25,6 @@ Collaborative editing is an opt-in available as an LTS update starting with the To start using Collaborative editing, you must first install the required packages and perform initial configuration. To use Real-time editing feature, you must make arrangements with [[= product_name_base =]], and accept Terms & Conditions and Service Level Agreement in the Support Portal. -## Prerequisites - -To use the **Copy link** option, which allows you to copy a link to the clipboard and share it through communication channels with other users, the Clipboard API is required. -As a result, this option may not work in some browsers, such as Safari. - ## How does collaboration work ### Content preview diff --git a/todo.md b/todo.md index 3d95051664..966b183bf7 100644 --- a/todo.md +++ b/todo.md @@ -1,9 +1,12 @@ TODO: -1) Remove Safari mention 2) Add workflow mention 3) Add steps for setting up RTE 4) Policies 5) Describe the workflow when RTE T&C change 6) Reorganize card page 7) Dashboard changes + +PR Desc: + +1) Removed Clipboard API mention after https://github.com/ibexa/share/pull/154 From 83da25fcca5faddc64af1a68be47b12783af843c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Mon, 1 Dec 2025 13:55:36 +0100 Subject: [PATCH 3/5] [Collaboration] Follow-up --- .../event_reference/collaboration_events.md | 11 ++++ .../collaborative_editing.md | 18 +++++- .../collaborative_editing_api.md | 4 +- .../collaborative_editing_guide.md | 9 ++- .../install_collaborative_editing.md | 56 ++++++++++++++++++- docs/permissions/limitation_reference.md | 36 ++++++++++++ docs/permissions/permission_use_cases.md | 2 + docs/permissions/policies.md | 14 +++++ .../collaboration_criteria.md | 4 ++ .../collaboration_sort_clauses.md | 4 ++ todo.md | 12 ---- 11 files changed, 150 insertions(+), 20 deletions(-) delete mode 100644 todo.md diff --git a/docs/api/event_reference/collaboration_events.md b/docs/api/event_reference/collaboration_events.md index ff7819b4b8..be123aa4ec 100644 --- a/docs/api/event_reference/collaboration_events.md +++ b/docs/api/event_reference/collaboration_events.md @@ -1,11 +1,15 @@ --- description: Events that are triggered when working with collaborative editing feature. page_type: reference +editions: + - lts-update month_change: true --- # Collaboration events +You can use the following events to extend the [collaborative editing](collaborative_editing.md) feature: + ## Invitation events | Event | Dispatched by | @@ -41,3 +45,10 @@ month_change: true |[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/content_management/collaborative_editing/collaborative_editing.md b/docs/content_management/collaborative_editing/collaborative_editing.md index 4fac6978c4..5f902dce32 100644 --- a/docs/content_management/collaborative_editing/collaborative_editing.md +++ b/docs/content_management/collaborative_editing/collaborative_editing.md @@ -17,8 +17,22 @@ Real-time collaboration syncs changes instantly and shows user avatars and color 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/install_collaborative_editing", -"content_management/collaborative_editing/collaborative_editing_api" -], columns=3) =]] +("permissions/policies#collaborative-editing", "Policies", "Learn about the available Collaborative editing policies"), +("https://doc.ibexa.co/projects/userguide/en/4.6/content_management/collaborative_editing/"), +], columns=2) =]] + +## Development + +[[= cards([ +"content_management/collaborative_editing/collaborative_editing_api", +"api/event_reference/collaboration_events", +("https://doc.ibexa.co/en/4.6/api/rest_api/rest_api_reference/rest_api_reference.html#collaborative-editing", "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 index 45cc3ca930..7899ecd1ea 100644 --- a/docs/content_management/collaborative_editing/collaborative_editing_api.md +++ b/docs/content_management/collaborative_editing/collaborative_editing_api.md @@ -47,6 +47,8 @@ You can find an existing session with [`SessionService::findSessions()`](/api/ph [[= include_file('code_samples/collaboration/src/Command/ManageSessionsCommand.php', 86, 89) =]] ``` +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): @@ -157,7 +159,7 @@ You can delete an invitation with [`InvitationService::deleteInvitation()`](/api You can find an invitation with [`InvitationService::findInvitations()`](/api/php_api/php_api_reference/classes/Ibexa-Contracts-Collaboration-InvitationServiceInterface.html#method_findInvitations). -To learn more about the available search options, see Search Criteria and Sort Clauses for Collaborative editing. +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 diff --git a/docs/content_management/collaborative_editing/collaborative_editing_guide.md b/docs/content_management/collaborative_editing/collaborative_editing_guide.md index fd853134a4..d23bd65366 100644 --- a/docs/content_management/collaborative_editing/collaborative_editing_guide.md +++ b/docs/content_management/collaborative_editing/collaborative_editing_guide.md @@ -23,7 +23,7 @@ The system automatically tracks changes, allowing seamless collaboration within Collaborative editing is an opt-in available as an LTS update starting with the v4.6.24 in all [[= product_name =]] editions. To start using Collaborative editing, you must first install the required packages and perform initial configuration. -To use Real-time editing feature, you must make arrangements with [[= product_name_base =]], and accept Terms & Conditions and Service Level Agreement in the Support Portal. +To use Real-time editing feature, you must make arrangements with [[= product_name_base =]], and accept Terms & Conditions and Service Level Agreement in the Service Portal. ## How does collaboration work @@ -46,13 +46,17 @@ Collaboration session begins when first invited user accepts the invitation and To start collaborative editing, you need to invite collaborators using the **Share** button. -You can invite other users to join the session, both internal and external: +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 means, for example by [workflow](workflow.md), doesn't allow inviting other users. + ![Collaborative editing - invitation](img/collaboration_invitation.png) You can change the users access or remove it at any time. @@ -87,7 +91,6 @@ Collaboration is available for the following content types with Rich Text fields - Article - Folder - Form -- Product category - Custom content types All changes made by collaborators are automatically saved when owner publishes or saves content. diff --git a/docs/content_management/collaborative_editing/install_collaborative_editing.md b/docs/content_management/collaborative_editing/install_collaborative_editing.md index 4473aba261..a869a29045 100644 --- a/docs/content_management/collaborative_editing/install_collaborative_editing.md +++ b/docs/content_management/collaborative_editing/install_collaborative_editing.md @@ -166,8 +166,60 @@ ibexa: 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) +- `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 confugiration above, the **Share** button is displayed for any content that belongs to the `Content` group, except for `tag` and `product_category_tag` content types. +In the example configuration above, the **Share** button is displayed for any content that belongs to the `Content` group, except for `tag` and `product_category_tag` content types. + +You can also control which user content types can use the feature by using 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]([[= user_doc =]]/content_management/collaborative_editing/work_with_collaborative_editing/). +To add the real-time editing capabilities, continue with the instruction below. + +## Configure real-time editing + +You must have an arrangment with Ibexa 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, go to your Service Portal and select **Create environment** (this requires the **Portal administrator** access level). + +With the environment created, you can continue 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 +``` + +## Accept new Terms of Service + +Real-Time Collaboration service is only available after accepting its Terms and Conditions. +When Ibexa releases a new version of this document, the new version must be accepted before the appointed 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/permissions/limitation_reference.md b/docs/permissions/limitation_reference.md index a33853721a..a24aa8f94d 100644 --- a/docs/permissions/limitation_reference.md +++ b/docs/permissions/limitation_reference.md @@ -63,6 +63,42 @@ 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 [[% include 'snippets/lts-update_badge.md' %]] + +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 whether the user can share drafts + +#### Possible values + +|Value|UI value|Description| +|------|------|------| +|"self"|"self"|??? | + +### Collaborative editing Scope limitation + +The Scope limitation specifies whether the user can share the preview and/or 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| + ## Discount Owner limitation [[% include 'snippets/lts-update_badge.md' %]] [[% include 'snippets/commerce_badge.md' %]] The Discount Owner (`DiscountOwner`) limitation specifies whether the user can interact with a [discount](discounts.md). diff --git a/docs/permissions/permission_use_cases.md b/docs/permissions/permission_use_cases.md index 73b34f390f..645b5088f7 100644 --- a/docs/permissions/permission_use_cases.md +++ b/docs/permissions/permission_use_cases.md @@ -133,6 +133,8 @@ 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 LTS Update](collaborative_editing.md), see the [collaborative editing policies](policies.md#content-collaborative-editing) for collaborative editing without defining 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 b651676f44..b457e4ab5a 100644 --- a/docs/permissions/policies.md +++ b/docs/permissions/policies.md @@ -234,6 +234,14 @@ The discount policies decide which actions can be executed by given user or user | | `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 [[% include 'snippets/lts-update_badge.md' %]] + +| 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 | @@ -292,6 +300,12 @@ The discount policies decide which actions can be executed by given user or user | | `edit` | edit a product | [Product Type](limitation_reference.md#product-type-limitation)
[Language](limitation_reference.md#language-limitation) | | | `view` | view products listed in the product catalog | [Product Type](limitation_reference.md#product-type-limitation) | +#### Product collaborative editing [[% include 'snippets/lts-update_badge.md' %]] + +| 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/search/collaboration_search_reference/collaboration_criteria.md b/docs/search/collaboration_search_reference/collaboration_criteria.md index 157f58906b..d3d3b09ce5 100644 --- a/docs/search/collaboration_search_reference/collaboration_criteria.md +++ b/docs/search/collaboration_search_reference/collaboration_criteria.md @@ -1,10 +1,14 @@ --- month_change: true +description: Search Criteria available for Collaboration search +editions: + - lts-update --- # 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 diff --git a/docs/search/collaboration_search_reference/collaboration_sort_clauses.md b/docs/search/collaboration_search_reference/collaboration_sort_clauses.md index 5dfee5b85b..5083c07377 100644 --- a/docs/search/collaboration_search_reference/collaboration_sort_clauses.md +++ b/docs/search/collaboration_search_reference/collaboration_sort_clauses.md @@ -1,10 +1,14 @@ --- month_change: true +description: Sort Clauses available for Collaboration search +editions: + - lts-update --- # 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 diff --git a/todo.md b/todo.md deleted file mode 100644 index 966b183bf7..0000000000 --- a/todo.md +++ /dev/null @@ -1,12 +0,0 @@ -TODO: - -2) Add workflow mention -3) Add steps for setting up RTE -4) Policies -5) Describe the workflow when RTE T&C change -6) Reorganize card page -7) Dashboard changes - -PR Desc: - -1) Removed Clipboard API mention after https://github.com/ibexa/share/pull/154 From 2b31cda5a9c1e9b42bb7a691f981e6ddbca6e01b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Tue, 2 Dec 2025 00:12:12 +0100 Subject: [PATCH 4/5] Before review fixes --- .../install_collaborative_editing.md | 2 +- docs/permissions/limitation_reference.md | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/docs/content_management/collaborative_editing/install_collaborative_editing.md b/docs/content_management/collaborative_editing/install_collaborative_editing.md index a869a29045..29365c731c 100644 --- a/docs/content_management/collaborative_editing/install_collaborative_editing.md +++ b/docs/content_management/collaborative_editing/install_collaborative_editing.md @@ -215,7 +215,7 @@ Finish the configuration by running: composer run post-install-cmd ``` -## Accept new Terms of Service +## Accepting new Terms of Service Real-Time Collaboration service is only available after accepting its Terms and Conditions. When Ibexa releases a new version of this document, the new version must be accepted before the appointed deadline. diff --git a/docs/permissions/limitation_reference.md b/docs/permissions/limitation_reference.md index a24aa8f94d..206ca580e5 100644 --- a/docs/permissions/limitation_reference.md +++ b/docs/permissions/limitation_reference.md @@ -69,17 +69,21 @@ The collaborative editing limitations specify how the user can use the [collabor ### Collaborative editing Owner limitation -The Owner limitation specifies whether the user can share drafts +The Owner limitation specifies whose drafts the user can share. +If not specified, user can share: + +- his drafts +- drafts they have been invited to collaborate on #### Possible values |Value|UI value|Description| |------|------|------| -|"self"|"self"|??? | +|"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/or editing view with other users. +The Scope limitation specifies whether the user can share the preview and editing view with other users. #### Possible values From 4e18cd76f5d0bccc8be7a14b127dcf0c79552003 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Noco=C5=84?= Date: Wed, 3 Dec 2025 11:12:50 +0100 Subject: [PATCH 5/5] Added back clipboard mention --- .../collaborative_editing/collaborative_editing_guide.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/content_management/collaborative_editing/collaborative_editing_guide.md b/docs/content_management/collaborative_editing/collaborative_editing_guide.md index d23bd65366..73d1391efd 100644 --- a/docs/content_management/collaborative_editing/collaborative_editing_guide.md +++ b/docs/content_management/collaborative_editing/collaborative_editing_guide.md @@ -25,6 +25,11 @@ Collaborative editing is an opt-in available as an LTS update starting with the To start using Collaborative editing, you must first install the required packages and perform initial configuration. To use Real-time editing feature, you must make arrangements with [[= product_name_base =]], and accept Terms & Conditions and Service Level Agreement in the Service Portal. +## Prerequisites + +To use the **Copy link** option, which allows you to copy a link to the clipboard and share it through communication channels with other users, the Clipboard API is required. +As a result, this option may not work in some browsers, such as Safari. + ## How does collaboration work ### Content preview