From 4e76c871a128bb16e2a7c99e970de074e518fef6 Mon Sep 17 00:00:00 2001 From: halaya Date: Mon, 17 Mar 2025 13:44:12 +0100 Subject: [PATCH 01/10] Task-77677: Create FB maintenance and update projects versions/dependencies --- component/api/pom.xml | 2 +- component/common/pom.xml | 2 +- component/core/pom.xml | 2 +- component/notification/pom.xml | 2 +- component/oauth-auth/pom.xml | 2 +- component/pom.xml | 2 +- component/service/pom.xml | 2 +- component/web/pom.xml | 2 +- pom.xml | 6 +++--- webapp/pom.xml | 2 +- 10 files changed, 12 insertions(+), 12 deletions(-) diff --git a/component/api/pom.xml b/component/api/pom.xml index cc1963c8843..f124e2c3c83 100644 --- a/component/api/pom.xml +++ b/component/api/pom.xml @@ -22,7 +22,7 @@ social-component io.meeds.social - 7.3.x-SNAPSHOT + 7.3.x-maintenance-SNAPSHOT social-component-api Meeds:: PLF:: Social API diff --git a/component/common/pom.xml b/component/common/pom.xml index d997d1baeb1..3a76ed94f5f 100644 --- a/component/common/pom.xml +++ b/component/common/pom.xml @@ -22,7 +22,7 @@ social-component io.meeds.social - 7.3.x-SNAPSHOT + 7.3.x-maintenance-SNAPSHOT io.meeds.social social-component-common diff --git a/component/core/pom.xml b/component/core/pom.xml index 916070138fc..8f18ddf45d3 100644 --- a/component/core/pom.xml +++ b/component/core/pom.xml @@ -22,7 +22,7 @@ social-component io.meeds.social - 7.3.x-SNAPSHOT + 7.3.x-maintenance-SNAPSHOT social-component-core Meeds:: PLF:: Social Core Component diff --git a/component/notification/pom.xml b/component/notification/pom.xml index 2ca9bbaac27..35a6b4f1ea5 100644 --- a/component/notification/pom.xml +++ b/component/notification/pom.xml @@ -22,7 +22,7 @@ social-component io.meeds.social - 7.3.x-SNAPSHOT + 7.3.x-maintenance-SNAPSHOT social-component-notification Meeds:: PLF:: Social Notification Component diff --git a/component/oauth-auth/pom.xml b/component/oauth-auth/pom.xml index c7bb2a3e80f..6fc5359ee0b 100644 --- a/component/oauth-auth/pom.xml +++ b/component/oauth-auth/pom.xml @@ -21,7 +21,7 @@ social-component io.meeds.social - 7.3.x-SNAPSHOT + 7.3.x-maintenance-SNAPSHOT 4.0.0 diff --git a/component/pom.xml b/component/pom.xml index b5976751ba8..4138bbb02cb 100644 --- a/component/pom.xml +++ b/component/pom.xml @@ -22,7 +22,7 @@ social io.meeds.social - 7.3.x-SNAPSHOT + 7.3.x-maintenance-SNAPSHOT social-component pom diff --git a/component/service/pom.xml b/component/service/pom.xml index c6b52444ca4..0b8aa3c8aec 100644 --- a/component/service/pom.xml +++ b/component/service/pom.xml @@ -22,7 +22,7 @@ social-component io.meeds.social - 7.3.x-SNAPSHOT + 7.3.x-maintenance-SNAPSHOT social-component-service Meeds:: PLF:: Social Service Component diff --git a/component/web/pom.xml b/component/web/pom.xml index 90866efe91e..4e2dc359a26 100644 --- a/component/web/pom.xml +++ b/component/web/pom.xml @@ -22,7 +22,7 @@ social-component io.meeds.social - 7.3.x-SNAPSHOT + 7.3.x-maintenance-SNAPSHOT io.meeds.social social-component-web diff --git a/pom.xml b/pom.xml index ab09c7291e8..557d51871e9 100644 --- a/pom.xml +++ b/pom.xml @@ -27,7 +27,7 @@ io.meeds.social social - 7.3.x-SNAPSHOT + 7.3.x-maintenance-SNAPSHOT pom Meeds:: PLF:: Social Meeds Social - Enterprise Social Networking @@ -45,8 +45,8 @@ - 7.3.x-SNAPSHOT - 7.3.x-SNAPSHOT + 7.3.x-maintenance-SNAPSHOT + 7.3.x-maintenance-SNAPSHOT meeds-io diff --git a/webapp/pom.xml b/webapp/pom.xml index 4c6ca6afe37..6c440787426 100644 --- a/webapp/pom.xml +++ b/webapp/pom.xml @@ -22,7 +22,7 @@ io.meeds.social social - 7.3.x-SNAPSHOT + 7.3.x-maintenance-SNAPSHOT social-webapp war From 1eb14d4124b4d8882e4819a534b998f90bdf9cb9 Mon Sep 17 00:00:00 2001 From: Anwar khanfir <93767376+akhanfir@users.noreply.github.com> Date: Fri, 17 Jul 2026 09:43:43 +0100 Subject: [PATCH 02/10] Fix: Duplicate link declarations on avatar and text for requests to review in the spaces directory - EXO-87925 (#5885) The avatar becomes a non-focusable decorative element, and only the name (the text) remains the clickable/accessible link to the profile. --- .../components/space-card/menu/SpaceRoleListItem.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/webapp/src/main/webapp/vue-apps/spaces-list-components/components/space-card/menu/SpaceRoleListItem.vue b/webapp/src/main/webapp/vue-apps/spaces-list-components/components/space-card/menu/SpaceRoleListItem.vue index d8787f6ccfb..f458da2757a 100644 --- a/webapp/src/main/webapp/vue-apps/spaces-list-components/components/space-card/menu/SpaceRoleListItem.vue +++ b/webapp/src/main/webapp/vue-apps/spaces-list-components/components/space-card/menu/SpaceRoleListItem.vue @@ -29,6 +29,7 @@ From ff40ac5f1d3789d3da222dcd117b03e13d0d2f1b Mon Sep 17 00:00:00 2001 From: Anwar khanfir <93767376+akhanfir@users.noreply.github.com> Date: Fri, 17 Jul 2026 09:55:11 +0100 Subject: [PATCH 03/10] Fix: Uncontrollable Additional Content Generated During Space Creation - EXO-88253 (#5887) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The two focusable elements (card + name) are Vuetify v-cards rather than divs, to benefit from the outline: none already integrated into the .v-card class (avoids the browser's default focus outline which was hiding our custom border) — without adding any CSS/style specific to this component. --- .../space-form/components/SpaceFormDrawer.vue | 49 +++++++++++++++---- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/webapp/src/main/webapp/vue-apps/space-form/components/SpaceFormDrawer.vue b/webapp/src/main/webapp/vue-apps/space-form/components/SpaceFormDrawer.vue index d67a5247fa3..e776761508e 100644 --- a/webapp/src/main/webapp/vue-apps/space-form/components/SpaceFormDrawer.vue +++ b/webapp/src/main/webapp/vue-apps/space-form/components/SpaceFormDrawer.vue @@ -51,23 +51,36 @@ :key="item.id" class="space-template-card col-6 mt-0 mb-4 mx-0 ps-4 pa-0" height="136" - flat - @click="handleAddNewSpace(item.id, templates, parentSpaceId)"> + flat> -
+
{{ item.icon }}
-
+ class="mb-auto full-width" + flat + tabindex="0" + role="button"> {{ item.name }} -
+
+ v-show="hover || focusedDetailsId === item.id" + class="absolute-full-size text-start pa-2 border-radius mask-color">
@@ -80,7 +93,7 @@
-
+
@@ -281,6 +294,8 @@ export default { parentSpacesSize: 0, selectedParentSpace: null, parentSpaceId: null, + focusedCardId: null, + focusedDetailsId: null, }), computed: { drawerTitle() { @@ -448,6 +463,22 @@ export default { document.removeEventListener('addNewSpaceWithAppId', this.openByAppId); }, methods: { + focusTemplateCard(item, event) { + this.focusedCardId = item.id; + this.focusedDetailsId = event.target === event.currentTarget ? null : item.id; + }, + blurTemplateCard(item, event) { + if (!event.currentTarget.contains(event.relatedTarget)) { + this.focusedCardId = null; + this.focusedDetailsId = null; + } + }, + escapeTemplateCard(item, event) { + if (this.focusedDetailsId === item.id) { + event.stopPropagation(); + event.target.blur(); + } + }, async handleAddNewSpace(templateId, spaceTemplates, parentSpaceId, isParentSpaceSelection) { this.templateId = templateId; this.parentSpaceId = parentSpaceId; From 2d4c0217bbc7fa849cd12715c50de8329d72bd1e Mon Sep 17 00:00:00 2001 From: Anwar khanfir <93767376+akhanfir@users.noreply.github.com> Date: Tue, 21 Jul 2026 09:49:42 +0100 Subject: [PATCH 04/10] fix: Space directory filter field hasn't a label - EXO-88604 (#5904) Before this change, when accessing the space directory and clicking the filter button, the filter field had no aria-label/title, making it inaccessible to screen readers. To fix this problem, add aria-label/title=`Filter by name or description to the filter field` and update its placeholder to `Search for a space`. After this change, the filter field is properly labeled for accessibility --- .../locale/portlet/social/SpacesListApplication_en.properties | 1 + .../application-toolbar/components/ApplicationToolbar.vue | 3 +++ .../components/toolbar/SpacesToolbar.vue | 3 ++- 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/webapp/src/main/resources/locale/portlet/social/SpacesListApplication_en.properties b/webapp/src/main/resources/locale/portlet/social/SpacesListApplication_en.properties index af647a47b6b..f138baf79f1 100644 --- a/webapp/src/main/resources/locale/portlet/social/SpacesListApplication_en.properties +++ b/webapp/src/main/resources/locale/portlet/social/SpacesListApplication_en.properties @@ -10,6 +10,7 @@ spacesList.label.members={0} Members spacesList.label.oneMember=1 Member spacesList.label.SpaceMembers=Members spacesList.label.filterSpaces=Filter by name or description +spacesList.label.filterSpaces.placeholder=Search for a space spacesList.label.filterSpacesByName=Filter by name spacesList.label.spacesSize={0} spaces listed spacesList.label.ok=OK diff --git a/webapp/src/main/webapp/vue-apps/application-toolbar/components/ApplicationToolbar.vue b/webapp/src/main/webapp/vue-apps/application-toolbar/components/ApplicationToolbar.vue index 3346da32ffb..d51ebbb4ead 100644 --- a/webapp/src/main/webapp/vue-apps/application-toolbar/components/ApplicationToolbar.vue +++ b/webapp/src/main/webapp/vue-apps/application-toolbar/components/ApplicationToolbar.vue @@ -135,6 +135,8 @@ ref="applicationToolbarFilterInput" v-model="term" :placeholder="rightTextFilter.placeholder" + :aria-label="rightTextFilter.ariaLabel || rightTextFilter.placeholder" + :title="rightTextFilter.ariaLabel || rightTextFilter.placeholder" :disabled="rightTextFilter.disabled" :autofocus="autofocusTextFilter" :height="isCompact && 24 || 36" @@ -268,6 +270,7 @@ export default { maxWidth: 'unset', minCharacters: 3, placeholder: 'example', + ariaLabel: 'Item', tooltip: 'Item', }), }, diff --git a/webapp/src/main/webapp/vue-apps/spaces-list-components/components/toolbar/SpacesToolbar.vue b/webapp/src/main/webapp/vue-apps/spaces-list-components/components/toolbar/SpacesToolbar.vue index 698fa3826a5..4947e39e4dd 100644 --- a/webapp/src/main/webapp/vue-apps/spaces-list-components/components/toolbar/SpacesToolbar.vue +++ b/webapp/src/main/webapp/vue-apps/spaces-list-components/components/toolbar/SpacesToolbar.vue @@ -23,7 +23,8 @@ id="spacesListToolbar" :right-text-filter="{ minCharacters: 3, - placeholder: $t('spacesList.label.filterSpaces'), + placeholder: $t('spacesList.label.filterSpaces.placeholder'), + ariaLabel: $t('spacesList.label.filterSpaces'), tooltip: $t('spacesList.label.filterSpaces') }" :right-filter-button="displayRightFilter && { From 2b7e27147a8dcf65f011bc5ddf0792552be52d6b Mon Sep 17 00:00:00 2001 From: Anwar khanfir <93767376+akhanfir@users.noreply.github.com> Date: Tue, 21 Jul 2026 09:58:26 +0100 Subject: [PATCH 05/10] fix: User directory filter field hasn't a label - EXO-88603 (#5903) Before this change, when accessing the user directory and clicking the filter button, the filter field had no aria-label/title, making it inaccessible to screen readers. To fix this problem, add aria-label/title=`Filter by name to the filter field` and update its placeholder to `Search for a user`. After this change, the filter field is properly labeled for accessibility. --- .../locale/portlet/social/PeopleListApplication_en.properties | 1 + .../webapp/vue-apps/people-list/components/PeopleToolbar.vue | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/webapp/src/main/resources/locale/portlet/social/PeopleListApplication_en.properties b/webapp/src/main/resources/locale/portlet/social/PeopleListApplication_en.properties index 38bac0c6345..e559cc122d0 100644 --- a/webapp/src/main/resources/locale/portlet/social/PeopleListApplication_en.properties +++ b/webapp/src/main/resources/locale/portlet/social/PeopleListApplication_en.properties @@ -33,6 +33,7 @@ peopleList.title.spacesCount=Spaces peopleList.title.usersToInvite=Invite users peopleList.label.peopleCount=Showing {0} results peopleList.label.filterPeople=Filter by name +peopleList.label.filterPeople.placeholder=Search for a user peopleList.label.filter=Filter peopleList.label.filter.all=Everyone peopleList.label.filter.connections=My Network diff --git a/webapp/src/main/webapp/vue-apps/people-list/components/PeopleToolbar.vue b/webapp/src/main/webapp/vue-apps/people-list/components/PeopleToolbar.vue index 1c56c23c907..4e53eef1ef8 100644 --- a/webapp/src/main/webapp/vue-apps/people-list/components/PeopleToolbar.vue +++ b/webapp/src/main/webapp/vue-apps/people-list/components/PeopleToolbar.vue @@ -24,7 +24,8 @@ id="peopleListApplication" :right-text-filter="{ minCharacters: 3, - placeholder: $t('peopleList.label.filterPeople'), + placeholder: $t('peopleList.label.filterPeople.placeholder'), + ariaLabel: $t('peopleList.label.filterPeople'), tooltip: $t('peopleList.label.filterPeople') }" :right-filter-button="{ From 2948d3ee60beb97f85d5fb4c21de0e3dc9479f87 Mon Sep 17 00:00:00 2001 From: Anwar khanfir <93767376+akhanfir@users.noreply.github.com> Date: Tue, 21 Jul 2026 10:12:06 +0100 Subject: [PATCH 06/10] fix: Search and tag filter fields haven't labels - EXO-88602 (#5902) Before this change, when access to note application and click on the fiter button, the filter field hasn't a label. After this change, add aria-label/title=`Search for content to the search field` and update its placeholder to `Start searching content...`, and add aria-label/title=`Filter by tag name to the tag filter field`. --- .../src/main/resources/locale/portlet/Portlets_en.properties | 4 +++- .../main/webapp/vue-apps/search/components/SearchToolbar.vue | 5 +++++ .../search/components/searchOptions/SearchTagList.vue | 2 ++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/webapp/src/main/resources/locale/portlet/Portlets_en.properties b/webapp/src/main/resources/locale/portlet/Portlets_en.properties index 6a052faf2e7..f6e6c4c0930 100644 --- a/webapp/src/main/resources/locale/portlet/Portlets_en.properties +++ b/webapp/src/main/resources/locale/portlet/Portlets_en.properties @@ -716,7 +716,8 @@ GroupsManagement.error.invalidField=The "{0}" field must start with a character ##################################################################################### # Search # ##################################################################################### -Search.label.inputPlaceHolder=Search for content... +Search.label.inputPlaceHolder=Start searching content... +Search.label.ariaLabel=Search for content Search.label.inProgress=Search in progress Search.button.tooltip=Search Search.button.tooltip.shortcut=(Ctrl + Shift + f) @@ -807,6 +808,7 @@ Favorite.tooltip.ErrorDeletingFavorite=An error occurred while deleting the {0} Tag.tooltip.startSearch=Start a search based on this tag Tag.search.button=Tags Tag.search.placeholder=Start typing to search a Tag +Tag.search.ariaLabel=Filter by tag name Tag.last.added=Last tags added ##################################################################################### diff --git a/webapp/src/main/webapp/vue-apps/search/components/SearchToolbar.vue b/webapp/src/main/webapp/vue-apps/search/components/SearchToolbar.vue index 0a37b39543b..7f7836e2d96 100644 --- a/webapp/src/main/webapp/vue-apps/search/components/SearchToolbar.vue +++ b/webapp/src/main/webapp/vue-apps/search/components/SearchToolbar.vue @@ -5,6 +5,8 @@ id="searchInput" v-model="term" :placeholder="searchInputPlaceholder" + :aria-label="searchInputAriaLabel" + :title="searchInputAriaLabel" rounded clearable clear-icon="fas fa-times fa-1x" @@ -54,6 +56,9 @@ export default { computed: { searchInputPlaceholder() { return this.$t('Search.label.inputPlaceHolder', {0: eXo.env?.portal?.companyName}); + }, + searchInputAriaLabel() { + return this.$t('Search.label.ariaLabel'); } }, watch: { diff --git a/webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchTagList.vue b/webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchTagList.vue index d91a7afe887..e6fd85c3981 100644 --- a/webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchTagList.vue +++ b/webapp/src/main/webapp/vue-apps/search/components/searchOptions/SearchTagList.vue @@ -30,6 +30,8 @@ v-model="query" autofocus :placeholder="$t('Tag.search.placeholder')" + :aria-label="$t('Tag.search.ariaLabel')" + :title="$t('Tag.search.ariaLabel')" class="px-4" />
{{ $t('Tag.last.added') }} From 2fef65e5c2df187d7e124c1ef8c213de2e018d91 Mon Sep 17 00:00:00 2001 From: Anwar khanfir <93767376+akhanfir@users.noreply.github.com> Date: Tue, 21 Jul 2026 10:24:04 +0100 Subject: [PATCH 07/10] fix: the home page isn't displayed - EXO-88361 (#5901) Before this change, when userA make spaceX notes page as him own home page and USerA user an url that generates page-not-found then userA clicks on Back Home button, /dw page is displayed. To fix this problem, change the default link to home link in the PageNotFound. After this change, the home page is displayed. --- .../webapp/vue-apps/page-not-found/components/PageNotFound.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/src/main/webapp/vue-apps/page-not-found/components/PageNotFound.vue b/webapp/src/main/webapp/vue-apps/page-not-found/components/PageNotFound.vue index 2d9162d2145..32e33c8b197 100644 --- a/webapp/src/main/webapp/vue-apps/page-not-found/components/PageNotFound.vue +++ b/webapp/src/main/webapp/vue-apps/page-not-found/components/PageNotFound.vue @@ -50,7 +50,7 @@ export default { computed: { defaultLink() { - return `${eXo.env.portal.context}/${eXo.env.portal.metaPortalName}`; + return eXo.env.portal.homeLink || `${eXo.env.portal.context}/${eXo.env.portal.metaPortalName}`; }, }, mounted() { From 858273a726e904361b38f5d3a57d970aeaa17706 Mon Sep 17 00:00:00 2001 From: Anwar khanfir <93767376+akhanfir@users.noreply.github.com> Date: Thu, 23 Jul 2026 17:37:35 +0100 Subject: [PATCH 08/10] Fix: Space directory filter field doesn't have a label - EXO-88286 (#5908) Before this change, when sending a URL in chat or tasks and the link is displayed correctly, then clicking on the link, the URL opened is one that doesn't exist and a 404 page is displayed. To fix this problem, the encodeURI call is removed; the raw URL, already correctly encoded as returned by match.getUrl(), is used, consistent with Utils.js:toLinkUrl, which already works without this additional encoding. After this change, the link opens the correct URL. --- webapp/src/main/webapp/js/ExtendedDomPurify.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webapp/src/main/webapp/js/ExtendedDomPurify.js b/webapp/src/main/webapp/js/ExtendedDomPurify.js index e2ae04e3bd7..552c5b89ae2 100644 --- a/webapp/src/main/webapp/js/ExtendedDomPurify.js +++ b/webapp/src/main/webapp/js/ExtendedDomPurify.js @@ -43,7 +43,7 @@ case 'url' : const url = match.getUrl(); const tag = match.buildTag(); - tag.setAttr('href', encodeURI(url)); + tag.setAttr('href', url); if (match.getUrl().indexOf('/') === 0 || match.getUrl().indexOf(window.location.origin) === 0) { return true; } else { From f05f262a294676938d505161b9255efd8d341dd2 Mon Sep 17 00:00:00 2001 From: Anwar khanfir <93767376+akhanfir@users.noreply.github.com> Date: Fri, 24 Jul 2026 09:45:49 +0100 Subject: [PATCH 09/10] fix: Space directory filter field hasn't a label - EXO-88604 (#5910) Before this change, the filter field showed a custom Vuetify tooltip in addition to the native title attribute already added for accessibility. To fix this, the custom tooltip has been removed from the shared toolbar component, along with its now-unused configuration. After this change, the filter field relies solely on the native tooltip. --- .../components/ApplicationToolbar.vue | 42 +++++++------------ .../people-list/components/PeopleToolbar.vue | 3 +- .../components/toolbar/SpacesToolbar.vue | 3 +- 3 files changed, 18 insertions(+), 30 deletions(-) diff --git a/webapp/src/main/webapp/vue-apps/application-toolbar/components/ApplicationToolbar.vue b/webapp/src/main/webapp/vue-apps/application-toolbar/components/ApplicationToolbar.vue index d51ebbb4ead..41d5e06c0d8 100644 --- a/webapp/src/main/webapp/vue-apps/application-toolbar/components/ApplicationToolbar.vue +++ b/webapp/src/main/webapp/vue-apps/application-toolbar/components/ApplicationToolbar.vue @@ -128,28 +128,22 @@ :max-width="rightTextFilter.maxWidth" :class="expandFilter && 'flex-grow-1'" flat> - - - {{ rightTextFilter.tooltip }} - +