diff --git a/.drone.env b/.drone.env
index 11667c0290c..a3c4e868e2d 100644
--- a/.drone.env
+++ b/.drone.env
@@ -1,3 +1,3 @@
# The version of OCIS to use in pipelines that test against OCIS
-OCIS_COMMITID=8bb2ebcf4bcecd0ddfb3ce8f2cb4ba3d51be19b5
-OCIS_BRANCH=master
+OCIS_COMMITID=f99a2072d33debc7fda43f9b27ba48c01014a83b
+OCIS_BRANCH=experimental
diff --git a/changelog/unreleased/enhancement-tags-support b/changelog/unreleased/enhancement-tags-support
new file mode 100644
index 00000000000..971cbdc959f
--- /dev/null
+++ b/changelog/unreleased/enhancement-tags-support
@@ -0,0 +1,10 @@
+Enhancement: Add Tag support
+
+Managing files via tags is now possible in web, the feature is experimental and will be only available through a dedicated experimental web build.
+Beside that the web version is experimental, it also needs a special experimental ocis version.
+
+Creating Tags, tagging resources and search for tags now is possible and can be used as an alternative way of working and organizing resources.
+
+https://github.com/owncloud/web/pull/7388
+https://github.com/owncloud/web/pull/7385
+https://github.com/owncloud/web/pull/7442
diff --git a/packages/web-app-files/src/components/FilesList/ContextActions.vue b/packages/web-app-files/src/components/FilesList/ContextActions.vue
index 0fd0b2f09ea..d7c2d1f0971 100644
--- a/packages/web-app-files/src/components/FilesList/ContextActions.vue
+++ b/packages/web-app-files/src/components/FilesList/ContextActions.vue
@@ -22,6 +22,7 @@ import Rename from '../../mixins/actions/rename'
import Restore from '../../mixins/actions/restore'
import ShowActions from '../../mixins/actions/showActions'
import ShowDetails from '../../mixins/actions/showDetails'
+import ShowEditTags from '../../mixins/actions/showEditTags'
import ShowShares from '../../mixins/actions/showShares'
import SetSpaceImage from '../../mixins/spaces/actions/setImage'
import SetSpaceReadme from '../../mixins/spaces/actions/setReadme'
@@ -50,6 +51,7 @@ export default {
Restore,
ShowActions,
ShowDetails,
+ ShowEditTags,
ShowShares,
SetSpaceImage,
SetSpaceReadme,
@@ -152,6 +154,7 @@ export default {
...this.$_copy_items,
...this.$_paste_items,
...this.$_rename_items,
+ ...this.$_showEditTags_items,
...this.$_restore_items,
...this.$_acceptShare_items,
...this.$_declineShare_items,
diff --git a/packages/web-app-files/src/components/FilesList/ResourceTable.vue b/packages/web-app-files/src/components/FilesList/ResourceTable.vue
index f4a97d70194..e203bbe3c58 100644
--- a/packages/web-app-files/src/components/FilesList/ResourceTable.vue
+++ b/packages/web-app-files/src/components/FilesList/ResourceTable.vue
@@ -81,6 +81,22 @@
+
+
+
+
+ {{ tag }}
+
+
+
+ + {{ item.tags.length - 2 }}
+
+
{
@@ -401,7 +417,7 @@ export default defineComponent({
}
},
computed: {
- ...mapGetters(['configuration']),
+ ...mapGetters(['configuration', 'capabilities']),
...mapState('Files', [
'areFileExtensionsShown',
'latestSelectedId',
@@ -473,6 +489,15 @@ export default defineComponent({
alignH: 'right',
wrap: 'nowrap'
},
+ this.capabilities?.files?.tags
+ ? {
+ name: 'tags',
+ title: this.$gettext('Tags'),
+ type: 'slot',
+ alignH: 'right',
+ wrap: 'nowrap'
+ }
+ : {},
{
name: 'owner',
title: this.$gettext('Shared by'),
@@ -564,9 +589,15 @@ export default defineComponent({
},
methods: {
...mapActions('Files/sidebar', ['openWithPanel']),
+ ...mapActions('Files/sidebar', { openSidebar: 'open' }),
isResourceSelected(item) {
return this.selectedIds.includes(item.id)
},
+ getTagLink(tag) {
+ return createLocationCommon('files-common-search', {
+ query: { term: `Tags:${tag}`, provider: 'files.sdk' }
+ })
+ },
isResourceCut(resource) {
if (this.clipboardAction !== ClipboardActions.Cut) return false
return this.clipboardResources.some((r) => r.id === resource.id)
@@ -581,6 +612,9 @@ export default defineComponent({
openRenameDialog(item) {
this.$_rename_trigger({ resources: [item] })
},
+ openTagsSidebar() {
+ this.openSidebar()
+ },
openSharingSidebar(file) {
if (file.share?.shareType === ShareTypes.link.value) {
this.openWithPanel('sharing-item#linkShares')
@@ -821,6 +855,13 @@ export default defineComponent({
}
}
}
+ &-tag {
+ max-width: 80px;
+ }
+ &-tag-more {
+ cursor: pointer;
+ border: 0 !important;
+ }
&-edit-name {
display: inline-flex;
vertical-align: super;
diff --git a/packages/web-app-files/src/components/SideBar/Details/FileDetails.vue b/packages/web-app-files/src/components/SideBar/Details/FileDetails.vue
index 8712af7de1e..643083eea00 100644
--- a/packages/web-app-files/src/components/SideBar/Details/FileDetails.vue
+++ b/packages/web-app-files/src/components/SideBar/Details/FileDetails.vue
@@ -140,6 +140,17 @@
+
+ |
+
+
+
+ {{ tag }},
+
+
+
+ |
+
@@ -152,8 +163,9 @@ import { ImageDimension } from '../../../constants'
import { loadPreview } from 'web-pkg/src/helpers/preview'
import upperFirst from 'lodash-es/upperFirst'
import path from 'path'
-import { createLocationSpaces, isLocationSpacesActive } from '../../../router'
+import { createLocationSpaces, isLocationSpacesActive, createLocationCommon } from '../../../router'
import { ShareTypes } from 'web-client/src/helpers/share'
+
import {
useAccessToken,
usePublicLinkContext,
@@ -209,7 +221,7 @@ export default defineComponent({
}),
computed: {
...mapGetters('Files', ['versions', 'sharesTree', 'sharesTreeLoading']),
- ...mapGetters(['user', 'configuration']),
+ ...mapGetters(['user', 'configuration', 'capabilities']),
file() {
return this.displayedItem.value
@@ -334,6 +346,12 @@ export default defineComponent({
const displayDate = formatDateFromHTTP(this.file.mdate, this.$language.current)
return upperFirst(displayDate)
},
+ showTags() {
+ return this.capabilities?.files.tags && this.file.tags?.length
+ },
+ tagsLabel() {
+ return this.$gettext('Tags')
+ },
hasAnyShares() {
return (
this.file.shareTypes?.length > 0 ||
@@ -462,6 +480,11 @@ export default defineComponent({
this.copiedDirect = false
this.copiedEos = false
}, 550)
+ },
+ getTagLink(tag) {
+ return createLocationCommon('files-common-search', {
+ query: { term: `Tags:${tag}`, provider: 'files.sdk' }
+ })
}
}
})
@@ -476,6 +499,7 @@ export default defineComponent({
td {
max-width: 0;
width: 100%;
+ overflow-wrap: break-word;
div {
min-width: 0;
diff --git a/packages/web-app-files/src/components/SideBar/TagsPanel.vue b/packages/web-app-files/src/components/SideBar/TagsPanel.vue
new file mode 100644
index 00000000000..745662aa4a6
--- /dev/null
+++ b/packages/web-app-files/src/components/SideBar/TagsPanel.vue
@@ -0,0 +1,146 @@
+
+
+
+
+
+
+
+
+ {{ label }}
+
+
+
+
+
New
+
+
+ {{ label }}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/packages/web-app-files/src/fileSideBars.ts b/packages/web-app-files/src/fileSideBars.ts
index 1f6e4668e53..de5d748bced 100644
--- a/packages/web-app-files/src/fileSideBars.ts
+++ b/packages/web-app-files/src/fileSideBars.ts
@@ -3,6 +3,7 @@ import FileDetailsMultiple from './components/SideBar/Details/FileDetailsMultipl
import FileActions from './components/SideBar/Actions/FileActions.vue'
import FileVersions from './components/SideBar/Versions/FileVersions.vue'
import SharesPanel from './components/SideBar/Shares/SharesPanel.vue'
+import TagsPanel from './components/SideBar/TagsPanel.vue'
import NoSelection from './components/SideBar/NoSelection.vue'
import SpaceActions from './components/SideBar/Actions/SpaceActions.vue'
import SpaceDetails from './components/SideBar/Details/SpaceDetails.vue'
@@ -140,6 +141,24 @@ const panelGenerators: (({
return false
}
}),
+ ({ capabilities, highlightedFile, router, multipleSelection, rootFolder }) => ({
+ app: 'tags-item',
+ icon: 'price-tag-3',
+ iconFillType: 'line',
+ title: $gettext('Tags'),
+ component: TagsPanel,
+ componentAttrs: {},
+ get enabled() {
+ if (!capabilities?.files?.tags || multipleSelection || rootFolder) return false
+ if (typeof highlightedFile.canEditTags !== 'function' || !highlightedFile.canEditTags())
+ return false
+ return !(
+ isLocationTrashActive(router, 'files-trash-personal') ||
+ isLocationTrashActive(router, 'files-trash-spaces-project') ||
+ isLocationPublicActive(router, 'files-public-files')
+ )
+ }
+ }),
({ highlightedFile, capabilities }) => ({
app: 'space-share-item',
icon: 'group',
diff --git a/packages/web-app-files/src/helpers/resource/filter.ts b/packages/web-app-files/src/helpers/resource/filter.ts
index 83cb8752490..57608f053b5 100644
--- a/packages/web-app-files/src/helpers/resource/filter.ts
+++ b/packages/web-app-files/src/helpers/resource/filter.ts
@@ -5,7 +5,7 @@ export const filterResources = (resources: unknown[], term: string, limit?: numb
includeScore: true,
useExtendedSearch: true,
threshold: 0.3,
- keys: ['name', 'type', 'icon', 'extension']
+ keys: ['name', 'type', 'icon', 'extension', 'tags']
})
return (engine.search(term, { limit }) as any[]).map((result: any) => result.item)
diff --git a/packages/web-app-files/src/helpers/resources.ts b/packages/web-app-files/src/helpers/resources.ts
index 8a092c7f5c4..12eb7869e34 100644
--- a/packages/web-app-files/src/helpers/resources.ts
+++ b/packages/web-app-files/src/helpers/resources.ts
@@ -80,6 +80,7 @@ export function buildResource(resource): Resource {
downloadURL: resource.fileInfo[DavProperty.DownloadURL],
ownerDisplayName: resource.fileInfo[DavProperty.OwnerDisplayName],
ownerId: resource.fileInfo[DavProperty.OwnerId],
+ tags: (resource.fileInfo[DavProperty.Tags] || '').split(',').filter(Boolean),
canUpload: function () {
return this.permissions.indexOf(DavPermission.FolderCreateable) >= 0
},
@@ -98,6 +99,12 @@ export function buildResource(resource): Resource {
canCreate: function () {
return this.permissions.indexOf(DavPermission.FolderCreateable) >= 0
},
+ canEditTags: function () {
+ return (
+ this.permissions.indexOf(DavPermission.Updateable) >= 0 ||
+ this.permissions.indexOf(DavPermission.FileUpdateable) >= 0
+ )
+ },
isMounted: function () {
return this.permissions.indexOf(DavPermission.Mounted) >= 0
},
@@ -253,6 +260,9 @@ export function buildSharedResource(
resource.canShare = () => SharePermissions.share.enabled(share.permissions)
resource.canRename = () => SharePermissions.update.enabled(share.permissions)
resource.canBeDeleted = () => SharePermissions.delete.enabled(share.permissions)
+ resource.canEditTags = () =>
+ parseInt(share.state) === ShareStatus.accepted &&
+ SharePermissions.update.enabled(share.permissions)
} else {
resource.sharedWith = share.sharedWith || []
resource.shareOwner = share.uid_owner
@@ -266,6 +276,7 @@ export function buildSharedResource(
resource.canShare = () => true
resource.canRename = () => true
resource.canBeDeleted = () => true
+ resource.canEditTags = () => true
}
resource.extension = extractExtensionFromFile(resource)
diff --git a/packages/web-app-files/src/mixins/actions/showEditTags.js b/packages/web-app-files/src/mixins/actions/showEditTags.js
new file mode 100644
index 00000000000..8fefbb4baa9
--- /dev/null
+++ b/packages/web-app-files/src/mixins/actions/showEditTags.js
@@ -0,0 +1,47 @@
+import { mapActions, mapGetters } from 'vuex'
+import { isLocationTrashActive, isLocationPublicActive } from '../../router'
+import isFilesAppActive from './helpers/isFilesAppActive'
+
+export default {
+ mixins: [isFilesAppActive],
+ computed: {
+ ...mapGetters(['capabilities']),
+
+ $_showEditTags_items() {
+ return [
+ {
+ name: 'show-edit-tags',
+ icon: 'price-tag-3',
+ label: () => this.$gettext('Add or edit tags'),
+ handler: this.$_showEditTags_trigger,
+ // we don't have details in the trashbin, yet.
+ // remove trashbin route rule once we have them.
+ isEnabled: ({ resources }) => {
+ // sidebar is currently only available inside files app
+ if (!this.$_isFilesAppActive || !this.capabilities?.files?.tags) {
+ return false
+ }
+
+ if (
+ isLocationTrashActive(this.$router, 'files-trash-personal') ||
+ isLocationTrashActive(this.$router, 'files-trash-spaces-project') ||
+ isLocationPublicActive(this.$router, 'files-public-files')
+ ) {
+ return false
+ }
+ return resources.length === 1 && resources[0].canEditTags()
+ },
+ componentType: 'oc-button',
+ class: 'oc-files-actions-show-edit-tags-trigger'
+ }
+ ]
+ }
+ },
+ methods: {
+ ...mapActions('Files/sidebar', { openSidebarWithPanel: 'openWithPanel' }),
+
+ async $_showEditTags_trigger() {
+ await this.openSidebarWithPanel('tags-item')
+ }
+ }
+}
diff --git a/packages/web-app-files/src/mixins/fileActions.ts b/packages/web-app-files/src/mixins/fileActions.ts
index 721885d718b..89a742dad42 100644
--- a/packages/web-app-files/src/mixins/fileActions.ts
+++ b/packages/web-app-files/src/mixins/fileActions.ts
@@ -11,6 +11,7 @@ import DownloadArchive from './actions/downloadArchive'
import DownloadFile from './actions/downloadFile'
import Favorite from './actions/favorite'
import Move from './actions/move'
+import ShowEditTags from './actions/showEditTags'
import Navigate from './actions/navigate'
import Rename from './actions/rename'
import Restore from './actions/restore'
@@ -25,6 +26,7 @@ const actionsMixins = [
'copy',
'move',
'rename',
+ 'showEditTags',
'restore',
'delete',
'acceptShare',
@@ -46,7 +48,8 @@ export default {
Move,
Navigate,
Rename,
- Restore
+ Restore,
+ ShowEditTags
],
computed: {
...mapState(['apps']),
diff --git a/packages/web-app-files/tests/unit/components/SideBar/Details/__snapshots__/FileDetails.spec.js.snap b/packages/web-app-files/tests/unit/components/SideBar/Details/__snapshots__/FileDetails.spec.js.snap
index e86fa4884d7..0d15c4c5c0b 100644
--- a/packages/web-app-files/tests/unit/components/SideBar/Details/__snapshots__/FileDetails.spec.js.snap
+++ b/packages/web-app-files/tests/unit/components/SideBar/Details/__snapshots__/FileDetails.spec.js.snap
@@ -39,6 +39,7 @@ exports[`Details SideBar Panel displays a resource of type file on a private pag
+
@@ -86,6 +87,7 @@ exports[`Details SideBar Panel displays a resource of type file on a private pag
+
@@ -122,6 +124,7 @@ exports[`Details SideBar Panel displays a resource of type file on a private pag
+
@@ -163,6 +166,7 @@ exports[`Details SideBar Panel displays a resource of type file on a private pag
+
@@ -224,6 +228,7 @@ exports[`Details SideBar Panel displays a resource of type file on a private pag
+
@@ -260,6 +265,7 @@ exports[`Details SideBar Panel displays a resource of type file on a public page
+
@@ -316,6 +322,7 @@ exports[`Details SideBar Panel displays a resource of type file on a public page
+
@@ -352,6 +359,7 @@ exports[`Details SideBar Panel displays a resource of type folder on a private p
+
@@ -388,6 +396,7 @@ exports[`Details SideBar Panel displays a resource of type folder on a private p
+
@@ -444,6 +453,7 @@ exports[`Details SideBar Panel displays a resource of type folder on a private p
+
@@ -480,6 +490,7 @@ exports[`Details SideBar Panel displays a resource of type folder on a public pa
+
@@ -536,6 +547,7 @@ exports[`Details SideBar Panel displays a resource of type folder on a public pa
+
diff --git a/packages/web-app-search/src/portals/SearchBar.vue b/packages/web-app-search/src/portals/SearchBar.vue
index 00af1cc5c6a..34e4555d5b1 100644
--- a/packages/web-app-search/src/portals/SearchBar.vue
+++ b/packages/web-app-search/src/portals/SearchBar.vue
@@ -88,27 +88,29 @@ export default {
},
watch: {
- $route() {
- if (this.activeProvider && !this.activeProvider.available) {
- this.activeProvider = undefined
- }
- }
- },
+ $route: {
+ handler(r, o) {
+ if (!!o && this.activeProvider && !this.activeProvider.available) {
+ this.activeProvider = undefined
+ }
- mounted() {
- if (!this.availableProviders.length) {
- return
- }
+ this.$nextTick(() => {
+ if (!this.availableProviders.length) {
+ return
+ }
- const input = this.$el.getElementsByTagName('input')[0]
- const routeTerm = get(this, '$route.query.term')
+ const routeTerm = get(r, 'query.term')
+ const input = this.$el.getElementsByTagName('input')[0]
+ if (!input || !routeTerm) {
+ return
+ }
- if (!input || !routeTerm) {
- return
+ this.term = routeTerm
+ input.value = routeTerm
+ })
+ },
+ immediate: true
}
-
- this.term = routeTerm
- input.value = routeTerm
},
asyncComputed: {
diff --git a/packages/web-app-search/tests/unit/portals/SearchBar.spec.ts b/packages/web-app-search/tests/unit/portals/SearchBar.spec.ts
index ebd33231393..6c3c86248ad 100644
--- a/packages/web-app-search/tests/unit/portals/SearchBar.spec.ts
+++ b/packages/web-app-search/tests/unit/portals/SearchBar.spec.ts
@@ -89,7 +89,7 @@ describe('Search Bar portal component', () => {
})
expect(wrapper.vm.$data.activeProvider).toBeTruthy()
- ;(wrapper.vm.$options.watch.$route as any).call(wrapper.vm)
+ ;(wrapper.vm.$options.watch.$route.handler as any).call(wrapper.vm, undefined, true)
expect(wrapper.vm.$data.activeProvider).toBeFalsy()
})
test('notifies active provider to update term on input', async () => {
@@ -376,7 +376,7 @@ describe('Search Bar portal component', () => {
data: 'dummyProviderOne - 2'
})
})
- test('sets the search term and input term to the route value on mount', () => {
+ test('sets the search term and input term to the route value on mount', async () => {
wrapper = mount(SearchBar, {
localVue,
data() {
@@ -397,6 +397,8 @@ describe('Search Bar portal component', () => {
}
})
+ await wrapper.vm.$nextTick()
+
expect(wrapper.vm.$data.term).toBe('routeTerm')
expect((wrapper.get('input').element as HTMLInputElement).value).toBe('routeTerm')
})
diff --git a/packages/web-client/src/helpers/resource/types.ts b/packages/web-client/src/helpers/resource/types.ts
index e11b4499dc6..7b39a5f8818 100644
--- a/packages/web-client/src/helpers/resource/types.ts
+++ b/packages/web-client/src/helpers/resource/types.ts
@@ -24,6 +24,7 @@ export interface Resource {
sharePermissions?: number
shareTypes?: number[]
privateLink?: string
+ tags?: string[]
canCreate?(): boolean
canUpload?(): boolean
@@ -32,6 +33,7 @@ export interface Resource {
canRename?(): boolean
canBeDeleted?(): boolean
canBeRestored?(): boolean
+ canEditTags?(): boolean
isReceivedShare?(): boolean
isMounted?(): boolean
diff --git a/packages/web-pkg/src/constants/dav.ts b/packages/web-pkg/src/constants/dav.ts
index 197382fdfd5..f995850e815 100644
--- a/packages/web-pkg/src/constants/dav.ts
+++ b/packages/web-pkg/src/constants/dav.ts
@@ -20,6 +20,7 @@ export abstract class DavProperty {
static readonly ContentLength: string = '{DAV:}getcontentlength'
static readonly ContentSize: string = '{http://owncloud.org/ns}size'
static readonly LastModifiedDate: string = '{DAV:}getlastmodified'
+ static readonly Tags: string = '{http://owncloud.org/ns}tags'
static readonly ETag: string = '{DAV:}getetag'
static readonly MimeType: string = '{DAV:}getcontenttype'
static readonly ResourceType: string = '{DAV:}resourcetype'
@@ -59,7 +60,8 @@ export abstract class DavProperties {
DavProperty.ETag,
DavProperty.MimeType,
DavProperty.ResourceType,
- DavProperty.DownloadURL
+ DavProperty.DownloadURL,
+ DavProperty.Tags
]
static readonly PublicLink: DavProperty[] = DavProperties.Default.concat([
diff --git a/packages/web-runtime/package.json b/packages/web-runtime/package.json
index f0e36195c47..d87d00d6a95 100644
--- a/packages/web-runtime/package.json
+++ b/packages/web-runtime/package.json
@@ -25,7 +25,7 @@
"marked": "^4.0.12",
"oidc-client-ts": "^2.0.5",
"owncloud-design-system": "14.0.0-alpha.14",
- "owncloud-sdk": "~3.0.0-alpha.15",
+ "owncloud-sdk": "owncloud/owncloud-sdk.git#experimental",
"p-queue": "^6.6.2",
"popper-max-size-modifier": "^0.2.0",
"portal-vue": "^2.1.7",
diff --git a/tests/acceptance/features/webUIFilesActionMenu/fileFolderActionMenu.feature b/tests/acceptance/features/webUIFilesActionMenu/fileFolderActionMenu.feature
index a99efc04848..49eb0fbcaea 100644
--- a/tests/acceptance/features/webUIFilesActionMenu/fileFolderActionMenu.feature
+++ b/tests/acceptance/features/webUIFilesActionMenu/fileFolderActionMenu.feature
@@ -11,6 +11,7 @@ Feature: User can see the file or folder actions menu options
And user "Alice" has logged in using the webUI
And the user has browsed to the personal page
+ @skipOnOCIS
Scenario: observe different actions menu options on selecting different file types
Given user "Alice" has uploaded file with content "pdf file" to "lorem.pdf" in the server
And the user has reloaded the current page of the webUI
@@ -33,7 +34,7 @@ Feature: User can see the file or folder actions menu options
| preview |
| download |
-
+ @skipOnOCIS
Scenario: observe different actions menu options on selecting a folder
When the user opens the actions sidebar panel of folder "simple-folder" on the webUI
Then the app-sidebar for folder "simple-folder" should be visible on the webUI
@@ -41,3 +42,40 @@ Feature: User can see the file or folder actions menu options
| items |
| open folder |
| download |
+
+ @skipOnOC10
+ Scenario: observe different actions menu options on selecting different file types
+ Given user "Alice" has uploaded file with content "pdf file" to "lorem.pdf" in the server
+ And the user has reloaded the current page of the webUI
+ When the user opens the actions sidebar panel of file "lorem.txt" on the webUI
+ Then the app-sidebar for file "lorem.txt" should be visible on the webUI
+ And only the following items with default items should be visible in the actions menu on the webUI
+ | items |
+ | open in text editor |
+ | download |
+ | add or edit tags |
+ When the user opens the actions sidebar panel of file "lorem.pdf" on the webUI
+ Then the app-sidebar for file "lorem.pdf" should be visible on the webUI
+ And only the following items with default items should be visible in the actions menu on the webUI
+ | items |
+ | open in pdf viewer |
+ | download |
+ | add or edit tags |
+ When the user opens the actions sidebar panel of file "testavatar.png" on the webUI
+ Then the app-sidebar for file "testavatar.png" should be visible on the webUI
+ And only the following items with default items should be visible in the actions menu on the webUI
+ | items |
+ | preview |
+ | download |
+ | add or edit tags |
+
+ @skipOnOC10
+ Scenario: observe different actions menu options on selecting a folder
+ When the user opens the actions sidebar panel of folder "simple-folder" on the webUI
+ Then the app-sidebar for folder "simple-folder" should be visible on the webUI
+ And only the following items with default items should be visible in the actions menu on the webUI
+ | items |
+ | open folder |
+ | download |
+ | add or edit tags |
+
diff --git a/yarn.lock b/yarn.lock
index 015c1838817..40a4bba9bf3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -9753,9 +9753,9 @@ __metadata:
languageName: node
linkType: hard
-"owncloud-sdk@npm:~3.0.0-alpha.15":
- version: 3.0.0-alpha.15
- resolution: "owncloud-sdk@npm:3.0.0-alpha.15"
+"owncloud-sdk@owncloud/owncloud-sdk.git#experimental":
+ version: 2.0.1
+ resolution: "owncloud-sdk@https://github.com/owncloud/owncloud-sdk.git#commit=4341933e1456ceeb806b65897517854297536bc1"
peerDependencies:
axios: ^0.27.2
cross-fetch: ^3.0.6
@@ -9768,7 +9768,7 @@ __metadata:
dependenciesMeta:
"@pact-foundation/pact":
built: true
- checksum: 3892508b42965f5602fb985173185ee9799d41d0e719895ad574d4b8b2b15326d69bc14300c1d84b14422e4acb3f4de101fdce2f36fc52658c0fa8b17b76c614
+ checksum: aefe1b9059f850703520b68c5e1808b203db6e7e426bd7454261e0a839c7c3c46e186b3f1f66a0d421fcc595f8a9c55244e4954f92a99f89aa5e535abf32a3d6
languageName: node
linkType: hard
@@ -13794,7 +13794,7 @@ __metadata:
marked: ^4.0.12
oidc-client-ts: ^2.0.5
owncloud-design-system: 14.0.0-alpha.14
- owncloud-sdk: ~3.0.0-alpha.15
+ owncloud-sdk: "owncloud/owncloud-sdk.git#experimental"
p-queue: ^6.6.2
popper-max-size-modifier: ^0.2.0
portal-vue: ^2.1.7