Browse Source

Merge pull request #4396 from Ben0it-T/add-linkedBoard-activities-to-sidebar

Add linkedBoard Activities to sidebar
Lauri Ojansivu 3 years ago
parent
commit
a2beaa6e83

+ 26 - 43
client/components/activities/activities.jade

@@ -59,18 +59,17 @@ template(name="activity")
             img.attachment-image-preview(src=activity.attachment.url)
             img.attachment-image-preview(src=activity.attachment.url)
 
 
       //- board activity ------------------------------------------------------
       //- board activity ------------------------------------------------------
-      if($eq mode 'board')
-        if($eq activity.activityType 'createBoard')
-          | {{{_ 'activity-created' boardLabelLink}}}.
+      if($eq activity.activityType 'createBoard')
+        | {{{_ 'activity-created' boardLabelLink}}}.
 
 
-        if($eq activity.activityType 'importBoard')
-          | {{{_ 'activity-imported-board' boardLabelLink sourceLink}}}.
+      if($eq activity.activityType 'importBoard')
+        | {{{_ 'activity-imported-board' boardLabelLink sourceLink}}}.
 
 
-        if($eq activity.activityType 'addBoardMember')
-          | {{{_ 'activity-added' memberLink boardLabelLink}}}.
+      if($eq activity.activityType 'addBoardMember')
+        | {{{_ 'activity-added' memberLink boardLabelLink}}}.
 
 
-        if($eq activity.activityType 'removeBoardMember')
-          | {{{_ 'activity-excluded' memberLink boardLabelLink}}}.
+      if($eq activity.activityType 'removeBoardMember')
+        | {{{_ 'activity-excluded' memberLink boardLabelLink}}}.
 
 
       //- card activity -------------------------------------------------------
       //- card activity -------------------------------------------------------
       if($eq activity.activityType 'createCard')
       if($eq activity.activityType 'createCard')
@@ -166,42 +165,27 @@ template(name="activity")
               = activity.comment.text
               = activity.comment.text
 
 
       //- date activity ------------------------------------------------
       //- date activity ------------------------------------------------
-      if($eq mode 'card')
-        if($eq activity.activityType 'a-receivedAt')
-          | {{{_ 'activity-receivedDate' (sanitize receivedDate) cardLink}}}.
-
-        if($eq activity.activityType 'a-startAt')
-          | {{{_ 'activity-startDate' (sanitize startDate) cardLink}}}.
-
-        if($eq activity.activityType 'a-dueAt')
-          | {{{_ 'activity-dueDate' (sanitize dueDate) cardLink}}}.
+      if($eq activity.activityType 'a-receivedAt')
+        | {{{_ 'activity-receivedDate' (sanitize receivedDate) cardLink}}}.
 
 
-        if($eq activity.activityType 'a-endAt')
-          | {{{_ 'activity-endDate' (sanitize endDate) cardLink}}}.
+      if($eq activity.activityType 'a-startAt')
+        | {{{_ 'activity-startDate' (sanitize startDate) cardLink}}}.
 
 
-      if($eq mode 'board')
-        if($eq activity.activityType 'a-receivedAt')
-          | {{{_ 'activity-receivedDate' (sanitize receivedDate) cardLink}}}.
+      if($eq activity.activityType 'a-dueAt')
+        | {{{_ 'activity-dueDate' (sanitize dueDate) cardLink}}}.
 
 
-        if($eq activity.activityType 'a-startAt')
-          | {{{_ 'activity-startDate' (sanitize startDate) cardLink}}}.
-
-        if($eq activity.activityType 'a-dueAt')
-          | {{{_ 'activity-dueDate' (sanitize dueDate) cardLink}}}.
-
-        if($eq activity.activityType 'a-endAt')
-          | {{{_ 'activity-endDate' (sanitize endDate) cardLink}}}.
+      if($eq activity.activityType 'a-endAt')
+        | {{{_ 'activity-endDate' (sanitize endDate) cardLink}}}.
 
 
       //- customField activity ------------------------------------------------
       //- customField activity ------------------------------------------------
-      if($eq mode 'board')
-        if($eq activity.activityType 'createCustomField')
-          | {{_ 'activity-customfield-created' customField}}.
+      if($eq activity.activityType 'createCustomField')
+        | {{_ 'activity-customfield-created' customField}}.
 
 
-        if($eq activity.activityType 'setCustomField')
-          | {{{_ 'activity-set-customfield' (sanitize lastCustomField) (sanitize lastCustomFieldValue) cardLink}}}.
+      if($eq activity.activityType 'setCustomField')
+        | {{{_ 'activity-set-customfield' (sanitize lastCustomField) (sanitize lastCustomFieldValue) cardLink}}}.
 
 
-        if($eq activity.activityType 'unsetCustomField')
-          | {{{_ 'activity-unset-customfield' (sanitize lastCustomField) cardLink}}}.
+      if($eq activity.activityType 'unsetCustomField')
+        | {{{_ 'activity-unset-customfield' (sanitize lastCustomField) cardLink}}}.
 
 
       //- label activity ------------------------------------------------------
       //- label activity ------------------------------------------------------
       if($eq activity.activityType 'addedLabel')
       if($eq activity.activityType 'addedLabel')
@@ -238,12 +222,11 @@ template(name="activity")
           | {{{_ 'activity-removed' memberLink cardLink}}}.
           | {{{_ 'activity-removed' memberLink cardLink}}}.
 
 
       //- swimlane activity --------------------------------------------------
       //- swimlane activity --------------------------------------------------
-      if($neq mode 'card')
-        if($eq activity.activityType 'createSwimlane')
-          | {{_ 'activity-added' (sanitize activity.swimlane.title) boardLabelLink}}.
+      if($eq activity.activityType 'createSwimlane')
+        | {{{_ 'activity-added' (sanitize activity.swimlane.title) boardLabelLink}}}.
 
 
-        if($eq activity.activityType 'archivedSwimlane')
-          | {{_ 'activity-archived' (sanitize activity.swimlane.title)}}.
+      if($eq activity.activityType 'archivedSwimlane')
+        | {{{_ 'activity-archived' (sanitize activity.swimlane.title)}}}.
 
 
 
 
       //- I don't understand this part ----------------------------------------
       //- I don't understand this part ----------------------------------------

+ 38 - 7
client/components/activities/activities.js

@@ -70,22 +70,51 @@ BlazeComponent.extendComponent({
 
 
   boardLabelLink() {
   boardLabelLink() {
     const data = this.currentData();
     const data = this.currentData();
+    const currentBoardId = Session.get('currentBoard');
     if (data.mode !== 'board') {
     if (data.mode !== 'board') {
-      return createBoardLink(data.activity.board(), data.activity.listName);
+      // data.mode: card, linkedcard, linkedboard
+      return createBoardLink(data.activity.board(), data.activity.listName ? data.activity.listName : null);
+    }
+    else if (currentBoardId != data.activity.boardId) {
+      // data.mode: board
+      // current activitie is linked
+      return createBoardLink(data.activity.board(), data.activity.listName ? data.activity.listName : null);
     }
     }
     return TAPi18n.__('this-board');
     return TAPi18n.__('this-board');
   },
   },
 
 
   cardLabelLink() {
   cardLabelLink() {
     const data = this.currentData();
     const data = this.currentData();
-    if (data.mode !== 'card') {
-      return createCardLink(data.activity.card());
+    const currentBoardId = Session.get('currentBoard');
+    if (data.mode == 'card') {
+      // data.mode: card
+      return TAPi18n.__('this-card');
+    }
+    else if (data.mode !== 'board') {
+      // data.mode: linkedcard, linkedboard
+      return createCardLink(data.activity.card(), null);
     }
     }
-    return TAPi18n.__('this-card');
+    else if (currentBoardId != data.activity.boardId) {
+      // data.mode: board
+      // current activitie is linked
+      return createCardLink(data.activity.card(), data.activity.board().title);
+    }
+    return createCardLink(this.currentData().activity.card(), null);
   },
   },
 
 
   cardLink() {
   cardLink() {
-    return createCardLink(this.currentData().activity.card());
+    const data = this.currentData();
+    const currentBoardId = Session.get('currentBoard');
+    if (data.mode !== 'board') {
+      // data.mode: card, linkedcard, linkedboard
+      return createCardLink(data.activity.card(), null);
+    }
+    else if (currentBoardId != data.activity.boardId) {
+      // data.mode: board
+      // current activitie is linked
+      return createCardLink(data.activity.card(), data.activity.board().title);
+    }
+    return createCardLink(this.currentData().activity.card(), null);
   },
   },
 
 
   receivedDate() {
   receivedDate() {
@@ -304,8 +333,10 @@ Template.commentReactions.helpers({
   }
   }
 })
 })
 
 
-function createCardLink(card) {
+function createCardLink(card, board) {
   if (!card) return '';
   if (!card) return '';
+  let text = card.title;
+  if (board) text = `${board} > ` + text;
   return (
   return (
     card &&
     card &&
     Blaze.toHTML(
     Blaze.toHTML(
@@ -314,7 +345,7 @@ function createCardLink(card) {
           href: card.originRelativeUrl(),
           href: card.originRelativeUrl(),
           class: 'action-card',
           class: 'action-card',
         },
         },
-        DOMPurify.sanitize(card.title, { ALLOW_UNKNOWN_PROTOCOLS: true }),
+        DOMPurify.sanitize(text, { ALLOW_UNKNOWN_PROTOCOLS: true }),
       ),
       ),
     )
     )
   );
   );

+ 9 - 1
models/boards.js

@@ -773,7 +773,15 @@ Boards.helpers({
   },
   },
 
 
   activities() {
   activities() {
-    return Activities.find({ boardId: this._id }, { sort: { createdAt: -1 } });
+    let linkedBoardId = [this._id];
+    Cards.find({
+      "type": "cardType-linkedBoard",
+      "boardId": this._id}
+      ).forEach(card => {
+        linkedBoardId.push(card.linkedId);
+    });
+    return Activities.find({ boardId: { $in: linkedBoardId } }, { sort: { createdAt: -1 } });
+    //return Activities.find({ boardId: this._id }, { sort: { createdAt: -1 } });
   },
   },
 
 
   activeMembers(){
   activeMembers(){

+ 16 - 2
server/publications/activities.js

@@ -14,9 +14,23 @@ Meteor.publish('activities', (kind, id, limit, hideSystem) => {
   check(limit, Number);
   check(limit, Number);
   check(hideSystem, Boolean);
   check(hideSystem, Boolean);
 
 
+  // Get linkedBoard
+  let linkedElmtId = [id];
+  if (kind == 'board') {
+    Cards.find({
+      "type": "cardType-linkedBoard",
+      "boardId": id}
+      ).forEach(card => {
+        linkedElmtId.push(card.linkedId);
+    });
+  }
+
+  //const selector = hideSystem
+  //  ? { $and: [{ activityType: 'addComment' }, { [`${kind}Id`]: id }] }
+  //  : { [`${kind}Id`]: id };
   const selector = hideSystem
   const selector = hideSystem
-    ? { $and: [{ activityType: 'addComment' }, { [`${kind}Id`]: id }] }
-    : { [`${kind}Id`]: id };
+    ? { $and: [{ activityType: 'addComment' }, { [`${kind}Id`]: { $in: linkedElmtId } }] }
+    : { [`${kind}Id`]: { $in: linkedElmtId } };
   return Activities.find(selector, {
   return Activities.find(selector, {
     limit,
     limit,
     sort: { createdAt: -1 },
     sort: { createdAt: -1 },

+ 1 - 1
server/publications/boards.js

@@ -270,7 +270,7 @@ Meteor.publishRelations('board', function(boardId, isArchived) {
           checklists.push(cardId);
           checklists.push(cardId);
           checklistItems.push(cardId);
           checklistItems.push(cardId);
           parentCards.push(cardId);
           parentCards.push(cardId);
-          cardCommentReactions.push(cardId)
+          cardCommentReactions.push(cardId);
         },
         },
       );
       );