Compare commits

...
8 Commits
76 changed files with 278 additions and 104 deletions

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v3.91.0",
"version": "v3.92.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v3.91.0",
"version": "v3.92.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
+15
View File
@@ -1,3 +1,18 @@
# v3.92 2020-04-09 Wekan release
This release adds the following new features:
- [Scheduler to clean up read notifications. Also added a button to manually remove all
read notifications, and a fix to prevent users form getting notifications for their own
actions](https://github.com/wekan/wekan/pull/2998).
Thanks to jtbairdsr.
- [Add setting](https://github.com/wekan/wekan/commit/5ebb47cb0ec7272894a37d99579ede872251f55c)
default [NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE=2](https://github.com/wekan/wekan/pull/2998)
to all Wekan platforms.
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
# v3.91 2020-04-08 Wekan release
This release adds the following new features:
+1
View File
@@ -26,6 +26,7 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
ATTACHMENTS_STORE_PATH="" \
MAX_IMAGE_PIXEL="" \
IMAGE_COMPRESS_RATIO="" \
NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE="" \
BIGEVENTS_PATTERN=NONE \
NOTIFY_DUE_DAYS_BEFORE_AND_AFTER="" \
NOTIFY_DUE_AT_HOUR_OF_DAY="" \
+1 -1
View File
@@ -1,5 +1,5 @@
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
appVersion: "v3.91.0"
appVersion: "v3.92.0"
files:
userUploads:
- README.md
+23 -26
View File
@@ -40,31 +40,29 @@ BlazeComponent.extendComponent({
voteState() {
const card = this.currentData();
const userId = Meteor.userId()
let state
const userId = Meteor.userId();
let state;
if (card.vote) {
if (card.vote.positive) {
state = _.contains(card.vote.positive, userId);
if (state === true) return true
if (state === true) return true;
}
if (card.vote.negative) {
state = _.contains(card.vote.negative, userId);
if (state === true) return false
if (state === true) return false;
}
}
return null
return null;
},
voteCountPositive() {
const card = this.currentData();
if (card.vote && card.vote.positive)
return card.vote.positive.length
return null
if (card.vote && card.vote.positive) return card.vote.positive.length;
return null;
},
voteCountNegative() {
const card = this.currentData();
if (card.vote && card.vote.negative)
return card.vote.negative.length
return null
if (card.vote && card.vote.negative) return card.vote.negative.length;
return null;
},
isWatching() {
const card = this.currentData();
@@ -408,17 +406,17 @@ BlazeComponent.extendComponent({
Meteor.call('toggleSystemMessages');
},
'click .js-vote'(e) {
const forIt = $(e.target).hasClass('js-vote-positive')
let newState = null
const forIt = $(e.target).hasClass('js-vote-positive');
let newState = null;
if (
this.voteState() == null ||
this.voteState() == false && forIt ||
this.voteState() == true && !forIt
(this.voteState() == false && forIt) ||
(this.voteState() == true && !forIt)
) {
newState = forIt
newState = forIt;
}
this.data().setVote(Meteor.userId(), newState)
}
this.data().setVote(Meteor.userId(), newState);
},
},
];
},
@@ -613,7 +611,7 @@ Template.cardDetailsActionsPopup.events({
'click .js-set-card-color': Popup.open('setCardColor'),
'click .js-cancel-voting'(event) {
event.preventDefault();
this.unsetVote()
this.unsetVote();
Popup.close();
},
'click .js-move-card-to-top'(event) {
@@ -649,7 +647,7 @@ Template.cardDetailsActionsPopup.events({
},
});
Template.editCardTitleForm.onRendered(function () {
Template.editCardTitleForm.onRendered(function() {
autosize(this.$('.js-edit-card-title'));
});
@@ -663,7 +661,7 @@ Template.editCardTitleForm.events({
},
});
Template.editCardRequesterForm.onRendered(function () {
Template.editCardRequesterForm.onRendered(function() {
autosize(this.$('.js-edit-card-requester'));
});
@@ -676,7 +674,7 @@ Template.editCardRequesterForm.events({
},
});
Template.editCardAssignerForm.onRendered(function () {
Template.editCardAssignerForm.onRendered(function() {
autosize(this.$('.js-edit-card-assigner'));
});
@@ -816,7 +814,7 @@ Template.copyChecklistToManyCardsPopup.events({
// copy subtasks
cursor = Cards.find({ parentId: oldId });
cursor.forEach(function () {
cursor.forEach(function() {
'use strict';
const subtask = arguments[0];
subtask.parentId = _id;
@@ -965,7 +963,7 @@ BlazeComponent.extendComponent({
}
}
},
'click .js-delete': Popup.afterConfirm('cardDelete', function () {
'click .js-delete': Popup.afterConfirm('cardDelete', function() {
Popup.close();
Cards.remove(this._id);
Utils.goBoardId(this.boardId);
@@ -1003,9 +1001,8 @@ BlazeComponent.extendComponent({
'submit .edit-vote-question'(evt) {
evt.preventDefault();
const voteQuestion = evt.target.vote.value;
this.currentCard.setVoteQuestion(voteQuestion)
this.currentCard.setVoteQuestion(voteQuestion);
Popup.close();
},
},
];
+12 -3
View File
@@ -22,11 +22,20 @@ BlazeComponent.extendComponent({
const listId = targetBoard.getDefaultSubtasksListId();
//Get the full swimlane data for the parent task.
const parentSwimlane = Swimlanes.findOne({boardId: crtBoard._id, _id: card.swimlaneId});
const parentSwimlane = Swimlanes.findOne({
boardId: crtBoard._id,
_id: card.swimlaneId,
});
//find the swimlane of the same name in the target board.
const targetSwimlane = Swimlanes.findOne({boardId: targetBoard._id, title: parentSwimlane.title});
const targetSwimlane = Swimlanes.findOne({
boardId: targetBoard._id,
title: parentSwimlane.title,
});
//If no swimlane with a matching title exists in the target board, fall back to the default swimlane.
const swimlaneId = targetSwimlane === undefined ? targetBoard.getDefaultSwimline()._id : targetSwimlane._id;
const swimlaneId =
targetSwimlane === undefined
? targetBoard.getDefaultSwimline()._id
: targetSwimlane._id;
if (title) {
const _id = Cards.insert({
@@ -14,3 +14,7 @@ template(name='notificationsDrawer')
+notification(activityData=activity index=dbIndex read=read)
if($gt unreadNotifications 0)
a.all-read {{_ 'mark-all-as-read'}}
if ($and ($.Session.get 'showReadNotifications') ($gt readNotifications 0))
a.remove-read
i.fa.fa-trash
| {{_ 'remove-all-read'}}
@@ -16,6 +16,13 @@ Template.notificationsDrawer.helpers({
transformedProfile() {
return Users.findOne(Meteor.userId());
},
readNotifications() {
const readNotifications = _.filter(
Meteor.user().profile.notifications,
v => !!v.read,
);
return readNotifications.length;
},
});
Template.notificationsDrawer.events({
@@ -35,4 +42,12 @@ Template.notificationsDrawer.events({
'click .toggle-read'() {
Session.set('showReadNotifications', !Session.get('showReadNotifications'));
},
'click .remove-read'() {
const user = Meteor.user();
for (const notification of user.profile.notifications) {
if (notification.read) {
user.removeNotification(notification.activity);
}
}
},
});
@@ -45,12 +45,23 @@ section#notifications-drawer
line-height: 24px
opacity 1
.all-read
.all-read,
.remove-read
color belize
background-color: #fafafa
margin 8px 16px 12px
display inline-block
.remove-read
float right
&:hover
color #eb4646 !important
i.fa
color inherit
ul.notifications
display: block
padding: 0px 16px
+5
View File
@@ -254,6 +254,11 @@ services:
#-MAX_IMAGE_PIXEL=1024
#-IMAGE_COMPRESS_RATIO=80
#---------------------------------------------------------------
# ==== NOTIFICATION TRAY AFTER READ DAYS BEFORE REMOVE =====
# Number of days after a notification is read before we remove it.
# Default: 2
#- NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE=2
#---------------------------------------------------------------
# ==== BIGEVENTS DUE ETC NOTIFICATIONS =====
# https://github.com/wekan/wekan/pull/2541
# Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "Zobrazit vše",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Označit vše jako přečtené",
"remove-all-read": "Remove all read",
"allow-rename": "Povolit přejmenování",
"allowRenamePopup-title": "Povolit přejmenování"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+7 -6
View File
@@ -152,8 +152,8 @@
"card-spent": "Aufgewendete Zeit",
"card-edit-attachments": "Anhänge ändern",
"card-edit-custom-fields": "Benutzerdefinierte Felder editieren",
"card-start-voting": "Start voting",
"card-cancel-voting": "Delete voting and all votes",
"card-start-voting": "Abstimmung starten",
"card-cancel-voting": "Abstimmung mit allen Stimmen löschen ",
"card-edit-labels": "Labels ändern",
"card-edit-members": "Mitglieder ändern",
"card-labels-title": "Labels für diese Karte ändern.",
@@ -163,10 +163,10 @@
"cardAttachmentsPopup-title": "Anhängen von",
"cardCustomField-datePopup-title": "Datum ändern",
"cardCustomFieldsPopup-title": "Benutzerdefinierte Felder editieren",
"cardStartVotingPopup-title": "Start a vote",
"vote-question": "Voting question",
"vote-for-it": "for it",
"vote-against": "against",
"cardStartVotingPopup-title": "Abstimmung starten",
"vote-question": "Abstimmen über",
"vote-for-it": "Dafür",
"vote-against": "Dagegen",
"cardDeletePopup-title": "Karte löschen?",
"cardDetailsActionsPopup-title": "Kartenaktionen",
"cardLabelsPopup-title": "Labels",
@@ -771,6 +771,7 @@
"view-all": "Alle anzeigen",
"filter-by-unread": "Nach Ungelesenen filtern",
"mark-all-as-read": "Alle als gelesen markieren",
"remove-all-read": "Alle gelesenen entfernen",
"allow-rename": "Umbenennen erlauben",
"allowRenamePopup-title": "Umbenennen erlauben"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -774,6 +774,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "Ver todo",
"filter-by-unread": "Filtrar por no leído",
"mark-all-as-read": "Marcar todo como leido",
"remove-all-read": "Remove all read",
"allow-rename": "Permitir renombrar",
"allowRenamePopup-title": "Permitir renombrar"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "Näytä kaikki",
"filter-by-unread": "Suodata lukemattomat",
"mark-all-as-read": "Merkkaa kaikki luetuksi",
"remove-all-read": "Poista kaikki luetut",
"allow-rename": "Salli uudelleennimeäminen",
"allowRenamePopup-title": "Salli uudelleennimeäminen"
}
+10 -9
View File
@@ -152,8 +152,8 @@
"card-spent": "Temps passé",
"card-edit-attachments": "Modifier les pièces jointes",
"card-edit-custom-fields": "Éditer les champs personnalisés",
"card-start-voting": "Start voting",
"card-cancel-voting": "Delete voting and all votes",
"card-start-voting": "Commencer le vote",
"card-cancel-voting": "Supprimer le vote",
"card-edit-labels": "Gérer les étiquettes",
"card-edit-members": "Gérer les participants",
"card-labels-title": "Modifier les étiquettes de la carte.",
@@ -163,10 +163,10 @@
"cardAttachmentsPopup-title": "Ajouter depuis",
"cardCustomField-datePopup-title": "Modifier la date",
"cardCustomFieldsPopup-title": "Éditer les champs personnalisés",
"cardStartVotingPopup-title": "Start a vote",
"vote-question": "Voting question",
"vote-for-it": "for it",
"vote-against": "against",
"cardStartVotingPopup-title": "Commencer un vote",
"vote-question": "Question du vote",
"vote-for-it": "pour",
"vote-against": "contre",
"cardDeletePopup-title": "Supprimer la carte ?",
"cardDetailsActionsPopup-title": "Actions sur la carte",
"cardLabelsPopup-title": "Étiquettes",
@@ -325,7 +325,7 @@
"filter-clear": "Supprimer les filtres",
"filter-no-label": "Aucune étiquette",
"filter-no-member": "Aucun participant",
"filter-no-assignee": "No assignee",
"filter-no-assignee": "Pas de personne assignée",
"filter-no-custom-fields": "Pas de champs personnalisés",
"filter-show-archive": "Montrer les listes archivées",
"filter-hide-empty": "Cacher les listes vides",
@@ -760,8 +760,8 @@
"accounts-allowUserDelete": "Autoriser les utilisateurs à supprimer leur compte",
"hide-minicard-label-text": "Cacher le label de la minicarte",
"show-desktop-drag-handles": "Voir les poignées de déplacement du bureau",
"assignee": "Cessionnaire",
"cardAssigneesPopup-title": "Cessionnaire",
"assignee": "Personne assignée",
"cardAssigneesPopup-title": "Personne assignée",
"addmore-detail": "Ajouter une description plus détaillée",
"show-on-card": "Afficher sur la carte",
"new": "Nouveau",
@@ -771,6 +771,7 @@
"view-all": "Voir tout",
"filter-by-unread": "Filtrer par non lu",
"mark-all-as-read": "Marquer comme lus",
"remove-all-read": "Supprimer les lus",
"allow-rename": "Autoriser le renommage",
"allowRenamePopup-title": "Autoriser le renommage"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+3 -2
View File
@@ -153,7 +153,7 @@
"card-edit-attachments": "עריכת קבצים מצורפים",
"card-edit-custom-fields": "עריכת שדות בהתאמה אישית",
"card-start-voting": "התחילו להצביע",
"card-cancel-voting": "Delete voting and all votes",
"card-cancel-voting": "מחיקת אפשרות ההצבעה ואת כל הקולות",
"card-edit-labels": "עריכת תוויות",
"card-edit-members": "עריכת חברים",
"card-labels-title": "שינוי תוויות לכרטיס.",
@@ -163,7 +163,7 @@
"cardAttachmentsPopup-title": "לצרף מ־",
"cardCustomField-datePopup-title": "החלפת תאריך",
"cardCustomFieldsPopup-title": "עריכת שדות בהתאמה אישית",
"cardStartVotingPopup-title": "Start a vote",
"cardStartVotingPopup-title": "התחלת הצבעה",
"vote-question": "שאלת הסקר",
"vote-for-it": "בעד",
"vote-against": "נגד",
@@ -771,6 +771,7 @@
"view-all": "להציג הכול",
"filter-by-unread": "סימון לפי כאלו שלא נקראו",
"mark-all-as-read": "לסמן הכול כאילו שנקראו",
"remove-all-read": "הסרת כל אלו שנקראו",
"allow-rename": "לאפשר שינוי שם",
"allowRenamePopup-title": "לאפשר שינוי שם"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "Mostra Tutto",
"filter-by-unread": "Filtra per non letto",
"mark-all-as-read": "Segna come letto",
"remove-all-read": "Remove all read",
"allow-rename": "Consenti Rinomina",
"allowRenamePopup-title": "Consenti Rinomina"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "全てを表示",
"filter-by-unread": "未読でフィルタ",
"mark-all-as-read": "全て既読にする",
"remove-all-read": "Remove all read",
"allow-rename": "リネームを許可する",
"allowRenamePopup-title": "リネームを許可する"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "Bekijk alles",
"filter-by-unread": "Filter op Ongelezen",
"mark-all-as-read": "Markeer alles als gelezen",
"remove-all-read": "Remove all read",
"allow-rename": "Sta Hernoemen toe",
"allowRenamePopup-title": "Sta Hernoemen toe"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "Wyświetl wszystko",
"filter-by-unread": "Filtruj nieprzeczytane",
"mark-all-as-read": "Zaznacz wszystkie jako przeczytane",
"remove-all-read": "Remove all read",
"allow-rename": "Zezwól na zmianę nazwy",
"allowRenamePopup-title": "Zezwól na zmianę nazwy"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "Ver tudo",
"filter-by-unread": "Filtrar não lidas",
"mark-all-as-read": "Marcar todas como lidas",
"remove-all-read": "Remover todas lidas",
"allow-rename": "Permitir renomear",
"allowRenamePopup-title": "Permitir renomear"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+7 -6
View File
@@ -153,7 +153,7 @@
"card-edit-attachments": "Изменить вложения",
"card-edit-custom-fields": "Редактировать настраиваемые поля",
"card-start-voting": "Запустить голосование",
"card-cancel-voting": "Delete voting and all votes",
"card-cancel-voting": "Отменить голосование и удалить голоса",
"card-edit-labels": "Изменить метку",
"card-edit-members": "Изменить участников",
"card-labels-title": "Изменить метки для этой карточки.",
@@ -163,10 +163,10 @@
"cardAttachmentsPopup-title": "Прикрепить из",
"cardCustomField-datePopup-title": "Изменить дату",
"cardCustomFieldsPopup-title": "редактировать настраиваемые поля",
"cardStartVotingPopup-title": "Start a vote",
"vote-question": "Voting question",
"vote-for-it": "for it",
"vote-against": "against",
"cardStartVotingPopup-title": "Голосовать",
"vote-question": "Вопрос для голосования",
"vote-for-it": "за",
"vote-against": "против",
"cardDeletePopup-title": "Удалить карточку?",
"cardDetailsActionsPopup-title": "Действия в карточке",
"cardLabelsPopup-title": "Метки",
@@ -325,7 +325,7 @@
"filter-clear": "Очистить фильтр",
"filter-no-label": "Нет метки",
"filter-no-member": "Нет участников",
"filter-no-assignee": "No assignee",
"filter-no-assignee": "Не применимо",
"filter-no-custom-fields": "Нет настраиваемых полей",
"filter-show-archive": "Показать архивные списки",
"filter-hide-empty": "Скрыть пустые списки",
@@ -771,6 +771,7 @@
"view-all": "Показать все",
"filter-by-unread": "Фильтр по непрочитанным",
"mark-all-as-read": "Отметить все как прочитанные",
"remove-all-read": "Remove all read",
"allow-rename": "Разрешить переименование",
"allowRenamePopup-title": "Разрешить переименование"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+9 -8
View File
@@ -75,9 +75,9 @@
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
"activity-editComment": "izmenjen komentar",
"activity-deleteComment": "izbrisan komentar",
"add-attachment": "Add Attachment",
"add-attachment": "Dodaj prilog",
"add-board": "Add Board",
"add-card": "Add Card",
"add-card": "Dodaj karticu",
"add-swimlane": "Add Swimlane",
"add-subtask": "Add Subtask",
"add-checklist": "Add Checklist",
@@ -265,15 +265,15 @@
"delete": "Delete",
"deleteCustomFieldPopup-title": "Delete Custom Field?",
"deleteLabelPopup-title": "Delete Label?",
"description": "Description",
"description": "Opis",
"disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
"disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
"discard": "Discard",
"done": "Done",
"download": "Download",
"edit": "Edit",
"discard": "Odbaci",
"done": "Završeno",
"download": "Preuzmi",
"edit": "Uredi",
"edit-avatar": "Change Avatar",
"edit-profile": "Edit Profile",
"edit-profile": "Uredi profil",
"edit-wip-limit": "Edit WIP Limit",
"soft-wip-limit": "Soft WIP Limit",
"editCardStartDatePopup-title": "Izmeni početni datum",
@@ -771,6 +771,7 @@
"view-all": "Prikaži sve",
"filter-by-unread": "Filtriraj nepročitano",
"mark-all-as-read": "Označi sve kao pročitano",
"remove-all-read": "Ukloni sve pročitano",
"allow-rename": "Dozvoli preimenovanje",
"allowRenamePopup-title": "Dozvoli preimenovanje"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "查看全部",
"filter-by-unread": "过滤未读",
"mark-all-as-read": "标记全部已读",
"remove-all-read": "Remove all read",
"allow-rename": "允许重命名",
"allowRenamePopup-title": "允许重命名"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "View All",
"filter-by-unread": "Filter by Unread",
"mark-all-as-read": "Mark all as read",
"remove-all-read": "Remove all read",
"allow-rename": "Allow Rename",
"allowRenamePopup-title": "Allow Rename"
}
+1
View File
@@ -771,6 +771,7 @@
"view-all": "檢視全部",
"filter-by-unread": "篩選: 未讀",
"mark-all-as-read": "標示全部已讀",
"remove-all-read": "Remove all read",
"allow-rename": "允許更名",
"allowRenamePopup-title": "允許更名"
}
+4 -1
View File
@@ -282,7 +282,10 @@ if (Meteor.isServer) {
);
}
Notifications.getUsers(watchers).forEach(user => {
Notifications.notify(user, title, description, params);
// don't notify a user of their own behavior
if (user._id !== userId) {
Notifications.notify(user, title, description, params);
}
});
const integrations = Integrations.find({
+31 -31
View File
@@ -334,8 +334,8 @@ Cards.attachSchema(
'vote.end': {
type: Date,
optional: true,
defaultValue: null
}
defaultValue: null,
},
}),
);
@@ -728,7 +728,7 @@ Cards.helpers({
parentString(sep) {
return this.parentList()
.map(function (elem) {
.map(function(elem) {
return elem.title;
})
.join(sep);
@@ -1449,11 +1449,11 @@ Cards.mutations({
$set: {
vote: {
question,
positive:[],
negative:[]
positive: [],
negative: [],
},
}
}
},
};
},
unsetVote() {
return {
@@ -1467,32 +1467,32 @@ Cards.mutations({
case true:
// vote for it
return {
$pull:{
"vote.negative": userId
$pull: {
'vote.negative': userId,
},
$addToSet: {
"vote.positive": userId
}
}
'vote.positive': userId,
},
};
case false:
// vote against
return {
$pull:{
"vote.positive": userId
$pull: {
'vote.positive': userId,
},
$addToSet: {
"vote.negative" : userId
}
}
'vote.negative': userId,
},
};
default:
// Remove votes
return {
$pull:{
"vote.positive": userId,
"vote.negative" : userId
$pull: {
'vote.positive': userId,
'vote.negative': userId,
},
}
};
}
},
});
@@ -1897,7 +1897,7 @@ if (Meteor.isServer) {
});
//New activity for card moves
Cards.after.update(function (userId, doc, fieldNames) {
Cards.after.update(function(userId, doc, fieldNames) {
const oldListId = this.previous.listId;
const oldSwimlaneId = this.previous.swimlaneId;
const oldBoardId = this.previous.boardId;
@@ -1943,7 +1943,7 @@ if (Meteor.isServer) {
// change list modifiedAt, when user modified the key values in timingaction array, if it's endAt, put the modifiedAt of list back to one year ago for sorting purpose
const modifiedAt = new Date(
new Date(value).getTime() -
(action === 'endAt' ? 365 * 24 * 3600 * 1e3 : 0),
(action === 'endAt' ? 365 * 24 * 3600 * 1e3 : 0),
); // set it as 1 year before
const boardId = list.boardId;
Lists.direct.update(
@@ -1997,7 +1997,7 @@ if (Meteor.isServer) {
JsonRoutes.add(
'GET',
'/api/boards/:boardId/swimlanes/:swimlaneId/cards',
function (req, res) {
function(req, res) {
const paramBoardId = req.params.boardId;
const paramSwimlaneId = req.params.swimlaneId;
Authentication.checkBoardAccess(req.userId, paramBoardId);
@@ -2007,7 +2007,7 @@ if (Meteor.isServer) {
boardId: paramBoardId,
swimlaneId: paramSwimlaneId,
archived: false,
}).map(function (doc) {
}).map(function(doc) {
return {
_id: doc._id,
title: doc.title,
@@ -2031,7 +2031,7 @@ if (Meteor.isServer) {
* title: string,
* description: string}]
*/
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards', function (
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards', function(
req,
res,
) {
@@ -2044,7 +2044,7 @@ if (Meteor.isServer) {
boardId: paramBoardId,
listId: paramListId,
archived: false,
}).map(function (doc) {
}).map(function(doc) {
return {
_id: doc._id,
title: doc.title,
@@ -2066,7 +2066,7 @@ if (Meteor.isServer) {
JsonRoutes.add(
'GET',
'/api/boards/:boardId/lists/:listId/cards/:cardId',
function (req, res) {
function(req, res) {
const paramBoardId = req.params.boardId;
const paramListId = req.params.listId;
const paramCardId = req.params.cardId;
@@ -2098,7 +2098,7 @@ if (Meteor.isServer) {
* @param {string} [assignees] the array of maximum one ID of assignee of the new card
* @return_type {_id: string}
*/
JsonRoutes.add('POST', '/api/boards/:boardId/lists/:listId/cards', function (
JsonRoutes.add('POST', '/api/boards/:boardId/lists/:listId/cards', function(
req,
res,
) {
@@ -2205,7 +2205,7 @@ if (Meteor.isServer) {
JsonRoutes.add(
'PUT',
'/api/boards/:boardId/lists/:listId/cards/:cardId',
function (req, res) {
function(req, res) {
Authentication.checkUserId(req.userId);
const paramBoardId = req.params.boardId;
const paramCardId = req.params.cardId;
@@ -2504,7 +2504,7 @@ if (Meteor.isServer) {
JsonRoutes.add(
'DELETE',
'/api/boards/:boardId/lists/:listId/cards/:cardId',
function (req, res) {
function(req, res) {
Authentication.checkUserId(req.userId);
const paramBoardId = req.params.boardId;
const paramListId = req.params.listId;
+37
View File
@@ -1,3 +1,5 @@
import { SyncedCron } from 'meteor/percolate:synced-cron';
// Sandstorm context is detected using the METEOR_SETTINGS environment variable
// in the package definition.
const isSandstorm =
@@ -926,6 +928,38 @@ if (Meteor.isServer) {
});
}
const addCronJob = _.debounce(
Meteor.bindEnvironment(function notificationCleanupDebounced() {
// passed in the removeAge has to be a number standing for the number of days after a notification is read before we remove it
const envRemoveAge =
process.env.NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE;
// default notifications will be removed 2 days after they are read
const defaultRemoveAge = 2;
const removeAge = parseInt(envRemoveAge, 10) || defaultRemoveAge;
SyncedCron.add({
name: 'notification_cleanup',
schedule: parser => parser.text('every 1 days'),
job: () => {
for (const user of Users.find()) {
for (const notification of user.profile.notifications) {
if (notification.read) {
const removeDate = new Date(notification.read);
removeDate.setDate(removeDate.getDate() + removeAge);
if (removeDate <= new Date()) {
user.removeNotification(notification.activity);
}
}
}
}
},
});
SyncedCron.start();
}),
500,
);
if (Meteor.isServer) {
// Let mongoDB ensure username unicity
Meteor.startup(() => {
@@ -939,6 +973,9 @@ if (Meteor.isServer) {
},
{ unique: true },
);
Meteor.defer(() => {
addCronJob();
});
});
// OLD WAY THIS CODE DID WORK: When user is last admin of board,
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v3.91.0",
"version": "v3.92.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "wekan",
"version": "v3.91.0",
"version": "v3.92.0",
"description": "Open-Source kanban",
"private": true,
"scripts": {
+2 -2
View File
@@ -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.91">Wekan REST API v3.91</a>
<a href="#wekan-rest-api" class="toc-h1 toc-link" data-title="Wekan REST API v3.92">Wekan REST API v3.92</a>
</li>
@@ -2022,7 +2022,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.91</h1>
<h1 id="wekan-rest-api">Wekan REST API v3.92</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: v3.91
version: v3.92
description: |
The REST API allows you to control and extend Wekan with ease.
+3 -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 = 391,
appVersion = 392,
# Increment this for every release.
appMarketingVersion = (defaultText = "3.91.0~2020-04-08"),
appMarketingVersion = (defaultText = "3.92.0~2020-04-09"),
# Human-readable presentation of the app version.
minUpgradableAppVersion = 0,
@@ -242,6 +242,7 @@ const myCommand :Spk.Manifest.Command = (
(key = "SCROLLINERTIA", value="0"),
(key = "SCROLLAMOUNT", value="auto"),
(key = "CARD_OPENED_WEBHOOK_ENABLED", value="false"),
(key = "NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE", value=""),
(key = "BIGEVENTS_PATTERN", value="NONE"),
(key = "MATOMO_ADDRESS", value=""),
(key = "MATOMO_SITE_ID", value=""),
+5 -1
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_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 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_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 LDAP_ENABLE LDAP_PORT LDAP_HOST 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 SCROLLINERTIA SCROLLAMOUNT"
keys="DEBUG 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_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 LDAP_ENABLE LDAP_PORT LDAP_HOST 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 SCROLLINERTIA SCROLLAMOUNT"
# default values
DESCRIPTION_DEBUG="Debug OIDC OAuth2 etc. Example: sudo snap set wekan debug='true'"
@@ -104,6 +104,10 @@ DESCRIPTION_IMAGE_COMPRESS_RATIO="Image compress ratio: Allow to shrink attached
DEFAULT_IMAGE_COMPRESS_RATIO=""
KEY_IMAGE_COMPRESS_RATIO="image-compress-ratio"
DESCRIPTION_NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE="Number of days after a notification is read before we remove it. Default: 2."
DEFAULT_NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE=""
KEY_NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE="notification-tray-after-read-days-before-remove"
DESCRIPTION_BIGEVENTS_PATTERN="Big events pattern: Notify always due etc regardless of notification settings. Default: NONE, All: received|start|due|end, Disabled: NONE"
DEFAULT_BIGEVENTS_PATTERN="NONE"
KEY_BIGEVENTS_PATTERN="bigevents-pattern"
+5
View File
@@ -105,6 +105,11 @@ echo -e "\t$ snap set $SNAP_NAME attachments-store-path='/var/snap/wekan/common/
echo -e "Disabled:"
echo -e "\t$ snap set $SNAP_NAME attachments-store-path=''"
echo -e "\n"
echo -e "NOTIFICATION TRAY AFTER READ DAYS BEFORE REMOVE https://github.com/wekan/wekan/pull/2998"
echo -e "Number of days after a notification is read before we remove it. Default: 2."
echo -e "Default:"
echo -e "\t$ snap set $SNAP_NAME notification-tray-after-read-days-before-remove='2'"
echo -e "\n"
echo -e "BIGEVENTS DUE ETC NOTIFICATIONS https://github.com/wekan/wekan/pull/2541"
echo -e "Big events pattern: Notify always due etc regardless of notification settings. Default: due, All: received|start|due|end, Disabled: NONE"
echo -e "Default:"
+5
View File
@@ -48,6 +48,11 @@ REM SET ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3
REM SET ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60
REM SET ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15
REM # ==== NOTIFICATION TRAY AFTER READ DAYS BEFORE REMOVE =====
REM # Number of days after a notification is read before we remove it.
REM # Default: 2
REM SET NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE=2
REM # ==== BIGEVENTS DUE ETC NOTIFICATIONS =====
REM # https://github.com/wekan/wekan/pull/2541
REM # Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
+5
View File
@@ -54,6 +54,11 @@
#export MAX_IMAGE_PIXEL=1024
#export IMAGE_COMPRESS_RATIO=80
#---------------------------------------------------------------
# ==== NOTIFICATION TRAY AFTER READ DAYS BEFORE REMOVE =====
# Number of days after a notification is read before we remove it.
# Default: 2
#- NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE=2
#---------------------------------------------------------------
# ==== BIGEVENTS DUE ETC NOTIFICATIONS =====
# https://github.com/wekan/wekan/pull/2541
# Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
+5
View File
@@ -244,6 +244,11 @@ services:
#-MAX_IMAGE_PIXEL=1024
#-IMAGE_COMPRESS_RATIO=80
#---------------------------------------------------------------
# ==== NOTIFICATION TRAY AFTER READ DAYS BEFORE REMOVE =====
# Number of days after a notification is read before we remove it.
# Default: 2
#- NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE=2
#---------------------------------------------------------------
# ==== BIGEVENTS DUE ETC NOTIFICATIONS =====
# https://github.com/wekan/wekan/pull/2541
# Introduced a system env var BIGEVENTS_PATTERN default as "NONE",