Compare commits

...
32 Commits
Author SHA1 Message Date
Lauri Ojansivu 8e142dfdcf v5.52 2021-08-26 13:55:05 +03:00
Lauri Ojansivu 2a216d41f0 Updated ChangeLog. 2021-08-26 04:05:35 +03:00
Lauri Ojansivu 241eb9df0f Fixed New wide card edit view is all jumbled on mobile.
Thanks to jdaviescoates and xet7 !

Fixes #3890
2021-08-26 04:01:44 +03:00
Lauri Ojansivu 0bdd7c8973 Updated ChangeLog. 2021-08-26 03:41:10 +03:00
Lauri Ojansivu a59932af00 Fixed Save button not clickable in maximized card view.
Thanks to syndimann !

Fixes #3940
2021-08-26 03:38:31 +03:00
Lauri Ojansivu c2a073dec0 Updated ChangeLog. 2021-08-26 03:03:15 +03:00
Lauri Ojansivu 7808fdd22f Delete user is now possible at Admin Panel. But you should remove user first from all boards,
because otherwise there could be bug of empty avatars at boards, that need to be removed manually
from database.

Thanks to xet7 !

Fixes #3956
2021-08-26 02:57:49 +03:00
Lauri Ojansivu bf2f3ccec1 Updated ChangeLog. 2021-08-26 02:39:39 +03:00
Lauri Ojansivu 9c7c481f48 Initials not required for new user that is created at Admin Panel.
Thanks to xet7 !
2021-08-26 02:36:43 +03:00
Lauri Ojansivu df26bc9013 Updated ChangeLog. 2021-08-26 02:12:47 +03:00
Lauri Ojansivu b36a7621e0 Fixed translation of "Clear Filter" for "All boards page: Possibility of filtering board by team or organization".
Thanks to xet7 !
2021-08-26 02:10:44 +03:00
Lauri Ojansivu f2c242f49e Added Chinese (Simplified) (zh-Hans or zh-CN).
Thanks to translators!
2021-08-26 02:08:23 +03:00
Lauri Ojansivu 5175f13881 Updated ChangeLog. 2021-08-25 23:32:35 +03:00
Lauri Ojansivu 75a1854cc3 Merge pull request #3964 from Emile840/master
[All boards page] Possibility of filtering board by team or organization
2021-08-25 23:29:49 +03:00
Emile NDAGIJIMANA 48c3263e28 [all boards page] Possibility of filtering board by team or organization 2021-08-24 17:12:51 +02:00
Lauri Ojansivu f5e26fb2e6 Updated ChangeLog. 2021-08-21 17:55:49 +03:00
Lauri Ojansivu 1fadf204c2 Added MAIL_SERVICE settings. Part 2.
Thanks to xet7 !

Fixes #3702
2021-08-21 17:54:05 +03:00
Lauri Ojansivu f03b14a46b Updated ChangeLog. 2021-08-21 17:10:04 +03:00
Lauri Ojansivu ab8e56e16a Added MAIL_SERVICE settings for Well Known Email Services https://github.com/wekan/wekan/wiki/Troubleshooting-Mail . Please test.
Thanks to xet7 !

Fixes #3702
2021-08-21 16:32:07 +03:00
Lauri Ojansivu 2f33a1ecff v5.51 2021-08-17 22:04:39 +03:00
Lauri Ojansivu abadeb5e14 Updated ChangeLog. 2021-08-17 21:37:15 +03:00
Lauri Ojansivu 19c68895e9 Merge pull request #3949 from syndimann/fix/global-search
Fix: global search
2021-08-17 21:33:05 +03:00
Kai Lehmann bed6d6c591 fixes global search, remove unnecessary use of CardCommentReactions 2021-08-17 16:14:50 +02:00
Lauri Ojansivu b2652edf56 v5.50 2021-08-16 00:00:06 +03:00
Lauri Ojansivu 94bb3bee77 Updated translations. 2021-08-15 23:53:29 +03:00
Lauri Ojansivu e909ece2da Updated ChangeLog. 2021-08-15 23:48:16 +03:00
Lauri Ojansivu 7bc250ce84 Merge pull request #3946 from syndimann/fix/user-creation
Fix: Save user initials and fullname when a new user is created
2021-08-15 23:44:07 +03:00
Kai Lehmann 7706839fbe fix user creation to include fullname and initials 2021-08-15 22:33:31 +02:00
Lauri Ojansivu 68ad58431d Updated translations. 2021-08-15 00:02:02 +03:00
Lauri Ojansivu 2059752fc6 Updated translations. 2021-08-14 09:51:30 +03:00
Lauri Ojansivu 302afae0bb Updated dependencies. 2021-08-14 09:44:07 +03:00
Lauri Ojansivu 3d1d94d628 Updated ChangeLog. 2021-08-13 23:54:24 +03:00
38 changed files with 496 additions and 125 deletions

No files matched your search

+1 -1
View File
@@ -39,7 +39,7 @@ host = https://www.transifex.com
# tap:i18n requires us to use `-` separator in the language identifiers whereas
# Transifex uses a `_` separator, without an option to customize it on one side
# or the other, so we need to do a Manual mapping.
lang_map = ar_EG:ar-EG, bg_BG:bg, de_CH:de-CH, en_IT:en-IT, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_419:es-LA, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fa_IR:fa-IR, fi_FI:fi, fr_CH:fr-CH, hu_HU:hu, id_ID:id, mn_MN:mn, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
lang_map = ar_EG:ar-EG, bg_BG:bg, de_CH:de-CH, en_IT:en-IT, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_419:es-LA, es_PE:es-PE, es_MX:es-MX, es_TX:es-TX, es_PY:es-PY, el_GR:el, fa_IR:fa-IR, fi_FI:fi, fr_CH:fr-CH, hu_HU:hu, id_ID:id, mn_MN:mn, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_Hans:zh-Hans, zh_HK:zh-HK
[wekan.application]
file_filter = i18n/<lang>.i18n.json
+54
View File
@@ -3,12 +3,66 @@
Note: With Docker, please don't use latest tag. Only use release tags.
See https://github.com/wekan/wekan/issues/3874
# v5.52 2021-08-26 Wekan release
This release adds the following new features:
- Added MAIL_SERVICE settings for Well Known Email Services
[Part 1](https://github.com/wekan/wekan/commit/ab8e56e16a02ef0afb7b4023a43b4adf2558a8ff),
[Part 2](https://github.com/wekan/wekan/commit/1fadf204c2d5fa96ea41b9cb39f003cc05e2fe46).
https://github.com/wekan/wekan/wiki/Troubleshooting-Mail . Please test.
Thanks to xet7.
- [All Boards page: Possibility of filtering board by team or organization](https://github.com/wekan/wekan/pull/3964).
Thanks to Emile840.
- [Fixed translation of "Clear Filter" for "All boards page: Possibility of filtering board by team or organization"](https://github.com/wekan/wekan/commit/b36a7621e0feca5c22fc4a24eceba1a9fc584ab0).
Thanks to xet7.
and adds the following new translations:
- [Added Chinese (Simplified) (zh-Hans or zh-CN)](https://github.com/wekan/wekan/commit/f2c242f49e18e2197f1f90c9b2dac5934a08325d).
Thanks to translators.
and fixes the following bugs:
- [Initials not required for new user that is created at Admin Panel](https://github.com/wekan/wekan/commit/9c7c481f48cb66406715f7571439f9d7fa332b87).
Thanks to xet7.
- [Delete user is now possible at Admin Panel](https://github.com/wekan/wekan/commit/7808fdd22f04cc482b7df21187aaf3e9623f19e6).
But you should remove user first from all boards, because otherwise there could be
bug of empty avatars at boards, that need to be removed manually from database.
Thanks to xet7.
- [Fixed Save button not clickable in maximized card view](https://github.com/wekan/wekan/commit/a59932af00c066871102970d252b78d262d06fa0).
Thanks to hatl, urmel1960 and syndimann.
- [Fixed New wide card edit view is all jumbled on mobile](https://github.com/wekan/wekan/commit/241eb9df0fb446b3775704848281b0cc032c4921).
Thanks to jdaviescoates and xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.51 2021-08-17 Wekan release
This release fixes the following bugs:
- [Fixed exception in global search](https://github.com/wekan/wekan/pull/3949).
Thanks to syndimann.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.50 2021-08-15 Wekan release
This release fixes the following bugs:
- [Fix: Save user initials and fullname when a new user is created](https://github.com/wekan/wekan/pull/3946).
Thanks to syndimann.
Thanks to above GitHub users for their contributions and translators for their translations.
# v5.49 2021-08-14 Wekan release
This release adds the following new features:
- [Text "Search" now translatable at Card Add Member/Assignee](https://github.com/wekan/wekan/commit/9ce65c601a875a4259fb69fdda45124b8412ae6f).
Thanks to xet7.
- [Add Card Comment Reactions](https://github.com/wekan/wekan/pull/3945).
Thanks to syndimann.
Thanks to above GitHub users for their contributions and translators for their translations.
+5
View File
@@ -21,6 +21,11 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
ARCHITECTURE=linux-x64 \
SRC_PATH=./ \
WITH_API=true \
MAIL_URL="" \
MAIL_FROM="" \
MAIL_SERVICE="" \
MAIL_SERVICE_USER="" \
MAIL_SERVICE_PASSWORD="" \
RESULTS_PER_PAGE="" \
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3 \
ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60 \
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v5.49.0"
appVersion: "v5.52.0"
files:
userUploads:
- README.md
+22 -1
View File
@@ -1,11 +1,32 @@
template(name="boardList")
.wrapper
ul.AllBoardTeamsOrgs
li.AllBoardTeams
if userHasTeams
select.js-AllBoardTeams#jsAllBoardTeams("multiple")
option(value="-1") {{_ 'teams'}} :
each teamsDatas
option(value="{{teamId}}") {{_ teamDisplayName}}
li.AllBoardOrgs
if userHasOrgs
select.js-AllBoardOrgs#jsAllBoardOrgs("multiple")
option(value="-1") {{_ 'organizations'}} :
each orgsDatas
option(value="{{orgId}}") {{_ orgDisplayName}}
li.AllBoardBtns
div.AllBoardButtonsContainer
if userHasOrgsOrTeams
i.fa.fa-filter
input#filterBtn(type="button" value="{{_ 'filter'}}")
input#resetBtn(type="button" value="{{_ 'filter-clear'}}")
ul.board-list.clearfix.js-boards
li.js-add-board
a.board-list-item.label(title="{{_ 'add-board'}}")
| {{_ 'add-board'}}
each boards
li(class="{{#if isStarred}}starred{{/if}}" class=colorClass).js-board
li(class="{{_id}}" class="{{#if isStarred}}starred{{/if}}" class=colorClass).js-board
if isInvited
.board-list-item
span.details
+124 -2
View File
@@ -84,7 +84,61 @@ BlazeComponent.extendComponent({
}
});
},
userHasTeams(){
if(Meteor.user().teams)
{
return true;
}
else{
return false;
}
},
teamsDatas() {
if(Meteor.user().teams)
{
return Meteor.user().teams;
}
else{
return [];
}
},
userHasOrgs(){
if(Meteor.user().orgs)
{
return true;
}
else{
return false;
}
},
orgsDatas() {
if(Meteor.user().orgs)
{
return Meteor.user().orgs;
}
else{
return [];
}
},
userHasOrgsOrTeams(){
let boolUserHasOrgs;
if(Meteor.user().orgs)
{
boolUserHasOrgs = true;
}
else{
boolUserHasOrgs = false;
}
let boolUserHasTeams;
if(Meteor.user().teams)
{
boolUserHasTeams = true;
}
else{
boolUserHasTeams = false;
}
return (boolUserHasOrgs || boolUserHasTeams);
},
boards() {
const query = {
//archived: false,
@@ -132,7 +186,7 @@ BlazeComponent.extendComponent({
else query.permission = 'public';
return Boards.find(query, {
//sort: { sort: 1 /* boards default sorting */ },
sort: { sort: 1 /* boards default sorting */ },
});
},
isStarred() {
@@ -206,6 +260,74 @@ BlazeComponent.extendComponent({
}
});
},
'click #resetBtn'(event){
let allBoards = document.getElementsByClassName("js-board");
let currBoard;
for(let i=0; i < allBoards.length; i++){
currBoard = allBoards[i];
currBoard.style.display = "block";
}
},
'click #filterBtn'(event) {
event.preventDefault();
let selectedTeams = document.querySelectorAll('#jsAllBoardTeams option:checked');
let selectedTeamsValues = Array.from(selectedTeams).map(function(elt){return elt.value});
let index = selectedTeamsValues.indexOf("-1");
if (index > -1) {
selectedTeamsValues.splice(index, 1);
}
let selectedOrgs = document.querySelectorAll('#jsAllBoardOrgs option:checked');
let selectedOrgsValues = Array.from(selectedOrgs).map(function(elt){return elt.value});
index = selectedOrgsValues.indexOf("-1");
if (index > -1) {
selectedOrgsValues.splice(index, 1);
}
if(selectedTeamsValues.length > 0 || selectedOrgsValues.length > 0){
const query = {
$and: [
{ archived: false },
{ type: 'board' },
{ $or:[] }
]
};
if(selectedTeamsValues.length > 0)
{
query.$and[2].$or.push({'teams.teamId': {$in : selectedTeamsValues}});
}
if(selectedOrgsValues.length > 0)
{
query.$and[2].$or.push({'orgs.orgId': {$in : selectedOrgsValues}});
}
let filteredBoards = Boards.find(query, {}).fetch();
let allBoards = document.getElementsByClassName("js-board");
let currBoard;
if(filteredBoards.length > 0){
let currBoardId;
let found;
for(let i=0; i < allBoards.length; i++){
currBoard = allBoards[i];
currBoardId = currBoard.classList[0];
found = filteredBoards.find(function(board){
return board._id == currBoardId;
});
if(found !== undefined)
currBoard.style.display = "block";
else
currBoard.style.display = "none";
}
}
else{
for(let i=0; i < allBoards.length; i++){
currBoard = allBoards[i];
currBoard.style.display = "none";
}
}
}
},
},
];
},
+22
View File
@@ -229,3 +229,25 @@ $spaceBetweenTiles = 16px
transform: translateY(-50%)
right: 10px
font-size: 24px
.AllBoardTeamsOrgs
list-style-type: none;
overflow: hidden;
.AllBoardTeams,.AllBoardOrgs,.AllBoardBtns
float: left;
.js-AllBoardOrgs
margin-left: 16px;
.AllBoardTeams
margin-left : 16px;
.AllBoardButtonsContainer
margin: 16px;
#filterBtn,#resetBtn
display: inline;
.js-board
display: block;
+32 -32
View File
@@ -243,42 +243,42 @@ avatar-radius = 50%
.activities
padding-top: 10px
.card-details-maximized
padding: 0
flex-shrink: 0
flex-basis: calc(100% - 20px)
will-change: flex-basis
overflow-y: scroll
overflow-x: scroll
background: darken(white, 3%)
border-radius: bottom 3px
z-index: 1000 !important
animation: flexGrowIn 0.1s
box-shadow: 0 0 7px 0 darken(white, 30%)
transition: flex-basis 0.1s
box-sizing: border-box
position: absolute
top: 0
left: 0
height: calc(100% - 20px)
width: calc(100% - 20px)
float: left
.card-details-left
@media screen and (min-width: 801px)
.card-details-maximized
padding: 0
flex-shrink: 0
flex-basis: calc(100% - 20px)
will-change: flex-basis
overflow-y: scroll
overflow-x: scroll
background: darken(white, 3%)
border-radius: bottom 3px
z-index: 1000 !important
animation: flexGrowIn 0.1s
box-shadow: 0 0 7px 0 darken(white, 30%)
transition: flex-basis 0.1s
box-sizing: border-box
position: absolute
top: 0
left: 0
height: calc(100% - 20px)
width: calc(100% - 20px)
float: left
top: 60px
left: 20px
width: 47%
.card-details-right
position: absolute
float: right
top: 20px
left: 50%
.card-details-left
float: left
top: 60px
left: 20px
width: 47%
.card-details-header
width: 47%
.card-details-right
position: absolute
float: right
top: 20px
left: 50%
.card-details-header
width: 47%
input[type="text"].attachment-add-link-input
float: left
+5 -1
View File
@@ -469,7 +469,7 @@ template(name="newUserPopup")
input.js-profile-username(type="text" value="" required)
label
| {{_ 'initials'}}
input.js-profile-initials(type="text" value="" required)
input.js-profile-initials(type="text" value="")
label
| {{_ 'email'}}
span.error.hide.email-taken
@@ -571,10 +571,14 @@ template(name="settingsUserPopup")
a.impersonate-user
i.fa.fa-user
| {{_ 'impersonate-user'}}
br
hr
li
form
label.hide.userId(type="text" value=user._id)
label
| {{_ 'delete-user-confirm-popup' }}
br
div.buttonsContainer
input#deleteButton.card-details-red.right.wide(type="button" value="{{_ 'delete'}}")
// Delete is enabled, but there is still bug of leaving empty user avatars
+19 -12
View File
@@ -839,20 +839,24 @@ Template.newUserPopup.events({
let userTeamsIdsList = userTeamsIds.split(",");
let userTms = [];
for(let i = 0; i < userTeamsList.length; i++){
userTms.push({
"teamId": userTeamsIdsList[i],
"teamDisplayName": userTeamsList[i],
})
if(!!userTeamsIdsList[i] && !!userTeamsList[i]) {
userTms.push({
"teamId": userTeamsIdsList[i],
"teamDisplayName": userTeamsList[i],
})
}
}
let userOrgsList = userOrgs.split(",");
let userOrgsIdsList = userOrgsIds.split(",");
let userOrganizations = [];
for(let i = 0; i < userOrgsList.length; i++){
userOrganizations.push({
"orgId": userOrgsIdsList[i],
"orgDisplayName": userOrgsList[i],
})
if(!!userOrgsIdsList[i] && !!userOrgsList[i]) {
userOrganizations.push({
"orgId": userOrgsIdsList[i],
"orgDisplayName": userOrgsList[i],
})
}
}
Meteor.call(
@@ -975,10 +979,13 @@ Template.settingsUserPopup.events({
},
'click #deleteButton'(event) {
event.preventDefault();
Users.remove(this.userId);
/*
// Delete is not enabled yet, because it does leave empty user avatars
// to boards: boards members, card members and assignees have
// empty users. See:
// Delete user is enabled, but you should remove user from all boards
// before deleting user, because there is possibility of leaving empty user avatars
// to boards. You can remove non-existing user ids manually from database,
// if that happens.
//. See:
// - wekan/client/components/settings/peopleBody.jade deleteButton
// - wekan/client/components/settings/peopleBody.js deleteButton
// - wekan/client/components/sidebar/sidebar.js Popup.afterConfirm('removeMember'
@@ -986,7 +993,7 @@ Template.settingsUserPopup.events({
// but that should be used to remove user from all boards similarly
// - wekan/models/users.js Delete is not enabled
//
//Users.remove(this.userId);
//
*/
Popup.close();
},
+3
View File
@@ -166,6 +166,9 @@ services:
#- MAIL_URL=smtp://user:pass@mailserver.example.com:25/
- MAIL_URL=smtp://<mail_url>:25/?ignoreTLS=true&tls={rejectUnauthorized:false}
- MAIL_FROM=Wekan Notifications <noreply.wekan@mydomain.com>
#- MAIL_SERVICE=Outlook365
#- MAIL_SERVICE_USER=firstname.lastname@hotmail.com
#- MAIL_SERVICE_PASSWORD=SecretPassword
#---------------------------------------------------------------
# ==== OPTIONAL: MONGO OPLOG SETTINGS =====
# https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-378343587
+1 -1
View File
@@ -1,5 +1,5 @@
apiVersion: v2
appVersion: "5.49"
appVersion: "5.52"
dependencies:
- condition: mongodb.enabled
name: mongodb
+1 -1
View File
@@ -14,7 +14,7 @@ serviceAccounts:
##
image:
repository: quay.io/wekan/wekan
tag: v5.49
tag: v5.52
pullPolicy: IfNotPresent
## Configuration for wekan component
+3 -3
View File
@@ -264,7 +264,7 @@
"color-white": "Weiss",
"color-yellow": "gelb",
"unset-color": "Nicht festgelegt",
"comment": "Kommentar",
"comment": "Kommentar speichern",
"comment-placeholder": "Kommentar schreiben",
"comment-only": "Nur Kommentare",
"comment-only-desc": "Kann Karten nur kommentieren.",
@@ -322,7 +322,7 @@
"editCardStartDatePopup-title": "Startdatum ändern",
"editCardDueDatePopup-title": "Fälligkeitsdatum ändern",
"editCustomFieldPopup-title": "Feld bearbeiten",
"addReactionPopup-title": "Add reaction",
"addReactionPopup-title": "Bewertung hinzufügen",
"editCardSpentTimePopup-title": "Aufgewendete Zeit ändern",
"editLabelPopup-title": "Label ändern",
"editNotificationPopup-title": "Benachrichtigung ändern",
@@ -952,7 +952,7 @@
"operator-created": "erstellt",
"operator-modified": "geändert",
"operator-sort": "sortieren",
"operator-comment": "Kommentar speichern",
"operator-comment": "kommentieren",
"operator-has": "hat",
"operator-limit": "Begrenzung",
"predicate-archived": "archiviert",
+1 -1
View File
@@ -322,7 +322,7 @@
"editCardStartDatePopup-title": "Modifier la date de début",
"editCardDueDatePopup-title": "Modifier la date d'échéance",
"editCustomFieldPopup-title": "Éditer le champ personnalisé",
"addReactionPopup-title": "Add reaction",
"addReactionPopup-title": "Ajouter une réaction",
"editCardSpentTimePopup-title": "Modifier le temps passé",
"editLabelPopup-title": "Modifier l'étiquette",
"editNotificationPopup-title": "Modifier la notification",
+1 -1
View File
@@ -322,7 +322,7 @@
"editCardStartDatePopup-title": "שינוי מועד התחלה",
"editCardDueDatePopup-title": "שינוי מועד סיום",
"editCustomFieldPopup-title": "עריכת שדה",
"addReactionPopup-title": "Add reaction",
"addReactionPopup-title": "הוספת סימון כתגובה",
"editCardSpentTimePopup-title": "שינוי הזמן שהושקע",
"editLabelPopup-title": "שינוי תווית",
"editNotificationPopup-title": "שינוי דיווח",
+1 -1
View File
@@ -322,7 +322,7 @@
"editCardStartDatePopup-title": "Wijzig start datum",
"editCardDueDatePopup-title": "Wijzig vervaldatum",
"editCustomFieldPopup-title": "Wijzig Veld",
"addReactionPopup-title": "Add reaction",
"addReactionPopup-title": "Reactie toevoegen",
"editCardSpentTimePopup-title": "Verander gespendeerde tijd",
"editLabelPopup-title": "Wijzig label",
"editNotificationPopup-title": "Wijzig notificatie",
+1 -1
View File
@@ -322,7 +322,7 @@
"editCardStartDatePopup-title": "Altera data de início",
"editCardDueDatePopup-title": "Altera prazo final",
"editCustomFieldPopup-title": "Editar campo",
"addReactionPopup-title": "Add reaction",
"addReactionPopup-title": "Adicionar reação",
"editCardSpentTimePopup-title": "Editar tempo gasto",
"editLabelPopup-title": "Alterar Etiqueta",
"editNotificationPopup-title": "Editar Notificações",
+15 -15
View File
@@ -1,5 +1,5 @@
{
"accept": "接受",
"accept": "同意",
"act-activity-notify": "活动通知",
"act-addAttachment": "添加附件 __attachment__ 到看板 __board__ 中的泳道 __swimlane__ 中的列表 __list__ 中的卡片 __card__ 中",
"act-deleteAttachment": "删除看板 __board__ 中的泳道 __swimlane__ 中的列表 __list__ 中的卡片 __card__ 中的附件 __attachment__",
@@ -42,7 +42,7 @@
"act-unjoinMember": "移除成员 __member__ 从卡片 __card__ 列表 __list__ a泳道 __swimlane__ 看板 __board__",
"act-withBoardTitle": "看板__board__",
"act-withCardTitle": "[看板 __board__] 卡片 __card__",
"actions": "操作",
"actions": "动作",
"activities": "活动",
"activity": "活动",
"activity-added": "添加 %s 至 %s",
@@ -81,15 +81,15 @@
"activity-endDate": "已将结束日期从 %s 修改为 %s",
"add-attachment": "添加附件",
"add-board": "添加看板",
"add-template": "新增模板",
"add-template": "添加模板",
"add-card": "添加卡片",
"add-card-to-top-of-list": "新增卡片到列表顶部",
"add-card-to-bottom-of-list": "新增卡片到列表底部",
"add-card-to-top-of-list": "添加卡片到列表顶部",
"add-card-to-bottom-of-list": "添加卡片到列表底部",
"add-swimlane": "添加泳道图",
"add-subtask": "添加子任务",
"add-checklist": "添加待办清单",
"add-checklist-item": "扩充清单",
"convertChecklistItemToCardPopup-title": "Convert to Card",
"add-checklist": "添加清单",
"add-checklist-item": "添加项目清单",
"convertChecklistItemToCardPopup-title": "转为卡片",
"add-cover": "添加封面",
"add-label": "添加标签",
"add-list": "添加列表",
@@ -149,7 +149,7 @@
"board-view-cal": "日历",
"board-view-swimlanes": "泳道图",
"board-view-collapse": "崩溃",
"board-view-gantt": "甘特",
"board-view-gantt": "甘特图",
"board-view-lists": "列表",
"bucket-example": "例如 “目标清单”",
"cancel": "取消",
@@ -203,7 +203,7 @@
"poker-result-votes": "投票",
"poker-result-who": "何人",
"poker-replay": "Replay",
"set-estimation": "Set Estimation",
"set-estimation": "设置预估时间",
"deletePokerPopup-title": "删除计划扑克?",
"poker-delete-pop": "永久删除。对该计划扑克的所有操作记录将会丢失。",
"cardDeletePopup-title": "彻底删除卡片?",
@@ -267,7 +267,7 @@
"comment": "评论",
"comment-placeholder": "添加评论",
"comment-only": "仅能评论",
"comment-only-desc": "只能在卡片上评论。",
"comment-only-desc": "仅能在卡片上评论。",
"no-comments": "暂无评论",
"no-comments-desc": "无法查看评论和活动。",
"worker": "人员",
@@ -322,7 +322,7 @@
"editCardStartDatePopup-title": "修改起始日期",
"editCardDueDatePopup-title": "修改截止日期",
"editCustomFieldPopup-title": "编辑字段",
"addReactionPopup-title": "Add reaction",
"addReactionPopup-title": "新增动作",
"editCardSpentTimePopup-title": "修改耗时",
"editLabelPopup-title": "更改标签",
"editNotificationPopup-title": "编辑通知",
@@ -352,10 +352,10 @@
"error-user-doesNotExist": "该用户不存在",
"error-user-notAllowSelf": "无法邀请自己",
"error-user-notCreated": "该用户未能成功创建",
"error-username-taken": "此用户名已存在",
"error-username-taken": "此用户名已被使用",
"error-orgname-taken": "此组织名称已被使用",
"error-teamname-taken": "此团队名称已被使用",
"error-email-taken": "此EMail已存在",
"error-email-taken": "此邮箱已被使用",
"export-board": "导出看板",
"export-board-json": "看板导出为JSON",
"export-board-csv": "看板导出为CSV",
@@ -392,7 +392,7 @@
"filter-member-label": "按成员过滤",
"filter-no-member": "无成员",
"filter-assignee-label": "按指定人过滤",
"filter-no-assignee": "没有代理人",
"filter-no-assignee": "没有指派人",
"filter-custom-fields-label": "按自定义字段过滤",
"filter-no-custom-fields": "无自定义字段",
"filter-show-archive": "显示归档的列表",
+51 -12
View File
@@ -1,3 +1,5 @@
var nodemailer = require('nodemailer');
// Sandstorm context is detected using the METEOR_SETTINGS environment variable
// in the package definition.
const isSandstorm =
@@ -157,6 +159,7 @@ if (Meteor.isServer) {
};
Settings.insert(defaultSetting);
}
/*
if (isSandstorm) {
// At Sandstorm, Admin Panel has SMTP settings
const newSetting = Settings.findOne();
@@ -169,7 +172,9 @@ if (Meteor.isServer) {
// Not running on Sandstorm, so using environment variables
Accounts.emailTemplates.from = process.env.MAIL_FROM;
}
*/
});
/*
if (isSandstorm) {
// At Sandstorm Wekan Admin Panel, save SMTP settings.
Settings.after.update((userId, doc, fieldNames) => {
@@ -189,6 +194,7 @@ if (Meteor.isServer) {
}
});
}
*/
function getRandomNum(min, max) {
const range = max - min;
@@ -220,12 +226,29 @@ if (Meteor.isServer) {
};
const lang = author.getLanguage();
Email.send({
to: icode.email,
from: Accounts.emailTemplates.from,
subject: TAPi18n.__('email-invite-register-subject', params, lang),
text: TAPi18n.__('email-invite-register-text', params, lang),
});
if (process.env.MAIL_SERVICE !== '') {
let transporter = nodemailer.createTransport({
service: process.env.MAIL_SERVICE,
auth: {
user: process.env.MAIL_SERVICE_USER,
pass: process.env.MAIL_SERVICE_PASSWORD
},
})
let info = transporter.sendMail({
to: icode.email,
from: Accounts.emailTemplates.from,
subject: TAPi18n.__('email-invite-register-subject', params, lang),
text: TAPi18n.__('email-invite-register-text', params, lang),
})
} else if (process.env.MAIL_URL !== '') {
Email.send({
to: icode.email,
from: Accounts.emailTemplates.from,
subject: TAPi18n.__('email-invite-register-subject', params, lang),
text: TAPi18n.__('email-invite-register-text', params, lang),
});
}
} catch (e) {
InvitationCodes.remove(_id);
throw new Meteor.Error('email-fail', e.message);
@@ -318,12 +341,28 @@ if (Meteor.isServer) {
this.unblock();
const lang = user.getLanguage();
try {
Email.send({
to: user.emails[0].address,
from: Accounts.emailTemplates.from,
subject: TAPi18n.__('email-smtp-test-subject', { lng: lang }),
text: TAPi18n.__('email-smtp-test-text', { lng: lang }),
});
if (process.env.MAIL_SERVICE !== '') {
let transporter = nodemailer.createTransport({
service: process.env.MAIL_SERVICE,
auth: {
user: process.env.MAIL_SERVICE_USER,
pass: process.env.MAIL_SERVICE_PASSWORD
},
})
let info = transporter.sendMail({
to: user.emails[0].address,
from: Accounts.emailTemplates.from,
subject: TAPi18n.__('email-smtp-test-subject', { lng: lang }),
text: TAPi18n.__('email-smtp-test-text', { lng: lang }),
})
} else if (process.env.MAIL_URL !== '') {
Email.send({
to: user.emails[0].address,
from: Accounts.emailTemplates.from,
subject: TAPi18n.__('email-smtp-test-subject', { lng: lang }),
text: TAPi18n.__('email-smtp-test-text', { lng: lang }),
});
}
} catch ({ message }) {
throw new Meteor.Error(
'email-fail',
+24 -6
View File
@@ -1,3 +1,4 @@
var nodemailer = require('nodemailer');
import { SyncedCron } from 'meteor/percolate:synced-cron';
import ImpersonatedUsers from './impersonatedUsers';
@@ -1218,12 +1219,29 @@ if (Meteor.isServer) {
url: board.absoluteUrl(),
};
const lang = user.getLanguage();
Email.send({
to: user.emails[0].address.toLowerCase(),
from: Accounts.emailTemplates.from,
subject: TAPi18n.__('email-invite-subject', params, lang),
text: TAPi18n.__('email-invite-text', params, lang),
});
if (process.env.MAIL_SERVICE !== '') {
let transporter = nodemailer.createTransport({
service: process.env.MAIL_SERVICE,
auth: {
user: process.env.MAIL_SERVICE_USER,
pass: process.env.MAIL_SERVICE_PASSWORD
},
})
let info = transporter.sendMail({
to: user.emails[0].address.toLowerCase(),
from: Accounts.emailTemplates.from,
subject: TAPi18n.__('email-invite-subject', params, lang),
text: TAPi18n.__('email-invite-text', params, lang),
})
} else if (process.env.MAIL_URL !== '') {
Email.send({
to: user.emails[0].address.toLowerCase(),
from: Accounts.emailTemplates.from,
subject: TAPi18n.__('email-invite-subject', params, lang),
text: TAPi18n.__('email-invite-text', params, lang),
});
}
} catch (e) {
throw new Meteor.Error('email-fail', e.message);
}
+6 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v5.49.0",
"version": "v5.52.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -2691,6 +2691,11 @@
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.74.tgz",
"integrity": "sha512-caJBVempXZPepZoZAPCWRTNxYQ+xtG/KAi4ozTA5A+nJ7IU+kLQCbqaUjb5Rwy14M9upBWiQ4NutcmW04LJSRw=="
},
"nodemailer": {
"version": "6.6.3",
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.6.3.tgz",
"integrity": "sha512-faZFufgTMrphYoDjvyVpbpJcYzwyFnbAMmQtj1lVBYAUSm3SOy2fIdd9+Mr4UxPosBa0JRw9bJoIwQn+nswiew=="
},
"normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+2 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v5.49.0",
"version": "v5.52.0",
"description": "Open-Source kanban",
"private": true,
"repository": {
@@ -40,6 +40,7 @@
"markdown-it-emoji": "^2.0.0",
"meteor-node-stubs": "^1.1.0",
"mongodb": "^3.6.11",
"nodemailer": "^6.6.3",
"os": "^0.1.2",
"page": "^1.11.5",
"papaparse": "^5.3.1",
-4
View File
@@ -26,7 +26,3 @@ Package.onUse(function(api) {
api.mainModule('server/index.js', 'server');
});
Npm.depends({
ldapjs: '1.0.2',
});
+3 -3
View File
@@ -7,7 +7,7 @@
<meta charset="utf-8">
<meta content="IE=edge,chrome=1" http-equiv="X-UA-Compatible">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>Wekan REST API v5.49</title>
<title>Wekan REST API v5.52</title>
<style>
</style>
@@ -1555,7 +1555,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 v5.49">Wekan REST API v5.49</a>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v5.52">Wekan REST API v5.52</a>
</li>
@@ -2128,7 +2128,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 v5.49</h1>
<h1 id="wekan-rest-api">Wekan REST API v5.52</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>
+1 -1
View File
@@ -1,7 +1,7 @@
swagger: '2.0'
info:
title: Wekan REST API
version: v5.49
version: v5.52
description: |
The REST API allows you to control and extend Wekan with ease.
@@ -27,6 +27,9 @@ tx pull -f -l zh_CN
echo "Chinese (Hong Kong):"
tx pull -f -l zh_HK
echo "Chinese Simplified (zh-Hans):"
tx pull -f -l zh_Hans
echo "Chinese (Taiwan):"
tx pull -f -l zh_TW
+4
View File
@@ -16,6 +16,10 @@
# https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
# https://github.com/wekan/wekan-mongodb/blob/master/docker-compose.yml
export MAIL_URL='smtp://user:pass@mailserver.example.com:25/'
export MAIL_FROM='Wekan Boards <info@example.com>'
#export MAIL_SERVICE=Outlook365
#export MAIL_SERVICE_USER=firstname.lastname@hotmail.com
#export MAIL_SERVICE_PASSWORD=SecretPassword
#---------------------------------------------
#export KADIRA_OPTIONS_ENDPOINT=http://127.0.0.1:11011
#---------------------------------------------
+2 -2
View File
@@ -22,10 +22,10 @@ const pkgdef :Spk.PackageDefinition = (
appTitle = (defaultText = "Wekan"),
# The name of the app as it is displayed to the user.
appVersion = 549,
appVersion = 552,
# Increment this for every release.
appMarketingVersion = (defaultText = "5.49.0~2021-08-14"),
appMarketingVersion = (defaultText = "5.52.0~2021-08-26"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
+24 -6
View File
@@ -1,3 +1,5 @@
var nodemailer = require('nodemailer');
// buffer each user's email text in a queue, then flush them in single email
Meteor.startup(() => {
Notifications.subscribe('email', (user, title, description, params) => {
@@ -38,12 +40,28 @@ Meteor.startup(() => {
const html = texts.join('<br/>\n\n');
user.clearEmailBuffer();
try {
Email.send({
to: user.emails[0].address.toLowerCase(),
from: Accounts.emailTemplates.from,
subject,
html,
});
if (process.env.MAIL_SERVICE !== '') {
let transporter = nodemailer.createTransport({
service: process.env.MAIL_SERVICE,
auth: {
user: process.env.MAIL_SERVICE_USER,
pass: process.env.MAIL_SERVICE_PASSWORD
},
})
let info = transporter.sendMail({
to: user.emails[0].address.toLowerCase(),
from: Accounts.emailTemplates.from,
subject,
html,
})
} else if (process.env.MAIL_URL !== '') {
Email.send({
to: user.emails[0].address.toLowerCase(),
from: Accounts.emailTemplates.from,
subject,
html,
});
}
} catch (e) {
return;
}
+1 -5
View File
@@ -5,7 +5,6 @@ import Lists from '../../models/lists';
import Swimlanes from '../../models/swimlanes';
import Cards from '../../models/cards';
import CardComments from '../../models/cardComments';
import CardCommentReactions from '../../models/cardCommentReactions';
import Attachments from '../../models/attachments';
import Checklists from '../../models/checklists';
import ChecklistItems from '../../models/checklistItems';
@@ -700,8 +699,6 @@ function findCards(sessionId, query) {
type: 1,
};
const comments = CardComments.find({ cardId: { $in: cards.map(c => c._id) } });
return [
cards,
Boards.find(
@@ -717,8 +714,7 @@ function findCards(sessionId, query) {
Users.find({ _id: { $in: users } }, { fields: Users.safeFields }),
Checklists.find({ cardId: { $in: cards.map(c => c._id) } }),
Attachments.find({ cardId: { $in: cards.map(c => c._id) } }),
comments,
CardCommentReactions.find({cardCommentId: {$in: comments.map(c => c._id) }}),
CardComments.find({ cardId: { $in: cards.map(c => c._id) } }),
SessionData.find({ userId, sessionId }),
];
}
+24 -6
View File
@@ -1,3 +1,5 @@
var nodemailer = require('nodemailer');
RulesHelper = {
executeRules(activity) {
const matchingRules = this.findMatchingRules(activity);
@@ -119,12 +121,28 @@ RulesHelper = {
const text = action.emailMsg || '';
const subject = action.emailSubject || '';
try {
Email.send({
to,
from: Accounts.emailTemplates.from,
subject,
text,
});
if (process.env.MAIL_SERVICE !== '') {
let transporter = nodemailer.createTransport({
service: process.env.MAIL_SERVICE,
auth: {
user: process.env.MAIL_SERVICE_USER,
pass: process.env.MAIL_SERVICE_PASSWORD
},
})
let info = transporter.sendMail({
to,
from: Accounts.emailTemplates.from,
subject,
text,
})
} else if (process.env.MAIL_URL !== '') {
Email.send({
to,
from: Accounts.emailTemplates.from,
subject,
text,
});
}
} catch (e) {
// eslint-disable-next-line no-console
console.error(e);
+15 -3
View File
@@ -3,7 +3,7 @@
# All supported keys are defined here together with descriptions and default values
# list of supported keys
keys="DEBUG MONGO_LOG_DESTINATION MONGO_URL MONGODB_BIND_UNIX_SOCKET MONGO_URL MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API RICHER_CARD_COMMENT_EDITOR CARD_OPENED_WEBHOOK_ENABLED ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW MAX_IMAGE_PIXEL IMAGE_COMPRESS_RATIO BIGEVENTS_PATTERN NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE NOTIFY_DUE_DAYS_BEFORE_AND_AFTER NOTIFY_DUE_AT_HOUR_OF_DAY EMAIL_NOTIFICATION_TIMEOUT CORS CORS_ALLOW_HEADERS CORS_EXPOSE_HEADERS MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_CA_CERT OAUTH2_LOGIN_STYLE OAUTH2_CLIENT_ID OAUTH2_SECRET OAUTH2_SERVER_URL OAUTH2_AUTH_ENDPOINT OAUTH2_USERINFO_ENDPOINT OAUTH2_TOKEN_ENDPOINT OAUTH2_ID_MAP OAUTH2_USERNAME_MAP OAUTH2_FULLNAME_MAP OAUTH2_ID_TOKEN_WHITELIST_FIELDS OAUTH2_EMAIL_MAP OAUTH2_REQUEST_PERMISSIONS OAUTH2_ADFS_ENABLED LDAP_ENABLE LDAP_PORT LDAP_HOST LDAP_AD_SIMPLE_AUTH LDAP_BASEDN LDAP_LOGIN_FALLBACK LDAP_RECONNECT LDAP_TIMEOUT LDAP_IDLE_TIMEOUT LDAP_CONNECT_TIMEOUT LDAP_AUTHENTIFICATION LDAP_AUTHENTIFICATION_USERDN LDAP_AUTHENTIFICATION_PASSWORD LDAP_LOG_ENABLED LDAP_BACKGROUND_SYNC LDAP_BACKGROUND_SYNC_INTERVAL LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS LDAP_ENCRYPTION LDAP_CA_CERT LDAP_REJECT_UNAUTHORIZED LDAP_USER_AUTHENTICATION LDAP_USER_AUTHENTICATION_FIELD LDAP_USER_SEARCH_FILTER LDAP_USER_SEARCH_SCOPE LDAP_USER_SEARCH_FIELD LDAP_SEARCH_PAGE_SIZE LDAP_SEARCH_SIZE_LIMIT LDAP_GROUP_FILTER_ENABLE LDAP_GROUP_FILTER_OBJECTCLASS LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT LDAP_GROUP_FILTER_GROUP_NAME LDAP_UNIQUE_IDENTIFIER_FIELD LDAP_UTF8_NAMES_SLUGIFY LDAP_USERNAME_FIELD LDAP_FULLNAME_FIELD LDAP_MERGE_EXISTING_USERS LDAP_SYNC_USER_DATA LDAP_SYNC_USER_DATA_FIELDMAP LDAP_SYNC_GROUP_ROLES LDAP_DEFAULT_DOMAIN LDAP_EMAIL_MATCH_ENABLE LDAP_EMAIL_MATCH_REQUIRE LDAP_EMAIL_MATCH_VERIFIED LDAP_EMAIL_FIELD LDAP_SYNC_ADMIN_STATUS LDAP_SYNC_ADMIN_GROUPS HEADER_LOGIN_ID HEADER_LOGIN_FIRSTNAME HEADER_LOGIN_LASTNAME HEADER_LOGIN_EMAIL LOGOUT_WITH_TIMER LOGOUT_IN LOGOUT_ON_HOURS LOGOUT_ON_MINUTES DEFAULT_AUTHENTICATION_METHOD ATTACHMENTS_STORE_PATH PASSWORD_LOGIN_ENABLED CAS_ENABLED CAS_BASE_URL CAS_LOGIN_URL CAS_VALIDATE_URL SAML_ENABLED SAML_PROVIDER SAML_ENTRYPOINT SAML_ISSUER SAML_CERT SAML_IDPSLO_REDIRECTURL SAML_PRIVATE_KEYFILE SAML_PUBLIC_CERTFILE SAML_IDENTIFIER_FORMAT SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE SAML_ATTRIBUTES ORACLE_OIM_ENABLED RESULTS_PER_PAGE WAIT_SPINNER"
keys="DEBUG MONGO_LOG_DESTINATION MONGO_URL MONGODB_BIND_UNIX_SOCKET MONGO_URL MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM MAIL_SERVICE MAIL_SERVICE_USER MAIL_SERVICE_PASSWORD ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API RICHER_CARD_COMMENT_EDITOR CARD_OPENED_WEBHOOK_ENABLED ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW MAX_IMAGE_PIXEL IMAGE_COMPRESS_RATIO BIGEVENTS_PATTERN NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE NOTIFY_DUE_DAYS_BEFORE_AND_AFTER NOTIFY_DUE_AT_HOUR_OF_DAY EMAIL_NOTIFICATION_TIMEOUT CORS CORS_ALLOW_HEADERS CORS_EXPOSE_HEADERS MATOMO_ADDRESS MATOMO_SITE_ID MATOMO_DO_NOT_TRACK MATOMO_WITH_USERNAME BROWSER_POLICY_ENABLED TRUSTED_URL WEBHOOKS_ATTRIBUTES OAUTH2_ENABLED OAUTH2_CA_CERT OAUTH2_LOGIN_STYLE OAUTH2_CLIENT_ID OAUTH2_SECRET OAUTH2_SERVER_URL OAUTH2_AUTH_ENDPOINT OAUTH2_USERINFO_ENDPOINT OAUTH2_TOKEN_ENDPOINT OAUTH2_ID_MAP OAUTH2_USERNAME_MAP OAUTH2_FULLNAME_MAP OAUTH2_ID_TOKEN_WHITELIST_FIELDS OAUTH2_EMAIL_MAP OAUTH2_REQUEST_PERMISSIONS OAUTH2_ADFS_ENABLED LDAP_ENABLE LDAP_PORT LDAP_HOST LDAP_AD_SIMPLE_AUTH LDAP_BASEDN LDAP_LOGIN_FALLBACK LDAP_RECONNECT LDAP_TIMEOUT LDAP_IDLE_TIMEOUT LDAP_CONNECT_TIMEOUT LDAP_AUTHENTIFICATION LDAP_AUTHENTIFICATION_USERDN LDAP_AUTHENTIFICATION_PASSWORD LDAP_LOG_ENABLED LDAP_BACKGROUND_SYNC LDAP_BACKGROUND_SYNC_INTERVAL LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS LDAP_ENCRYPTION LDAP_CA_CERT LDAP_REJECT_UNAUTHORIZED LDAP_USER_AUTHENTICATION LDAP_USER_AUTHENTICATION_FIELD LDAP_USER_SEARCH_FILTER LDAP_USER_SEARCH_SCOPE LDAP_USER_SEARCH_FIELD LDAP_SEARCH_PAGE_SIZE LDAP_SEARCH_SIZE_LIMIT LDAP_GROUP_FILTER_ENABLE LDAP_GROUP_FILTER_OBJECTCLASS LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT LDAP_GROUP_FILTER_GROUP_NAME LDAP_UNIQUE_IDENTIFIER_FIELD LDAP_UTF8_NAMES_SLUGIFY LDAP_USERNAME_FIELD LDAP_FULLNAME_FIELD LDAP_MERGE_EXISTING_USERS LDAP_SYNC_USER_DATA LDAP_SYNC_USER_DATA_FIELDMAP LDAP_SYNC_GROUP_ROLES LDAP_DEFAULT_DOMAIN LDAP_EMAIL_MATCH_ENABLE LDAP_EMAIL_MATCH_REQUIRE LDAP_EMAIL_MATCH_VERIFIED LDAP_EMAIL_FIELD LDAP_SYNC_ADMIN_STATUS LDAP_SYNC_ADMIN_GROUPS HEADER_LOGIN_ID HEADER_LOGIN_FIRSTNAME HEADER_LOGIN_LASTNAME HEADER_LOGIN_EMAIL LOGOUT_WITH_TIMER LOGOUT_IN LOGOUT_ON_HOURS LOGOUT_ON_MINUTES DEFAULT_AUTHENTICATION_METHOD ATTACHMENTS_STORE_PATH PASSWORD_LOGIN_ENABLED CAS_ENABLED CAS_BASE_URL CAS_LOGIN_URL CAS_VALIDATE_URL SAML_ENABLED SAML_PROVIDER SAML_ENTRYPOINT SAML_ISSUER SAML_CERT SAML_IDPSLO_REDIRECTURL SAML_PRIVATE_KEYFILE SAML_PUBLIC_CERTFILE SAML_IDENTIFIER_FORMAT SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE SAML_ATTRIBUTES ORACLE_OIM_ENABLED RESULTS_PER_PAGE WAIT_SPINNER"
# default values
DESCRIPTION_DEBUG="Debug OIDC OAuth2 etc. Example: sudo snap set wekan debug='true'"
@@ -33,13 +33,25 @@ DEFAULT_MONGODB_BIND_IP="127.0.0.1"
KEY_MONGODB_BIND_IP="mongodb-bind-ip"
DESCRIPTION_MAIL_URL="wekan mail binding"
DEFAULT_MAIL_URL="smtp://user:pass@mailserver.examples.com:25/"
DEFAULT_MAIL_URL=""
KEY_MAIL_URL="mail-url"
DESCRIPTION_MAIL_FROM="wekan's admin mail from name email address"
DEFAULT_MAIL_FROM="wekan-admin@example.com"
DEFAULT_MAIL_FROM=""
KEY_MAIL_FROM="mail-from"
DESCRIPTION_MAIL_SERVICE="wekan's mail-service, see https://github.com/wekan/wekan/wiki/Troubleshooting-Mail"
DEFAULT_MAIL_SERVICE=""
KEY_MAIL_SERVICE="mail-service"
DESCRIPTION_MAIL_SERVICE_USER="wekan's mail-service-user"
DEFAULT_MAIL_SERVICE_USER=""
KEY_MAIL_SERVICE_USER="mail-service-user"
DESCRIPTION_MAIL_SERVICE_PASSWORD="wekan's mail-service-password"
DEFAULT_MAIL_SERVICE_PASSWORD=""
KEY_MAIL_SERVICE_PASSWORD="mail-service-password"
DESCRIPTION_ROOT_URL="wekan's root url, eg http://127.0.0.1, https://example.com, https://wekan.example.com, http://example.com/wekan"
DEFAULT_ROOT_URL="http://127.0.0.1"
KEY_ROOT_URL="root-url"
+12
View File
@@ -49,6 +49,18 @@ echo -e "\t$ snap set $SNAP_NAME with-api='true'"
echo -e "\t-Disable the API:"
echo -e "\t$ snap unset $SNAP_NAME with-api"
echo -e "\n"
echo -e "Email: https://github.com/wekan/wekan/wiki/Troubleshooting-Mail"
echo -e "mail-url:"
echo -e "\t$ snap set $SNAP_NAME mail-url='smtp://username:password@email-smtp.eu-west-1.amazonaws.com:587?tls={ciphers:\"SSLv3\"}&secureConnection=false'"
echo -e "mail-from:"
echo -e "\t$ snap set $SNAP_NAME mail-from='Boards Support <support@example.com>'"
echo -e "mail-service:"
echo -e "\t$ snap set $SNAP_NAME mail-service='Outlook365'"
echo -e "mail-service-user:"
echo -e "\t$ snap set $SNAP_NAME mail-service-user='firstname.lastname@hotmail.com'"
echo -e "mail-service-password:"
echo -e "\t$ snap set $SNAP_NAME mail-service-password='SecretPassword'"
echo -e "\n"
echo -e "Number of search results to show per page by default:"
echo -e "\t$ snap set $SNAP_NAME results-per-page='20'"
echo -e "\t-Restore default:"
+1 -1
View File
@@ -1,5 +1,5 @@
name: wekan
version: '5.49'
version: '5.52'
summary: The open-source kanban
description: |
Wekan is an open-source and collaborative kanban board application.
+4
View File
@@ -14,6 +14,10 @@ SET MONGO_URL=mongodb://127.0.0.1:27017/wekan
REM # https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
REM SET MAIL_URL=smtps://username:password@email-smtp.eu-west-1.amazonaws.com:587/
REM SET MAIL_FROM="Wekan Boards <info@example.com>"
REM SET MAIL_SERVICE=Outlook365
REM SET MAIL_SERVICE_USER=firstname.lastname@hotmail.com
REM SET MAIL_SERVICE_PASSWORD=SecretPassword
REM # ==== NUMBER OF SEARCH RESULTS PER PAGE BY DEFAULT ====
REM SET RESULTS_PER_PAGE=20
+4
View File
@@ -17,6 +17,10 @@
# https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
# https://github.com/wekan/wekan-mongodb/blob/master/docker-compose.yml
export MAIL_URL='smtp://user:pass@mailserver.example.com:25/'
export MAIL_FROM='Wekan Boards <info@example.com>'
#export MAIL_SERVICE=Outlook365
#export MAIL_SERVICE_USER=firstname.lastname@hotmail.com
#export MAIL_SERVICE_PASSWORD=SecretPassword
#---------------------------------------------
#export KADIRA_OPTIONS_ENDPOINT=http://127.0.0.1:11011
#---------------------------------------------
+3
View File
@@ -170,6 +170,9 @@ services:
# You can encode those characters for example at: https://www.urlencoder.org
- MAIL_URL=smtp://user:pass@mailserver.example.com:25/
- MAIL_FROM='Example Wekan Support <support@example.com>'
#- MAIL_SERVICE=Outlook365
#- MAIL_SERVICE_USER=firstname.lastname@hotmail.com
#- MAIL_SERVICE_PASSWORD=SecretPassword
#---------------------------------------------------------------
# ==== OPTIONAL: MONGO OPLOG SETTINGS =====
# https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-378343587