diff --git a/appinfo/info.xml b/appinfo/info.xml index 089f26b69..63972500f 100644 --- a/appinfo/info.xml +++ b/appinfo/info.xml @@ -16,7 +16,7 @@ - 🚀 Get your project organized - 1.11.0-dev.1 + 1.11.0-dev.2 agpl Julius Härtl diff --git a/lib/Db/Card.php b/lib/Db/Card.php index 6e8e261f9..52aa5be91 100644 --- a/lib/Db/Card.php +++ b/lib/Db/Card.php @@ -83,7 +83,7 @@ class Card extends RelationalEntity { protected $owner; protected $order; protected $archived = false; - protected $done = false; + protected $done = null; protected $duedate; protected $notified = false; protected $deletedAt = 0; @@ -107,7 +107,7 @@ class Card extends RelationalEntity { $this->addType('lastModified', 'integer'); $this->addType('createdAt', 'integer'); $this->addType('archived', 'boolean'); - $this->addType('done', 'boolean'); + $this->addType('done', 'datetime'); $this->addType('notified', 'boolean'); $this->addType('deletedAt', 'integer'); $this->addType('duedate', 'datetime'); diff --git a/lib/Db/CardMapper.php b/lib/Db/CardMapper.php index 37a19dfb2..9e8c3bfd0 100644 --- a/lib/Db/CardMapper.php +++ b/lib/Db/CardMapper.php @@ -263,7 +263,7 @@ class CardMapper extends QBMapper implements IPermissionMapper { ->where($qb->expr()->in('s.board_id', $qb->createNamedParameter($boardIds, IQueryBuilder::PARAM_INT_ARRAY))) ->andWhere($qb->expr()->isNotNull('c.duedate')) ->andWhere($qb->expr()->eq('c.archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) - ->andWhere($qb->expr()->eq('c.done', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) + ->andWhere($qb->expr()->isNull('done')) ->andWhere($qb->expr()->eq('c.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))) ->andWhere($qb->expr()->eq('s.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))) ->andWhere($qb->expr()->eq('b.archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) @@ -285,7 +285,7 @@ class CardMapper extends QBMapper implements IPermissionMapper { ) // Filter out archived/deleted cards and board ->andWhere($qb->expr()->eq('c.archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) - ->andWhere($qb->expr()->eq('c.done', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) + ->andWhere($qb->expr()->isNull('done')) ->andWhere($qb->expr()->eq('c.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))) ->andWhere($qb->expr()->eq('s.deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))) ->andWhere($qb->expr()->eq('b.archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) @@ -300,7 +300,7 @@ class CardMapper extends QBMapper implements IPermissionMapper { ->where($qb->expr()->lt('duedate', $qb->createFunction('NOW()'))) ->andWhere($qb->expr()->eq('notified', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) ->andWhere($qb->expr()->eq('archived', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) - ->andWhere($qb->expr()->eq('done', $qb->createNamedParameter(false, IQueryBuilder::PARAM_BOOL))) + ->andWhere($qb->expr()->isNull('done')) ->andWhere($qb->expr()->eq('deleted_at', $qb->createNamedParameter(0, IQueryBuilder::PARAM_INT))); return $this->findEntities($qb); } diff --git a/lib/Migration/Version1011Date20230901010840.php b/lib/Migration/Version1011Date20230901010840.php index 837aaf72c..d91cdb084 100644 --- a/lib/Migration/Version1011Date20230901010840.php +++ b/lib/Migration/Version1011Date20230901010840.php @@ -28,6 +28,7 @@ namespace OCA\Deck\Migration; use Closure; use OCP\DB\ISchemaWrapper; +use OCP\DB\Types; use OCP\Migration\IOutput; use OCP\Migration\SimpleMigrationStep; @@ -47,9 +48,9 @@ class Version1011Date20230901010840 extends SimpleMigrationStep { $table = $schema->getTable('deck_cards'); if (!$table->hasColumn('done')) { - $table->addColumn('done', 'boolean', [ - 'default' => false, - 'notnull' => true, + $table->addColumn('done', Types::DATETIME, [ + 'default' => null, + 'notnull' => false, ]); return $schema; diff --git a/lib/Service/CardService.php b/lib/Service/CardService.php index 1a8e33ed9..33db81406 100644 --- a/lib/Service/CardService.php +++ b/lib/Service/CardService.php @@ -294,7 +294,7 @@ class CardService { * @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException * @throws BadRequestException */ - public function update($id, $title, $stackId, $type, $owner, $description = '', $order = 0, $duedate = null, $deletedAt = null, $archived = null, ?bool $done = null) { + public function update($id, $title, $stackId, $type, $owner, $description = '', $order = 0, $duedate = null, $deletedAt = null, $archived = null, $done = null) { $this->cardServiceValidator->check(compact('id', 'title', 'stackId', 'type', 'owner', 'order')); $this->permissionService->checkPermission($this->cardMapper, $id, Acl::PERMISSION_EDIT); @@ -532,7 +532,7 @@ class CardService { throw new StatusException('Operation not allowed. This board is archived.'); } $card = $this->cardMapper->find($id); - $card->setDone(true); + $card->setDone(new \DateTime()); $newCard = $this->cardMapper->update($card); $this->notificationHelper->markDuedateAsRead($card); $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $newCard, ActivityManager::SUBJECT_CARD_UPDATE_DONE); @@ -558,7 +558,7 @@ class CardService { throw new StatusException('Operation not allowed. This board is archived.'); } $card = $this->cardMapper->find($id); - $card->setDone(false); + $card->setDone(null); $newCard = $this->cardMapper->update($card); $this->activityManager->triggerEvent(ActivityManager::DECK_OBJECT_CARD, $newCard, ActivityManager::SUBJECT_CARD_UPDATE_UNDONE); $this->changeHelper->cardChanged($id, false); diff --git a/src/components/card/CardSidebarTabDetails.vue b/src/components/card/CardSidebarTabDetails.vue index 3b731e204..9048f23f4 100644 --- a/src/components/card/CardSidebarTabDetails.vue +++ b/src/components/card/CardSidebarTabDetails.vue @@ -29,13 +29,13 @@ - {{ t('deck', 'Mark as Done') }} + {{ t('deck', 'Mark as done') }} - {{ t('deck', 'Mark as not Done') }} + {{ t('deck', 'Mark as not done') }} @@ -62,11 +62,9 @@ - - {{ t('deck', 'No due date') }} - + {{ t('deck', 'Done') }} - {{ t('deck', 'Done') }} + {{ stringify(card.done) }} @@ -287,32 +285,8 @@ export default { } } -.done{ +.done { display: flex; - margin-left: 40px; - - .no-due, .done-label{ - line-height: 30px; - align-items: baseline; - flex-shrink: 1; - z-index: 2; - margin: 13px 5px 5px; - font-size: 100%; - } - - .no-due{ - padding: 3px; - color: var(--color-main-text); - } - - .done-label { - font-size: 90%; - padding: 3px 20px; - - color: var(--color-primary-text); - background-color: var(--color-success); - border-radius: 15px; - } } .tag {