Update documentation, import created

Signed-off-by: Vitor Mattos <vitor@php.rio>
This commit is contained in:
Vitor Mattos
2021-07-27 00:00:29 -03:00
committed by Julius Härtl
parent 4561887348
commit 5b30577df0
6 changed files with 50 additions and 6 deletions

View File

@@ -75,6 +75,8 @@ The **Timeline** allows you to see everything that happened in your boards. Ever
Importing can be done using the API or the `occ` `deck:import` command.
Comments with more than 1000 characters are placed as attached files to the card.
It is possible to import from the following sources:
#### Trello JSON

View File

@@ -273,7 +273,21 @@ class BoardImportService {
public function importCards(): void {
$cards = $this->getImportSystem()->getCards();
foreach ($cards as $code => $card) {
$createdAt = $card->getCreatedAt();
$lastModified = $card->getLastModified();
$this->cardMapper->insert($card);
$updateDate = false;
if ($createdAt && $createdAt !== $card->getCreatedAt()) {
$card->setCreatedAt($createdAt);
$updateDate = true;
}
if ($lastModified && $lastModified !== $card->getLastModified()) {
$card->setLastModified($lastModified);
$updateDate = true;
}
if ($updateDate) {
$this->cardMapper->update($card, false);
}
$this->getImportSystem()->updateCard($code, $card);
}
}

View File

@@ -71,7 +71,7 @@ class BoardImportTrelloApiService extends BoardImportTrelloJsonService {
$data->actions = $this->doRequest(
'/boards/' . $data->id . '/actions',
[
'filter' => 'commentCard',
'filter' => 'commentCard,createCard',
'fields=memberCreator,type,data,date',
'memberCreator_fields' => 'username',
'limit' => 1000

View File

@@ -255,7 +255,7 @@ class BoardImportTrelloJsonService extends ABoardImportService {
$lastModified = \DateTime::createFromFormat('Y-m-d\TH:i:s.v\Z', $trelloCard->dateLastActivity);
$card->setLastModified($lastModified->format('Y-m-d H:i:s'));
if ($trelloCard->closed) {
$card->setDeletedAt($lastModified->format('U'));
$card->setArchived(true);
}
if ((count($trelloCard->idChecklists) !== 0)) {
foreach ($this->getImportService()->getData()->checklists[$trelloCard->id] as $checklist) {
@@ -272,6 +272,24 @@ class BoardImportTrelloJsonService extends ABoardImportService {
$card->setType('plain');
$card->setOrder($trelloCard->pos);
$card->setOwner($this->getImportService()->getConfig('owner')->getUID());
$lastModified = \DateTime::createFromFormat('Y-m-d\TH:i:s.v\Z', $trelloCard->dateLastActivity);
$card->setLastModified($lastModified->format('U'));
$createCardDate = array_filter(
$this->getImportService()->getData()->actions,
function (\stdClass $a) use ($trelloCard) {
return $a->type === 'createCard' && $a->data->card->id === $trelloCard->id;
}
);
$createCardDate = current($createCardDate);
$createCardDate = \DateTime::createFromFormat('Y-m-d\TH:i:s.v\Z', $createCardDate->date);
if ($createCardDate) {
$card->setCreatedAt($createCardDate->format('U'));
} else {
$card->setCreatedAt($lastModified->format('U'));
}
$card->setDescription($trelloCard->desc);
if ($trelloCard->due) {
$duedate = \DateTime::createFromFormat('Y-m-d\TH:i:s.v\Z', $trelloCard->due)
@@ -365,7 +383,7 @@ class BoardImportTrelloJsonService extends ABoardImportService {
$trelloCard->desc .= "| {$this->l10n->t('File')} | {$this->l10n->t('date')} |\n";
$trelloCard->desc .= "|---|---\n";
foreach ($trelloCard->attachments as $attachment) {
$name = $attachment->name === $attachment->url ? null : $attachment->name;
$name = mb_strlen($attachment->name, 'UTF-8') ? $attachment->name : $attachment->url;
$trelloCard->desc .= "| [{$name}]({$attachment->url}) | {$attachment->date} |\n";
}
}

View File

@@ -27,6 +27,7 @@ use OCA\Deck\Db\Acl;
use OCA\Deck\Db\AclMapper;
use OCA\Deck\Db\Assignment;
use OCA\Deck\Db\AssignmentMapper;
use OCA\Deck\Db\AttachmentMapper;
use OCA\Deck\Db\BoardMapper;
use OCA\Deck\Db\Card;
use OCA\Deck\Db\CardMapper;
@@ -57,6 +58,8 @@ class BoardImportServiceTest extends \Test\TestCase {
private $cardMapper;
/** @var AssignmentMapper|MockObject */
private $assignmentMapper;
/** @var AttachmentMapper|MockObject */
private $attachmentMapper;
/** @var ICommentsManager|MockObject */
private $commentsManager;
/** @var BoardImportTrelloJsonService|MockObject */
@@ -70,8 +73,9 @@ class BoardImportServiceTest extends \Test\TestCase {
$this->aclMapper = $this->createMock(AclMapper::class);
$this->labelMapper = $this->createMock(LabelMapper::class);
$this->stackMapper = $this->createMock(StackMapper::class);
$this->cardMapper = $this->createMock(AssignmentMapper::class);
$this->assignmentMapper = $this->createMock(CardMapper::class);
$this->cardMapper = $this->createMock(CardMapper::class);
$this->assignmentMapper = $this->createMock(AssignmentMapper::class);
$this->attachmentMapper = $this->createMock(AttachmentMapper::class);
$this->commentsManager = $this->createMock(ICommentsManager::class);
$this->boardImportService = new BoardImportService(
$this->dbConn,
@@ -80,8 +84,9 @@ class BoardImportServiceTest extends \Test\TestCase {
$this->aclMapper,
$this->labelMapper,
$this->stackMapper,
$this->cardMapper,
$this->assignmentMapper,
$this->attachmentMapper,
$this->cardMapper,
$this->commentsManager
);

View File

@@ -23,21 +23,26 @@
namespace OCA\Deck\Service;
use OCP\IL10N;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\IUserManager;
class BoardImportTrelloJsonServiceTest extends \Test\TestCase {
/** @var BoardImportTrelloJsonService */
private $service;
/** @var IURLGenerator */
private $urlGenerator;
/** @var IUserManager */
private $userManager;
/** @var IL10N */
private $l10n;
public function setUp(): void {
$this->userManager = $this->createMock(IUserManager::class);
$this->urlGenerator = $this->createMock(IURLGenerator::class);
$this->l10n = $this->createMock(IL10N::class);
$this->service = new BoardImportTrelloJsonService(
$this->userManager,
$this->urlGenerator,
$this->l10n
);
}