mirror of
https://github.com/wekan/wekan.git
synced 2026-01-29 12:46:09 +01:00
Merge pull request #4396 from Ben0it-T/add-linkedBoard-activities-to-sidebar
Add linkedBoard Activities to sidebar
This commit is contained in:
commit
a2beaa6e83
5 changed files with 90 additions and 54 deletions
|
|
@ -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')
|
||||||
if($eq activity.activityType 'createBoard')
|
| {{{_ 'activity-created' boardLabelLink}}}.
|
||||||
| {{{_ 'activity-created' boardLabelLink}}}.
|
|
||||||
|
|
||||||
if($eq activity.activityType 'importBoard')
|
if($eq activity.activityType 'importBoard')
|
||||||
| {{{_ 'activity-imported-board' boardLabelLink sourceLink}}}.
|
| {{{_ 'activity-imported-board' boardLabelLink sourceLink}}}.
|
||||||
|
|
||||||
if($eq activity.activityType 'addBoardMember')
|
if($eq activity.activityType 'addBoardMember')
|
||||||
| {{{_ 'activity-added' memberLink boardLabelLink}}}.
|
| {{{_ 'activity-added' memberLink boardLabelLink}}}.
|
||||||
|
|
||||||
if($eq activity.activityType 'removeBoardMember')
|
if($eq activity.activityType 'removeBoardMember')
|
||||||
| {{{_ 'activity-excluded' memberLink boardLabelLink}}}.
|
| {{{_ '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')
|
||||||
if($eq activity.activityType 'a-receivedAt')
|
| {{{_ 'activity-receivedDate' (sanitize receivedDate) cardLink}}}.
|
||||||
| {{{_ 'activity-receivedDate' (sanitize receivedDate) cardLink}}}.
|
|
||||||
|
|
||||||
if($eq activity.activityType 'a-startAt')
|
if($eq activity.activityType 'a-startAt')
|
||||||
| {{{_ 'activity-startDate' (sanitize startDate) cardLink}}}.
|
| {{{_ 'activity-startDate' (sanitize startDate) cardLink}}}.
|
||||||
|
|
||||||
if($eq activity.activityType 'a-dueAt')
|
if($eq activity.activityType 'a-dueAt')
|
||||||
| {{{_ 'activity-dueDate' (sanitize dueDate) cardLink}}}.
|
| {{{_ 'activity-dueDate' (sanitize dueDate) cardLink}}}.
|
||||||
|
|
||||||
if($eq activity.activityType 'a-endAt')
|
if($eq activity.activityType 'a-endAt')
|
||||||
| {{{_ 'activity-endDate' (sanitize endDate) cardLink}}}.
|
| {{{_ 'activity-endDate' (sanitize endDate) cardLink}}}.
|
||||||
|
|
||||||
if($eq mode 'board')
|
|
||||||
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-endAt')
|
|
||||||
| {{{_ 'activity-endDate' (sanitize endDate) cardLink}}}.
|
|
||||||
|
|
||||||
//- customField activity ------------------------------------------------
|
//- customField activity ------------------------------------------------
|
||||||
if($eq mode 'board')
|
if($eq activity.activityType 'createCustomField')
|
||||||
if($eq activity.activityType 'createCustomField')
|
| {{_ 'activity-customfield-created' customField}}.
|
||||||
| {{_ 'activity-customfield-created' customField}}.
|
|
||||||
|
|
||||||
if($eq activity.activityType 'setCustomField')
|
if($eq activity.activityType 'setCustomField')
|
||||||
| {{{_ 'activity-set-customfield' (sanitize lastCustomField) (sanitize lastCustomFieldValue) cardLink}}}.
|
| {{{_ 'activity-set-customfield' (sanitize lastCustomField) (sanitize lastCustomFieldValue) cardLink}}}.
|
||||||
|
|
||||||
if($eq activity.activityType 'unsetCustomField')
|
if($eq activity.activityType 'unsetCustomField')
|
||||||
| {{{_ 'activity-unset-customfield' (sanitize lastCustomField) cardLink}}}.
|
| {{{_ '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')
|
||||||
if($eq activity.activityType 'createSwimlane')
|
| {{{_ 'activity-added' (sanitize activity.swimlane.title) boardLabelLink}}}.
|
||||||
| {{_ 'activity-added' (sanitize activity.swimlane.title) boardLabelLink}}.
|
|
||||||
|
|
||||||
if($eq activity.activityType 'archivedSwimlane')
|
if($eq activity.activityType 'archivedSwimlane')
|
||||||
| {{_ 'activity-archived' (sanitize activity.swimlane.title)}}.
|
| {{{_ 'activity-archived' (sanitize activity.swimlane.title)}}}.
|
||||||
|
|
||||||
|
|
||||||
//- I don't understand this part ----------------------------------------
|
//- I don't understand this part ----------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -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') {
|
const currentBoardId = Session.get('currentBoard');
|
||||||
return createCardLink(data.activity.card());
|
if (data.mode == 'card') {
|
||||||
|
// data.mode: card
|
||||||
|
return TAPi18n.__('this-card');
|
||||||
}
|
}
|
||||||
return TAPi18n.__('this-card');
|
else if (data.mode !== 'board') {
|
||||||
|
// data.mode: 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);
|
||||||
},
|
},
|
||||||
|
|
||||||
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 }),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
|
|
|
||||||
|
|
@ -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(){
|
||||||
|
|
|
||||||
|
|
@ -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 }] }
|
? { $and: [{ activityType: 'addComment' }, { [`${kind}Id`]: { $in: linkedElmtId } }] }
|
||||||
: { [`${kind}Id`]: id };
|
: { [`${kind}Id`]: { $in: linkedElmtId } };
|
||||||
return Activities.find(selector, {
|
return Activities.find(selector, {
|
||||||
limit,
|
limit,
|
||||||
sort: { createdAt: -1 },
|
sort: { createdAt: -1 },
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue