mirror of
https://github.com/wekan/wekan.git
synced 2025-12-16 15:30:13 +01:00
Add setting default NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE=2
to all Wekan platforms https://github.com/wekan/wekan/pull/2998 Thanks to xet7 !
This commit is contained in:
parent
115701fa65
commit
5ebb47cb0e
12 changed files with 100 additions and 62 deletions
|
|
@ -26,6 +26,7 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
|
||||||
ATTACHMENTS_STORE_PATH="" \
|
ATTACHMENTS_STORE_PATH="" \
|
||||||
MAX_IMAGE_PIXEL="" \
|
MAX_IMAGE_PIXEL="" \
|
||||||
IMAGE_COMPRESS_RATIO="" \
|
IMAGE_COMPRESS_RATIO="" \
|
||||||
|
NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE="" \
|
||||||
BIGEVENTS_PATTERN=NONE \
|
BIGEVENTS_PATTERN=NONE \
|
||||||
NOTIFY_DUE_DAYS_BEFORE_AND_AFTER="" \
|
NOTIFY_DUE_DAYS_BEFORE_AND_AFTER="" \
|
||||||
NOTIFY_DUE_AT_HOUR_OF_DAY="" \
|
NOTIFY_DUE_AT_HOUR_OF_DAY="" \
|
||||||
|
|
|
||||||
|
|
@ -40,31 +40,29 @@ BlazeComponent.extendComponent({
|
||||||
|
|
||||||
voteState() {
|
voteState() {
|
||||||
const card = this.currentData();
|
const card = this.currentData();
|
||||||
const userId = Meteor.userId()
|
const userId = Meteor.userId();
|
||||||
let state
|
let state;
|
||||||
if (card.vote) {
|
if (card.vote) {
|
||||||
if (card.vote.positive) {
|
if (card.vote.positive) {
|
||||||
state = _.contains(card.vote.positive, userId);
|
state = _.contains(card.vote.positive, userId);
|
||||||
if (state === true) return true
|
if (state === true) return true;
|
||||||
}
|
}
|
||||||
if (card.vote.negative) {
|
if (card.vote.negative) {
|
||||||
state = _.contains(card.vote.negative, userId);
|
state = _.contains(card.vote.negative, userId);
|
||||||
if (state === true) return false
|
if (state === true) return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null
|
return null;
|
||||||
},
|
},
|
||||||
voteCountPositive() {
|
voteCountPositive() {
|
||||||
const card = this.currentData();
|
const card = this.currentData();
|
||||||
if (card.vote && card.vote.positive)
|
if (card.vote && card.vote.positive) return card.vote.positive.length;
|
||||||
return card.vote.positive.length
|
return null;
|
||||||
return null
|
|
||||||
},
|
},
|
||||||
voteCountNegative() {
|
voteCountNegative() {
|
||||||
const card = this.currentData();
|
const card = this.currentData();
|
||||||
if (card.vote && card.vote.negative)
|
if (card.vote && card.vote.negative) return card.vote.negative.length;
|
||||||
return card.vote.negative.length
|
return null;
|
||||||
return null
|
|
||||||
},
|
},
|
||||||
isWatching() {
|
isWatching() {
|
||||||
const card = this.currentData();
|
const card = this.currentData();
|
||||||
|
|
@ -408,17 +406,17 @@ BlazeComponent.extendComponent({
|
||||||
Meteor.call('toggleSystemMessages');
|
Meteor.call('toggleSystemMessages');
|
||||||
},
|
},
|
||||||
'click .js-vote'(e) {
|
'click .js-vote'(e) {
|
||||||
const forIt = $(e.target).hasClass('js-vote-positive')
|
const forIt = $(e.target).hasClass('js-vote-positive');
|
||||||
let newState = null
|
let newState = null;
|
||||||
if (
|
if (
|
||||||
this.voteState() == null ||
|
this.voteState() == null ||
|
||||||
this.voteState() == false && forIt ||
|
(this.voteState() == false && forIt) ||
|
||||||
this.voteState() == true && !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-set-card-color': Popup.open('setCardColor'),
|
||||||
'click .js-cancel-voting'(event) {
|
'click .js-cancel-voting'(event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
this.unsetVote()
|
this.unsetVote();
|
||||||
Popup.close();
|
Popup.close();
|
||||||
},
|
},
|
||||||
'click .js-move-card-to-top'(event) {
|
'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'));
|
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'));
|
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'));
|
autosize(this.$('.js-edit-card-assigner'));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -816,7 +814,7 @@ Template.copyChecklistToManyCardsPopup.events({
|
||||||
|
|
||||||
// copy subtasks
|
// copy subtasks
|
||||||
cursor = Cards.find({ parentId: oldId });
|
cursor = Cards.find({ parentId: oldId });
|
||||||
cursor.forEach(function () {
|
cursor.forEach(function() {
|
||||||
'use strict';
|
'use strict';
|
||||||
const subtask = arguments[0];
|
const subtask = arguments[0];
|
||||||
subtask.parentId = _id;
|
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();
|
Popup.close();
|
||||||
Cards.remove(this._id);
|
Cards.remove(this._id);
|
||||||
Utils.goBoardId(this.boardId);
|
Utils.goBoardId(this.boardId);
|
||||||
|
|
@ -1003,9 +1001,8 @@ BlazeComponent.extendComponent({
|
||||||
'submit .edit-vote-question'(evt) {
|
'submit .edit-vote-question'(evt) {
|
||||||
evt.preventDefault();
|
evt.preventDefault();
|
||||||
const voteQuestion = evt.target.vote.value;
|
const voteQuestion = evt.target.vote.value;
|
||||||
this.currentCard.setVoteQuestion(voteQuestion)
|
this.currentCard.setVoteQuestion(voteQuestion);
|
||||||
Popup.close();
|
Popup.close();
|
||||||
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
|
||||||
|
|
@ -22,11 +22,20 @@ BlazeComponent.extendComponent({
|
||||||
const listId = targetBoard.getDefaultSubtasksListId();
|
const listId = targetBoard.getDefaultSubtasksListId();
|
||||||
|
|
||||||
//Get the full swimlane data for the parent task.
|
//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.
|
//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.
|
//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) {
|
if (title) {
|
||||||
const _id = Cards.insert({
|
const _id = Cards.insert({
|
||||||
|
|
|
||||||
|
|
@ -254,6 +254,11 @@ services:
|
||||||
#-MAX_IMAGE_PIXEL=1024
|
#-MAX_IMAGE_PIXEL=1024
|
||||||
#-IMAGE_COMPRESS_RATIO=80
|
#-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 =====
|
# ==== BIGEVENTS DUE ETC NOTIFICATIONS =====
|
||||||
# https://github.com/wekan/wekan/pull/2541
|
# https://github.com/wekan/wekan/pull/2541
|
||||||
# Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
|
# Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
|
||||||
|
|
|
||||||
|
|
@ -334,8 +334,8 @@ Cards.attachSchema(
|
||||||
'vote.end': {
|
'vote.end': {
|
||||||
type: Date,
|
type: Date,
|
||||||
optional: true,
|
optional: true,
|
||||||
defaultValue: null
|
defaultValue: null,
|
||||||
}
|
},
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
@ -728,7 +728,7 @@ Cards.helpers({
|
||||||
|
|
||||||
parentString(sep) {
|
parentString(sep) {
|
||||||
return this.parentList()
|
return this.parentList()
|
||||||
.map(function (elem) {
|
.map(function(elem) {
|
||||||
return elem.title;
|
return elem.title;
|
||||||
})
|
})
|
||||||
.join(sep);
|
.join(sep);
|
||||||
|
|
@ -1449,11 +1449,11 @@ Cards.mutations({
|
||||||
$set: {
|
$set: {
|
||||||
vote: {
|
vote: {
|
||||||
question,
|
question,
|
||||||
positive:[],
|
positive: [],
|
||||||
negative:[]
|
negative: [],
|
||||||
},
|
},
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
},
|
},
|
||||||
unsetVote() {
|
unsetVote() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -1467,32 +1467,32 @@ Cards.mutations({
|
||||||
case true:
|
case true:
|
||||||
// vote for it
|
// vote for it
|
||||||
return {
|
return {
|
||||||
$pull:{
|
$pull: {
|
||||||
"vote.negative": userId
|
'vote.negative': userId,
|
||||||
},
|
},
|
||||||
$addToSet: {
|
$addToSet: {
|
||||||
"vote.positive": userId
|
'vote.positive': userId,
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
case false:
|
case false:
|
||||||
// vote against
|
// vote against
|
||||||
return {
|
return {
|
||||||
$pull:{
|
$pull: {
|
||||||
"vote.positive": userId
|
'vote.positive': userId,
|
||||||
},
|
},
|
||||||
$addToSet: {
|
$addToSet: {
|
||||||
"vote.negative" : userId
|
'vote.negative': userId,
|
||||||
}
|
},
|
||||||
}
|
};
|
||||||
|
|
||||||
default:
|
default:
|
||||||
// Remove votes
|
// Remove votes
|
||||||
return {
|
return {
|
||||||
$pull:{
|
$pull: {
|
||||||
"vote.positive": userId,
|
'vote.positive': userId,
|
||||||
"vote.negative" : userId
|
'vote.negative': userId,
|
||||||
},
|
},
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
@ -1897,7 +1897,7 @@ if (Meteor.isServer) {
|
||||||
});
|
});
|
||||||
|
|
||||||
//New activity for card moves
|
//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 oldListId = this.previous.listId;
|
||||||
const oldSwimlaneId = this.previous.swimlaneId;
|
const oldSwimlaneId = this.previous.swimlaneId;
|
||||||
const oldBoardId = this.previous.boardId;
|
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
|
// 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(
|
const modifiedAt = new Date(
|
||||||
new Date(value).getTime() -
|
new Date(value).getTime() -
|
||||||
(action === 'endAt' ? 365 * 24 * 3600 * 1e3 : 0),
|
(action === 'endAt' ? 365 * 24 * 3600 * 1e3 : 0),
|
||||||
); // set it as 1 year before
|
); // set it as 1 year before
|
||||||
const boardId = list.boardId;
|
const boardId = list.boardId;
|
||||||
Lists.direct.update(
|
Lists.direct.update(
|
||||||
|
|
@ -1997,7 +1997,7 @@ if (Meteor.isServer) {
|
||||||
JsonRoutes.add(
|
JsonRoutes.add(
|
||||||
'GET',
|
'GET',
|
||||||
'/api/boards/:boardId/swimlanes/:swimlaneId/cards',
|
'/api/boards/:boardId/swimlanes/:swimlaneId/cards',
|
||||||
function (req, res) {
|
function(req, res) {
|
||||||
const paramBoardId = req.params.boardId;
|
const paramBoardId = req.params.boardId;
|
||||||
const paramSwimlaneId = req.params.swimlaneId;
|
const paramSwimlaneId = req.params.swimlaneId;
|
||||||
Authentication.checkBoardAccess(req.userId, paramBoardId);
|
Authentication.checkBoardAccess(req.userId, paramBoardId);
|
||||||
|
|
@ -2007,7 +2007,7 @@ if (Meteor.isServer) {
|
||||||
boardId: paramBoardId,
|
boardId: paramBoardId,
|
||||||
swimlaneId: paramSwimlaneId,
|
swimlaneId: paramSwimlaneId,
|
||||||
archived: false,
|
archived: false,
|
||||||
}).map(function (doc) {
|
}).map(function(doc) {
|
||||||
return {
|
return {
|
||||||
_id: doc._id,
|
_id: doc._id,
|
||||||
title: doc.title,
|
title: doc.title,
|
||||||
|
|
@ -2031,7 +2031,7 @@ if (Meteor.isServer) {
|
||||||
* title: string,
|
* title: string,
|
||||||
* description: string}]
|
* description: string}]
|
||||||
*/
|
*/
|
||||||
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards', function (
|
JsonRoutes.add('GET', '/api/boards/:boardId/lists/:listId/cards', function(
|
||||||
req,
|
req,
|
||||||
res,
|
res,
|
||||||
) {
|
) {
|
||||||
|
|
@ -2044,7 +2044,7 @@ if (Meteor.isServer) {
|
||||||
boardId: paramBoardId,
|
boardId: paramBoardId,
|
||||||
listId: paramListId,
|
listId: paramListId,
|
||||||
archived: false,
|
archived: false,
|
||||||
}).map(function (doc) {
|
}).map(function(doc) {
|
||||||
return {
|
return {
|
||||||
_id: doc._id,
|
_id: doc._id,
|
||||||
title: doc.title,
|
title: doc.title,
|
||||||
|
|
@ -2066,7 +2066,7 @@ if (Meteor.isServer) {
|
||||||
JsonRoutes.add(
|
JsonRoutes.add(
|
||||||
'GET',
|
'GET',
|
||||||
'/api/boards/:boardId/lists/:listId/cards/:cardId',
|
'/api/boards/:boardId/lists/:listId/cards/:cardId',
|
||||||
function (req, res) {
|
function(req, res) {
|
||||||
const paramBoardId = req.params.boardId;
|
const paramBoardId = req.params.boardId;
|
||||||
const paramListId = req.params.listId;
|
const paramListId = req.params.listId;
|
||||||
const paramCardId = req.params.cardId;
|
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
|
* @param {string} [assignees] the array of maximum one ID of assignee of the new card
|
||||||
* @return_type {_id: string}
|
* @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,
|
req,
|
||||||
res,
|
res,
|
||||||
) {
|
) {
|
||||||
|
|
@ -2205,7 +2205,7 @@ if (Meteor.isServer) {
|
||||||
JsonRoutes.add(
|
JsonRoutes.add(
|
||||||
'PUT',
|
'PUT',
|
||||||
'/api/boards/:boardId/lists/:listId/cards/:cardId',
|
'/api/boards/:boardId/lists/:listId/cards/:cardId',
|
||||||
function (req, res) {
|
function(req, res) {
|
||||||
Authentication.checkUserId(req.userId);
|
Authentication.checkUserId(req.userId);
|
||||||
const paramBoardId = req.params.boardId;
|
const paramBoardId = req.params.boardId;
|
||||||
const paramCardId = req.params.cardId;
|
const paramCardId = req.params.cardId;
|
||||||
|
|
@ -2504,7 +2504,7 @@ if (Meteor.isServer) {
|
||||||
JsonRoutes.add(
|
JsonRoutes.add(
|
||||||
'DELETE',
|
'DELETE',
|
||||||
'/api/boards/:boardId/lists/:listId/cards/:cardId',
|
'/api/boards/:boardId/lists/:listId/cards/:cardId',
|
||||||
function (req, res) {
|
function(req, res) {
|
||||||
Authentication.checkUserId(req.userId);
|
Authentication.checkUserId(req.userId);
|
||||||
const paramBoardId = req.params.boardId;
|
const paramBoardId = req.params.boardId;
|
||||||
const paramListId = req.params.listId;
|
const paramListId = req.params.listId;
|
||||||
|
|
|
||||||
|
|
@ -931,7 +931,8 @@ if (Meteor.isServer) {
|
||||||
const addCronJob = _.debounce(
|
const addCronJob = _.debounce(
|
||||||
Meteor.bindEnvironment(function notificationCleanupDebounced() {
|
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
|
// 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_REMOVAL_AGE;
|
const envRemoveAge =
|
||||||
|
process.env.NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE;
|
||||||
// default notifications will be removed 2 days after they are read
|
// default notifications will be removed 2 days after they are read
|
||||||
const defaultRemoveAge = 2;
|
const defaultRemoveAge = 2;
|
||||||
const removeAge = parseInt(envRemoveAge, 10) || defaultRemoveAge;
|
const removeAge = parseInt(envRemoveAge, 10) || defaultRemoveAge;
|
||||||
|
|
|
||||||
|
|
@ -242,6 +242,7 @@ const myCommand :Spk.Manifest.Command = (
|
||||||
(key = "SCROLLINERTIA", value="0"),
|
(key = "SCROLLINERTIA", value="0"),
|
||||||
(key = "SCROLLAMOUNT", value="auto"),
|
(key = "SCROLLAMOUNT", value="auto"),
|
||||||
(key = "CARD_OPENED_WEBHOOK_ENABLED", value="false"),
|
(key = "CARD_OPENED_WEBHOOK_ENABLED", value="false"),
|
||||||
|
(key = "NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE", value=""),
|
||||||
(key = "BIGEVENTS_PATTERN", value="NONE"),
|
(key = "BIGEVENTS_PATTERN", value="NONE"),
|
||||||
(key = "MATOMO_ADDRESS", value=""),
|
(key = "MATOMO_ADDRESS", value=""),
|
||||||
(key = "MATOMO_SITE_ID", value=""),
|
(key = "MATOMO_SITE_ID", value=""),
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@
|
||||||
# All supported keys are defined here together with descriptions and default values
|
# All supported keys are defined here together with descriptions and default values
|
||||||
|
|
||||||
# list of supported keys
|
# 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
|
# default values
|
||||||
DESCRIPTION_DEBUG="Debug OIDC OAuth2 etc. Example: sudo snap set wekan debug='true'"
|
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=""
|
DEFAULT_IMAGE_COMPRESS_RATIO=""
|
||||||
KEY_IMAGE_COMPRESS_RATIO="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"
|
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"
|
DEFAULT_BIGEVENTS_PATTERN="NONE"
|
||||||
KEY_BIGEVENTS_PATTERN="bigevents-pattern"
|
KEY_BIGEVENTS_PATTERN="bigevents-pattern"
|
||||||
|
|
|
||||||
|
|
@ -105,6 +105,11 @@ echo -e "\t$ snap set $SNAP_NAME attachments-store-path='/var/snap/wekan/common/
|
||||||
echo -e "Disabled:"
|
echo -e "Disabled:"
|
||||||
echo -e "\t$ snap set $SNAP_NAME attachments-store-path=''"
|
echo -e "\t$ snap set $SNAP_NAME attachments-store-path=''"
|
||||||
echo -e "\n"
|
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 "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 "Big events pattern: Notify always due etc regardless of notification settings. Default: due, All: received|start|due|end, Disabled: NONE"
|
||||||
echo -e "Default:"
|
echo -e "Default:"
|
||||||
|
|
|
||||||
|
|
@ -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_LOCKOUT_PERIOD=60
|
||||||
REM SET ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15
|
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 # ==== BIGEVENTS DUE ETC NOTIFICATIONS =====
|
||||||
REM # https://github.com/wekan/wekan/pull/2541
|
REM # https://github.com/wekan/wekan/pull/2541
|
||||||
REM # Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
|
REM # Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
|
||||||
|
|
|
||||||
|
|
@ -54,6 +54,11 @@
|
||||||
#export MAX_IMAGE_PIXEL=1024
|
#export MAX_IMAGE_PIXEL=1024
|
||||||
#export IMAGE_COMPRESS_RATIO=80
|
#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 =====
|
# ==== BIGEVENTS DUE ETC NOTIFICATIONS =====
|
||||||
# https://github.com/wekan/wekan/pull/2541
|
# https://github.com/wekan/wekan/pull/2541
|
||||||
# Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
|
# Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
|
||||||
|
|
|
||||||
|
|
@ -244,6 +244,11 @@ services:
|
||||||
#-MAX_IMAGE_PIXEL=1024
|
#-MAX_IMAGE_PIXEL=1024
|
||||||
#-IMAGE_COMPRESS_RATIO=80
|
#-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 =====
|
# ==== BIGEVENTS DUE ETC NOTIFICATIONS =====
|
||||||
# https://github.com/wekan/wekan/pull/2541
|
# https://github.com/wekan/wekan/pull/2541
|
||||||
# Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
|
# Introduced a system env var BIGEVENTS_PATTERN default as "NONE",
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue