mirror of
https://github.com/wekan/wekan.git
synced 2025-04-24 14:08:31 -04:00
Merge pull request #4477 from helioguardabaxo/master
Added members list and board card count per list on My Boards
This commit is contained in:
commit
9ed1105e7e
8 changed files with 188 additions and 0 deletions
|
@ -94,6 +94,17 @@ template(name="boardList")
|
|||
span.board-list-item-name(title="{{_ 'board-drag-drop-reorder-or-click-open'}}")
|
||||
+viewer
|
||||
= title
|
||||
unless isMiniScreen
|
||||
if allowsBoardMemberList
|
||||
.minicard-members
|
||||
each member in boardMembers _id
|
||||
a.name
|
||||
+userAvatar(userId=member noRemove=true)
|
||||
if allowsCardCounterList
|
||||
.minicard-lists.flex.flex-wrap
|
||||
each list in boardLists _id
|
||||
.item
|
||||
| {{ list }}
|
||||
i.fa.js-star-board(
|
||||
class="fa-star{{#if isStarred}} is-star-active{{else}}-o{{/if}}"
|
||||
title="{{_ 'star-board-title'}}")
|
||||
|
|
|
@ -194,6 +194,26 @@ BlazeComponent.extendComponent({
|
|||
sort: { sort: 1 /* boards default sorting */ },
|
||||
});
|
||||
},
|
||||
boardLists(boardId) {
|
||||
let boardLists = [];
|
||||
const lists = Lists.find({'boardId' : boardId})
|
||||
lists.forEach(list => {
|
||||
let cardCount = Cards.find({'boardId':boardId, 'listId':list._id}).count()
|
||||
boardLists.push(`${list.title}: ${cardCount}`);
|
||||
});
|
||||
return boardLists
|
||||
},
|
||||
|
||||
boardMembers(boardId) {
|
||||
let boardMembers = [];
|
||||
const lists = Boards.findOne({'_id' : boardId})
|
||||
let members = lists.members
|
||||
members.forEach(member => {
|
||||
boardMembers.push(member.userId);
|
||||
});
|
||||
return boardMembers
|
||||
},
|
||||
|
||||
isStarred() {
|
||||
const user = Meteor.user();
|
||||
return user && user.hasStarred(this.currentData()._id);
|
||||
|
|
|
@ -251,3 +251,26 @@ $spaceBetweenTiles = 16px
|
|||
|
||||
.js-board
|
||||
display: block;
|
||||
|
||||
.minicard-members
|
||||
padding: 6px 0 6px 8px
|
||||
width: 100%
|
||||
margin-bottom: 2px
|
||||
margin-left: -4px
|
||||
display: inline-block
|
||||
|
||||
.minicard-lists
|
||||
margin: 0 auto
|
||||
max-width: 95%
|
||||
height: 100%
|
||||
|
||||
.flex
|
||||
display: flex
|
||||
|
||||
.flex-wrap
|
||||
flex-wrap: wrap
|
||||
|
||||
.item
|
||||
margin: 2px;
|
||||
padding-right: 6px
|
||||
text-align: center
|
||||
|
|
|
@ -138,6 +138,22 @@ template(name="boardChangeColorPopup")
|
|||
if isSelected
|
||||
i.fa.fa-check
|
||||
|
||||
template(name="boardInfoOnMyBoardsPopup")
|
||||
form.board-info-on-my-boards
|
||||
h3 {{_ 'board-info-on-my-boards'}}
|
||||
div.check-div
|
||||
a.flex.js-field-has-cardcounterlist(class="{{#if allowsCardCounterList}}is-checked{{/if}}")
|
||||
.materialCheckBox(class="{{#if allowsCardCounterList}}is-checked{{/if}}")
|
||||
span
|
||||
i.fa.fa-sign-out
|
||||
| {{_ 'show-card-counter-per-list'}}
|
||||
div.check-div
|
||||
a.flex.js-field-has-boardmemberlist(class="{{#if allowsBoardMember}}is-checked{{/if}}")
|
||||
.materialCheckBox(class="{{#if allowsBoardMember}}is-checked{{/if}}")
|
||||
span
|
||||
i.fa.fa-hourglass-start
|
||||
| {{_ 'show-board_members-avatar'}}
|
||||
|
||||
template(name="boardCardSettingsPopup")
|
||||
form.board-card-settings
|
||||
h3 {{_ 'show-on-card'}}
|
||||
|
@ -387,6 +403,11 @@ template(name="boardMenuPopup")
|
|||
a.js-change-board-color
|
||||
i.fa.fa-paint-brush
|
||||
| {{_ 'board-change-color'}}
|
||||
if currentUser.isBoardAdmin
|
||||
li
|
||||
a.js-board-info-on-my-boards(title="{{_ 'board-info-on-my-boards'}}")
|
||||
i.fa.fa-paint-brush
|
||||
| {{_ 'board-info-on-my-boards'}}
|
||||
hr
|
||||
ul.pop-over-list
|
||||
if withApi
|
||||
|
|
|
@ -199,6 +199,7 @@ Template.boardMenuPopup.events({
|
|||
Popup.back();
|
||||
},
|
||||
'click .js-change-board-color': Popup.open('boardChangeColor'),
|
||||
'click .js-board-info-on-my-boards': Popup.open('boardInfoOnMyBoards'),
|
||||
'click .js-change-language': Popup.open('changeLanguage'),
|
||||
'click .js-archive-board ': Popup.afterConfirm('archiveBoard', function() {
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
|
@ -648,6 +649,60 @@ BlazeComponent.extendComponent({
|
|||
},
|
||||
}).register('boardChangeColorPopup');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
},
|
||||
|
||||
allowsCardCounterList() {
|
||||
return this.currentBoard.allowsCardCounterList;
|
||||
},
|
||||
|
||||
allowsBoardMemberList() {
|
||||
return this.currentBoard.allowsBoardMemberList;
|
||||
},
|
||||
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'click .js-field-has-cardcounterlist'(evt) {
|
||||
evt.preventDefault();
|
||||
this.currentBoard.allowsCardCounterList = !this.currentBoard
|
||||
.allowsCardCounterList;
|
||||
this.currentBoard.setAllowsCardCounterList(
|
||||
this.currentBoard.allowsCardCounterList,
|
||||
);
|
||||
$(`.js-field-has-cardcounterlist ${MCB}`).toggleClass(
|
||||
CKCLS,
|
||||
this.currentBoard.allowsCardCounterList,
|
||||
);
|
||||
$('.js-field-has-cardcounterlist').toggleClass(
|
||||
CKCLS,
|
||||
this.currentBoard.allowsCardCounterList,
|
||||
);
|
||||
},
|
||||
|
||||
'click .js-field-has-boardmemberlist'(evt) {
|
||||
evt.preventDefault();
|
||||
this.currentBoard.allowsBoardMemberList = !this.currentBoard
|
||||
.allowsBoardMemberList;
|
||||
this.currentBoard.setAllowsBoardMemberList(
|
||||
this.currentBoard.allowsBoardMemberList,
|
||||
);
|
||||
$(`.js-field-has-boardmemberlist ${MCB}`).toggleClass(
|
||||
CKCLS,
|
||||
this.currentBoard.allowsBoardMemberList,
|
||||
);
|
||||
$('.js-field-has-boardmemberlist').toggleClass(
|
||||
CKCLS,
|
||||
this.currentBoard.allowsBoardMemberList,
|
||||
);
|
||||
},
|
||||
},
|
||||
];
|
||||
},
|
||||
}).register('boardInfoOnMyBoardsPopup');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
|
|
|
@ -135,6 +135,9 @@
|
|||
"avatar-too-big": "The avatar is too large (520KB max)",
|
||||
"back": "Back",
|
||||
"board-change-color": "Change color",
|
||||
"board-info-on-my-boards" : "Board info on My Boards",
|
||||
"show-card-counter-per-list": "Show card counter per list",
|
||||
"show-board_members-avatar": "Show Board members avatars",
|
||||
"board-nb-stars": "%s stars",
|
||||
"board-not-found": "Board not found",
|
||||
"board-private-info": "This board will be <strong>private</strong>.",
|
||||
|
|
|
@ -292,6 +292,20 @@ Boards.attachSchema(
|
|||
}
|
||||
},
|
||||
},
|
||||
allowsCardCounterList: {
|
||||
/**
|
||||
* Show card counter per list
|
||||
*/
|
||||
type: Boolean,
|
||||
defaultValue: false,
|
||||
},
|
||||
allowsBoardMemberList: {
|
||||
/**
|
||||
* Show board member list
|
||||
*/
|
||||
type: Boolean,
|
||||
defaultValue: false,
|
||||
},
|
||||
description: {
|
||||
/**
|
||||
* The description of the board
|
||||
|
@ -1434,6 +1448,14 @@ Boards.mutations({
|
|||
return { $set: { allowsReceivedDate } };
|
||||
},
|
||||
|
||||
setAllowsCardCounterList(allowsCardCounterList) {
|
||||
return { $set: { allowsCardCounterList } };
|
||||
},
|
||||
|
||||
setAllowsBoardMemberList(allowsBoardMemberList) {
|
||||
return { $set: { allowsBoardMemberList } };
|
||||
},
|
||||
|
||||
setAllowsStartDate(allowsStartDate) {
|
||||
return { $set: { allowsStartDate } };
|
||||
},
|
||||
|
|
|
@ -73,6 +73,39 @@ Migrations.add('board-background-color', () => {
|
|||
);
|
||||
});
|
||||
|
||||
Migrations.add('add-cardcounterlist-allowed', () => {
|
||||
Boards.update(
|
||||
{
|
||||
allowsCardCounterList: {
|
||||
$exists: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
$set: {
|
||||
allowsCardCounterList: true,
|
||||
},
|
||||
},
|
||||
noValidateMulti,
|
||||
);
|
||||
});
|
||||
|
||||
Migrations.add('add-boardmemberlist-allowed', () => {
|
||||
Boards.update(
|
||||
{
|
||||
allowsBoardMemberList: {
|
||||
$exists: false,
|
||||
},
|
||||
},
|
||||
{
|
||||
$set: {
|
||||
allowsBoardMemberList: true,
|
||||
},
|
||||
},
|
||||
noValidateMulti,
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
Migrations.add('lowercase-board-permission', () => {
|
||||
['Public', 'Private'].forEach(permission => {
|
||||
Boards.update(
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue