diff --git a/appinfo/info.xml b/appinfo/info.xml
index 1d750883d..110a1d7a6 100644
--- a/appinfo/info.xml
+++ b/appinfo/info.xml
@@ -17,7 +17,7 @@
- 🚀 Get your project organized
- 0.6.2
+ 0.6.2-1
agpl
Julius Härtl
Deck
@@ -36,7 +36,7 @@
pgsql
sqlite
mysql
-
+
OCA\Deck\Cron\DeleteCron
@@ -54,6 +54,7 @@
OCA\Deck\Activity\Setting
+ OCA\Deck\Activity\SettingComment
OCA\Deck\Activity\DescriptionSetting
diff --git a/js/service/ActivityService.js b/js/service/ActivityService.js
index 5b929559a..a7a128484 100644
--- a/js/service/ActivityService.js
+++ b/js/service/ActivityService.js
@@ -94,7 +94,7 @@ class ActivityService {
static getUrl(type, id, since) {
if (type === DECK_ACTIVITY_TYPE_CARD) {
- return OC.linkToOCS('apps/activity/api/v2/activity', 2) + 'filter?format=json&object_type=deck_card&object_id=' + id + '&limit=' + this.RESULT_PER_PAGE + '&since=' + since;
+ return OC.linkToOCS('apps/activity/api/v2/activity', 2) + 'deck?format=json&object_type=deck_card&object_id=' + id + '&limit=' + this.RESULT_PER_PAGE + '&since=' + since;
}
if (type === DECK_ACTIVITY_TYPE_BOARD) {
return OC.linkToOCS('apps/activity/api/v2/activity', 2) + 'deck?format=json&limit=' + this.RESULT_PER_PAGE + '&since=' + since;
diff --git a/js/service/BoardService.js b/js/service/BoardService.js
index 2857b6d0f..0cf704b00 100644
--- a/js/service/BoardService.js
+++ b/js/service/BoardService.js
@@ -4,20 +4,20 @@
* @author Julius Härtl
*
* @license GNU AGPL version 3 or any later version
- *
+ *
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
- *
+ *
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see .
- *
+ *
*/
import app from '../app/App.js';
/* global app OC angular */
diff --git a/lib/Activity/ActivityManager.php b/lib/Activity/ActivityManager.php
index 4679d32a4..e90aa61b0 100644
--- a/lib/Activity/ActivityManager.php
+++ b/lib/Activity/ActivityManager.php
@@ -47,6 +47,7 @@ use OCP\IUser;
class ActivityManager {
+ const DECK_NOAUTHOR_COMMENT_SYSTEM_ENFORCED = 'DECK_NOAUTHOR_COMMENT_SYSTEM_ENFORCED';
private $manager;
private $userId;
private $permissionService;
@@ -142,7 +143,7 @@ class ActivityManager {
$subject = $ownActivity ? $this->l10n->t('You have restored the board {board}') : $this->l10n->t('{user} has restored the board {board}');
break;
case self::SUBJECT_BOARD_SHARE:
- $subject = $ownActivity ? $this->l10n->t('You have shared the board {board} with {acl}') : $this->l10n->t('{user} has shared the board {board} with {sharee}');
+ $subject = $ownActivity ? $this->l10n->t('You have shared the board {board} with {acl}') : $this->l10n->t('{user} has shared the board {board} with {acl}');
break;
case self::SUBJECT_BOARD_UNSHARE:
$subject = $ownActivity ? $this->l10n->t('You have removed {acl} from the board {board}') : $this->l10n->t('{user} has removed {acl} from the board {board}');
@@ -280,7 +281,7 @@ class ActivityManager {
}
} else {
try {
- $events = [$this->createEvent($objectType, $entity, $subject, $author)];
+ $events = [$this->createEvent($objectType, $entity, $subject)];
} catch (\Exception $e) {
// Ignore exception for undefined activities on update events
}
@@ -327,6 +328,7 @@ class ActivityManager {
// case self::SUBJECT_BOARD_UPDATE_COLOR
break;
case self::SUBJECT_CARD_COMMENT_CREATE:
+ $eventType = 'deck_comment';
$subjectParams = $this->findDetailsForCard($entity->getId());
if (array_key_exists('comment', $additionalParams)) {
/** @var IComment $entity */
@@ -335,7 +337,6 @@ class ActivityManager {
unset($additionalParams['comment']);
}
break;
-
case self::SUBJECT_STACK_CREATE:
case self::SUBJECT_STACK_UPDATE:
case self::SUBJECT_STACK_UPDATE_TITLE:
@@ -356,7 +357,7 @@ class ActivityManager {
case self::SUBJECT_LABEL_UNASSING:
case self::SUBJECT_CARD_USER_ASSIGN:
case self::SUBJECT_CARD_USER_UNASSIGN:
- $subjectParams = $this->findDetailsForCard($entity->getId());
+ $subjectParams = $this->findDetailsForCard($entity->getId(), $subject);
$object = $entity;
break;
case self::SUBJECT_ATTACHMENT_CREATE:
@@ -402,6 +403,12 @@ class ActivityManager {
$event->setMessage($message);
}
+ // FIXME: We currently require activities for comments even if they are disabled though settings
+ // Get rid of this once the frontend fetches comments/activity individually
+ if ($eventType === 'deck_comment') {
+ $event->setAuthor(self::DECK_NOAUTHOR_COMMENT_SYSTEM_ENFORCED);
+ }
+
return $event;
}
@@ -486,10 +493,17 @@ class ActivityManager {
];
}
- private function findDetailsForCard($cardId) {
+ private function findDetailsForCard($cardId, $subject = null) {
$card = $this->cardMapper->find($cardId);
$stack = $this->stackMapper->find($card->getStackId());
$board = $this->boardMapper->find($stack->getBoardId());
+ if ($subject !== self::SUBJECT_CARD_UPDATE_DESCRIPTION) {
+ $card = [
+ 'id' => $card->getId(),
+ 'title' => $card->getTitle(),
+ 'archived' => $card->getArchived()
+ ];
+ }
return [
'card' => $card,
'stack' => $stack,
diff --git a/lib/Activity/DeckProvider.php b/lib/Activity/DeckProvider.php
index 87a7832a7..1efefdd27 100644
--- a/lib/Activity/DeckProvider.php
+++ b/lib/Activity/DeckProvider.php
@@ -90,7 +90,7 @@ class DeckProvider implements IProvider {
$author = $event->getAuthor();
// get author if
- if ($author === '' && array_key_exists('author', $subjectParams)) {
+ if (($author === '' || $author === ActivityManager::DECK_NOAUTHOR_COMMENT_SYSTEM_ENFORCED) && array_key_exists('author', $subjectParams)) {
$author = $subjectParams['author'];
unset($subjectParams['author']);
}
diff --git a/lib/Activity/Filter.php b/lib/Activity/Filter.php
index d4209b7cc..62b9a7c83 100644
--- a/lib/Activity/Filter.php
+++ b/lib/Activity/Filter.php
@@ -79,7 +79,7 @@ class Filter implements \OCP\Activity\IFilter {
* @since 11.0.0
*/
public function filterTypes(array $types) {
- return $types;
+ return array_merge($types, ['deck_comment']);
}
/**
diff --git a/lib/Activity/SettingComment.php b/lib/Activity/SettingComment.php
new file mode 100644
index 000000000..fd8ad178b
--- /dev/null
+++ b/lib/Activity/SettingComment.php
@@ -0,0 +1,53 @@
+
+ *
+ * @author Julius Härtl
+ *
+ * @license GNU AGPL version 3 or any later version
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ *
+ */
+
+namespace OCA\Deck\Activity;
+
+
+class SettingComment extends Setting {
+
+ /**
+ * @return string Lowercase a-z and underscore only identifier
+ * @since 11.0.0
+ */
+ public function getIdentifier() {
+ return 'deck_comment';
+ }
+
+ /**
+ * @return string A translated string
+ * @since 11.0.0
+ */
+ public function getName() {
+ return $this->l->t('A comment was created on a card');
+ }
+
+ /**
+ * @return bool True when the option can be changed for the stream
+ * @since 11.0.0
+ */
+ public function canChangeStream() {
+ return false;
+ }
+
+}
diff --git a/tests/unit/Activity/ActivityManagerTest.php b/tests/unit/Activity/ActivityManagerTest.php
index 8bcf3884e..7d6b515ea 100644
--- a/tests/unit/Activity/ActivityManagerTest.php
+++ b/tests/unit/Activity/ActivityManagerTest.php
@@ -295,7 +295,11 @@ class ActivityManagerTest extends TestCase {
$this->assertEquals([
'stack' => $stack,
'board' => $board,
- 'card' => $card
+ 'card' => [
+ 'id' => $card->getId(),
+ 'title' => $card->getTitle(),
+ 'archived' => $card->getArchived()
+ ]
], $this->invokePrivate($this->activityManager, 'findDetailsForCard', [555]));
}
@@ -329,7 +333,11 @@ class ActivityManagerTest extends TestCase {
$this->assertEquals([
'stack' => $stack,
'board' => $board,
- 'card' => $card,
+ 'card' => [
+ 'id' => $card->getId(),
+ 'title' => $card->getTitle(),
+ 'archived' => $card->getArchived()
+ ],
'attachment' => $attachment
], $this->invokePrivate($this->activityManager, 'findDetailsForAttachment', [777]));
}
diff --git a/tests/unit/Activity/FilterTest.php b/tests/unit/Activity/FilterTest.php
index d3e6b82c5..d58ad34b9 100644
--- a/tests/unit/Activity/FilterTest.php
+++ b/tests/unit/Activity/FilterTest.php
@@ -71,7 +71,7 @@ class FilterTest extends TestCase {
public function testFilterTypes() {
$data = ['deck_board', 'deck_card'];
- $this->assertEquals($data, $this->filter->filterTypes($data));
+ $this->assertEquals(array_merge($data, ['deck_comment']), $this->filter->filterTypes($data));
}
public function testAllowedApps() {