summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLauri Ojansivu <x@xet7.org>2020-02-05 01:17:15 +0200
committerLauri Ojansivu <x@xet7.org>2020-02-05 01:17:15 +0200
commit65fa2f626f503b8089e0d982901cffb3990426cb (patch)
tree1332d9e7eaa048ddfb1061d52d7bd68a46f5d9da
parent58df99d5be8460a56b06ff3151b7d63d7d12437b (diff)
parent0b00a8095ce34c753e5edac86d4b62e8aaa1b1e0 (diff)
downloadwekan-65fa2f626f503b8089e0d982901cffb3990426cb.tar.gz
wekan-65fa2f626f503b8089e0d982901cffb3990426cb.tar.bz2
wekan-65fa2f626f503b8089e0d982901cffb3990426cb.zip
Merge branch 'dollybean' of https://github.com/2020product/wekan into 2020product-dollybean
-rw-r--r--Dockerfile2
-rw-r--r--client/components/boards/boardHeader.js1
-rw-r--r--client/components/cards/cardDetails.jade302
-rw-r--r--client/components/cards/cardDetails.js87
-rw-r--r--client/components/cards/cardDetails.styl12
-rw-r--r--client/components/sidebar/sidebar.jade92
-rw-r--r--client/components/sidebar/sidebar.js296
-rw-r--r--docker-compose.yml2
-rw-r--r--i18n/en.i18n.json7
-rw-r--r--models/boards.js210
-rw-r--r--sandstorm-pkgdef.capnp2
-rw-r--r--server/migrations.js192
-rwxr-xr-xsnap-src/bin/config4
-rwxr-xr-xsnap-src/bin/wekan-help2
-rwxr-xr-xstart-wekan.bat2
-rwxr-xr-xstart-wekan.sh2
-rw-r--r--torodb-postgresql/docker-compose.yml2
17 files changed, 1067 insertions, 150 deletions
diff --git a/Dockerfile b/Dockerfile
index 4d173306..856b39ff 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -21,7 +21,7 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3 \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60 \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 \
- RICHER_CARD_COMMENT_EDITOR=true \
+ RICHER_CARD_COMMENT_EDITOR=false \
CARD_OPENED_WEBHOOK_ENABLED=false \
ATTACHMENTS_STORE_PATH="" \
MAX_IMAGE_PIXEL="" \
diff --git a/client/components/boards/boardHeader.js b/client/components/boards/boardHeader.js
index eea43bd3..8ab117f6 100644
--- a/client/components/boards/boardHeader.js
+++ b/client/components/boards/boardHeader.js
@@ -30,6 +30,7 @@ Template.boardMenuPopup.events({
'click .js-outgoing-webhooks': Popup.open('outgoingWebhooks'),
'click .js-import-board': Popup.open('chooseBoardSource'),
'click .js-subtask-settings': Popup.open('boardSubtaskSettings'),
+ 'click .js-card-settings': Popup.open('boardCardSettings')
});
Template.boardMenuPopup.helpers({
diff --git a/client/components/cards/cardDetails.jade b/client/components/cards/cardDetails.jade
index de4e102a..41ab8ca2 100644
--- a/client/components/cards/cardDetails.jade
+++ b/client/components/cards/cardDetails.jade
@@ -8,10 +8,13 @@ template(name="cardDetails")
a.fa.fa-times-thin.close-card-details.js-close-card-details
if currentUser.isBoardMember
a.fa.fa-navicon.card-details-menu.js-open-card-details-menu
+ input.inline-input(type="hidden" id="cardURL_copy" value="{{ absoluteUrl }}")
+ a.fa.fa-link.card-copy-button.js-copy-link
if isMiniScreen
a.fa.fa-times-thin.close-card-details-mobile-web.js-close-card-details
if currentUser.isBoardMember
a.fa.fa-navicon.card-details-menu-mobile-web.js-open-card-details-menu
+ a.fa.fa-link.card-copy-mobile-button
h2.card-details-title.js-card-title(
class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}")
+viewer
@@ -36,92 +39,103 @@ template(name="cardDetails")
p.warning {{_ 'card-archived'}}
.card-details-items
- .card-details-item.card-details-item-received
- h3
- i.fa.fa-sign-out
- card-details-item-title {{_ 'card-received'}}
- if getReceived
- +cardReceivedDate
- else
- if canModifyCard
- unless currentUser.isWorker
- a.js-received-date {{_ 'add'}}
-
- .card-details-item.card-details-item-start
- h3
- i.fa.fa-hourglass-start
- card-details-item-title {{_ 'card-start'}}
- if getStart
- +cardStartDate
- else
- if canModifyCard
- unless currentUser.isWorker
- a.js-start-date {{_ 'add'}}
+ if currentBoard.allowsReceivedDate
+ .card-details-item.card-details-item-received
+ h3
+ i.fa.fa-sign-out
+ card-details-item-title {{_ 'card-received'}}
+ if getReceived
+ +cardReceivedDate
+ else
+ if canModifyCard
+ unless currentUser.isWorker
+ a.card-label.add-label.js-received-date
+ i.fa.fa-plus
+
+ if currentBoard.allowsStartDate
+ .card-details-item.card-details-item-start
+ h3
+ i.fa.fa-hourglass-start
+ card-details-item-title {{_ 'card-start'}}
+ if getStart
+ +cardStartDate
+ else
+ if canModifyCard
+ unless currentUser.isWorker
+ a.card-label.add-label.js-start-date
+ i.fa.fa-plus
+
+ if currentBoard.allowsDueDate
+ .card-details-item.card-details-item-due
+ h3
+ i.fa.fa-sign-in
+ card-details-item-title {{_ 'card-due'}}
+ if getDue
+ +cardDueDate
+ else
+ if canModifyCard
+ unless currentUser.isWorker
+ a.card-label.add-label.js-due-date
+ i.fa.fa-plus
+
+ if currentBoard.allowsEndDate
+ .card-details-item.card-details-item-end
+ h3
+ i.fa.fa-hourglass-end
+ card-details-item-title {{_ 'card-end'}}
+ if getEnd
+ +cardEndDate
+ else
+ if canModifyCard
+ unless currentUser.isWorker
+ a.card-label.add-label.js-end-date
+ i.fa.fa-plus
- .card-details-item.card-details-item-due
- h3
- i.fa.fa-sign-in
- card-details-item-title {{_ 'card-due'}}
- if getDue
- +cardDueDate
- else
+ .card-details-items
+ if currentBoard.allowsMembers
+ .card-details-item.card-details-item-members
+ h3
+ i.fa.fa-users
+ card-details-item-title {{_ 'members'}}
+ each getMembers
+ +userAvatar(userId=this cardId=../_id)
+ | {{! XXX Hack to hide syntaxic coloration /// }}
if canModifyCard
unless currentUser.isWorker
- a.js-due-date {{_ 'add'}}
-
- .card-details-item.card-details-item-end
- h3
- i.fa.fa-hourglass-end
- card-details-item-title {{_ 'card-end'}}
- if getEnd
- +cardEndDate
- else
+ a.member.add-member.card-details-item-add-button.js-add-members(title="{{_ 'card-members-title'}}")
+ i.fa.fa-plus
+
+ //if assigneeSelected
+ if currentBoard.allowsAssignee
+ .card-details-item.card-details-item-assignees
+ h3
+ i.fa.fa-user
+ card-details-item-title {{_ 'assignee'}}
+ each getAssignees
+ +userAvatarAssignee(userId=this cardId=../_id)
+ | {{! XXX Hack to hide syntaxic coloration /// }}
if canModifyCard
- unless currentUser.isWorker
- a.js-end-date {{_ 'add'}}
-
- .card-details-items
- .card-details-item.card-details-item-members
- h3
- i.fa.fa-users
- card-details-item-title {{_ 'members'}}
- each getMembers
- +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
-
- .card-details-item.card-details-item-assignees
- h3
- i.fa.fa-user
- card-details-item-title {{_ 'assignee'}}
- each getAssignees
- +userAvatarAssignee(userId=this cardId=../_id)
- | {{! XXX Hack to hide syntaxic coloration /// }}
- if canModifyCard
- a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}")
- i.fa.fa-plus
- if currentUser.isWorker
- unless assigneeSelected
a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}")
i.fa.fa-plus
-
-
- .card-details-item.card-details-item-labels
- h3
- i.fa.fa-tags
- card-details-item-title {{_ 'labels'}}
- a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}")
- each labels
- span.card-label(class="card-label-{{color}}" title=name)
- +viewer
- = name
- if canModifyCard
- unless currentUser.isWorker
- a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
- i.fa.fa-plus
+ if currentUser.isWorker
+ unless assigneeSelected
+ a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}")
+ i.fa.fa-plus
+
+ if currentBoard.allowsLabels
+ .card-details-item.card-details-item-labels
+ h3
+ i.fa.fa-tags
+ card-details-item-title {{_ 'labels'}}
+ a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}")
+ each labels
+ span.card-label(class="card-label-{{color}}" title=name)
+ +viewer
+ = name
+ if canModifyCard
+ unless currentUser.isWorker
+ a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
+ i.fa.fa-plus
.card-details-items
each customFieldsWD
@@ -143,9 +157,9 @@ 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'}}
+ //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}}
@@ -153,16 +167,16 @@ template(name="cardDetails")
button.primary(type="submit") {{_ 'save'}}
a.fa.fa-times-thin.js-close-inlined-form
else
- a.js-open-inlined-form
+ a.description-item.add-description.js-open-inlined-form
if getDescription
+viewer
= getDescription
else
- | {{_ 'edit'}}
+ | {{_ 'addmore-detail'}}
if (hasUnsavedValue 'cardDescription' _id)
p.quiet
| {{_ 'unsaved-description'}}
- a.js-open-inlined-form {{_ 'view-it'}}
+ a.description-item.add-description.js-open-inlined-form {{_ 'view-it'}}
= ' - '
a.js-close-inlined-form {{_ 'discard'}}
else if getDescription
@@ -171,57 +185,60 @@ template(name="cardDetails")
= getDescription
.card-details-items
- .card-details-item.card-details-item-name
- h3
- 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'}}
- else if getRequestedBy
- +viewer
- = getRequestedBy
-
- .card-details-item.card-details-item-name
- h3
- 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'}}
- else if getRequestedBy
- +viewer
- = getAssignedBy
-
- hr
- +checklists(cardId = _id)
-
- if currentBoard.allowsSubtasks
- hr
- +subtasks(cardId = _id)
-
- hr
- h3
- i.fa.fa-paperclip
- | {{_ 'attachments'}}
+ if currentBoard.allowsRequestedBy
+ .card-details-item.card-details-item-name
+ h3
+ 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'}}
+ else if getRequestedBy
+ +viewer
+ = getRequestedBy
- +attachmentsGalery
+ if currentBoard.allowsAssignedBy
+ .card-details-item.card-details-item-name
+ h3
+ 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'}}
+ else if getRequestedBy
+ +viewer
+ = getAssignedBy
+
+ .card-checklist-attachmentGalerys
+ .card-checklist-attachmentGalery.card-checklists
+ if currentBoard.allowsChecklists
+ +checklists(cardId = _id)
+ if currentBoard.allowsSubtasks
+ hr
+ +subtasks(cardId = _id)
+ if currentBoard.allowsAttachments
+ //- hr
+ //- h3
+ //- i.fa.fa-paperclip
+ //- | {{_ 'attachments'}}
+ .card-checklist-attachmentGalery.card-attachmentGalery
+ +attachmentsGalery
hr
unless currentUser.isNoComments
@@ -237,9 +254,16 @@ template(name="cardDetails")
else
input.toggle-switch(type="checkbox" id="toggleButton")
label.toggle-label(for="toggleButton")
- if currentUser.isBoardMember
- unless currentUser.isNoComments
- +commentForm
+ if currentBoard.allowsComments
+ if currentUser.isBoardMember
+ unless currentUser.isNoComments
+ if canModifyCard
+ +inlinedForm(autoclose=false classNames="js-new-comment-form")
+ +commentForm
+ else
+ +userAvatar(userId=currentUser._id)
+ a.comment-item.add-comment.js-open-inlined-form
+ | {{_ 'Write Comment'}}
unless currentUser.isNoComments
if isLoaded.get
if isLinkedCard
diff --git a/client/components/cards/cardDetails.js b/client/components/cards/cardDetails.js
index 07dcac44..92edec38 100644
--- a/client/components/cards/cardDetails.js
+++ b/client/components/cards/cardDetails.js
@@ -279,6 +279,29 @@ BlazeComponent.extendComponent({
'click .js-close-card-details'() {
Utils.goBoardId(this.data().boardId);
},
+ 'click .js-copy-link'() {
+ StringToCopyElement = document.getElementById('cardURL_copy');
+ StringToCopyElement.select();
+ if (document.execCommand('copy')) {
+ StringToCopyElement.blur();
+ } else {
+ document.getElementById('cardURL_copy').selectionStart = 0;
+ document.getElementById('cardURL_copy').selectionEnd = 999;
+ document.execCommand('copy');
+ if (window.getSelection) {
+ if (window.getSelection().empty) {
+ // Chrome
+ window.getSelection().empty();
+ } else if (window.getSelection().removeAllRanges) {
+ // Firefox
+ window.getSelection().removeAllRanges();
+ }
+ } else if (document.selection) {
+ // IE?
+ document.selection.empty();
+ }
+ }
+ },
'click .js-open-card-details-menu': Popup.open('cardDetailsActions'),
'submit .js-card-description'(event) {
event.preventDefault();
@@ -371,6 +394,54 @@ Template.cardDetails.helpers({
});
},
+ receivedSelected() {
+ if (this.getReceived().length === 0) {
+ return false;
+ } else {
+ return true;
+ }
+ },
+
+ startSelected() {
+ if (this.getStart().length === 0) {
+ return false;
+ } else {
+ return true;
+ }
+ },
+
+ endSelected() {
+ if (this.getEnd().length === 0) {
+ return false;
+ } else {
+ return true;
+ }
+ },
+
+ dueSelected() {
+ if (this.getDue().length === 0) {
+ return false;
+ } else {
+ return true;
+ }
+ },
+
+ memberSelected() {
+ if (this.getMembers().length === 0) {
+ return false;
+ } else {
+ return true;
+ }
+ },
+
+ labelSelected() {
+ if (this.getLabels().length === 0) {
+ return false;
+ } else {
+ return true;
+ }
+ },
+
assigneeSelected() {
if (this.getAssignees().length === 0) {
return false;
@@ -379,6 +450,22 @@ Template.cardDetails.helpers({
}
},
+ requestBySelected() {
+ if (this.getRequestBy().length === 0) {
+ return false;
+ } else {
+ return true;
+ }
+ },
+
+ assigneeBySelected() {
+ if (this.getAssigneeBy().length === 0) {
+ return false;
+ } else {
+ return true;
+ }
+ },
+
memberType() {
const user = Users.findOne(this.userId);
return user && user.isBoardAdmin() ? 'admin' : 'normal';
diff --git a/client/components/cards/cardDetails.styl b/client/components/cards/cardDetails.styl
index 3fc4d047..fd6122eb 100644
--- a/client/components/cards/cardDetails.styl
+++ b/client/components/cards/cardDetails.styl
@@ -108,6 +108,8 @@ avatar-radius = 50%
.close-card-details,
.card-details-menu,
+ .card-copy-button,
+ .card-copy-mobile-button,
.close-card-details-mobile-web,
.card-details-menu-mobile-web
float: right
@@ -122,6 +124,16 @@ avatar-radius = 50%
padding: 5px
margin-right: 40px
+ .card-copy-button
+ font-size: 17px
+ padding: 10px
+ margin-right: 10px
+
+ .card-copy-mobile-button
+ font-size: 17px
+ padding: 10px
+ margin-right: 10px
+
.card-details-menu
font-size: 17px
padding: 10px
diff --git a/client/components/sidebar/sidebar.jade b/client/components/sidebar/sidebar.jade
index 8e84cd61..fe0810a5 100644
--- a/client/components/sidebar/sidebar.jade
+++ b/client/components/sidebar/sidebar.jade
@@ -72,6 +72,88 @@ template(name="boardChangeColorPopup")
if isSelected
i.fa.fa-check
+template(name="boardCardSettingsPopup")
+ form.board-card-settings
+ h3 {{_ 'show-on-card'}}
+ div.check-div
+ a.flex.js-field-has-receiveddate(class="{{#if allowsReceivedDate}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if allowsReceivedDate}}is-checked{{/if}}")
+ span
+ i.fa.fa-sign-out
+ | {{_ 'card-received'}}
+ div.check-div
+ a.flex.js-field-has-startdate(class="{{#if allowsStartDate}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if allowsStartDate}}is-checked{{/if}}")
+ span
+ i.fa.fa-hourglass-start
+ | {{_ 'card-start'}}
+ div.check-div
+ a.flex.js-field-has-duedate(class="{{#if allowsDueDate}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if allowsDueDate}}is-checked{{/if}}")
+ span
+ i.fa.fa-sign-in
+ | {{_ 'card-due'}}
+ div.check-div
+ a.flex.js-field-has-enddate(class="{{#if allowsEndDate}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if allowsEndDate}}is-checked{{/if}}")
+ span
+ i.fa.fa-hourglass-end
+ | {{_ 'card-end'}}
+ div.check-div
+ a.flex.js-field-has-members(class="{{#if allowsMembers}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if allowsMembers}}is-checked{{/if}}")
+ span
+ i.fa.fa-users
+ | {{_ 'members'}}
+ div.check-div
+ a.flex.js-field-has-assignee(class="{{#if allowsAssignee}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if allowsAssignee}}is-checked{{/if}}")
+ span
+ i.fa.fa-user
+ | {{_ 'assignee'}}
+ div.check-div
+ a.flex.js-field-has-assigned-by(class="{{#if allowsAssignedBy}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if allowsAssignedBy}}is-checked{{/if}}")
+ span
+ i.fa.fa-shopping-cart
+ | {{_ 'assigned-by'}}
+ div.check-div
+ a.flex.js-field-has-requested-by(class="{{#if allowsRequestedBy}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if allowsRequestedBy}}is-checked{{/if}}")
+ span
+ i.fa.fa-user-plus
+ | {{_ 'requested-by'}}
+ div.check-div
+ a.flex.js-field-has-labels(class="{{#if allowsLabels}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if allowsLabels}}is-checked{{/if}}")
+ span
+ i.fa.fa-tags
+ | {{_ 'labels'}}
+ div.check-div
+ a.flex.js-field-has-checklists(class="{{#if allowsChecklists}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if allowsChecklists}}is-checked{{/if}}")
+ span
+ i.fa.fa-check
+ | {{_ 'checklists'}}
+ div.check-div
+ a.flex.js-field-has-subtasks(class="{{#if allowsSubtasks}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if allowsSubtasks}}is-checked{{/if}}")
+ span
+ i.fa.fa-sitemap
+ | {{_ 'subtasks'}}
+ div.check-div
+ a.flex.js-field-has-attachments(class="{{#if allowsAttachments}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if allowsAttachments}}is-checked{{/if}}")
+ span
+ i.fa.fa-paperclip
+ | {{_ 'attachments'}}
+ div.check-div
+ a.flex.js-field-has-comments(class="{{#if allowsComments}}is-checked{{/if}}")
+ .materialCheckBox(class="{{#if allowsComments}}is-checked{{/if}}")
+ span
+ i.fa.fa-comment-o
+ | {{_ 'comment'}}
+
template(name="boardSubtaskSettingsPopup")
form.board-subtask-settings
h3 {{_ 'show-parent-in-minicard'}}
@@ -198,6 +280,10 @@ template(name="boardMenuPopup")
i.fa.fa-globe
| {{_ 'outgoing-webhooks'}}
li
+ a.js-card-settings
+ i.fa.fa-id-card-o
+ | {{_ 'card-settings'}}
+ li
a.js-subtask-settings
i.fa.fa-sitemap
| {{_ 'subtask-settings'}}
@@ -238,6 +324,12 @@ template(name="boardMenuPopup")
a.js-subtask-settings
i.fa.fa-sitemap
| {{_ 'subtask-settings'}}
+ hr
+ ul.pop-over-list
+ li
+ a.js-Date-settings
+ i.fa.fa-calendar
+ | {{_ 'Date-settings'}}
template(name="labelsWidget")
.board-widget.board-widget-labels
diff --git a/client/components/sidebar/sidebar.js b/client/components/sidebar/sidebar.js
index e8f38b8c..678c16d2 100644
--- a/client/components/sidebar/sidebar.js
+++ b/client/components/sidebar/sidebar.js
@@ -208,6 +208,7 @@ Template.boardMenuPopup.events({
'click .js-outgoing-webhooks': Popup.open('outgoingWebhooks'),
'click .js-import-board': Popup.open('chooseBoardSource'),
'click .js-subtask-settings': Popup.open('boardSubtaskSettings'),
+ 'click .js-card-settings': Popup.open('boardCardSettings'),
});
Template.boardMenuPopup.helpers({
@@ -472,6 +473,10 @@ BlazeComponent.extendComponent({
return this.currentBoard.allowsSubtasks;
},
+ allowsReceivedDate() {
+ return this.currentBoard.allowsReceivedDate;
+ },
+
isBoardSelected() {
return this.currentBoard.subtasksDefaultBoardId === this.currentData()._id;
},
@@ -587,6 +592,297 @@ BlazeComponent.extendComponent({
BlazeComponent.extendComponent({
onCreated() {
+ this.currentBoard = Boards.findOne(Session.get('currentBoard'));
+ },
+
+ allowsReceivedDate() {
+ return this.currentBoard.allowsReceivedDate;
+ },
+
+ allowsStartDate() {
+ return this.currentBoard.allowsStartDate;
+ },
+
+ allowsDueDate() {
+ return this.currentBoard.allowsDueDate;
+ },
+
+ allowsEndDate() {
+ return this.currentBoard.allowsEndDate;
+ },
+
+ allowsSubtasks() {
+ return this.currentBoard.allowsSubtasks;
+ },
+
+ allowsMembers() {
+ return this.currentBoard.allowsMembers;
+ },
+
+ allowsAssignee() {
+ return this.currentBoard.allowsAssignee;
+ },
+
+ allowsAssignedBy() {
+ return this.currentBoard.allowsAssignedBy;
+ },
+
+ allowsRequestedBy() {
+ return this.currentBoard.allowsRequestedBy;
+ },
+
+ allowsLabels() {
+ return this.currentBoard.allowsLabels;
+ },
+
+ allowsChecklists() {
+ return this.currentBoard.allowsChecklists;
+ },
+
+ allowsAttachments() {
+ return this.currentBoard.allowsAttachments;
+ },
+
+ allowsComments() {
+ return this.currentBoard.allowsComments;
+ },
+
+ isBoardSelected() {
+ return this.currentBoard.dateSettingsDefaultBoardID;
+ },
+
+ isNullBoardSelected() {
+ return (
+ this.currentBoard.dateSettingsDefaultBoardId === null ||
+ this.currentBoard.dateSettingsDefaultBoardId === undefined
+ );
+ },
+
+ boards() {
+ return Boards.find(
+ {
+ archived: false,
+ 'members.userId': Meteor.userId(),
+ },
+ {
+ sort: ['title'],
+ },
+ );
+ },
+
+ lists() {
+ return Lists.find(
+ {
+ boardId: this.currentBoard._id,
+ archived: false,
+ },
+ {
+ sort: ['title'],
+ },
+ );
+ },
+
+ hasLists() {
+ return this.lists().count() > 0;
+ },
+
+ isListSelected() {
+ return (
+ this.currentBoard.dateSettingsDefaultBoardId === this.currentData()._id
+ );
+ },
+
+ events() {
+ return [
+ {
+ 'click .js-field-has-receiveddate'(evt) {
+ evt.preventDefault();
+ this.currentBoard.allowsReceivedDate = !this.currentBoard
+ .allowsReceivedDate;
+ this.currentBoard.setAllowsReceivedDate(
+ this.currentBoard.allowsReceivedDate,
+ );
+ $(`.js-field-has-receiveddate ${MCB}`).toggleClass(
+ CKCLS,
+ this.currentBoard.allowsReceivedDate,
+ );
+ $('.js-field-has-receiveddate').toggleClass(
+ CKCLS,
+ this.currentBoard.allowsReceivedDate,
+ );
+ },
+ 'click .js-field-has-startdate'(evt) {
+ evt.preventDefault();
+ this.currentBoard.allowsStartDate = !this.currentBoard
+ .allowsStartDate;
+ this.currentBoard.setAllowsStartDate(
+ this.currentBoard.allowsStartDate,
+ );
+ $(`.js-field-has-startdate ${MCB}`).toggleClass(
+ CKCLS,
+ this.currentBoard.allowsStartDate,
+ );
+ $('.js-field-has-startdate').toggleClass(
+ CKCLS,
+ this.currentBoard.allowsStartDate,
+ );
+ },
+ 'click .js-field-has-enddate'(evt) {
+ evt.preventDefault();
+ this.currentBoard.allowsEndDate = !this.currentBoard.allowsEndDate;
+ this.currentBoard.setAllowsEndDate(this.currentBoard.allowsEndDate);
+ $(`.js-field-has-enddate ${MCB}`).toggleClass(
+ CKCLS,
+ this.currentBoard.allowsEndDate,
+ );
+ $('.js-field-has-enddate').toggleClass(
+ CKCLS,
+ this.currentBoard.allowsEndDate,
+ );
+ },
+ 'click .js-field-has-duedate'(evt) {
+ evt.preventDefault();
+ this.currentBoard.allowsDueDate = !this.currentBoard.allowsDueDate;
+ this.currentBoard.setAllowsDueDate(this.currentBoard.allowsDueDate);
+ $(`.js-field-has-duedate ${MCB}`).toggleClass(
+ CKCLS,
+ this.currentBoard.allowsDueDate,
+ );
+ $('.js-field-has-duedate').toggleClass(
+ CKCLS,
+ this.currentBoard.allowsDueDate,
+ );
+ },
+ 'click .js-field-has-subtasks'(evt) {
+ evt.preventDefault();
+ this.currentBoard.allowsSubtasks = !this.currentBoard.allowsSubtasks;
+ this.currentBoard.setAllowsSubtasks(this.currentBoard.allowsSubtasks);
+ $(`.js-field-has-subtasks ${MCB}`).toggleClass(
+ CKCLS,
+ this.currentBoard.allowsSubtasks,
+ );
+ $('.js-field-has-subtasks').toggleClass(
+ CKCLS,
+ this.currentBoard.allowsSubtasks,
+ );
+ },
+ 'click .js-field-has-members'(evt) {
+ evt.preventDefault();
+ this.currentBoard.allowsMembers = !this.currentBoard.allowsMembers;
+ this.currentBoard.setAllowsMembers(this.currentBoard.allowsMembers);
+ $(`.js-field-has-members ${MCB}`).toggleClass(
+ CKCLS,
+ this.currentBoard.allowsMembers,
+ );
+ $('.js-field-has-members').toggleClass(
+ CKCLS,
+ this.currentBoard.allowsMembers,
+ );
+ },
+ 'click .js-field-has-assignee'(evt) {
+ evt.preventDefault();
+ this.currentBoard.allowsAssignee = !this.currentBoard.allowsAssignee;
+ this.currentBoard.setAllowsAssignee(this.currentBoard.allowsAssignee);
+ $(`.js-field-has-assignee ${MCB}`).toggleClass(
+ CKCLS,
+ this.currentBoard.allowsAssignee,
+ );
+ $('.js-field-has-assignee').toggleClass(
+ CKCLS,
+ this.currentBoard.allowsAssignee,
+ );
+ },
+ 'click .js-field-has-assigned-by'(evt) {
+ evt.preventDefault();
+ this.currentBoard.allowsAssignedBy = !this.currentBoard.allowsAssignedBy;
+ this.currentBoard.setAllowsAssignedBy(this.currentBoard.allowsAssignedBy);
+ $(`.js-field-has-assigned-by ${MCB}`).toggleClass(
+ CKCLS,
+ this.currentBoard.allowsAssignedBy,
+ );
+ $('.js-field-has-assigned-by').toggleClass(
+ CKCLS,
+ this.currentBoard.allowsAssignedBy,
+ );
+ },
+ 'click .js-field-has-requested-by'(evt) {
+ evt.preventDefault();
+ this.currentBoard.allowsRequestedBy = !this.currentBoard.allowsRequestedBy;
+ this.currentBoard.setAllowsRequestedBy(this.currentBoard.allowsRequestedBy);
+ $(`.js-field-has-requested-by ${MCB}`).toggleClass(
+ CKCLS,
+ this.currentBoard.allowsRequestedBy,
+ );
+ $('.js-field-has-requested-by').toggleClass(
+ CKCLS,
+ this.currentBoard.allowsRequestedBy,
+ );
+ },
+ 'click .js-field-has-labels'(evt) {
+ evt.preventDefault();
+ this.currentBoard.allowsLabels = !this.currentBoard.allowsLabels;
+ this.currentBoard.setAllowsLabels(this.currentBoard.allowsLabels);
+ $(`.js-field-has-labels ${MCB}`).toggleClass(
+ CKCLS,
+ this.currentBoard.allowsAssignee,
+ );
+ $('.js-field-has-labels').toggleClass(
+ CKCLS,
+ this.currentBoard.allowsLabels,
+ );
+ },
+ 'click .js-field-has-checklists'(evt) {
+ evt.preventDefault();
+ this.currentBoard.allowsChecklists = !this.currentBoard
+ .allowsChecklists;
+ this.currentBoard.setAllowsChecklists(
+ this.currentBoard.allowsChecklists,
+ );
+ $(`.js-field-has-checklists ${MCB}`).toggleClass(
+ CKCLS,
+ this.currentBoard.allowsChecklists,
+ );
+ $('.js-field-has-checklists').toggleClass(
+ CKCLS,
+ this.currentBoard.allowsChecklists,
+ );
+ },
+ 'click .js-field-has-attachments'(evt) {
+ evt.preventDefault();
+ this.currentBoard.allowsAttachments = !this.currentBoard
+ .allowsAttachments;
+ this.currentBoard.setAllowsAttachments(
+ this.currentBoard.allowsAttachments,
+ );
+ $(`.js-field-has-attachments ${MCB}`).toggleClass(
+ CKCLS,
+ this.currentBoard.allowsAttachments,
+ );
+ $('.js-field-has-attachments').toggleClass(
+ CKCLS,
+ this.currentBoard.allowsAttachments,
+ );
+ },
+ 'click .js-field-has-comments'(evt) {
+ evt.preventDefault();
+ this.currentBoard.allowsComments = !this.currentBoard.allowsComments;
+ this.currentBoard.setAllowsComments(this.currentBoard.allowsComments);
+ $(`.js-field-has-comments ${MCB}`).toggleClass(
+ CKCLS,
+ this.currentBoard.allowsComments,
+ );
+ $('.js-field-has-comments').toggleClass(
+ CKCLS,
+ this.currentBoard.allowsComments,
+ );
+ },
+ },
+ ];
+ },
+}).register('boardCardSettingsPopup');
+
+BlazeComponent.extendComponent({
+ onCreated() {
this.error = new ReactiveVar('');
this.loading = new ReactiveVar(false);
},
diff --git a/docker-compose.yml b/docker-compose.yml
index 57ccaeea..1aee54c9 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -238,7 +238,7 @@ services:
#---------------------------------------------------------------
# ==== RICH TEXT EDITOR IN CARD COMMENTS ====
# https://github.com/wekan/wekan/pull/2560
- - RICHER_CARD_COMMENT_EDITOR=true
+ - RICHER_CARD_COMMENT_EDITOR=false
#---------------------------------------------------------------
# ==== CARD OPENED, SEND WEBHOOK MESSAGE ====
# https://github.com/wekan/wekan/issues/2518
diff --git a/i18n/en.i18n.json b/i18n/en.i18n.json
index 64fada1a..da3d875a 100644
--- a/i18n/en.i18n.json
+++ b/i18n/en.i18n.json
@@ -583,8 +583,9 @@
"default": "Default",
"queue": "Queue",
"subtask-settings": "Subtasks Settings",
+ "card-settings": "Card Settings",
"boardSubtaskSettingsPopup-title": "Board Subtasks Settings",
- "show-subtasks-field": "Cards can have subtasks",
+ "boardCardSettingsPopup-title": "Card Settings",
"deposit-subtasks-board": "Deposit subtasks to this board:",
"deposit-subtasks-list": "Landing list for subtasks deposited here:",
"show-parent-in-minicard": "Show parent in minicard:",
@@ -756,5 +757,7 @@
"hide-minicard-label-text": "Hide minicard label text",
"show-desktop-drag-handles": "Show desktop drag handles",
"assignee": "Assignee",
- "cardAssigneesPopup-title": "Assignee"
+ "cardAssigneesPopup-title": "Assignee",
+ "addmore-detail": "Add a more detailed description",
+ "show-on-card": "Show on Card"
}
diff --git a/models/boards.js b/models/boards.js
index 4e193dc7..69cf86fe 100644
--- a/models/boards.js
+++ b/models/boards.js
@@ -278,6 +278,7 @@ Boards.attachSchema(
optional: true,
defaultValue: null,
},
+
subtasksDefaultListId: {
/**
* The default List ID assigned to subtasks.
@@ -286,6 +287,19 @@ Boards.attachSchema(
optional: true,
defaultValue: null,
},
+
+ dateSettingsDefaultBoardId: {
+ type: String,
+ optional: true,
+ defaultValue: null,
+ },
+
+ dateSettingsDefaultListId: {
+ type: String,
+ optional: true,
+ defaultValue: null,
+ },
+
allowsSubtasks: {
/**
* Does the board allows subtasks?
@@ -293,6 +307,103 @@ Boards.attachSchema(
type: Boolean,
defaultValue: true,
},
+
+ allowsAttachments: {
+ /**
+ * Does the board allows attachments?
+ */
+ type: Boolean,
+ defaultValue: true,
+ },
+
+ allowsChecklists: {
+ /**
+ * Does the board allows checklists?
+ */
+ type: Boolean,
+ defaultValue: true,
+ },
+
+ allowsComments: {
+ /**
+ * Does the board allows comments?
+ */
+ type: Boolean,
+ defaultValue: true,
+ },
+
+ allowsLabels: {
+ /**
+ * Does the board allows labels?
+ */
+ type: Boolean,
+ defaultValue: true,
+ },
+
+ allowsAssignee: {
+ /**
+ * Does the board allows assignee?
+ */
+ type: Boolean,
+ defaultValue: true,
+ },
+
+ allowsMembers: {
+ /**
+ * Does the board allows members?
+ */
+ type: Boolean,
+ defaultValue: true,
+ },
+
+ allowsRequestedBy: {
+ /**
+ * Does the board allows requested by?
+ */
+ type: Boolean,
+ defaultValue: true,
+ },
+
+ allowsAssignedBy: {
+ /**
+ * Does the board allows requested by?
+ */
+ type: Boolean,
+ defaultValue: true,
+ },
+
+ allowsReceivedDate: {
+ /**
+ * Does the board allows received date?
+ */
+ type: Boolean,
+ defaultValue: true,
+ },
+
+ allowsStartDate: {
+ /**
+ * Does the board allows start date?
+ */
+ type: Boolean,
+ defaultValue: true,
+ },
+
+ allowsEndDate: {
+ /**
+ * Does the board allows end date?
+ */
+ type: Boolean,
+ defaultValue: true,
+ },
+
+ allowsDueDate: {
+ /**
+ * Does the board allows due date?
+ */
+ type: Boolean,
+ defaultValue: true,
+ },
+
presentParentTask: {
/**
* Controls how to present the parent task:
@@ -710,6 +821,39 @@ Boards.helpers({
return Boards.findOne(this.getDefaultSubtasksBoardId());
},
+ //Date Settings option such as received date, start date and so on.
+ getDefaultDateSettingsBoardId() {
+ if (
+ this.dateSettingsDefaultBoardId === null ||
+ this.dateSettingsDefaultBoardId === undefined
+ ) {
+ this.dateSettingsDefaultBoardId = Boards.insert({
+ title: `^${this.title}^`,
+ permission: this.permission,
+ members: this.members,
+ color: this.color,
+ description: TAPi18n.__('default-dates-board', {
+ board: this.title,
+ }),
+ });
+
+ Swimlanes.insert({
+ title: TAPi18n.__('default'),
+ boardId: this.dateSettingsDefaultBoardId,
+ });
+ Boards.update(this._id, {
+ $set: {
+ dateSettingsDefaultBoardId: this.dateSettingsDefaultBoardId,
+ },
+ });
+ }
+ return this.dateSettingsDefaultBoardId;
+ },
+
+ getDefaultDateSettingsBoard() {
+ return Boards.findOne(this.getDefaultDateSettingsBoardId());
+ },
+
getDefaultSubtasksListId() {
if (
this.subtasksDefaultListId === null ||
@@ -728,6 +872,24 @@ Boards.helpers({
return Lists.findOne(this.getDefaultSubtasksListId());
},
+ getDefaultDateSettingsListId() {
+ if (
+ this.dateSettingsDefaultListId === null ||
+ this.dateSettingsDefaultListId === undefined
+ ) {
+ this.dateSettingsDefaultListId = Lists.insert({
+ title: TAPi18n.__('queue'),
+ boardId: this._id,
+ });
+ this.setDateSettingsDefaultListId(this.dateSettingsDefaultListId);
+ }
+ return this.dateSettingsDefaultListId;
+ },
+
+ getDefaultDateSettingsList() {
+ return Lists.findOne(this.getDefaultDateSettingsListId());
+ },
+
getDefaultSwimline() {
let result = Swimlanes.findOne({ boardId: this._id });
if (result === undefined) {
@@ -925,6 +1087,54 @@ Boards.mutations({
return { $set: { allowsSubtasks } };
},
+ setAllowsMembers(allowsMembers) {
+ return { $set: { allowsMembers } };
+ },
+
+ setAllowsChecklists(allowsChecklists) {
+ return { $set: { allowsChecklists } };
+ },
+
+ setAllowsAssignee(allowsComments) {
+ return { $set: { allowsComments } };
+ },
+
+ setAllowsAssignedBy(allowsAssignedBy) {
+ return { $set: { allowsAssignedBy } };
+ },
+
+ setAllowsRequestedBy(allowsRequestedBy) {
+ return { $set: { allowsRequestedBy } };
+ },
+
+ setAllowsAttachments(allowsAttachments) {
+ return { $set: { allowsAttachments } };
+ },
+
+ setAllowsLabels(allowsLabels) {
+ return { $set: { allowsLabels } };
+ },
+
+ setAllowsAssignee(allowsAssignee) {
+ return { $set: { allowsAssignee } };
+ },
+
+ setAllowsReceivedDate(allowsReceivedDate) {
+ return { $set: { allowsReceivedDate } };
+ },
+
+ setAllowsStartDate(allowsStartDate) {
+ return { $set: { allowsStartDate } };
+ },
+
+ setAllowsEndDate(allowsEndDate) {
+ return { $set: { allowsEndDate } };
+ },
+
+ setAllowsDueDate(allowsDueDate) {
+ return { $set: { allowsDueDate } };
+ },
+
setSubtasksDefaultBoardId(subtasksDefaultBoardId) {
return { $set: { subtasksDefaultBoardId } };
},
diff --git a/sandstorm-pkgdef.capnp b/sandstorm-pkgdef.capnp
index e6dd9fc8..374d206b 100644
--- a/sandstorm-pkgdef.capnp
+++ b/sandstorm-pkgdef.capnp
@@ -238,7 +238,7 @@ const myCommand :Spk.Manifest.Command = (
# Note that this defines the *entire* environment seen by your app.
(key = "PATH", value = "/usr/local/bin:/usr/bin:/bin"),
(key = "WITH_API", value = "true"),
- (key = "RICHER_CARD_COMMENT_EDITOR", value="true"),
+ (key = "RICHER_CARD_COMMENT_EDITOR", value="false"),
(key = "CARD_OPENED_WEBHOOK_ENABLED", value="false"),
(key = "BIGEVENTS_PATTERN", value="NONE"),
(key = "MATOMO_ADDRESS", value=""),
diff --git a/server/migrations.js b/server/migrations.js
index 1b7146c5..12a872a8 100644
--- a/server/migrations.js
+++ b/server/migrations.js
@@ -793,3 +793,195 @@ Migrations.add('add-profile-hiddenMinicardLabelText', () => {
noValidateMulti,
);
});
+
+Migrations.add('add-receiveddate-allowed', () => {
+ Boards.update(
+ {
+ allowsReceivedDate: {
+ $exists: false,
+ },
+ },
+ {
+ $set: {
+ allowsReceivedDate: true,
+ },
+ },
+ noValidateMulti,
+ );
+});
+
+Migrations.add('add-startdate-allowed', () => {
+ Boards.update(
+ {
+ allowsStartDate: {
+ $exists: false,
+ },
+ },
+ {
+ $set: {
+ allowsStartDate: true,
+ },
+ },
+ noValidateMulti,
+ );
+});
+
+Migrations.add('add-duedate-allowed', () => {
+ Boards.update(
+ {
+ allowsDueDate: {
+ $exists: false,
+ },
+ },
+ {
+ $set: {
+ allowsDueDate: true,
+ },
+ },
+ noValidateMulti,
+ );
+});
+
+Migrations.add('add-enddate-allowed', () => {
+ Boards.update(
+ {
+ allowsEndDate: {
+ $exists: false,
+ },
+ },
+ {
+ $set: {
+ allowsEndDate: true,
+ },
+ },
+ noValidateMulti,
+ );
+});
+
+Migrations.add('add-members-allowed', () => {
+ Boards.update(
+ {
+ allowsMembers: {
+ $exists: false,
+ },
+ },
+ {
+ $set: {
+ allowsMembers: true,
+ },
+ },
+ noValidateMulti,
+ );
+});
+
+Migrations.add('add-assignee-allowed', () => {
+ Boards.update(
+ {
+ allowsAssignee: {
+ $exists: false,
+ },
+ },
+ {
+ $set: {
+ allowsAssignee: true,
+ },
+ },
+ noValidateMulti,
+ );
+});
+
+Migrations.add('add-labels-allowed', () => {
+ Boards.update(
+ {
+ allowsLabels: {
+ $exists: false,
+ },
+ },
+ {
+ $set: {
+ allowsLabels: true,
+ },
+ },
+ noValidateMulti,
+ );
+});
+
+Migrations.add('add-checklists-allowed', () => {
+ Boards.update(
+ {
+ allowsChecklists: {
+ $exists: false,
+ },
+ },
+ {
+ $set: {
+ allowsChecklists: true,
+ },
+ },
+ noValidateMulti,
+ );
+});
+
+Migrations.add('add-attachments-allowed', () => {
+ Boards.update(
+ {
+ allowsAttachments: {
+ $exists: false,
+ },
+ },
+ {
+ $set: {
+ allowsAttachments: true,
+ },
+ },
+ noValidateMulti,
+ );
+});
+
+Migrations.add('add-comments-allowed', () => {
+ Boards.update(
+ {
+ allowsComments: {
+ $exists: false,
+ },
+ },
+ {
+ $set: {
+ allowsComments: true,
+ },
+ },
+ noValidateMulti,
+ );
+});
+
+Migrations.add('add-assigned-by-allowed', () => {
+ Boards.update(
+ {
+ allowsAssignedBy: {
+ $exists: false,
+ },
+ },
+ {
+ $set: {
+ allowsAssignedBy: true,
+ },
+ },
+ noValidateMulti,
+ );
+});
+
+Migrations.add('add-requested-by-allowed', () => {
+ Boards.update(
+ {
+ allowsRequestedBy: {
+ $exists: false,
+ },
+ },
+ {
+ $set: {
+ allowsRequestedBy: true,
+ },
+ },
+ noValidateMulti,
+ );
+});
diff --git a/snap-src/bin/config b/snap-src/bin/config
index 8f1bfabd..a4c23a42 100755
--- a/snap-src/bin/config
+++ b/snap-src/bin/config
@@ -60,8 +60,8 @@ DESCRIPTION_WITH_API="Enable/disable the api of wekan"
DEFAULT_WITH_API="true"
KEY_WITH_API="with-api"
-DESCRIPTION_RICHER_CARD_COMMENT_EDITOR="Rich text editor in card comments. Default: true"
-DEFAULT_RICHER_CARD_COMMENT_EDITOR="true"
+DESCRIPTION_RICHER_CARD_COMMENT_EDITOR="Rich text editor in card comments. Default: false"
+DEFAULT_RICHER_CARD_COMMENT_EDITOR="false"
KEY_RICHER_CARD_COMMENT_EDITOR="richer-card-comment-editor"
DESCRIPTION_CARD_OPENED_WEBHOOK_ENABLED="Card opened, send webhook message. Default: false https://github.com/wekan/wekan/issues/2518"
diff --git a/snap-src/bin/wekan-help b/snap-src/bin/wekan-help
index 1dc952b2..5d222b5d 100755
--- a/snap-src/bin/wekan-help
+++ b/snap-src/bin/wekan-help
@@ -63,7 +63,7 @@ echo -e "\n"
echo -e "Accounts lockout unknown users failure window, in seconds. Default: 15"
echo -e "\t$ snap set $SNAP_NAME accounts-lockout-unknown-users-failure-window='15'"
echo -e "\n"
-echo -e "Rich text editor in card comments. Default: true https://github.com/wekan/wekan/pull/2560"
+echo -e "Rich text editor in card comments. Default: false https://github.com/wekan/wekan/pull/2560"
echo -e "Default:"
echo -e "\t$ snap set $SNAP_NAME richer-card-comment-editor='true'"
echo -e "Disabled:"
diff --git a/start-wekan.bat b/start-wekan.bat
index 55dace87..718025ed 100755
--- a/start-wekan.bat
+++ b/start-wekan.bat
@@ -23,7 +23,7 @@ SET WITH_API=true
REM # ==== RICH TEXT EDITOR IN CARD COMMENTS ====
REM # https://github.com/wekan/wekan/pull/2560
-SET RICHER_CARD_COMMENT_EDITOR=true
+SET RICHER_CARD_COMMENT_EDITOR=false
REM # ==== CARD OPENED, SEND WEBHOOK MESSAGE ====
SET CARD_OPENED_WEBHOOK_ENABLED=false
diff --git a/start-wekan.sh b/start-wekan.sh
index ad17f2fb..8dade1cc 100755
--- a/start-wekan.sh
+++ b/start-wekan.sh
@@ -39,7 +39,7 @@
#---------------------------------------------------------------
# ==== RICH TEXT EDITOR IN CARD COMMENTS ====
# https://github.com/wekan/wekan/pull/2560
- export RICHER_CARD_COMMENT_EDITOR=true
+ export RICHER_CARD_COMMENT_EDITOR=false
#---------------------------------------------------------------
# ==== CARD OPENED, SEND WEBHOOK MESSAGE ====
export CARD_OPENED_WEBHOOK_ENABLED=false
diff --git a/torodb-postgresql/docker-compose.yml b/torodb-postgresql/docker-compose.yml
index 7a7ad9c8..de4039bf 100644
--- a/torodb-postgresql/docker-compose.yml
+++ b/torodb-postgresql/docker-compose.yml
@@ -228,7 +228,7 @@ services:
#---------------------------------------------------------------
# ==== RICH TEXT EDITOR IN CARD COMMENTS ====
# https://github.com/wekan/wekan/pull/2560
- - RICHER_CARD_COMMENT_EDITOR=true
+ - RICHER_CARD_COMMENT_EDITOR=false
#---------------------------------------------------------------
# ==== CARD OPENED, SEND WEBHOOK MESSAGE ====
# https://github.com/wekan/wekan/issues/2518