diff --git a/lib/Model/CardDetails.php b/lib/Model/CardDetails.php index a0b17fa904..03a0bf906e 100644 --- a/lib/Model/CardDetails.php +++ b/lib/Model/CardDetails.php @@ -85,4 +85,9 @@ protected function getter(string $name): mixed { public function __call(string $methodName, array $args) { return $this->card->__call($methodName, $args); } + + #[\Override] + public function getUpdatedFields(): array { + return $this->card->getUpdatedFields(); + } } diff --git a/lib/Service/CardService.php b/lib/Service/CardService.php index 5b81308781..2787605cfc 100644 --- a/lib/Service/CardService.php +++ b/lib/Service/CardService.php @@ -396,7 +396,7 @@ public function cloneCard(int $id, ?int $targetStackId = null):Card { $targetStackId = $originCard->getStackId(); } $this->permissionService->checkPermission($this->stackMapper, $targetStackId, Acl::PERMISSION_EDIT); - $newCard = $this->create($originCard->getTitle(), $targetStackId, $originCard->getType(), $originCard->getOrder(), $originCard->getOwner(), color: $originCard->getColor()); + $newCard = $this->create($originCard->getTitle(), $targetStackId, $originCard->getType(), $originCard->getOrder(), $originCard->getOwner(), description: $originCard->getDescription(), duedate: $originCard->getDuedate(), startdate: $originCard->getStartdate(), color: $originCard->getColor()); $boardId = $this->stackMapper->findBoardId($targetStackId); foreach ($this->labelMapper->findAssignedLabelsForCard($id) as $label) { if ($boardId !== $this->stackMapper->findBoardId($originCard->getStackId())) { diff --git a/tests/unit/Db/CardTest.php b/tests/unit/Db/CardTest.php index 03170f11ab..fa555f5846 100644 --- a/tests/unit/Db/CardTest.php +++ b/tests/unit/Db/CardTest.php @@ -172,4 +172,12 @@ public function testJsonSerializeAsignedUsers() { 'color' => 'ffffff', ], (new CardDetails($card))->jsonSerialize()); } + + public function testCardDetailsForwardsUpdatedFields(): void { + $card = $this->createCard(); + $card->resetUpdatedFields(); + $details = new CardDetails($card); + $details->setDescription('changed'); + $this->assertEquals(['description' => true], $details->getUpdatedFields()); + } } diff --git a/tests/unit/Service/CardServiceTest.php b/tests/unit/Service/CardServiceTest.php index 6711d13b50..15d0cb2eb7 100644 --- a/tests/unit/Service/CardServiceTest.php +++ b/tests/unit/Service/CardServiceTest.php @@ -332,6 +332,8 @@ public function testClone() { $card->setStackId(12345); $card->setDescription('A test description'); $card->setColor('FF0000'); + $card->setDuedate(new \DateTime('2026-12-24 12:00:00')); + $card->setStartdate(new \DateTime('2026-12-20 09:00:00')); $clonedCard = clone $card; $clonedCard->setId(2); @@ -414,6 +416,9 @@ public function testClone() { $this->assertEquals('A test description', $c->getDescription()); $this->assertEquals('FF0000', $inserted[1]->getColor()); + $this->assertEquals('A test description', $inserted[1]->getDescription()); + $this->assertEquals($card->getDuedate(), $inserted[1]->getDuedate()); + $this->assertEquals($card->getStartdate(), $inserted[1]->getStartdate()); $this->assertCount(1, $c->getLabels()); $this->assertEquals($label->getId(), $c->getLabels()[0]->getId());