From eaf061c4b7584e39841da8e8a2d78be4f9404237 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20R=C3=B6hrl?= Date: Mon, 17 May 2021 14:30:36 +0200 Subject: [PATCH] show on shared boards unassigned cards to all users MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jakob Röhrl --- lib/Db/CardMapper.php | 8 +++++--- lib/Service/OverviewService.php | 4 ++-- src/components/cards/CardBadges.vue | 2 +- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/Db/CardMapper.php b/lib/Db/CardMapper.php index be91be481..d47c2e96a 100644 --- a/lib/Db/CardMapper.php +++ b/lib/Db/CardMapper.php @@ -236,10 +236,12 @@ class CardMapper extends QBMapper implements IPermissionMapper { ->from('deck_cards', 'c') ->innerJoin('c', 'deck_stacks', 's', 's.id = c.stack_id') ->innerJoin('s', 'deck_boards', 'b', 'b.id = s.board_id') - ->innerJoin('c', 'deck_assigned_users', 'u', 'c.id = u.card_id') + ->leftJoin('c', 'deck_assigned_users', 'u', 'c.id = u.card_id') ->where($qb->expr()->eq('s.board_id', $qb->createNamedParameter($boardId, IQueryBuilder::PARAM_INT))) - ->andWhere($qb->expr()->eq('u.participant', $qb->createNamedParameter($username, IQueryBuilder::PARAM_STR))) - ->andWhere($qb->expr()->eq('u.type', $qb->createNamedParameter(Acl::PERMISSION_TYPE_USER, IQueryBuilder::PARAM_INT))) + ->andWhere($qb->expr()->orX( + $qb->expr()->eq('u.participant', $qb->createNamedParameter($username, IQueryBuilder::PARAM_STR)), + $qb->expr()->isNull('u.participant')) + ) // Filter out archived/deleted cards and board ->andWhere($qb->expr()->eq('c.archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) ->andWhere($qb->expr()->eq('c.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))) diff --git a/lib/Service/OverviewService.php b/lib/Service/OverviewService.php index 7c458449b..4ca854f53 100644 --- a/lib/Service/OverviewService.php +++ b/lib/Service/OverviewService.php @@ -114,7 +114,7 @@ class OverviewService { $service = $this; if (count($userBoard->getAcl()) === 0) { - // get cards with due date + // private board: get cards with due date $findCards[] = array_map(static function ($card) use ($service, $userBoard, $userId) { $service->enrich($card, $userId); $cardData = $card->jsonSerialize(); @@ -122,7 +122,7 @@ class OverviewService { return $cardData; }, $this->cardMapper->findAllWithDue($userBoard->getId())); } else { - // get assigned cards + // shared board: get all my assigned or unassigned cards $findCards[] = array_map(static function ($card) use ($service, $userBoard, $userId) { $service->enrich($card, $userId); $cardData = $card->jsonSerialize(); diff --git a/src/components/cards/CardBadges.vue b/src/components/cards/CardBadges.vue index 5d046ec7f..c86735117 100644 --- a/src/components/cards/CardBadges.vue +++ b/src/components/cards/CardBadges.vue @@ -68,7 +68,7 @@ export default { if (this.card.commentsUnread > 0) { return t('deck', '{count} comments, {unread} unread', { count: this.card.commentsCount, - unread: this.card.commentsUnread + unread: this.card.commentsUnread, }) } return null