Update documentation, import created
Signed-off-by: Vitor Mattos <vitor@php.rio>
This commit is contained in:
committed by
Julius Härtl
parent
4561887348
commit
5b30577df0
@@ -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.
|
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:
|
It is possible to import from the following sources:
|
||||||
|
|
||||||
#### Trello JSON
|
#### Trello JSON
|
||||||
|
|||||||
@@ -273,7 +273,21 @@ class BoardImportService {
|
|||||||
public function importCards(): void {
|
public function importCards(): void {
|
||||||
$cards = $this->getImportSystem()->getCards();
|
$cards = $this->getImportSystem()->getCards();
|
||||||
foreach ($cards as $code => $card) {
|
foreach ($cards as $code => $card) {
|
||||||
|
$createdAt = $card->getCreatedAt();
|
||||||
|
$lastModified = $card->getLastModified();
|
||||||
$this->cardMapper->insert($card);
|
$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);
|
$this->getImportSystem()->updateCard($code, $card);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ class BoardImportTrelloApiService extends BoardImportTrelloJsonService {
|
|||||||
$data->actions = $this->doRequest(
|
$data->actions = $this->doRequest(
|
||||||
'/boards/' . $data->id . '/actions',
|
'/boards/' . $data->id . '/actions',
|
||||||
[
|
[
|
||||||
'filter' => 'commentCard',
|
'filter' => 'commentCard,createCard',
|
||||||
'fields=memberCreator,type,data,date',
|
'fields=memberCreator,type,data,date',
|
||||||
'memberCreator_fields' => 'username',
|
'memberCreator_fields' => 'username',
|
||||||
'limit' => 1000
|
'limit' => 1000
|
||||||
|
|||||||
@@ -255,7 +255,7 @@ class BoardImportTrelloJsonService extends ABoardImportService {
|
|||||||
$lastModified = \DateTime::createFromFormat('Y-m-d\TH:i:s.v\Z', $trelloCard->dateLastActivity);
|
$lastModified = \DateTime::createFromFormat('Y-m-d\TH:i:s.v\Z', $trelloCard->dateLastActivity);
|
||||||
$card->setLastModified($lastModified->format('Y-m-d H:i:s'));
|
$card->setLastModified($lastModified->format('Y-m-d H:i:s'));
|
||||||
if ($trelloCard->closed) {
|
if ($trelloCard->closed) {
|
||||||
$card->setDeletedAt($lastModified->format('U'));
|
$card->setArchived(true);
|
||||||
}
|
}
|
||||||
if ((count($trelloCard->idChecklists) !== 0)) {
|
if ((count($trelloCard->idChecklists) !== 0)) {
|
||||||
foreach ($this->getImportService()->getData()->checklists[$trelloCard->id] as $checklist) {
|
foreach ($this->getImportService()->getData()->checklists[$trelloCard->id] as $checklist) {
|
||||||
@@ -272,6 +272,24 @@ class BoardImportTrelloJsonService extends ABoardImportService {
|
|||||||
$card->setType('plain');
|
$card->setType('plain');
|
||||||
$card->setOrder($trelloCard->pos);
|
$card->setOrder($trelloCard->pos);
|
||||||
$card->setOwner($this->getImportService()->getConfig('owner')->getUID());
|
$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);
|
$card->setDescription($trelloCard->desc);
|
||||||
if ($trelloCard->due) {
|
if ($trelloCard->due) {
|
||||||
$duedate = \DateTime::createFromFormat('Y-m-d\TH:i:s.v\Z', $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 .= "| {$this->l10n->t('File')} | {$this->l10n->t('date')} |\n";
|
||||||
$trelloCard->desc .= "|---|---\n";
|
$trelloCard->desc .= "|---|---\n";
|
||||||
foreach ($trelloCard->attachments as $attachment) {
|
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";
|
$trelloCard->desc .= "| [{$name}]({$attachment->url}) | {$attachment->date} |\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ use OCA\Deck\Db\Acl;
|
|||||||
use OCA\Deck\Db\AclMapper;
|
use OCA\Deck\Db\AclMapper;
|
||||||
use OCA\Deck\Db\Assignment;
|
use OCA\Deck\Db\Assignment;
|
||||||
use OCA\Deck\Db\AssignmentMapper;
|
use OCA\Deck\Db\AssignmentMapper;
|
||||||
|
use OCA\Deck\Db\AttachmentMapper;
|
||||||
use OCA\Deck\Db\BoardMapper;
|
use OCA\Deck\Db\BoardMapper;
|
||||||
use OCA\Deck\Db\Card;
|
use OCA\Deck\Db\Card;
|
||||||
use OCA\Deck\Db\CardMapper;
|
use OCA\Deck\Db\CardMapper;
|
||||||
@@ -57,6 +58,8 @@ class BoardImportServiceTest extends \Test\TestCase {
|
|||||||
private $cardMapper;
|
private $cardMapper;
|
||||||
/** @var AssignmentMapper|MockObject */
|
/** @var AssignmentMapper|MockObject */
|
||||||
private $assignmentMapper;
|
private $assignmentMapper;
|
||||||
|
/** @var AttachmentMapper|MockObject */
|
||||||
|
private $attachmentMapper;
|
||||||
/** @var ICommentsManager|MockObject */
|
/** @var ICommentsManager|MockObject */
|
||||||
private $commentsManager;
|
private $commentsManager;
|
||||||
/** @var BoardImportTrelloJsonService|MockObject */
|
/** @var BoardImportTrelloJsonService|MockObject */
|
||||||
@@ -70,8 +73,9 @@ class BoardImportServiceTest extends \Test\TestCase {
|
|||||||
$this->aclMapper = $this->createMock(AclMapper::class);
|
$this->aclMapper = $this->createMock(AclMapper::class);
|
||||||
$this->labelMapper = $this->createMock(LabelMapper::class);
|
$this->labelMapper = $this->createMock(LabelMapper::class);
|
||||||
$this->stackMapper = $this->createMock(StackMapper::class);
|
$this->stackMapper = $this->createMock(StackMapper::class);
|
||||||
$this->cardMapper = $this->createMock(AssignmentMapper::class);
|
$this->cardMapper = $this->createMock(CardMapper::class);
|
||||||
$this->assignmentMapper = $this->createMock(CardMapper::class);
|
$this->assignmentMapper = $this->createMock(AssignmentMapper::class);
|
||||||
|
$this->attachmentMapper = $this->createMock(AttachmentMapper::class);
|
||||||
$this->commentsManager = $this->createMock(ICommentsManager::class);
|
$this->commentsManager = $this->createMock(ICommentsManager::class);
|
||||||
$this->boardImportService = new BoardImportService(
|
$this->boardImportService = new BoardImportService(
|
||||||
$this->dbConn,
|
$this->dbConn,
|
||||||
@@ -80,8 +84,9 @@ class BoardImportServiceTest extends \Test\TestCase {
|
|||||||
$this->aclMapper,
|
$this->aclMapper,
|
||||||
$this->labelMapper,
|
$this->labelMapper,
|
||||||
$this->stackMapper,
|
$this->stackMapper,
|
||||||
$this->cardMapper,
|
|
||||||
$this->assignmentMapper,
|
$this->assignmentMapper,
|
||||||
|
$this->attachmentMapper,
|
||||||
|
$this->cardMapper,
|
||||||
$this->commentsManager
|
$this->commentsManager
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|||||||
@@ -23,21 +23,26 @@
|
|||||||
namespace OCA\Deck\Service;
|
namespace OCA\Deck\Service;
|
||||||
|
|
||||||
use OCP\IL10N;
|
use OCP\IL10N;
|
||||||
|
use OCP\IURLGenerator;
|
||||||
use OCP\IUser;
|
use OCP\IUser;
|
||||||
use OCP\IUserManager;
|
use OCP\IUserManager;
|
||||||
|
|
||||||
class BoardImportTrelloJsonServiceTest extends \Test\TestCase {
|
class BoardImportTrelloJsonServiceTest extends \Test\TestCase {
|
||||||
/** @var BoardImportTrelloJsonService */
|
/** @var BoardImportTrelloJsonService */
|
||||||
private $service;
|
private $service;
|
||||||
|
/** @var IURLGenerator */
|
||||||
|
private $urlGenerator;
|
||||||
/** @var IUserManager */
|
/** @var IUserManager */
|
||||||
private $userManager;
|
private $userManager;
|
||||||
/** @var IL10N */
|
/** @var IL10N */
|
||||||
private $l10n;
|
private $l10n;
|
||||||
public function setUp(): void {
|
public function setUp(): void {
|
||||||
$this->userManager = $this->createMock(IUserManager::class);
|
$this->userManager = $this->createMock(IUserManager::class);
|
||||||
|
$this->urlGenerator = $this->createMock(IURLGenerator::class);
|
||||||
$this->l10n = $this->createMock(IL10N::class);
|
$this->l10n = $this->createMock(IL10N::class);
|
||||||
$this->service = new BoardImportTrelloJsonService(
|
$this->service = new BoardImportTrelloJsonService(
|
||||||
$this->userManager,
|
$this->userManager,
|
||||||
|
$this->urlGenerator,
|
||||||
$this->l10n
|
$this->l10n
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user