show deleted cards in sidebar tab (styling still wip)
Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info> card undo delete done, styling still wip Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info> fix Codacy findings Signed-off-by: Manuel Arno Korfmann <manu@korfmann.info>
This commit is contained in:
committed by
Julius Härtl
parent
2ef4b55af4
commit
f2795f120b
@@ -144,7 +144,7 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
|
|||||||
}, function (error) {
|
}, function (error) {
|
||||||
$scope.statusservice.setError('Error occured', error);
|
$scope.statusservice.setError('Error occured', error);
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
$scope.loadDefault = function () {
|
$scope.loadDefault = function () {
|
||||||
StackService.fetchAll($scope.id).then(function (data) {
|
StackService.fetchAll($scope.id).then(function (data) {
|
||||||
@@ -203,10 +203,25 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
|
|||||||
}
|
}
|
||||||
CardService.delete(card.id).then(function () {
|
CardService.delete(card.id).then(function () {
|
||||||
StackService.removeCard(card);
|
StackService.removeCard(card);
|
||||||
$scope.loadDeletedCards();
|
$scope.deletedCards.push(card);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$scope.cardUndoDelete = function (deletedCard) {
|
||||||
|
CardService.undoDelete(deletedCard);
|
||||||
|
StackService.addCard(deletedCard);
|
||||||
|
$scope.removeFromDeletedCards(deletedCard);
|
||||||
|
};
|
||||||
|
|
||||||
|
$scope.removeFromDeletedCards = function(deletedCard) {
|
||||||
|
for(var i=0;i<$scope.deletedCards.length;i++) {
|
||||||
|
if($scope.deletedCards[i].id === deletedCard.id) {
|
||||||
|
$scope.deletedCards.splice(i, 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
$scope.cardArchive = function (card) {
|
$scope.cardArchive = function (card) {
|
||||||
CardService.archive(card);
|
CardService.archive(card);
|
||||||
StackService.removeCard(card);
|
StackService.removeCard(card);
|
||||||
@@ -247,6 +262,7 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
|
|||||||
// TODO: remove from cards
|
// TODO: remove from cards
|
||||||
};
|
};
|
||||||
$scope.labelCreate = function (label) {
|
$scope.labelCreate = function (label) {
|
||||||
|
alert(label);
|
||||||
label.boardId = $scope.id;
|
label.boardId = $scope.id;
|
||||||
LabelService.create(label).then(function (data) {
|
LabelService.create(label).then(function (data) {
|
||||||
$scope.newStack.title = '';
|
$scope.newStack.title = '';
|
||||||
|
|||||||
@@ -114,18 +114,18 @@ app.factory('ApiService', function ($http, $q) {
|
|||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
ApiService.prototype.softDelete = function (id) {
|
ApiService.prototype.softDelete = function (id) {
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
$http.delete(this.baseUrl + '/' + id).then(function (response) {
|
$http.delete(this.baseUrl + '/' + id).then(function (response) {
|
||||||
self.data[id].deletedAt = response.data.deletedAt;
|
self.data[id].deletedAt = response.data.deletedAt;
|
||||||
deferred.resolve(response.data);
|
deferred.resolve(response.data);
|
||||||
}, function (error) {
|
}, function (error) {
|
||||||
deferred.reject('Deleting ' + self.endpoint + ' failed');
|
deferred.reject('Deleting ' + self.endpoint + ' failed');
|
||||||
});
|
});
|
||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
};
|
};
|
||||||
|
|
||||||
// methods for managing data
|
// methods for managing data
|
||||||
ApiService.prototype.clear = function () {
|
ApiService.prototype.clear = function () {
|
||||||
|
|||||||
@@ -29,6 +29,11 @@ app.factory('CardService', function (ApiService, $http, $q) {
|
|||||||
|
|
||||||
CardService.prototype.delete = CardService.prototype.softDelete;
|
CardService.prototype.delete = CardService.prototype.softDelete;
|
||||||
|
|
||||||
|
CardService.prototype.undoDelete = function(card) {
|
||||||
|
card.deletedAt = 0;
|
||||||
|
this.update(card);
|
||||||
|
};
|
||||||
|
|
||||||
CardService.prototype.reorder = function (card, order) {
|
CardService.prototype.reorder = function (card, order) {
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
var self = this;
|
var self = this;
|
||||||
@@ -175,18 +180,15 @@ app.factory('CardService', function (ApiService, $http, $q) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
CardService.prototype.fetchDeleted = function (boardId) {
|
CardService.prototype.fetchDeleted = function (boardId) {
|
||||||
|
|
||||||
var deferred = $q.defer();
|
var deferred = $q.defer();
|
||||||
var self = this;
|
var self = this;
|
||||||
$http.get(this.baseUrl + '/deleted/' + boardId).then(function (response) {
|
$http.get(this.baseUrl + '/deleted/' + boardId).then(function (response) {
|
||||||
var objects = response.data;
|
var objects = response.data;
|
||||||
return objects;
|
deferred.resolve(objects);
|
||||||
deferred.resolve(self.data);
|
|
||||||
}, function (error) {
|
}, function (error) {
|
||||||
deferred.reject('Fetching ' + self.endpoint + ' failed');
|
deferred.reject('Fetching ' + self.endpoint + ' failed');
|
||||||
});
|
});
|
||||||
return deferred.promise;
|
return deferred.promise;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -89,10 +89,11 @@ class CardController extends Controller {
|
|||||||
* @param $order
|
* @param $order
|
||||||
* @param $description
|
* @param $description
|
||||||
* @param $duedate
|
* @param $duedate
|
||||||
|
* @param $deletedAt
|
||||||
* @return \OCP\AppFramework\Db\Entity
|
* @return \OCP\AppFramework\Db\Entity
|
||||||
*/
|
*/
|
||||||
public function update($id, $title, $stackId, $type, $order, $description, $duedate) {
|
public function update($id, $title, $stackId, $type, $order, $description, $duedate, $deletedAt) {
|
||||||
return $this->cardService->update($id, $title, $stackId, $type, $order, $description, $this->userId, $duedate);
|
return $this->cardService->update($id, $title, $stackId, $type, $order, $description, $this->userId, $duedate, $deletedAt);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -120,15 +120,15 @@ class CardMapper extends DeckMapper implements IPermissionMapper {
|
|||||||
|
|
||||||
public function findAll($stackId, $limit = null, $offset = null) {
|
public function findAll($stackId, $limit = null, $offset = null) {
|
||||||
$sql = 'SELECT * FROM `*PREFIX*deck_cards`
|
$sql = 'SELECT * FROM `*PREFIX*deck_cards`
|
||||||
WHERE `stack_id` = ? AND NOT archived ORDER BY `order`';
|
WHERE `stack_id` = ? AND NOT archived AND deleted_at = 0 ORDER BY `order`';
|
||||||
return $this->findEntities($sql, [$stackId], $limit, $offset);
|
return $this->findEntities($sql, [$stackId], $limit, $offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function findDeleted($boardId, $limit = null, $offset = null) {
|
public function findDeleted($boardId, $limit = null, $offset = null) {
|
||||||
$sql = 'SELECT c.* FROM `*PREFIX*deck_cards` c
|
$sql = 'SELECT c.* FROM `*PREFIX*deck_cards` c
|
||||||
INNER JOIN `*PREFIX*deck_stacks` s ON s.id = c.stack_id
|
INNER JOIN `*PREFIX*deck_stacks` s ON s.id = c.stack_id
|
||||||
WHERE `s`.`board_id` = ? AND NOT c.archived AND NOT c.deleted_at = 0 AND c.deleted_at <= ? ORDER BY `c`.`order`';
|
WHERE `s`.`board_id` = ? AND NOT c.archived AND NOT c.deleted_at = 0 ORDER BY `c`.`order`';
|
||||||
return $this->findEntities($sql, [$boardId, time()], $limit, $offset);
|
return $this->findEntities($sql, [$boardId], $limit, $offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function findAllArchived($stackId, $limit = null, $offset = null) {
|
public function findAllArchived($stackId, $limit = null, $offset = null) {
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ use OCA\Deck\Db\CardMapper;
|
|||||||
use OCA\Deck\Db\Acl;
|
use OCA\Deck\Db\Acl;
|
||||||
use OCA\Deck\Db\StackMapper;
|
use OCA\Deck\Db\StackMapper;
|
||||||
use OCA\Deck\Notification\NotificationHelper;
|
use OCA\Deck\Notification\NotificationHelper;
|
||||||
|
use OCA\Deck\Db\BoardMapper;
|
||||||
use OCA\Deck\NotFoundException;
|
use OCA\Deck\NotFoundException;
|
||||||
use OCA\Deck\StatusException;
|
use OCA\Deck\StatusException;
|
||||||
|
|
||||||
@@ -38,6 +39,7 @@ class CardService {
|
|||||||
|
|
||||||
private $cardMapper;
|
private $cardMapper;
|
||||||
private $stackMapper;
|
private $stackMapper;
|
||||||
|
private $boardMapper;
|
||||||
private $permissionService;
|
private $permissionService;
|
||||||
private $boardService;
|
private $boardService;
|
||||||
private $notificationHelper;
|
private $notificationHelper;
|
||||||
@@ -45,9 +47,17 @@ class CardService {
|
|||||||
private $attachmentService;
|
private $attachmentService;
|
||||||
private $currentUser;
|
private $currentUser;
|
||||||
|
|
||||||
public function __construct(CardMapper $cardMapper, StackMapper $stackMapper, PermissionService $permissionService, BoardService $boardService, NotificationHelper $notificationHelper, AssignedUsersMapper $assignedUsersMapper, AttachmentService $attachmentService, $userId) {
|
public function __construct(
|
||||||
|
CardMapper $cardMapper,
|
||||||
|
StackMapper $stackMapper,
|
||||||
|
BoardMapper $boardMapper,
|
||||||
|
PermissionService $permissionService,
|
||||||
|
BoardService $boardService,
|
||||||
|
AssignedUsersMapper $assignedUsersMapper,
|
||||||
|
AttachmentService $attachmentService) {
|
||||||
$this->cardMapper = $cardMapper;
|
$this->cardMapper = $cardMapper;
|
||||||
$this->stackMapper = $stackMapper;
|
$this->stackMapper = $stackMapper;
|
||||||
|
$this->boardMapper = $boardMapper;
|
||||||
$this->permissionService = $permissionService;
|
$this->permissionService = $permissionService;
|
||||||
$this->boardService = $boardService;
|
$this->boardService = $boardService;
|
||||||
$this->notificationHelper = $notificationHelper;
|
$this->notificationHelper = $notificationHelper;
|
||||||
@@ -57,6 +67,7 @@ class CardService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function fetchDeleted($boardId) {
|
public function fetchDeleted($boardId) {
|
||||||
|
$this->permissionService->checkPermission($this->boardMapper, $boardId, Acl::PERMISSION_READ);
|
||||||
return $this->cardMapper->findDeleted($boardId);
|
return $this->cardMapper->findDeleted($boardId);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,7 +110,7 @@ class CardService {
|
|||||||
return $card;
|
return $card;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function update($id, $title, $stackId, $type, $order, $description, $owner, $duedate) {
|
public function update($id, $title, $stackId, $type, $order, $description, $owner, $duedate, $deletedAt) {
|
||||||
$this->permissionService->checkPermission($this->cardMapper, $id, Acl::PERMISSION_EDIT);
|
$this->permissionService->checkPermission($this->cardMapper, $id, Acl::PERMISSION_EDIT);
|
||||||
if ($this->boardService->isArchived($this->cardMapper, $id)) {
|
if ($this->boardService->isArchived($this->cardMapper, $id)) {
|
||||||
throw new StatusException('Operation not allowed. This board is archived.');
|
throw new StatusException('Operation not allowed. This board is archived.');
|
||||||
@@ -115,6 +126,7 @@ class CardService {
|
|||||||
$card->setOwner($owner);
|
$card->setOwner($owner);
|
||||||
$card->setDescription($description);
|
$card->setDescription($description);
|
||||||
$card->setDuedate($duedate);
|
$card->setDuedate($duedate);
|
||||||
|
$card->setDeletedAt($deletedAt);
|
||||||
return $this->cardMapper->update($card);
|
return $this->cardMapper->update($card);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -123,8 +123,13 @@
|
|||||||
<div id="board-detail-deleted-cards" class="tab deletedCardsTabView" ng-if="params.tab==2">
|
<div id="board-detail-deleted-cards" class="tab deletedCardsTabView" ng-if="params.tab==2">
|
||||||
<ul>
|
<ul>
|
||||||
<li ng-repeat="deletedCard in deletedCards">
|
<li ng-repeat="deletedCard in deletedCards">
|
||||||
{{123}}
|
<dl>
|
||||||
{{deletedCard}}
|
<dt>Title</dt>
|
||||||
|
<dd>{{deletedCard.title}}<dd>
|
||||||
|
<dt>Stack</dt>
|
||||||
|
<dd>{{stackservice.data[deletedCard.stackId].title}}</dd>
|
||||||
|
</dl>
|
||||||
|
<a ng-click="cardUndoDelete(deletedCard)"><span class="icon icon-undo"></span><br /><span><?php p($l->t('Undo delete')); ?></span></a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user