diff --git a/appinfo/info.xml b/appinfo/info.xml
index 1d750883d..0b9f6127f 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -36,7 +36,7 @@
pgsql
sqlite
mysql
-
+
OCA\Deck\Cron\DeleteCron
diff --git a/appinfo/routes.php b/appinfo/routes.php
index 707f9ba0c..7d6816b7a 100644
--- a/appinfo/routes.php
+++ b/appinfo/routes.php
@@ -88,8 +88,8 @@ return [
['name' => 'board_api#update', 'url' => '/api/v1.0/boards/{boardId}', 'verb' => 'PUT'],
['name' => 'board_api#undo_delete', 'url' => '/api/v1.0/boards/{boardId}/undo_delete', 'verb' => 'POST'],
['name' => 'board_api#addAcl', 'url' => '/api/v1.0/boards/{boardId}/acl', 'verb' => 'POST'],
- ['name' => 'board_api#deleteAcl', 'url' => '/api/v1.0/boards/{boardId}/acl', 'verb' => 'DELETE'],
- ['name' => 'board_api#updateAcl', 'url' => '/api/v1.0/boards/{boardId}/acl', 'verb' => 'PUT'],
+ ['name' => 'board_api#deleteAcl', 'url' => '/api/v1.0/boards/{boardId}/acl/{aclId}', 'verb' => 'DELETE'],
+ ['name' => 'board_api#updateAcl', 'url' => '/api/v1.0/boards/{boardId}/acl/{aclId}', 'verb' => 'PUT'],
['name' => 'stack_api#index', 'url' => '/api/v1.0/boards/{boardId}/stacks', 'verb' => 'GET'],
diff --git a/js/service/BoardService.js b/js/service/BoardService.js
index 2857b6d0f..38b09db65 100644
--- a/js/service/BoardService.js
+++ b/js/service/BoardService.js
@@ -172,7 +172,8 @@ app.factory('BoardService', function (ApiService, $http, $q) {
var deferred = $q.defer();
var self = this;
$http.delete(this.baseUrl + '/' + acl.boardId + '/acl/' + acl.id).then(function (response) {
- delete board.acl[response.data.id];
+ var index = board.acl.findIndex((item) => item.id === response.data.id);
+ delete board.acl[index];
if (response.data.type === OC.Share.SHARE_TYPE_USER) {
self._updateUsers();
} else {
@@ -192,7 +193,8 @@ app.factory('BoardService', function (ApiService, $http, $q) {
var self = this;
var _acl = acl;
$http.put(this.baseUrl + '/' + acl.boardId + '/acl', _acl).then(function (response) {
- board.acl[_acl.id] = response.data;
+ var index = board.acl.findIndex((item) => item.id === _acl.id);
+ board.acl[index] = response.data;
if (response.data.type === OC.Share.SHARE_TYPE_USER) {
self._updateUsers();
} else {
diff --git a/lib/Controller/CardApiController.php b/lib/Controller/CardApiController.php
index 2c8702745..7e7d26eb3 100644
--- a/lib/Controller/CardApiController.php
+++ b/lib/Controller/CardApiController.php
@@ -86,8 +86,8 @@ class CardApiController extends ApiController {
*
* Update a card
*/
- public function update($title, $type, $order = 0, $description = '', $owner, $duedate = null) {
- $card = $this->cardService->update($this->request->getParam('cardId'), $title, $this->request->getParam('stackId'), $type, $order, $description, $owner, $duedate, 0);
+ public function update($title, $type, $order = 0, $description = '', $owner, $duedate = null, $archived = null) {
+ $card = $this->cardService->update($this->request->getParam('cardId'), $title, $this->request->getParam('stackId'), $type, $order, $description, $owner, $duedate, 0, $archived);
return new DataResponse($card, HTTP::STATUS_OK);
}
diff --git a/lib/Db/Board.php b/lib/Db/Board.php
index ae26fe3ca..a62b6fe3c 100644
--- a/lib/Db/Board.php
+++ b/lib/Db/Board.php
@@ -76,7 +76,7 @@ class Board extends RelationalEntity {
*/
public function setAcl($acl) {
foreach ($acl as $a) {
- $this->acl[$a->id] = $a;
+ $this->acl[] = $a;
}
}
}
diff --git a/lib/Service/CardService.php b/lib/Service/CardService.php
index 58b8fc2ba..249364f0c 100644
--- a/lib/Service/CardService.php
+++ b/lib/Service/CardService.php
@@ -249,7 +249,7 @@ class CardService {
* @throws \OCP\AppFramework\Db\MultipleObjectsReturnedException
* @throws BadRequestException
*/
- public function update($id, $title, $stackId, $type, $order = 0, $description = '', $owner, $duedate = null, $deletedAt) {
+ public function update($id, $title, $stackId, $type, $order = 0, $description = '', $owner, $duedate = null, $deletedAt = null, $archived = null) {
if (is_numeric($id) === false) {
throw new BadRequestException('card id must be a number');
@@ -276,7 +276,7 @@ class CardService {
throw new StatusException('Operation not allowed. This board is archived.');
}
$card = $this->cardMapper->find($id);
- if ($card->getArchived()) {
+ if ($archived !== null && $card->getArchived() && $archived === true) {
throw new StatusException('Operation not allowed. This card is archived.');
}
$changes = new ChangeSet($card);
@@ -301,7 +301,13 @@ class CardService {
$card->setOrder($order);
$card->setOwner($owner);
$card->setDuedate($duedate);
- $card->setDeletedAt($deletedAt);
+ if ($deletedAt) {
+ $card->setDeletedAt($deletedAt);
+ }
+ if ($archived !== null) {
+ $card->setArchived($archived);
+ }
+
// Trigger update events before setting description as it is handled separately
$changes->setAfter($card);
diff --git a/tests/unit/Db/BoardTest.php b/tests/unit/Db/BoardTest.php
index 2f06a4172..5053c761d 100644
--- a/tests/unit/Db/BoardTest.php
+++ b/tests/unit/Db/BoardTest.php
@@ -57,7 +57,7 @@ class BoardTest extends TestCase {
$acl->setId(1);
$board = $this->createBoard();
$board->setAcl(array($acl));
- $result = $board->getAcl()[1];
+ $result = $board->getAcl()[0];
$this->assertEquals($acl, $result);
}
public function testSetShared() {