diff options
Diffstat (limited to 'apps/files_sharing/src/components/SharingEntryLink.vue')
-rw-r--r-- | apps/files_sharing/src/components/SharingEntryLink.vue | 119 |
1 files changed, 12 insertions, 107 deletions
diff --git a/apps/files_sharing/src/components/SharingEntryLink.vue b/apps/files_sharing/src/components/SharingEntryLink.vue index 9fefa9b6f90..52215d37ec8 100644 --- a/apps/files_sharing/src/components/SharingEntryLink.vue +++ b/apps/files_sharing/src/components/SharingEntryLink.vue @@ -150,39 +150,12 @@ @submit="onLabelSubmit"> {{ t('files_sharing', 'Share label') }} </ActionInput> - <!-- folder --> - <template v-if="isFolder && fileHasCreatePermission && config.isPublicUploadEnabled"> - <ActionRadio :checked="sharePermissions === publicUploadRValue" - :value="publicUploadRValue" - :name="randomId" - :disabled="saving" - @change="togglePermissions"> - {{ t('files_sharing', 'Read only') }} - </ActionRadio> - <ActionRadio :checked="sharePermissions === publicUploadRWValue" - :value="publicUploadRWValue" - :disabled="saving" - :name="randomId" - @change="togglePermissions"> - {{ t('files_sharing', 'Allow upload and editing') }} - </ActionRadio> - <ActionRadio :checked="sharePermissions === publicUploadWValue" - :value="publicUploadWValue" - :disabled="saving" - :name="randomId" - class="sharing-entry__action--public-upload" - @change="togglePermissions"> - {{ t('files_sharing', 'File drop (upload only)') }} - </ActionRadio> - </template> - - <!-- file --> - <ActionCheckbox v-if="!isFolder" - :checked.sync="canUpdate" - :disabled="saving" - @change="queueUpdate('permissions')"> - {{ t('files_sharing', 'Allow editing') }} - </ActionCheckbox> + + <SharePermissionsEditor :can-reshare="canReshare" + :share.sync="share" + :file-info="fileInfo" /> + + <ActionSeparator /> <ActionCheckbox :checked.sync="share.hideDownload" :disabled="saving" @@ -282,6 +255,8 @@ @submit="onNoteSubmit" /> </template> + <ActionSeparator /> + <!-- external actions --> <ExternalShareAction v-for="action in externalLinkActions" :id="action.id" @@ -336,14 +311,15 @@ import ActionButton from '@nextcloud/vue/dist/Components/ActionButton' import ActionCheckbox from '@nextcloud/vue/dist/Components/ActionCheckbox' import ActionInput from '@nextcloud/vue/dist/Components/ActionInput' import ActionLink from '@nextcloud/vue/dist/Components/ActionLink' -import ActionRadio from '@nextcloud/vue/dist/Components/ActionRadio' import ActionText from '@nextcloud/vue/dist/Components/ActionText' +import ActionSeparator from '@nextcloud/vue/dist/Components/ActionSeparator' import ActionTextEditable from '@nextcloud/vue/dist/Components/ActionTextEditable' import Actions from '@nextcloud/vue/dist/Components/Actions' import Avatar from '@nextcloud/vue/dist/Components/Avatar' import Tooltip from '@nextcloud/vue/dist/Directives/Tooltip' import ExternalShareAction from './ExternalShareAction' +import SharePermissionsEditor from './SharePermissionsEditor' import GeneratePassword from '../utils/GeneratePassword' import Share from '../models/Share' import SharesMixin from '../mixins/SharesMixin' @@ -355,13 +331,14 @@ export default { Actions, ActionButton, ActionCheckbox, - ActionRadio, ActionInput, ActionLink, ActionText, ActionTextEditable, + ActionSeparator, Avatar, ExternalShareAction, + SharePermissionsEditor, }, directives: { @@ -385,10 +362,6 @@ export default { // Are we waiting for password/expiration date pending: false, - publicUploadRWValue: OC.PERMISSION_UPDATE | OC.PERMISSION_CREATE | OC.PERMISSION_READ | OC.PERMISSION_DELETE, - publicUploadRValue: OC.PERMISSION_READ, - publicUploadWValue: OC.PERMISSION_CREATE, - ExternalLegacyLinkActions: OCA.Sharing.ExternalLinkActions.state, ExternalShareActions: OCA.Sharing.ExternalShareActions.state, } @@ -396,27 +369,6 @@ export default { computed: { /** - * Return the current share permissions - * We always ignore the SHARE permission as this is used for the - * federated sharing. - * - * @return {number} - */ - sharePermissions() { - return this.share.permissions & ~OC.PERMISSION_SHARE - }, - /** - * Generate a unique random id for this SharingEntryLink only - * This allows ActionRadios to have the same name prop - * but not to impact others SharingEntryLink - * - * @return {string} - */ - randomId() { - return Math.random().toString(27).substr(2) - }, - - /** * Link share label * * @return {string} @@ -580,22 +532,6 @@ export default { return this.config.isDefaultExpireDateEnforced && this.share && !this.share.id }, - /** - * Can the recipient edit the file ? - * - * @return {boolean} - */ - canUpdate: { - get() { - return this.share.hasUpdatePermission - }, - set(enabled) { - this.share.permissions = enabled - ? OC.PERMISSION_READ | OC.PERMISSION_UPDATE - : OC.PERMISSION_READ - }, - }, - // if newPassword exists, but is empty, it means // the user deleted the original password hasUnsavedPassword() { @@ -603,26 +539,6 @@ export default { }, /** - * Is the current share a folder ? - * TODO: move to a proper FileInfo model? - * - * @return {boolean} - */ - isFolder() { - return this.fileInfo.type === 'dir' - }, - - /** - * Does the current file/folder have create permissions - * TODO: move to a proper FileInfo model? - * - * @return {boolean} - */ - fileHasCreatePermission() { - return !!(this.fileInfo.permissions & OC.PERMISSION_CREATE) - }, - - /** * Return the public share link * * @return {string} @@ -810,17 +726,6 @@ export default { }, /** - * On permissions change - * - * @param {Event} event js event - */ - togglePermissions(event) { - const permissions = parseInt(event.target.value, 10) - this.share.permissions = permissions - this.queueUpdate('permissions') - }, - - /** * Label changed, let's save it to a different key * * @param {string} label the share label |