|
@@ -46,7 +46,7 @@
|
|
|
</div>
|
|
|
</template>
|
|
|
<template #actions>
|
|
|
- <NcActionButton v-if="enableLabeling"
|
|
|
+ <NcActionButton v-if="enableLabeling && hasUpdatePermissions"
|
|
|
:close-after-click="true"
|
|
|
@click="labelUpdate">
|
|
|
<template #icon>
|
|
@@ -62,7 +62,7 @@
|
|
|
</template>
|
|
|
{{ t('files_versions', 'Compare to current version') }}
|
|
|
</NcActionButton>
|
|
|
- <NcActionButton v-if="!isCurrent"
|
|
|
+ <NcActionButton v-if="!isCurrent && hasUpdatePermissions"
|
|
|
:close-after-click="true"
|
|
|
@click="restoreVersion">
|
|
|
<template #icon>
|
|
@@ -70,7 +70,8 @@
|
|
|
</template>
|
|
|
{{ t('files_versions', 'Restore version') }}
|
|
|
</NcActionButton>
|
|
|
- <NcActionLink :href="downloadURL"
|
|
|
+ <NcActionLink v-if="isDownloadable"
|
|
|
+ :href="downloadURL"
|
|
|
:close-after-click="true"
|
|
|
:download="downloadURL">
|
|
|
<template #icon>
|
|
@@ -78,7 +79,7 @@
|
|
|
</template>
|
|
|
{{ t('files_versions', 'Download version') }}
|
|
|
</NcActionLink>
|
|
|
- <NcActionButton v-if="!isCurrent && enableDeletion"
|
|
|
+ <NcActionButton v-if="!isCurrent && enableDeletion && hasDeletePermissions"
|
|
|
:close-after-click="true"
|
|
|
@click="deleteVersion">
|
|
|
<template #icon>
|
|
@@ -106,6 +107,9 @@ import { translate as t } from '@nextcloud/l10n'
|
|
|
import { joinPaths } from '@nextcloud/paths'
|
|
|
import { getRootUrl } from '@nextcloud/router'
|
|
|
import { loadState } from '@nextcloud/initial-state'
|
|
|
+import { Permission } from '@nextcloud/files'
|
|
|
+
|
|
|
+import { hasPermissions } from '../../../files_sharing/src/lib/SharePermissionsToolBox.js'
|
|
|
|
|
|
export default {
|
|
|
name: 'Version',
|
|
@@ -224,6 +228,33 @@ export default {
|
|
|
enableDeletion() {
|
|
|
return this.capabilities.files.version_deletion === true
|
|
|
},
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+ hasDeletePermissions() {
|
|
|
+ return hasPermissions(this.fileInfo.permissions, Permission.DELETE)
|
|
|
+ },
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+ hasUpdatePermissions() {
|
|
|
+ return hasPermissions(this.fileInfo.permissions, Permission.UPDATE)
|
|
|
+ },
|
|
|
+
|
|
|
+ /** @return {boolean} */
|
|
|
+ isDownloadable() {
|
|
|
+ if ((this.fileInfo.permissions & Permission.READ) === 0) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+ // If the mount type is a share, ensure it got download permissions.
|
|
|
+ if (this.fileInfo.mountType === 'shared') {
|
|
|
+ const downloadAttribute = this.fileInfo.shareAttributes.find((attribute) => attribute.scope === 'permissions' && attribute.key === 'download')
|
|
|
+ if (downloadAttribute !== undefined && downloadAttribute.enabled === false) {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return true
|
|
|
+ },
|
|
|
},
|
|
|
methods: {
|
|
|
labelUpdate() {
|