diff options
author | Louis Chemineau <louis@chmn.me> | 2024-02-26 18:01:14 +0100 |
---|---|---|
committer | Louis Chemineau <louis@chmn.me> | 2024-02-27 09:22:29 +0100 |
commit | 29a60ac7a903356dc0c68068a0dc49266a6a5305 (patch) | |
tree | 6cfafeee1e4d19cdd10c51cc01bc983673d6170a | |
parent | 51377570530fa299cf96cc60eaa26dbf14cf0872 (diff) | |
download | nextcloud-server-29a60ac7a903356dc0c68068a0dc49266a6a5305.tar.gz nextcloud-server-29a60ac7a903356dc0c68068a0dc49266a6a5305.zip |
chore(files_sharing): Remove legacy share permissions editor
Signed-off-by: Louis Chemineau <louis@chmn.me>
-rw-r--r-- | apps/files_sharing/src/components/SharePermissionsEditor.vue | 290 |
1 files changed, 0 insertions, 290 deletions
diff --git a/apps/files_sharing/src/components/SharePermissionsEditor.vue b/apps/files_sharing/src/components/SharePermissionsEditor.vue deleted file mode 100644 index cc1a150ecc1..00000000000 --- a/apps/files_sharing/src/components/SharePermissionsEditor.vue +++ /dev/null @@ -1,290 +0,0 @@ -<!-- - - @copyright Copyright (c) 2022 Louis Chmn <louis@chmn.me> - - - - @author Louis Chmn <louis@chmn.me> - - - - @license GNU AGPL version 3 or any later version - - - - This program is free software: you can redistribute it and/or modify - - it under the terms of the GNU Affero General Public License as - - published by the Free Software Foundation, either version 3 of the - - License, or (at your option) any later version. - - - - This program is distributed in the hope that it will be useful, - - but WITHOUT ANY WARRANTY; without even the implied warranty of - - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - - GNU Affero General Public License for more details. - - - - You should have received a copy of the GNU Affero General Public License - - along with this program. If not, see <http://www.gnu.org/licenses/>. - - - --> - -<template> - <li> - <ul> - <!-- file --> - <NcActionCheckbox v-if="!isFolder" - :checked="shareHasPermissions(atomicPermissions.UPDATE)" - @update:checked="toggleSharePermissions(atomicPermissions.UPDATE)"> - {{ t('files_sharing', 'Allow editing') }} - </NcActionCheckbox> - - <!-- folder --> - <template v-if="isFolder && fileHasCreatePermission && config.isPublicUploadEnabled"> - <template v-if="!showCustomPermissionsForm"> - <NcActionRadio :checked="sharePermissionEqual(bundledPermissions.READ_ONLY)" - :value="bundledPermissions.READ_ONLY" - :name="randomFormName" - @change="setSharePermissions(bundledPermissions.READ_ONLY)"> - {{ t('files_sharing', 'Read only') }} - </NcActionRadio> - - <NcActionRadio :checked="sharePermissionEqual(bundledPermissions.UPLOAD_AND_UPDATE)" - :value="bundledPermissions.UPLOAD_AND_UPDATE" - :name="randomFormName" - @change="setSharePermissions(bundledPermissions.UPLOAD_AND_UPDATE)"> - {{ t('files_sharing', 'Allow upload and editing') }} - </NcActionRadio> - <NcActionRadio :checked="sharePermissionEqual(bundledPermissions.FILE_DROP)" - :value="bundledPermissions.FILE_DROP" - :name="randomFormName" - class="sharing-entry__action--public-upload" - @change="setSharePermissions(bundledPermissions.FILE_DROP)"> - {{ t('files_sharing', 'File drop (upload only)') }} - </NcActionRadio> - - <!-- custom permissions button --> - <NcActionButton :title="t('files_sharing', 'Custom permissions')" - @click="showCustomPermissionsForm = true"> - <template #icon> - <Tune /> - </template> - {{ sharePermissionsIsBundle ? "" : sharePermissionsSummary }} - </NcActionButton> - </template> - - <!-- custom permissions --> - <span v-else :class="{error: !sharePermissionsSetIsValid}"> - <NcActionCheckbox :checked="shareHasPermissions(atomicPermissions.READ)" - :disabled="!canToggleSharePermissions(atomicPermissions.READ)" - @update:checked="toggleSharePermissions(atomicPermissions.READ)"> - {{ t('files_sharing', 'Read') }} - </NcActionCheckbox> - <NcActionCheckbox :checked="shareHasPermissions(atomicPermissions.CREATE)" - :disabled="!canToggleSharePermissions(atomicPermissions.CREATE)" - @update:checked="toggleSharePermissions(atomicPermissions.CREATE)"> - {{ t('files_sharing', 'Upload') }} - </NcActionCheckbox> - <NcActionCheckbox :checked="shareHasPermissions(atomicPermissions.UPDATE)" - :disabled="!canToggleSharePermissions(atomicPermissions.UPDATE)" - @update:checked="toggleSharePermissions(atomicPermissions.UPDATE)"> - {{ t('files_sharing', 'Edit') }} - </NcActionCheckbox> - <NcActionCheckbox :checked="shareHasPermissions(atomicPermissions.DELETE)" - :disabled="!canToggleSharePermissions(atomicPermissions.DELETE)" - @update:checked="toggleSharePermissions(atomicPermissions.DELETE)"> - {{ t('files_sharing', 'Delete') }} - </NcActionCheckbox> - - <NcActionButton @click="showCustomPermissionsForm = false"> - <template #icon> - <ChevronLeft /> - </template> - {{ t('files_sharing', 'Bundled permissions') }} - </NcActionButton> - </span> - </template> - </ul> - </li> -</template> - -<script> -import NcActionButton from '@nextcloud/vue/dist/Components/NcActionButton.js' -import NcActionRadio from '@nextcloud/vue/dist/Components/NcActionRadio.js' -import NcActionCheckbox from '@nextcloud/vue/dist/Components/NcActionCheckbox.js' - -import SharesMixin from '../mixins/SharesMixin.js' -import { - ATOMIC_PERMISSIONS, - BUNDLED_PERMISSIONS, - hasPermissions, - permissionsSetIsValid, - togglePermissions, - canTogglePermissions, -} from '../lib/SharePermissionsToolBox.js' - -import Tune from 'vue-material-design-icons/Tune.vue' -import ChevronLeft from 'vue-material-design-icons/ChevronLeft.vue' - -export default { - name: 'SharePermissionsEditor', - - components: { - NcActionButton, - NcActionCheckbox, - NcActionRadio, - Tune, - ChevronLeft, - }, - - mixins: [SharesMixin], - - data() { - return { - randomFormName: Math.random().toString(27).substring(2), - - showCustomPermissionsForm: false, - - atomicPermissions: ATOMIC_PERMISSIONS, - bundledPermissions: BUNDLED_PERMISSIONS, - } - }, - - computed: { - /** - * Return the summary of custom checked permissions. - * - * @return {string} - */ - sharePermissionsSummary() { - return Object.values(this.atomicPermissions) - .filter(permission => this.shareHasPermissions(permission)) - .map(permission => { - switch (permission) { - case this.atomicPermissions.CREATE: - return this.t('files_sharing', 'Upload') - case this.atomicPermissions.READ: - return this.t('files_sharing', 'Read') - case this.atomicPermissions.UPDATE: - return this.t('files_sharing', 'Edit') - case this.atomicPermissions.DELETE: - return this.t('files_sharing', 'Delete') - default: - return null - } - }) - .filter(permissionLabel => permissionLabel !== null) - .join(', ') - }, - - /** - * Return whether the share's permission is a bundle. - * - * @return {boolean} - */ - sharePermissionsIsBundle() { - return Object.values(BUNDLED_PERMISSIONS) - .map(bundle => this.sharePermissionEqual(bundle)) - .filter(isBundle => isBundle) - .length > 0 - }, - - /** - * Return whether the share's permission is valid. - * - * @return {boolean} - */ - sharePermissionsSetIsValid() { - return permissionsSetIsValid(this.share.permissions) - }, - - /** - * 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 & ATOMIC_PERMISSIONS.CREATE) - }, - }, - - mounted() { - // Show the Custom Permissions view on open if the permissions set is not a bundle. - this.showCustomPermissionsForm = !this.sharePermissionsIsBundle - }, - - methods: { - /** - * Return whether the share has the exact given permissions. - * - * @param {number} permissions - the permissions to check. - * - * @return {boolean} - */ - sharePermissionEqual(permissions) { - // We use the share's permission without PERMISSION_SHARE as it is not relevant here. - return (this.share.permissions & ~ATOMIC_PERMISSIONS.SHARE) === permissions - }, - - /** - * Return whether the share has the given permissions. - * - * @param {number} permissions - the permissions to check. - * - * @return {boolean} - */ - shareHasPermissions(permissions) { - return hasPermissions(this.share.permissions, permissions) - }, - - /** - * Set the share permissions to the given permissions. - * - * @param {number} permissions - the permissions to set. - * - * @return {void} - */ - setSharePermissions(permissions) { - this.share.permissions = permissions - this.queueUpdate('permissions') - }, - - /** - * Return whether some given permissions can be toggled. - * - * @param {number} permissionsToToggle - the permissions to toggle. - * - * @return {boolean} - */ - canToggleSharePermissions(permissionsToToggle) { - return canTogglePermissions(this.share.permissions, permissionsToToggle) - }, - - /** - * Toggle a given permission. - * - * @param {number} permissions - the permissions to toggle. - * - * @return {void} - */ - toggleSharePermissions(permissions) { - this.share.permissions = togglePermissions(this.share.permissions, permissions) - - if (!permissionsSetIsValid(this.share.permissions)) { - return - } - - this.queueUpdate('permissions') - }, - }, -} -</script> -<style lang="scss" scoped> -.error { - ::v-deep .action-checkbox__label:before { - border: 1px solid var(--color-error); - } -} -</style> |