diff --git a/lib/Controller/BoardController.php b/lib/Controller/BoardController.php index 33ff48fb1..9d0b9fcaf 100644 --- a/lib/Controller/BoardController.php +++ b/lib/Controller/BoardController.php @@ -153,6 +153,6 @@ class BoardController extends ApiController { * @return \OCP\Deck\DB\Board */ public function clone($boardId) { - return $this->boardService->clone($boardId); + return $this->boardService->clone($boardId, $this->userId); } } diff --git a/lib/Service/BoardService.php b/lib/Service/BoardService.php index 58cd4022a..868164b91 100644 --- a/lib/Service/BoardService.php +++ b/lib/Service/BoardService.php @@ -621,13 +621,14 @@ class BoardService { /** * @param $id + * @param $userId * @return Board * @throws DoesNotExistException * @throws \OCA\Deck\NoPermissionException * @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException * @throws BadRequestException */ - public function clone($id) { + public function clone($id, $userId) { if (is_numeric($id) === false) { throw new BadRequestException('board id must be a number'); } @@ -637,7 +638,7 @@ class BoardService { $board = $this->boardMapper->find($id); $newBoard = new Board(); $newBoard->setTitle($board->getTitle() . ' (' . $this->l10n->t('copy') . ')'); - $newBoard->setOwner($board->getOwner()); + $newBoard->setOwner($userId); $newBoard->setColor($board->getColor()); $permissions = $this->permissionService->matchPermissions($board); $newBoard->setPermissions([ diff --git a/src/components/navigation/AppNavigationBoard.vue b/src/components/navigation/AppNavigationBoard.vue index c3e810ef0..d8e5c2667 100644 --- a/src/components/navigation/AppNavigationBoard.vue +++ b/src/components/navigation/AppNavigationBoard.vue @@ -149,26 +149,27 @@ export default { text: t('deck', 'Edit board'), }) } - - actions.push({ - action: async() => { - this.hideMenu() - this.loading = true - try { - const newBoard = await this.$store.dispatch('cloneBoard', this.board) - this.loading = false - const route = this.routeTo - route.params.id = newBoard.id - this.$router.push(route) - } catch (e) { - OC.Notification.showTemporary(t('deck', 'An error occurred')) - console.error(e) - } - }, - icon: 'icon-clone', - text: t('deck', 'Clone board'), - }) if (canManage) { + + actions.push({ + action: async() => { + this.hideMenu() + this.loading = true + try { + const newBoard = await this.$store.dispatch('cloneBoard', this.board) + this.loading = false + const route = this.routeTo + route.params.id = newBoard.id + this.$router.push(route) + } catch (e) { + OC.Notification.showTemporary(t('deck', 'An error occurred')) + console.error(e) + } + }, + icon: 'icon-clone', + text: t('deck', 'Clone board'), + }) + if (!this.board.archived) { actions.push({ action: () => {