mirror of
https://github.com/wekan/wekan.git
synced 2026-11-06 05:52:33 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1a1f610977 | ||
|
|
3d7871ebfc | ||
|
|
cd253522a3 | ||
|
|
cc70773fd5 | ||
|
|
27943796ad | ||
|
|
9b28847592 | ||
|
|
5376bc7b79 |
No files matched your search
+38
-1
@@ -1,6 +1,43 @@
|
||||
# v3.61 2020-01-03 Wekan release
|
||||
|
||||
This release adds the following features:
|
||||
|
||||
- [Add more Font Awesome icons. This was originally added
|
||||
at Wekan v3.58, removed at Wekan v3.60, and now
|
||||
added back at Wekan v3.61](https://github.com/wekan/wekan/commit/cd253522a305523e3e36bb73313e8c4db500a717).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix browser javascript console errors when editing profile. This was originally added
|
||||
at Wekan v3.58, removed at Wekan v3.60, and now added back at
|
||||
Wekan v3.61](https://github.com/wekan/wekan/commit/cd253522a305523e3e36bb73313e8c4db500a717).
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.60 2020-01-03 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Revert to Wekan v3.57 version of client and models directories,
|
||||
removing Worker role temporarily, because Worker role changes
|
||||
broke saving card](https://github.com/wekan/wekan/commit/27943796ade78ca3c503637a1340918bf06a1267).
|
||||
Thanks to xet7 !
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.59 2020-01-03 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fix not being able to edit received date](https://github.com/wekan/wekan/commit/5376bc7b7905c0dd99fae1aeae3f63b4583a3e3f).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.58 2020-01-03 Wekan release
|
||||
|
||||
This release adds the following features and fixes:
|
||||
This release adds the following features:
|
||||
|
||||
- [Add Worker role](https://github.com/wekan/wekan/issues/2788). Thanks to xet7.
|
||||
- [Add more Font Awesome icons](https://github.com/wekan/wekan/commit/2bf004120d5a43cd3c3c060fc7c0c30d1b01f220).
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v3.58.0"
|
||||
appVersion: "v3.61.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -38,20 +38,18 @@ template(name="attachmentsGalery")
|
||||
| {{_ 'download'}}
|
||||
if currentUser.isBoardMember
|
||||
unless currentUser.isCommentOnly
|
||||
unless currentUser.isWorker
|
||||
if isImage
|
||||
a(class="{{#if $eq ../coverId _id}}js-remove-cover{{else}}js-add-cover{{/if}}")
|
||||
i.fa.fa-thumb-tack
|
||||
if($eq ../coverId _id)
|
||||
| {{_ 'remove-cover'}}
|
||||
else
|
||||
| {{_ 'add-cover'}}
|
||||
a.js-confirm-delete
|
||||
i.fa.fa-close
|
||||
| {{_ 'delete'}}
|
||||
if isImage
|
||||
a(class="{{#if $eq ../coverId _id}}js-remove-cover{{else}}js-add-cover{{/if}}")
|
||||
i.fa.fa-thumb-tack
|
||||
if($eq ../coverId _id)
|
||||
| {{_ 'remove-cover'}}
|
||||
else
|
||||
| {{_ 'add-cover'}}
|
||||
a.js-confirm-delete
|
||||
i.fa.fa-close
|
||||
| {{_ 'delete'}}
|
||||
|
||||
if currentUser.isBoardMember
|
||||
unless currentUser.isCommentOnly
|
||||
unless currentUser.isWorker
|
||||
li.attachment-item.add-attachment
|
||||
a.js-add-attachment {{_ 'add-attachment' }}
|
||||
li.attachment-item.add-attachment
|
||||
a.js-add-attachment {{_ 'add-attachment' }}
|
||||
@@ -97,8 +97,7 @@ Template.dateBadge.helpers({
|
||||
return (
|
||||
Meteor.user() &&
|
||||
Meteor.user().isBoardMember() &&
|
||||
!Meteor.user().isCommentOnly() &&
|
||||
!Meteor.user().isWorker()
|
||||
!Meteor.user().isCommentOnly()
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
template(name="cardDetails")
|
||||
section.card-details.js-card-details.js-perfect-scrollbar: .card-details-canvas
|
||||
.card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}')
|
||||
+inlinedForm(classNames="{{#if canModifyCardWorker}}js-card-details-title{{/if}}")
|
||||
+inlinedForm(classNames="js-card-details-title")
|
||||
+editCardTitleForm
|
||||
else
|
||||
unless isMiniScreen
|
||||
@@ -13,7 +13,7 @@ template(name="cardDetails")
|
||||
if currentUser.isBoardMember
|
||||
a.fa.fa-navicon.card-details-menu-mobile-web.js-open-card-details-menu
|
||||
h2.card-details-title.js-card-title(
|
||||
class="{{#if canModifyCardWorker}}js-open-inlined-form is-editable{{/if}}")
|
||||
class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}")
|
||||
+viewer
|
||||
= getTitle
|
||||
if isWatching
|
||||
@@ -44,8 +44,7 @@ template(name="cardDetails")
|
||||
+cardReceivedDate
|
||||
else
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
a.js-received-date {{_ 'add'}}
|
||||
a.js-received-date {{_ 'add'}}
|
||||
|
||||
.card-details-item.card-details-item-start
|
||||
h3
|
||||
@@ -55,8 +54,7 @@ template(name="cardDetails")
|
||||
+cardStartDate
|
||||
else
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
a.js-start-date {{_ 'add'}}
|
||||
a.js-start-date {{_ 'add'}}
|
||||
|
||||
.card-details-item.card-details-item-due
|
||||
h3
|
||||
@@ -66,8 +64,7 @@ template(name="cardDetails")
|
||||
+cardDueDate
|
||||
else
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
a.js-due-date {{_ 'add'}}
|
||||
a.js-due-date {{_ 'add'}}
|
||||
|
||||
.card-details-item.card-details-item-end
|
||||
h3
|
||||
@@ -77,8 +74,7 @@ template(name="cardDetails")
|
||||
+cardEndDate
|
||||
else
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
a.js-end-date {{_ 'add'}}
|
||||
a.js-end-date {{_ 'add'}}
|
||||
|
||||
.card-details-items
|
||||
.card-details-item.card-details-item-members
|
||||
@@ -89,9 +85,8 @@ template(name="cardDetails")
|
||||
+userAvatar(userId=this cardId=../_id)
|
||||
| {{! XXX Hack to hide syntaxic coloration /// }}
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}")
|
||||
i.fa.fa-plus
|
||||
a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}")
|
||||
i.fa.fa-plus
|
||||
|
||||
.card-details-item.card-details-item-assignees
|
||||
h3
|
||||
@@ -115,9 +110,8 @@ template(name="cardDetails")
|
||||
+viewer
|
||||
= name
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
|
||||
i.fa.fa-plus
|
||||
a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
|
||||
i.fa.fa-plus
|
||||
|
||||
.card-details-items
|
||||
each customFieldsWD
|
||||
@@ -138,29 +132,28 @@ template(name="cardDetails")
|
||||
|
||||
//- XXX We should use "editable" to avoid repetiting ourselves
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
h3
|
||||
i.fa.fa-align-left
|
||||
card-details-item-title {{_ 'description'}}
|
||||
+inlinedCardDescription(classNames="card-description js-card-description")
|
||||
+editor(autofocus=true)
|
||||
| {{getUnsavedValue 'cardDescription' _id getDescription}}
|
||||
.edit-controls.clearfix
|
||||
button.primary(type="submit") {{_ 'save'}}
|
||||
a.fa.fa-times-thin.js-close-inlined-form
|
||||
else
|
||||
a.js-open-inlined-form
|
||||
if getDescription
|
||||
+viewer
|
||||
= getDescription
|
||||
else
|
||||
| {{_ 'edit'}}
|
||||
if (hasUnsavedValue 'cardDescription' _id)
|
||||
p.quiet
|
||||
| {{_ 'unsaved-description'}}
|
||||
a.js-open-inlined-form {{_ 'view-it'}}
|
||||
= ' - '
|
||||
a.js-close-inlined-form {{_ 'discard'}}
|
||||
h3
|
||||
i.fa.fa-align-left
|
||||
card-details-item-title {{_ 'description'}}
|
||||
+inlinedCardDescription(classNames="card-description js-card-description")
|
||||
+editor(autofocus=true)
|
||||
| {{getUnsavedValue 'cardDescription' _id getDescription}}
|
||||
.edit-controls.clearfix
|
||||
button.primary(type="submit") {{_ 'save'}}
|
||||
a.fa.fa-times-thin.js-close-inlined-form
|
||||
else
|
||||
a.js-open-inlined-form
|
||||
if getDescription
|
||||
+viewer
|
||||
= getDescription
|
||||
else
|
||||
| {{_ 'edit'}}
|
||||
if (hasUnsavedValue 'cardDescription' _id)
|
||||
p.quiet
|
||||
| {{_ 'unsaved-description'}}
|
||||
a.js-open-inlined-form {{_ 'view-it'}}
|
||||
= ' - '
|
||||
a.js-close-inlined-form {{_ 'discard'}}
|
||||
else if getDescription
|
||||
h3.card-details-item-title {{_ 'description'}}
|
||||
+viewer
|
||||
@@ -172,16 +165,15 @@ template(name="cardDetails")
|
||||
i.fa.fa-shopping-cart
|
||||
card-details-item-title {{_ 'requested-by'}}
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
+inlinedForm(classNames="js-card-details-requester")
|
||||
+editCardRequesterForm
|
||||
else
|
||||
a.js-open-inlined-form
|
||||
if getRequestedBy
|
||||
+viewer
|
||||
= getRequestedBy
|
||||
else
|
||||
| {{_ 'add'}}
|
||||
+inlinedForm(classNames="js-card-details-requester")
|
||||
+editCardRequesterForm
|
||||
else
|
||||
a.js-open-inlined-form
|
||||
if getRequestedBy
|
||||
+viewer
|
||||
= getRequestedBy
|
||||
else
|
||||
| {{_ 'add'}}
|
||||
else if getRequestedBy
|
||||
+viewer
|
||||
= getRequestedBy
|
||||
@@ -191,16 +183,15 @@ template(name="cardDetails")
|
||||
i.fa.fa-user-plus
|
||||
card-details-item-title {{_ 'assigned-by'}}
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
+inlinedForm(classNames="js-card-details-assigner")
|
||||
+editCardAssignerForm
|
||||
else
|
||||
a.js-open-inlined-form
|
||||
if getAssignedBy
|
||||
+viewer
|
||||
= getAssignedBy
|
||||
else
|
||||
| {{_ 'add'}}
|
||||
+inlinedForm(classNames="js-card-details-assigner")
|
||||
+editCardAssignerForm
|
||||
else
|
||||
a.js-open-inlined-form
|
||||
if getAssignedBy
|
||||
+viewer
|
||||
= getAssignedBy
|
||||
else
|
||||
| {{_ 'add'}}
|
||||
else if getRequestedBy
|
||||
+viewer
|
||||
= getAssignedBy
|
||||
@@ -275,29 +266,28 @@ template(name="cardDetailsActionsPopup")
|
||||
i.fa.fa-eye-slash
|
||||
| {{_ 'watch'}}
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
hr
|
||||
ul.pop-over-list
|
||||
//li: a.js-members {{_ 'card-edit-members'}}
|
||||
//li: a.js-labels {{_ 'card-edit-labels'}}
|
||||
//li: a.js-attachments {{_ 'card-edit-attachments'}}
|
||||
li
|
||||
a.js-custom-fields
|
||||
i.fa.fa-list-alt
|
||||
| {{_ 'card-edit-custom-fields'}}
|
||||
//li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}}
|
||||
//li: a.js-start-date {{_ 'editCardStartDatePopup-title'}}
|
||||
//li: a.js-due-date {{_ 'editCardDueDatePopup-title'}}
|
||||
//li: a.js-end-date {{_ 'editCardEndDatePopup-title'}}
|
||||
li
|
||||
a.js-spent-time
|
||||
i.fa.fa-clock-o
|
||||
| {{_ 'editCardSpentTimePopup-title'}}
|
||||
li
|
||||
a.js-set-card-color
|
||||
i.fa.fa-paint-brush
|
||||
| {{_ 'setCardColorPopup-title'}}
|
||||
hr
|
||||
hr
|
||||
ul.pop-over-list
|
||||
//li: a.js-members {{_ 'card-edit-members'}}
|
||||
//li: a.js-labels {{_ 'card-edit-labels'}}
|
||||
//li: a.js-attachments {{_ 'card-edit-attachments'}}
|
||||
li
|
||||
a.js-custom-fields
|
||||
i.fa.fa-list-alt
|
||||
| {{_ 'card-edit-custom-fields'}}
|
||||
//li: a.js-received-date {{_ 'editCardReceivedDatePopup-title'}}
|
||||
//li: a.js-start-date {{_ 'editCardStartDatePopup-title'}}
|
||||
//li: a.js-due-date {{_ 'editCardDueDatePopup-title'}}
|
||||
//li: a.js-end-date {{_ 'editCardEndDatePopup-title'}}
|
||||
li
|
||||
a.js-spent-time
|
||||
i.fa.fa-clock-o
|
||||
| {{_ 'editCardSpentTimePopup-title'}}
|
||||
li
|
||||
a.js-set-card-color
|
||||
i.fa.fa-paint-brush
|
||||
| {{_ 'setCardColorPopup-title'}}
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-move-card-to-top
|
||||
@@ -307,17 +297,16 @@ template(name="cardDetailsActionsPopup")
|
||||
a.js-move-card-to-bottom
|
||||
i.fa.fa-arrow-down
|
||||
| {{_ 'moveCardToBottom-title'}}
|
||||
unless currentUser.isWorker
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-move-card
|
||||
i.fa.fa-arrow-right
|
||||
| {{_ 'moveCardPopup-title'}}
|
||||
li
|
||||
a.js-copy-card
|
||||
i.fa.fa-copy
|
||||
| {{_ 'copyCardPopup-title'}}
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-move-card
|
||||
i.fa.fa-arrow-right
|
||||
| {{_ 'moveCardPopup-title'}}
|
||||
li
|
||||
a.js-copy-card
|
||||
i.fa.fa-copy
|
||||
| {{_ 'copyCardPopup-title'}}
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
@@ -390,27 +379,16 @@ template(name="cardMembersPopup")
|
||||
i.fa.fa-check
|
||||
|
||||
template(name="cardAssigneesPopup")
|
||||
unless currentUser.isWorker
|
||||
ul.pop-over-list.js-card-assignee-list
|
||||
each board.activeMembers
|
||||
li.item(class="{{#if isCardAssignee}}active{{/if}}")
|
||||
a.name.js-select-assignee(href="#")
|
||||
+userAvatar(userId=user._id)
|
||||
span.full-name
|
||||
= user.profile.fullname
|
||||
| (<span class="username">{{ user.username }}</span>)
|
||||
if isCardAssignee
|
||||
i.fa.fa-check
|
||||
if currentUser.isWorker
|
||||
ul.pop-over-list.js-card-assignee-list
|
||||
li.item(class="{{#if currentUser.isCardAssignee}}active{{/if}}")
|
||||
a.name.js-select-assigneeWorker(href="#")
|
||||
+userAvatar(userId=currentUser._id)
|
||||
span.full-name
|
||||
= currentUser.profile.fullname
|
||||
| (<span class="username">{{ currentUser.username }}</span>)
|
||||
if currentUser.isCardAssignee
|
||||
i.fa.fa-check
|
||||
ul.pop-over-list.js-card-assignee-list
|
||||
each board.activeMembers
|
||||
li.item(class="{{#if isCardAssignee}}active{{/if}}")
|
||||
a.name.js-select-assignee(href="#")
|
||||
+userAvatar(userId=user._id)
|
||||
span.full-name
|
||||
= user.profile.fullname
|
||||
| (<span class="username">{{ user.username }}</span>)
|
||||
if isCardAssignee
|
||||
i.fa.fa-check
|
||||
|
||||
template(name="userAvatarAssignee")
|
||||
a.assignee.js-assignee(title="{{userData.profile.fullname}} ({{userData.username}})")
|
||||
@@ -438,13 +416,11 @@ template(name="cardAssigneePopup")
|
||||
p.quiet @{{ user.username }}
|
||||
ul.pop-over-list
|
||||
if currentUser.isNotCommentOnly
|
||||
unless currentUser.isWorker
|
||||
li: a.js-remove-assignee {{_ 'remove-member-from-card'}}
|
||||
li: a.js-remove-assignee {{_ 'remove-member-from-card'}}
|
||||
|
||||
unless currentUser.isWorker
|
||||
if $eq currentUser._id user._id
|
||||
with currentUser
|
||||
li: a.js-edit-profile {{_ 'edit-profile'}}
|
||||
if $eq currentUser._id user._id
|
||||
with currentUser
|
||||
li: a.js-edit-profile {{_ 'edit-profile'}}
|
||||
|
||||
template(name="userAvatarAssigneeInitials")
|
||||
svg.avatar.avatar-assignee-initials(viewBox="0 0 {{viewPortWidth}} 15")
|
||||
|
||||
@@ -26,7 +26,6 @@ BlazeComponent.extendComponent({
|
||||
|
||||
onCreated() {
|
||||
this.currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
this.currentUser = Meteor.user();
|
||||
this.isLoaded = new ReactiveVar(false);
|
||||
const boardBody = this.parentComponent().parentComponent();
|
||||
//in Miniview parent is Board, not BoardBody.
|
||||
@@ -56,15 +55,6 @@ BlazeComponent.extendComponent({
|
||||
);
|
||||
},
|
||||
|
||||
canModifyCardWorker() {
|
||||
return (
|
||||
Meteor.user() &&
|
||||
Meteor.user().isBoardMember() &&
|
||||
!Meteor.user().isCommentOnly() &&
|
||||
!Meteor.user().isWorker()
|
||||
);
|
||||
},
|
||||
|
||||
scrollParentContainer() {
|
||||
const cardPanelWidth = 510;
|
||||
const bodyBoardComponent = this.parentComponent().parentComponent();
|
||||
@@ -332,12 +322,7 @@ BlazeComponent.extendComponent({
|
||||
'click .js-assignee': Popup.open('cardAssignee'),
|
||||
'click .js-add-assignees': Popup.open('cardAssignees'),
|
||||
'click .js-add-labels': Popup.open('cardLabels'),
|
||||
'click .js-received-date'(event) {
|
||||
event.preventDefault();
|
||||
if (!Meteor.user().isWorker) {
|
||||
Popup.open('editCardReceivedDate');
|
||||
}
|
||||
},
|
||||
'click .js-received-date': Popup.open('editCardReceivedDate'),
|
||||
'click .js-start-date': Popup.open('editCardStartDate'),
|
||||
'click .js-due-date': Popup.open('editCardDueDate'),
|
||||
'click .js-end-date': Popup.open('editCardEndDate'),
|
||||
@@ -398,13 +383,6 @@ Template.cardDetails.helpers({
|
||||
return user && user.isBoardAdmin() ? 'admin' : 'normal';
|
||||
},
|
||||
|
||||
isWorker() {
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
return (
|
||||
!currentBoard.hasAdmin(this.userId) && currentBoard.hasWorker(this.userId)
|
||||
);
|
||||
},
|
||||
|
||||
presenceStatusClassName() {
|
||||
const user = Users.findOne(this.userId);
|
||||
const userPresence = presences.findOne({ userId: this.userId });
|
||||
@@ -481,15 +459,6 @@ Template.cardDetailsActionsPopup.helpers({
|
||||
!Meteor.user().isCommentOnly()
|
||||
);
|
||||
},
|
||||
|
||||
canModifyCardWorker() {
|
||||
return (
|
||||
Meteor.user() &&
|
||||
Meteor.user().isBoardMember() &&
|
||||
!Meteor.user().isCommentOnly() &&
|
||||
!Meteor.user().isWorker()
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
Template.cardDetailsActionsPopup.events({
|
||||
@@ -498,12 +467,7 @@ Template.cardDetailsActionsPopup.events({
|
||||
'click .js-labels': Popup.open('cardLabels'),
|
||||
'click .js-attachments': Popup.open('cardAttachments'),
|
||||
'click .js-custom-fields': Popup.open('cardCustomFields'),
|
||||
'click .js-received-date'(event) {
|
||||
event.preventDefault();
|
||||
if (!Meteor.user().isWorker) {
|
||||
Popup.open('editCardReceivedDate');
|
||||
}
|
||||
},
|
||||
'click .js-received-date': Popup.open('editCardReceivedDate'),
|
||||
'click .js-start-date': Popup.open('editCardStartDate'),
|
||||
'click .js-due-date': Popup.open('editCardDueDate'),
|
||||
'click .js-end-date': Popup.open('editCardEndDate'),
|
||||
@@ -915,12 +879,6 @@ Template.cardAssigneesPopup.events({
|
||||
card.toggleAssignee(assigneeId);
|
||||
event.preventDefault();
|
||||
},
|
||||
'click .js-select-assigneeWorker'(event) {
|
||||
const card = Cards.findOne(Session.get('currentCard'));
|
||||
const assigneeId = currentUser._id;
|
||||
card.toggleAssignee(assigneeId);
|
||||
event.preventDefault();
|
||||
},
|
||||
});
|
||||
|
||||
Template.cardAssigneesPopup.helpers({
|
||||
|
||||
@@ -67,8 +67,7 @@ BlazeComponent.extendComponent({
|
||||
return (
|
||||
Meteor.user() &&
|
||||
Meteor.user().isBoardMember() &&
|
||||
!Meteor.user().isCommentOnly() &&
|
||||
!Meteor.user().isWorker()
|
||||
!Meteor.user().isCommentOnly()
|
||||
);
|
||||
},
|
||||
}).register('checklistDetail');
|
||||
@@ -121,8 +120,7 @@ BlazeComponent.extendComponent({
|
||||
return (
|
||||
Meteor.user() &&
|
||||
Meteor.user().isBoardMember() &&
|
||||
!Meteor.user().isCommentOnly() &&
|
||||
!Meteor.user().isWorker()
|
||||
!Meteor.user().isCommentOnly()
|
||||
);
|
||||
},
|
||||
|
||||
@@ -230,8 +228,7 @@ Template.checklistItemDetail.helpers({
|
||||
return (
|
||||
Meteor.user() &&
|
||||
Meteor.user().isBoardMember() &&
|
||||
!Meteor.user().isCommentOnly() &&
|
||||
!Meteor.user().isWorker()
|
||||
!Meteor.user().isCommentOnly()
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
@@ -3,8 +3,7 @@ BlazeComponent.extendComponent({
|
||||
return (
|
||||
Meteor.user() &&
|
||||
Meteor.user().isBoardMember() &&
|
||||
!Meteor.user().isCommentOnly() &&
|
||||
!Meteor.user().isWorker()
|
||||
!Meteor.user().isCommentOnly()
|
||||
);
|
||||
},
|
||||
}).register('subtaskDetail');
|
||||
@@ -56,8 +55,7 @@ BlazeComponent.extendComponent({
|
||||
return (
|
||||
Meteor.user() &&
|
||||
Meteor.user().isBoardMember() &&
|
||||
!Meteor.user().isCommentOnly() &&
|
||||
!Meteor.user().isWorker()
|
||||
!Meteor.user().isCommentOnly()
|
||||
);
|
||||
},
|
||||
|
||||
@@ -156,8 +154,7 @@ Template.subtaskItemDetail.helpers({
|
||||
return (
|
||||
Meteor.user() &&
|
||||
Meteor.user().isBoardMember() &&
|
||||
!Meteor.user().isCommentOnly() &&
|
||||
!Meteor.user().isWorker()
|
||||
!Meteor.user().isCommentOnly()
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
@@ -189,8 +189,7 @@ BlazeComponent.extendComponent({
|
||||
!this.reachedWipLimit() &&
|
||||
Meteor.user() &&
|
||||
Meteor.user().isBoardMember() &&
|
||||
!Meteor.user().isCommentOnly() &&
|
||||
!Meteor.user().isWorker()
|
||||
!Meteor.user().isCommentOnly()
|
||||
);
|
||||
},
|
||||
|
||||
|
||||
@@ -65,12 +65,11 @@ template(name="listActionPopup")
|
||||
i.fa.fa-eye-slash
|
||||
| {{_ 'watch'}}
|
||||
unless currentUser.isCommentOnly
|
||||
unless currentUser.isWorker
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-set-color-list
|
||||
i.fa.fa-paint-brush
|
||||
| {{_ 'set-color-list'}}
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-set-color-list
|
||||
i.fa.fa-paint-brush
|
||||
| {{_ 'set-color-list'}}
|
||||
ul.pop-over-list
|
||||
if cards.count
|
||||
li
|
||||
@@ -83,14 +82,13 @@ template(name="listActionPopup")
|
||||
a.js-set-wip-limit
|
||||
i.fa.fa-ban
|
||||
| {{#if isWipLimitEnabled }}{{_ 'edit-wip-limit'}}{{else}}{{_ 'setWipLimitPopup-title'}}{{/if}}
|
||||
unless currentUser.isWorker
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-close-list
|
||||
i.fa.fa-arrow-right
|
||||
i.fa.fa-archive
|
||||
| {{_ 'archive-list'}}
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-close-list
|
||||
i.fa.fa-arrow-right
|
||||
i.fa.fa-archive
|
||||
| {{_ 'archive-list'}}
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
@@ -116,8 +114,7 @@ template(name="listMorePopup")
|
||||
input.inline-input(type="text" readonly value="{{ rootUrl }}")
|
||||
| {{_ 'added'}}
|
||||
span.date(title=list.createdAt) {{ moment createdAt 'LLL' }}
|
||||
unless currentUser.isWorker
|
||||
a.js-delete {{_ 'delete'}}
|
||||
a.js-delete {{_ 'delete'}}
|
||||
|
||||
template(name="listDeletePopup")
|
||||
p {{_ "list-delete-pop"}}
|
||||
|
||||
@@ -9,10 +9,9 @@ BlazeComponent.extendComponent({
|
||||
canSeeAddCard() {
|
||||
const list = Template.currentData();
|
||||
return (
|
||||
(!list.getWipLimit('enabled') ||
|
||||
list.getWipLimit('soft') ||
|
||||
!this.reachedWipLimit()) &&
|
||||
!Meteor.user().isWorker()
|
||||
!list.getWipLimit('enabled') ||
|
||||
list.getWipLimit('soft') ||
|
||||
!this.reachedWipLimit()
|
||||
);
|
||||
},
|
||||
|
||||
|
||||
@@ -40,9 +40,8 @@ template(name="membersWidget")
|
||||
i.fa.fa-users
|
||||
| {{_ 'members'}}
|
||||
unless currentUser.isCommentOnly
|
||||
unless currentUser.isWorker
|
||||
a.board-header-btn.js-open-board-menu(title="{{_ 'boardMenuPopup-title'}}").right
|
||||
i.board-header-btn-icon.fa.fa-cog
|
||||
a.board-header-btn.js-open-board-menu(title="{{_ 'boardMenuPopup-title'}}").right
|
||||
i.board-header-btn-icon.fa.fa-cog
|
||||
|
||||
.board-widget-content
|
||||
each currentBoard.activeMembers
|
||||
@@ -165,12 +164,11 @@ template(name="outgoingWebhooksPopup")
|
||||
|
||||
template(name="boardMenuPopup")
|
||||
ul.pop-over-list
|
||||
if isNotWorker
|
||||
li: a.js-custom-fields {{_ 'custom-fields'}}
|
||||
li
|
||||
a.js-open-archives
|
||||
i.fa.fa-archive
|
||||
| {{_ 'archived-items'}}
|
||||
li: a.js-custom-fields {{_ 'custom-fields'}}
|
||||
li
|
||||
a.js-open-archives
|
||||
i.fa.fa-archive
|
||||
| {{_ 'archived-items'}}
|
||||
if currentUser.isBoardAdmin
|
||||
li
|
||||
a.js-change-board-color
|
||||
@@ -248,7 +246,7 @@ template(name="labelsWidget")
|
||||
.board-widget-content
|
||||
each currentBoard.labels
|
||||
a.card-label(class="card-label-{{color}}"
|
||||
class="{{#if currentUser.isNotCommentOnly}}{{#if currentUser.isNotWorker}}js-label{{/if}}{{/if}}")
|
||||
class="{{#if currentUser.isNotCommentOnly}}js-label{{/if}}")
|
||||
span.card-label-name
|
||||
+viewer
|
||||
= name
|
||||
@@ -277,12 +275,11 @@ template(name="memberPopup")
|
||||
a.js-change-role
|
||||
| {{_ 'change-permissions'}}
|
||||
span.quiet (#{memberType})
|
||||
unless currentUser.isWorker
|
||||
li
|
||||
if $eq currentUser._id userId
|
||||
a.js-leave-member {{_ 'leave-board'}}
|
||||
else if currentUser.isBoardAdmin
|
||||
a.js-remove-member {{_ 'remove-from-board'}}
|
||||
li
|
||||
if $eq currentUser._id userId
|
||||
a.js-leave-member {{_ 'leave-board'}}
|
||||
else if currentUser.isBoardAdmin
|
||||
a.js-remove-member {{_ 'remove-from-board'}}
|
||||
|
||||
template(name="removeMemberPopup")
|
||||
p {{_ 'remove-member-pop' name=user.profile.fullname username=user.username boardTitle=board.title}}
|
||||
@@ -346,12 +343,6 @@ template(name="changePermissionsPopup")
|
||||
if isCommentOnly
|
||||
i.fa.fa-check
|
||||
span.sub-name {{_ 'comment-only-desc'}}
|
||||
li
|
||||
a(class="{{#if isLastAdmin}}disabled{{else}}js-set-worker{{/if}}")
|
||||
| {{_ 'worker'}}
|
||||
if isWorker
|
||||
i.fa.fa-check
|
||||
span.sub-name {{_ 'worker-desc'}}
|
||||
if isLastAdmin
|
||||
hr
|
||||
p.quiet.bottom {{_ 'last-admin-desc'}}
|
||||
@@ -161,13 +161,10 @@ Template.memberPopup.helpers({
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
const commentOnly = currentBoard.hasCommentOnly(this.userId);
|
||||
const noComments = currentBoard.hasNoComments(this.userId);
|
||||
const worker = currentBoard.hasWorker(this.userId);
|
||||
if (commentOnly) {
|
||||
return TAPi18n.__('comment-only').toLowerCase();
|
||||
} else if (noComments) {
|
||||
return TAPi18n.__('no-comments').toLowerCase();
|
||||
} else if (worker) {
|
||||
return TAPi18n.__('worker').toLowerCase();
|
||||
} else {
|
||||
return TAPi18n.__(type).toLowerCase();
|
||||
}
|
||||
@@ -270,14 +267,6 @@ Template.membersWidget.helpers({
|
||||
const user = Meteor.user();
|
||||
return user && user.isInvitedTo(Session.get('currentBoard'));
|
||||
},
|
||||
isWorker() {
|
||||
const user = Meteor.user();
|
||||
if (user) {
|
||||
return Meteor.call(Boards.hasWorker(user.memberId));
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
Template.membersWidget.events({
|
||||
@@ -655,7 +644,7 @@ BlazeComponent.extendComponent({
|
||||
}).register('addMemberPopup');
|
||||
|
||||
Template.changePermissionsPopup.events({
|
||||
'click .js-set-admin, click .js-set-normal, click .js-set-no-comments, click .js-set-comment-only, click .js-set-worker'(
|
||||
'click .js-set-admin, click .js-set-normal, click .js-set-no-comments, click .js-set-comment-only'(
|
||||
event,
|
||||
) {
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
@@ -665,13 +654,11 @@ Template.changePermissionsPopup.events({
|
||||
'js-set-comment-only',
|
||||
);
|
||||
const isNoComments = $(event.currentTarget).hasClass('js-set-no-comments');
|
||||
const isWorker = $(event.currentTarget).hasClass('js-set-worker');
|
||||
currentBoard.setMemberPermission(
|
||||
memberId,
|
||||
isAdmin,
|
||||
isNoComments,
|
||||
isCommentOnly,
|
||||
isWorker,
|
||||
);
|
||||
Popup.back(1);
|
||||
},
|
||||
@@ -688,8 +675,7 @@ Template.changePermissionsPopup.helpers({
|
||||
return (
|
||||
!currentBoard.hasAdmin(this.userId) &&
|
||||
!currentBoard.hasNoComments(this.userId) &&
|
||||
!currentBoard.hasCommentOnly(this.userId) &&
|
||||
!currentBoard.hasWorker(this.userId)
|
||||
!currentBoard.hasCommentOnly(this.userId)
|
||||
);
|
||||
},
|
||||
|
||||
@@ -709,13 +695,6 @@ Template.changePermissionsPopup.helpers({
|
||||
);
|
||||
},
|
||||
|
||||
isWorker() {
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
return (
|
||||
!currentBoard.hasAdmin(this.userId) && currentBoard.hasWorker(this.userId)
|
||||
);
|
||||
},
|
||||
|
||||
isLastAdmin() {
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
return (
|
||||
|
||||
@@ -2,60 +2,54 @@ template(name="archivesSidebar")
|
||||
if isArchiveReady.get
|
||||
+basicTabs(tabs=tabs)
|
||||
+tabContent(slug="cards")
|
||||
unless isWorker
|
||||
p.quiet
|
||||
a.js-restore-all-cards {{_ 'restore-all'}}
|
||||
| -
|
||||
a.js-delete-all-cards {{_ 'delete-all'}}
|
||||
p.quiet
|
||||
a.js-restore-all-cards {{_ 'restore-all'}}
|
||||
| -
|
||||
a.js-delete-all-cards {{_ 'delete-all'}}
|
||||
each archivedCards
|
||||
.minicard-wrapper.js-minicard
|
||||
+minicard(this)
|
||||
if currentUser.isBoardMember
|
||||
unless isWorker
|
||||
p.quiet
|
||||
a.js-restore-card {{_ 'restore'}}
|
||||
| -
|
||||
a.js-delete-card {{_ 'delete'}}
|
||||
p.quiet
|
||||
a.js-restore-card {{_ 'restore'}}
|
||||
| -
|
||||
a.js-delete-card {{_ 'delete'}}
|
||||
if cardIsInArchivedList
|
||||
p.quiet.small ({{_ 'warn-list-archived'}})
|
||||
else
|
||||
p.no-items-message {{_ 'no-archived-cards'}}
|
||||
|
||||
+tabContent(slug="lists")
|
||||
unless isWorker
|
||||
p.quiet
|
||||
a.js-restore-all-lists {{_ 'restore-all'}}
|
||||
| -
|
||||
a.js-delete-all-lists {{_ 'delete-all'}}
|
||||
p.quiet
|
||||
a.js-restore-all-lists {{_ 'restore-all'}}
|
||||
| -
|
||||
a.js-delete-all-lists {{_ 'delete-all'}}
|
||||
ul.archived-lists
|
||||
each archivedLists
|
||||
li.archived-lists-item
|
||||
= title
|
||||
if currentUser.isBoardMember
|
||||
unless isWorker
|
||||
p.quiet
|
||||
a.js-restore-list {{_ 'restore'}}
|
||||
| -
|
||||
a.js-delete-list {{_ 'delete'}}
|
||||
p.quiet
|
||||
a.js-restore-list {{_ 'restore'}}
|
||||
| -
|
||||
a.js-delete-list {{_ 'delete'}}
|
||||
else
|
||||
li.no-items-message {{_ 'no-archived-lists'}}
|
||||
|
||||
+tabContent(slug="swimlanes")
|
||||
unless isWorker
|
||||
p.quiet
|
||||
a.js-restore-all-swimlanes {{_ 'restore-all'}}
|
||||
| -
|
||||
a.js-delete-all-swimlanes {{_ 'delete-all'}}
|
||||
p.quiet
|
||||
a.js-restore-all-swimlanes {{_ 'restore-all'}}
|
||||
| -
|
||||
a.js-delete-all-swimlanes {{_ 'delete-all'}}
|
||||
ul.archived-lists
|
||||
each archivedSwimlanes
|
||||
li.archived-lists-item
|
||||
= title
|
||||
if currentUser.isBoardMember
|
||||
unless isWorker
|
||||
p.quiet
|
||||
a.js-restore-swimlane {{_ 'restore'}}
|
||||
| -
|
||||
a.js-delete-swimlane {{_ 'delete'}}
|
||||
p.quiet
|
||||
a.js-restore-swimlane {{_ 'restore'}}
|
||||
| -
|
||||
a.js-delete-swimlane {{_ 'delete'}}
|
||||
else
|
||||
li.no-items-message {{_ 'no-archived-swimlanes'}}
|
||||
else
|
||||
|
||||
@@ -139,12 +139,3 @@ BlazeComponent.extendComponent({
|
||||
];
|
||||
},
|
||||
}).register('archivesSidebar');
|
||||
|
||||
Template.archivesSidebar.helpers({
|
||||
isWorker() {
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
return (
|
||||
!currentBoard.hasAdmin(this.userId) && currentBoard.hasWorker(this.userId)
|
||||
);
|
||||
},
|
||||
});
|
||||
@@ -43,20 +43,19 @@ template(name="listsGroup")
|
||||
+addListForm
|
||||
|
||||
template(name="addListForm")
|
||||
unless currentUser.isWorker
|
||||
.list.list-composer.js-list-composer(class="{{#if isMiniScreen}}mini-list{{/if}}")
|
||||
.list-header-add
|
||||
+inlinedForm(autoclose=false)
|
||||
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
|
||||
autocomplete="off" autofocus)
|
||||
.edit-controls.clearfix
|
||||
button.primary.confirm(type="submit") {{_ 'save'}}
|
||||
unless currentBoard.isTemplatesBoard
|
||||
unless currentBoard.isTemplateBoard
|
||||
span.quiet
|
||||
| {{_ 'or'}}
|
||||
a.js-list-template {{_ 'template'}}
|
||||
else
|
||||
a.open-list-composer.js-open-inlined-form
|
||||
i.fa.fa-plus
|
||||
| {{_ 'add-list'}}
|
||||
.list.list-composer.js-list-composer(class="{{#if isMiniScreen}}mini-list{{/if}}")
|
||||
.list-header-add
|
||||
+inlinedForm(autoclose=false)
|
||||
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
|
||||
autocomplete="off" autofocus)
|
||||
.edit-controls.clearfix
|
||||
button.primary.confirm(type="submit") {{_ 'save'}}
|
||||
unless currentBoard.isTemplatesBoard
|
||||
unless currentBoard.isTemplateBoard
|
||||
span.quiet
|
||||
| {{_ 'or'}}
|
||||
a.js-list-template {{_ 'template'}}
|
||||
else
|
||||
a.open-list-composer.js-open-inlined-form
|
||||
i.fa.fa-plus
|
||||
| {{_ 'add-list'}}
|
||||
@@ -73,8 +73,7 @@ template(name="cardMemberPopup")
|
||||
p.quiet @{{ user.username }}
|
||||
ul.pop-over-list
|
||||
if currentUser.isNotCommentOnly
|
||||
if currentUser.isNotWorker
|
||||
li: a.js-remove-member {{_ 'remove-member-from-card'}}
|
||||
li: a.js-remove-member {{_ 'remove-member-from-card'}}
|
||||
|
||||
if $eq currentUser._id user._id
|
||||
with currentUser
|
||||
|
||||
@@ -39,13 +39,12 @@ template(name="memberMenuPopup")
|
||||
a.js-go-setting(href="{{pathFor 'setting'}}")
|
||||
i.fa.fa-lock
|
||||
| {{_ 'admin-panel'}}
|
||||
unless currentUser.isWorker
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
a(href="{{pathFor 'board' id=templatesBoardId slug=templatesBoardSlug}}")
|
||||
i.fa.fa-clone
|
||||
| {{_ 'templates'}}
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
a(href="{{pathFor 'board' id=templatesBoardId slug=templatesBoardSlug}}")
|
||||
i.fa.fa-clone
|
||||
| {{_ 'templates'}}
|
||||
unless isSandstorm
|
||||
hr
|
||||
ul.pop-over-list
|
||||
@@ -110,15 +109,13 @@ template(name="changeSettingsPopup")
|
||||
| {{_ 'show-desktop-drag-handles'}}
|
||||
if showDesktopDragHandles
|
||||
i.fa.fa-check
|
||||
unless currentUser.isWorker
|
||||
li
|
||||
label.bold
|
||||
i.fa.fa-sort-numeric-asc
|
||||
| {{_ 'show-cards-minimum-count'}}
|
||||
input#show-cards-count-at.inline-input.left(type="number" value="#{showCardsCountAt}" min="0" max="99" onkeydown="return false")
|
||||
input.js-apply-show-cards-at.left(type="submit" value="{{_ 'apply'}}")
|
||||
li
|
||||
label.bold
|
||||
i.fa.fa-sort-numeric-asc
|
||||
| {{_ 'show-cards-minimum-count'}}
|
||||
input#show-cards-count-at.inline-input.left(type="number" value="#{showCardsCountAt}" min="0" max="99" onkeydown="return false")
|
||||
input.js-apply-show-cards-at.left(type="submit" value="{{_ 'apply'}}")
|
||||
|
||||
template(name="userDeletePopup")
|
||||
unless currentUser.isWorker
|
||||
p {{_ 'delete-user-confirm-popup'}}
|
||||
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
|
||||
p {{_ 'delete-user-confirm-popup'}}
|
||||
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
|
||||
+1
-28
@@ -185,7 +185,6 @@ Boards.attachSchema(
|
||||
isActive: true,
|
||||
isNoComments: false,
|
||||
isCommentOnly: false,
|
||||
isWorker: false,
|
||||
},
|
||||
];
|
||||
}
|
||||
@@ -223,13 +222,6 @@ Boards.attachSchema(
|
||||
type: Boolean,
|
||||
optional: true,
|
||||
},
|
||||
'members.$.isWorker': {
|
||||
/**
|
||||
* Is the member only allowed to move card, assign himself to card and comment
|
||||
*/
|
||||
type: Boolean,
|
||||
optional: true,
|
||||
},
|
||||
permission: {
|
||||
/**
|
||||
* visibility of the board
|
||||
@@ -546,7 +538,6 @@ Boards.helpers({
|
||||
isActive: true,
|
||||
isAdmin: false,
|
||||
isNoComments: true,
|
||||
isWorker: false,
|
||||
});
|
||||
},
|
||||
|
||||
@@ -556,17 +547,6 @@ Boards.helpers({
|
||||
isActive: true,
|
||||
isAdmin: false,
|
||||
isCommentOnly: true,
|
||||
isWorker: false,
|
||||
});
|
||||
},
|
||||
|
||||
hasWorker(memberId) {
|
||||
return !!_.findWhere(this.members, {
|
||||
userId: memberId,
|
||||
isActive: true,
|
||||
isAdmin: false,
|
||||
isCommentOnly: false,
|
||||
isWorker: true,
|
||||
});
|
||||
},
|
||||
|
||||
@@ -869,7 +849,6 @@ Boards.mutations({
|
||||
isActive: true,
|
||||
isNoComments: false,
|
||||
isCommentOnly: false,
|
||||
isWorker: false,
|
||||
},
|
||||
},
|
||||
};
|
||||
@@ -902,7 +881,6 @@ Boards.mutations({
|
||||
isAdmin,
|
||||
isNoComments,
|
||||
isCommentOnly,
|
||||
isWorker,
|
||||
currentUserId = Meteor.userId(),
|
||||
) {
|
||||
const memberIndex = this.memberIndex(memberId);
|
||||
@@ -916,7 +894,6 @@ Boards.mutations({
|
||||
[`members.${memberIndex}.isAdmin`]: isAdmin,
|
||||
[`members.${memberIndex}.isNoComments`]: isNoComments,
|
||||
[`members.${memberIndex}.isCommentOnly`]: isCommentOnly,
|
||||
[`members.${memberIndex}.isWorker`]: isWorker,
|
||||
},
|
||||
};
|
||||
},
|
||||
@@ -1304,7 +1281,6 @@ if (Meteor.isServer) {
|
||||
* @param {boolean} [isActive] is the board active (default true)
|
||||
* @param {boolean} [isNoComments] disable comments (default false)
|
||||
* @param {boolean} [isCommentOnly] only enable comments (default false)
|
||||
* @param {boolean} [isWorker] only move cards, assign himself to card and comment (default false)
|
||||
* @param {string} [permission] "private" board <== Set to "public" if you
|
||||
* want public Wekan board
|
||||
* @param {string} [color] the color of the board
|
||||
@@ -1324,7 +1300,6 @@ if (Meteor.isServer) {
|
||||
isActive: req.body.isActive || true,
|
||||
isNoComments: req.body.isNoComments || false,
|
||||
isCommentOnly: req.body.isCommentOnly || false,
|
||||
isWorker: req.body.isWorker || false,
|
||||
},
|
||||
],
|
||||
permission: req.body.permission || 'private',
|
||||
@@ -1428,7 +1403,6 @@ if (Meteor.isServer) {
|
||||
* @param {boolean} isAdmin admin capability
|
||||
* @param {boolean} isNoComments NoComments capability
|
||||
* @param {boolean} isCommentOnly CommentsOnly capability
|
||||
* @param {boolean} isWorker Worker capability
|
||||
*/
|
||||
JsonRoutes.add('POST', '/api/boards/:boardId/members/:memberId', function(
|
||||
req,
|
||||
@@ -1437,7 +1411,7 @@ if (Meteor.isServer) {
|
||||
try {
|
||||
const boardId = req.params.boardId;
|
||||
const memberId = req.params.memberId;
|
||||
const { isAdmin, isNoComments, isCommentOnly, isWorker } = req.body;
|
||||
const { isAdmin, isNoComments, isCommentOnly } = req.body;
|
||||
Authentication.checkBoardAccess(req.userId, boardId);
|
||||
const board = Boards.findOne({ _id: boardId });
|
||||
function isTrue(data) {
|
||||
@@ -1452,7 +1426,6 @@ if (Meteor.isServer) {
|
||||
isTrue(isAdmin),
|
||||
isTrue(isNoComments),
|
||||
isTrue(isCommentOnly),
|
||||
isTrue(isWorker),
|
||||
req.userId,
|
||||
);
|
||||
|
||||
|
||||
@@ -352,16 +352,6 @@ if (Meteor.isClient) {
|
||||
return board && board.hasCommentOnly(this._id);
|
||||
},
|
||||
|
||||
isNotWorker() {
|
||||
const board = Boards.findOne(Session.get('currentBoard'));
|
||||
return board && board.hasMember(this._id) && !board.hasWorker(this._id);
|
||||
},
|
||||
|
||||
isWorker() {
|
||||
const board = Boards.findOne(Session.get('currentBoard'));
|
||||
return board && board.hasWorker(this._id);
|
||||
},
|
||||
|
||||
isBoardAdmin() {
|
||||
const board = Boards.findOne(Session.get('currentBoard'));
|
||||
return board && board.hasAdmin(this._id);
|
||||
|
||||
Generated
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v3.58.0",
|
||||
"version": "v3.61.0",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "wekan",
|
||||
"version": "v3.58.0",
|
||||
"version": "v3.61.0",
|
||||
"description": "Open-Source kanban",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
|
||||
+6
-34
@@ -1524,7 +1524,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
|
||||
<ul class="toc-list-h1">
|
||||
|
||||
<li>
|
||||
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v3.58">Wekan REST API v3.58</a>
|
||||
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v3.61">Wekan REST API v3.61</a>
|
||||
|
||||
</li>
|
||||
|
||||
@@ -2017,7 +2017,7 @@ var n=this.pipeline.run(e.tokenizer(t)),r=new e.Vector,i=[],o=this._fields.reduc
|
||||
<div class="page-wrapper">
|
||||
<div class="dark-box"></div>
|
||||
<div class="content">
|
||||
<h1 id="wekan-rest-api">Wekan REST API v3.58</h1>
|
||||
<h1 id="wekan-rest-api">Wekan REST API v3.61</h1>
|
||||
<blockquote>
|
||||
<p>Scroll down for code samples, example requests and responses. Select a language for code samples from the tabs above or the mobile navigation menu.</p>
|
||||
</blockquote>
|
||||
@@ -2837,7 +2837,6 @@ $.ajax({
|
||||
"isActive": true,
|
||||
"isNoComments": true,
|
||||
"isCommentOnly": true,
|
||||
"isWorker": true,
|
||||
"permission": "string",
|
||||
"color": "string"
|
||||
}'</span>;
|
||||
@@ -2948,7 +2947,6 @@ System.out.println(response.toString());
|
||||
<span class="hljs-attr">isActive:</span> <span class="hljs-literal">true</span>
|
||||
<span class="hljs-attr">isNoComments:</span> <span class="hljs-literal">true</span>
|
||||
<span class="hljs-attr">isCommentOnly:</span> <span class="hljs-literal">true</span>
|
||||
<span class="hljs-attr">isWorker:</span> <span class="hljs-literal">true</span>
|
||||
<span class="hljs-attr">permission:</span> <span class="hljs-string">string</span>
|
||||
<span class="hljs-attr">color:</span> <span class="hljs-string">string</span>
|
||||
|
||||
@@ -3015,13 +3013,6 @@ System.out.println(response.toString());
|
||||
<td>only enable comments (default false)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>» isWorker</td>
|
||||
<td>body</td>
|
||||
<td>boolean</td>
|
||||
<td>false</td>
|
||||
<td>only move cards, assign himself to card and comment (default false)</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>» permission</td>
|
||||
<td>body</td>
|
||||
<td>string</td>
|
||||
@@ -3278,8 +3269,7 @@ System.out.println(response.toString());
|
||||
<span class="hljs-attr">"isAdmin"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"isActive"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"isNoComments"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"isCommentOnly"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"isWorker"</span>: <span class="hljs-literal">true</span>
|
||||
<span class="hljs-attr">"isCommentOnly"</span>: <span class="hljs-literal">true</span>
|
||||
}
|
||||
],
|
||||
<span class="hljs-attr">"permission"</span>: <span class="hljs-string">"public"</span>,
|
||||
@@ -3894,8 +3884,7 @@ $.ajax({
|
||||
<span class="hljs-keyword">const</span> inputBody = <span class="hljs-string">'{
|
||||
"isAdmin": true,
|
||||
"isNoComments": true,
|
||||
"isCommentOnly": true,
|
||||
"isWorker": true
|
||||
"isCommentOnly": true
|
||||
}'</span>;
|
||||
<span class="hljs-keyword">const</span> headers = {
|
||||
<span class="hljs-string">'Content-Type'</span>:<span class="hljs-string">'multipart/form-data'</span>,
|
||||
@@ -3992,7 +3981,6 @@ System.out.println(response.toString());
|
||||
<pre class="highlight tab tab-yaml"><code><span class="hljs-attr">isAdmin:</span> <span class="hljs-literal">true</span>
|
||||
<span class="hljs-attr">isNoComments:</span> <span class="hljs-literal">true</span>
|
||||
<span class="hljs-attr">isCommentOnly:</span> <span class="hljs-literal">true</span>
|
||||
<span class="hljs-attr">isWorker:</span> <span class="hljs-literal">true</span>
|
||||
|
||||
</code></pre>
|
||||
<h3 id="set_board_member_permission-parameters">Parameters</h3>
|
||||
@@ -4049,13 +4037,6 @@ System.out.println(response.toString());
|
||||
<td>true</td>
|
||||
<td>CommentsOnly capability</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>» isWorker</td>
|
||||
<td>body</td>
|
||||
<td>boolean</td>
|
||||
<td>true</td>
|
||||
<td>Worker capability</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h4 id="detailed-descriptions">Detailed descriptions</h4>
|
||||
@@ -13627,8 +13608,7 @@ UserSecurity
|
||||
<span class="hljs-attr">"isAdmin"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"isActive"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"isNoComments"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"isCommentOnly"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"isWorker"</span>: <span class="hljs-literal">true</span>
|
||||
<span class="hljs-attr">"isCommentOnly"</span>: <span class="hljs-literal">true</span>
|
||||
}
|
||||
],
|
||||
<span class="hljs-attr">"permission"</span>: <span class="hljs-string">"public"</span>,
|
||||
@@ -14054,8 +14034,7 @@ UserSecurity
|
||||
<span class="hljs-attr">"isAdmin"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"isActive"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"isNoComments"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"isCommentOnly"</span>: <span class="hljs-literal">true</span>,
|
||||
<span class="hljs-attr">"isWorker"</span>: <span class="hljs-literal">true</span>
|
||||
<span class="hljs-attr">"isCommentOnly"</span>: <span class="hljs-literal">true</span>
|
||||
}
|
||||
|
||||
</code></pre>
|
||||
@@ -14106,13 +14085,6 @@ UserSecurity
|
||||
<td>none</td>
|
||||
<td>Is the member only allowed to comment on the board</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>isWorker</td>
|
||||
<td>boolean</td>
|
||||
<td>false</td>
|
||||
<td>none</td>
|
||||
<td>Is the member only allowed to move card, assign himself to card and comment</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<h2 id="tocscardcomments">CardComments</h2>
|
||||
|
||||
+1
-17
@@ -1,7 +1,7 @@
|
||||
swagger: '2.0'
|
||||
info:
|
||||
title: Wekan REST API
|
||||
version: v3.58
|
||||
version: v3.61
|
||||
description: |
|
||||
The REST API allows you to control and extend Wekan with ease.
|
||||
|
||||
@@ -211,12 +211,6 @@ paths:
|
||||
only enable comments (default false)
|
||||
type: boolean
|
||||
required: false
|
||||
- name: isWorker
|
||||
in: formData
|
||||
description: |
|
||||
only move cards, assign himself to card and comment (default false)
|
||||
type: boolean
|
||||
required: false
|
||||
- name: permission
|
||||
in: formData
|
||||
description: |
|
||||
@@ -1540,12 +1534,6 @@ paths:
|
||||
CommentsOnly capability
|
||||
type: boolean
|
||||
required: true
|
||||
- name: isWorker
|
||||
in: formData
|
||||
description: |
|
||||
Worker capability
|
||||
type: boolean
|
||||
required: true
|
||||
- name: board
|
||||
in: path
|
||||
description: |
|
||||
@@ -2227,10 +2215,6 @@ definitions:
|
||||
description: |
|
||||
Is the member only allowed to comment on the board
|
||||
type: boolean
|
||||
isWorker:
|
||||
description: |
|
||||
Is the member only allowed to move card, assign himself to card and comment
|
||||
type: boolean
|
||||
required:
|
||||
- userId
|
||||
- isAdmin
|
||||
|
||||
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
|
||||
appTitle = (defaultText = "Wekan"),
|
||||
# The name of the app as it is displayed to the user.
|
||||
|
||||
appVersion = 360,
|
||||
appVersion = 363,
|
||||
# Increment this for every release.
|
||||
|
||||
appMarketingVersion = (defaultText = "3.58.0~2020-01-03"),
|
||||
appMarketingVersion = (defaultText = "3.61.0~2020-01-03"),
|
||||
# Human-readable presentation of the app version.
|
||||
|
||||
minUpgradableAppVersion = 0,
|
||||
|
||||
Reference in new issue
Block a user