diff --git a/apps/files/src/actions/downloadAction.ts b/apps/files/src/actions/downloadAction.ts index 1b57ddb4c64de..7b54468f3d916 100644 --- a/apps/files/src/actions/downloadAction.ts +++ b/apps/files/src/actions/downloadAction.ts @@ -76,5 +76,5 @@ registerFileAction(new FileAction({ return new Array(nodes.length).fill(null) }, - order: 20, + order: 30, })) diff --git a/apps/files/src/actions/favoriteAction.ts b/apps/files/src/actions/favoriteAction.ts index 8ad4a36efb8f8..8173dd2bc6f3d 100644 --- a/apps/files/src/actions/favoriteAction.ts +++ b/apps/files/src/actions/favoriteAction.ts @@ -91,5 +91,5 @@ registerFileAction(new FileAction({ return Promise.all(nodes.map(node => this.exec(node, view))) }, - order: 0, + order: -50, })) diff --git a/apps/files/src/actions/renameAction.ts b/apps/files/src/actions/renameAction.ts new file mode 100644 index 0000000000000..bd139d0e8469f --- /dev/null +++ b/apps/files/src/actions/renameAction.ts @@ -0,0 +1,49 @@ +/** + * @copyright Copyright (c) 2023 John MolakvoƦ + * + * @author John MolakvoƦ + * + * @license AGPL-3.0-or-later + * + * 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 . + * + */ +import { Permission, type Node } from '@nextcloud/files' +import { translate as t } from '@nextcloud/l10n' +import PencilSvg from '@mdi/svg/svg/pencil.svg?raw' + +import { emit } from '@nextcloud/event-bus' +import { registerFileAction, FileAction } from '../services/FileAction' + +export const ACTION_DETAILS = 'details' + +registerFileAction(new FileAction({ + id: 'rename', + displayName: () => t('files', 'Rename'), + iconSvgInline: () => PencilSvg, + + enabled: (nodes: Node[]) => { + return nodes.length > 0 && nodes + .map(node => node.permissions) + .every(permission => (permission & Permission.UPDATE) !== 0) + }, + + async exec(node: Node) { + // Renaming is a built-in feature of the files app + emit('files:node:rename', node) + return null + }, + + order: 10, +})) diff --git a/apps/files/src/actions/sidebarAction.ts b/apps/files/src/actions/sidebarAction.ts index 0ef7865259e7b..0cdd74b3523b2 100644 --- a/apps/files/src/actions/sidebarAction.ts +++ b/apps/files/src/actions/sidebarAction.ts @@ -50,5 +50,5 @@ registerFileAction(new FileAction({ }, default: true, - order: -50, + order: 0, })) diff --git a/apps/files/src/components/FileEntry.vue b/apps/files/src/components/FileEntry.vue index 7c38e1f804580..6f4c4535798ce 100644 --- a/apps/files/src/components/FileEntry.vue +++ b/apps/files/src/components/FileEntry.vue @@ -33,38 +33,63 @@ - - - - - - - - - - - - - - - + + + + + + + + + + + + + + - + + + +
+ + + +
- {{ displayName }} + + + {{ displayName }} + - + @@ -81,6 +106,7 @@