Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Sam X. Chen 2019-07-11 10:47:08 -04:00
commit f2a0ae0a2c
64 changed files with 29872 additions and 28950 deletions

1
.gitignore vendored
View file

@ -29,3 +29,4 @@ versions.json
.Trashes .Trashes
Thumbs.db Thumbs.db
ehthumbs.db ehthumbs.db
.eslintcache

View file

@ -4,12 +4,21 @@ This release adds the following new features:
- [Add Corteza theme. In progress](https://github.com/wekan/wekan/commit/289e78dbd29cca9d97d3b5787c3368583d43b40f). - [Add Corteza theme. In progress](https://github.com/wekan/wekan/commit/289e78dbd29cca9d97d3b5787c3368583d43b40f).
Thanks to xet7. Thanks to xet7.
- [Notify Due Days: System timelines will be showing any user modification for duat startat endat receivedat, also notification
to the watchers and if any card is due, about due or past due](https://github.com/wekan/wekan/pull/2536).
ENV variables: NOTIFY_DUE_DAYS_BEFORE_AND_AFTER (default is 2, if 0, will turn off notification for and dued cards),
NOTIFY_DUE_AT_HOUR_OF_DAY (any number between 0 - 23, standing for at what hour of a day that the notification will
be sent to the watchers).
Thanks to whowillcare.
- [Notify Due Days: Add settings to Snap/Docker/Source. Rename env variables to NOTIFY_DUE_DAYS_BEFORE_AND_AFTER and
NOTIFY_DUE_AT_HOUR_OF_DAY](https://github.com/wekan/wekan/commit/5084cddf37ba16ce0855f8575c39f5e62d1b7f67).
Thanks to xet7.
and adds the following updates: and adds the following updates:
- [Update Meteor mongo package version](https://github.com/wekan/wekan/commit/96065d11a543852c1069cbab528bd08508b4a27c). - [Update Meteor mongo package version](https://github.com/wekan/wekan/commit/96065d11a543852c1069cbab528bd08508b4a27c).
Thanks to xet7. Thanks to xet7.
- Update dependencies](https://github.com/wekan/wekan/commit/d82c72f1c1df908e92045e5034fa12b33fc7f70c). - [Update dependencies](https://github.com/wekan/wekan/commit/d82c72f1c1df908e92045e5034fa12b33fc7f70c).
Thanks to xet7. Thanks to xet7.
and fixes the following bugs: and fixes the following bugs:
@ -21,6 +30,10 @@ and fixes the following bugs:
- [Try to fix docker-compose.yml to use correct master branch that has - [Try to fix docker-compose.yml to use correct master branch that has
meteor 1.8.1](https://github.com/wekan/wekan/commit/202cc5a797b6269ec422c6f2e532a49f09d4e30a). meteor 1.8.1](https://github.com/wekan/wekan/commit/202cc5a797b6269ec422c6f2e532a49f09d4e30a).
Thanks to xet7. Thanks to xet7.
- [Outgoing Webhooks setCustomField: Add board name, card name, custom field name to be
visible](https://github.com/wekan/wekan/commit/2003d90467debeadf51b69630c80ee6040524f52).
Still missing: custom field value, list name, swimlane name.
Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations. Thanks to above GitHub users for their contributions and translators for their translations.

View file

@ -4,7 +4,7 @@ LABEL maintainer="wekan"
# Set the environment variables (defaults where required) # Set the environment variables (defaults where required)
# DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303 # DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
# ENV BUILD_DEPS="paxctl" # ENV BUILD_DEPS="paxctl"
ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential python3 python3-pip git ca-certificates gcc-8" \ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 g++ build-essential python python3 python3-pip git ca-certificates" \
DEBUG=false \ DEBUG=false \
NODE_VERSION=v8.16.0 \ NODE_VERSION=v8.16.0 \
METEOR_RELEASE=1.8.1 \ METEOR_RELEASE=1.8.1 \
@ -21,6 +21,8 @@ ENV BUILD_DEPS="apt-utils bsdtar gnupg gosu wget curl bzip2 build-essential pyth
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3 \ ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3 \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60 \ ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60 \
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 \ ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 \
NOTIFY_DUE_DAYS_BEFORE_AND_AFTER="" \
NOTIFY_DUE_AT_HOUR_OF_DAY="" \
EMAIL_NOTIFICATION_TIMEOUT=30000 \ EMAIL_NOTIFICATION_TIMEOUT=30000 \
MATOMO_ADDRESS="" \ MATOMO_ADDRESS="" \
MATOMO_SITE_ID="" \ MATOMO_SITE_ID="" \
@ -169,33 +171,39 @@ RUN \
mv node-${NODE_VERSION}-${ARCHITECTURE} /opt/nodejs && \ mv node-${NODE_VERSION}-${ARCHITECTURE} /opt/nodejs && \
ln -s /opt/nodejs/bin/node /usr/bin/node && \ ln -s /opt/nodejs/bin/node /usr/bin/node && \
ln -s /opt/nodejs/bin/npm /usr/bin/npm && \ ln -s /opt/nodejs/bin/npm /usr/bin/npm && \
mkdir -p /opt/nodejs/lib/node_modules/fibers/.node-gyp /root/.node-gyp/8.16.0 /home/wekan/.config && \
chown wekan --recursive /home/wekan/.config && \
\ \
#DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303 #DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
#paxctl -mC `which node` && \ #paxctl -mC `which node` && \
\ \
# Install Node dependencies # Install Node dependencies. Python path for node-gyp.
npm install -g npm@${NPM_VERSION} && \ npm install -g npm@${NPM_VERSION} && \
npm config set python python2.7 && \
npm install -g node-gyp && \ npm install -g node-gyp && \
npm install -g fibers@${FIBERS_VERSION} && \ npm install -g fibers@${FIBERS_VERSION} && \
\ \
# Change user to wekan and install meteor # Change user to wekan and install meteor
cd /home/wekan/ && \ cd /home/wekan/ && \
chown wekan --recursive /home/wekan && \ chown wekan --recursive /home/wekan && \
curl "https://install.meteor.com" -o /home/wekan/install_meteor.sh && \ #curl "https://install.meteor.com" -o /home/wekan/install_meteor.sh && \
#curl "https://install.meteor.com/?release=${METEOR_RELEASE}" -o /home/wekan/install_meteor.sh && \ #curl "https://install.meteor.com/?release=${METEOR_RELEASE}" -o /home/wekan/install_meteor.sh && \
# OLD: sed -i "s|RELEASE=.*|RELEASE=${METEOR_RELEASE}\"\"|g" ./install_meteor.sh && \ # OLD: sed -i "s|RELEASE=.*|RELEASE=${METEOR_RELEASE}\"\"|g" ./install_meteor.sh && \
# Install Meteor forcing its progress # Install Meteor forcing its progress
sed -i 's/VERBOSITY="--silent"/VERBOSITY="--progress-bar"/' ./install_meteor.sh && \ #sed -i 's/VERBOSITY="--silent"/VERBOSITY="--progress-bar"/' ./install_meteor.sh && \
echo "Starting meteor ${METEOR_RELEASE} installation... \n" && \ echo "Starting meteor ${METEOR_RELEASE} installation... \n" && \
chown wekan /home/wekan/install_meteor.sh && \ gosu wekan:wekan curl https://install.meteor.com/ | /bin/sh && \
#chown wekan /home/wekan/install_meteor.sh && \
#gosu wekan:wekan sh /home/wekan/install_meteor.sh; \
\ \
# Check if opting for a release candidate instead of major release # Check if opting for a release candidate instead of major release
if [ "$USE_EDGE" = false ]; then \ #if [ "$USE_EDGE" = false ]; then \
gosu wekan:wekan sh /home/wekan/install_meteor.sh; \ #gosu wekan:wekan sh /home/wekan/install_meteor.sh; \
else \ # gosu wekan:wekan curl https://install.meteor.com/ | sh; \
gosu wekan:wekan git clone --recursive --depth 1 -b release/METEOR@${METEOR_EDGE} https://github.com/meteor/meteor.git /home/wekan/.meteor; \ #else \
fi; \ # gosu wekan:wekan git clone --recursive --depth 1 -b release/METEOR@${METEOR_EDGE} https://github.com/meteor/meteor.git /home/wekan/.meteor; \
\ #fi; \
#\
# Get additional packages # Get additional packages
#mkdir -p /home/wekan/app/packages && \ #mkdir -p /home/wekan/app/packages && \
#chown wekan:wekan --recursive /home/wekan && \ #chown wekan:wekan --recursive /home/wekan && \
@ -223,15 +231,18 @@ RUN \
gosu wekan:wekan git clone --depth 1 -b master https://github.com/Kronuz/esprima-python && \ gosu wekan:wekan git clone --depth 1 -b master https://github.com/Kronuz/esprima-python && \
cd /home/wekan/python/esprima-python && \ cd /home/wekan/python/esprima-python && \
python3 setup.py install --record files.txt && \ python3 setup.py install --record files.txt && \
cd /home/wekan/app &&\ cd /home/wekan/app && \
gosu wekan:wekan mkdir -p ./public/api && \ mkdir -p /home/wekan/app/public/api && \
chown wekan --recursive /home/wekan/app && \
gosu wekan:wekan python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml && \ gosu wekan:wekan python3 ./openapi/generate_openapi.py --release $(git describe --tags --abbrev=0) > ./public/api/wekan.yml && \
gosu wekan:wekan /opt/nodejs/bin/api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml; \ gosu wekan:wekan /opt/nodejs/bin/api2html -c ./public/logo-header.png -o ./public/api/wekan.html ./public/api/wekan.yml; \
# Build app # Build app
cd /home/wekan/app && \ cd /home/wekan/app && \
gosu wekan:wekan /home/wekan/.meteor/meteor add standard-minifier-js && \ mkdir -p /home/wekan/.npm && \
gosu wekan:wekan /home/wekan/.meteor/meteor npm install && \ chown wekan --recursive /home/wekan/.npm /home/wekan/.config && \
gosu wekan:wekan /home/wekan/.meteor/meteor build --directory /home/wekan/app_build && \ #gosu wekan:wekan /home/wekan/.meteor/meteor add standard-minifier-js && \
gosu wekan:wekan npm install && \
gosu wekan:wekan meteor build --directory /home/wekan/app_build && \
cp /home/wekan/app/fix-download-unicode/cfs_access-point.txt /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \ cp /home/wekan/app/fix-download-unicode/cfs_access-point.txt /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \
#rm /home/wekan/app_build/bundle/programs/server/npm/node_modules/meteor/rajit_bootstrap3-datepicker/lib/bootstrap-datepicker/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs && \ #rm /home/wekan/app_build/bundle/programs/server/npm/node_modules/meteor/rajit_bootstrap3-datepicker/lib/bootstrap-datepicker/node_modules/phantomjs-prebuilt/lib/phantom/bin/phantomjs && \
chown wekan /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \ chown wekan /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \
@ -258,8 +269,8 @@ RUN \
rm -R /home/wekan/app && \ rm -R /home/wekan/app && \
rm -R /home/wekan/app_build && \ rm -R /home/wekan/app_build && \
cat /home/wekan/python/esprima-python/files.txt | xargs rm -R && \ cat /home/wekan/python/esprima-python/files.txt | xargs rm -R && \
rm -R /home/wekan/python && \ rm -R /home/wekan/python
rm /home/wekan/install_meteor.sh #rm /home/wekan/install_meteor.sh
ENV PORT=8080 ENV PORT=8080
EXPOSE $PORT EXPOSE $PORT

View file

@ -232,6 +232,19 @@ services:
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60 #- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 #- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15
#--------------------------------------------------------------- #---------------------------------------------------------------
# ==== EMAIL DUE DATE NOTIFICATION =====
# https://github.com/wekan/wekan/pull/2536
# System timelines will be showing any user modification for
# dueat startat endat receivedat, also notification to
# the watchers and if any card is due, about due or past due.
#
# Notify due days, default 2 days before and after. 0 = due notifications disabled. Default: 2
#- NOTIFY_DUE_DAYS_BEFORE_AND_AFTER=2
#
# Notify due at hour of day. Default every morning at 8am. Can be 0-23.
# If env variable has parsing error, use default. Notification sent to watchers.
#- NOTIFY_DUE_AT_HOUR_OF_DAY=8
#-----------------------------------------------------------------
# ==== EMAIL NOTIFICATION TIMEOUT, ms ===== # ==== EMAIL NOTIFICATION TIMEOUT, ms =====
# Defaut: 30000 ms = 30s # Defaut: 30000 ms = 30s
#- EMAIL_NOTIFICATION_TIMEOUT=30000 #- EMAIL_NOTIFICATION_TIMEOUT=30000

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -702,5 +702,21 @@
"swimlane-delete-pop": "Alle Aktionen werden aus dem Aktivitätenfeed entfernt und die Swimlane kann nicht wiederhergestellt werden. Es gibt kein Rückgängig!", "swimlane-delete-pop": "Alle Aktionen werden aus dem Aktivitätenfeed entfernt und die Swimlane kann nicht wiederhergestellt werden. Es gibt kein Rückgängig!",
"restore-all": "Alles wiederherstellen", "restore-all": "Alles wiederherstellen",
"delete-all": "Alles löschen", "delete-all": "Alles löschen",
"loading": "Laden, bitte warten." "loading": "Laden, bitte warten.",
"previous_as": "last time was",
"act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__",
"act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)",
"act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)",
"act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)",
"a-dueAt": "modified due time to be",
"a-endAt": "modified ending time to be",
"a-startAt": "modified starting time to be",
"a-receivedAt": "modified received time to be",
"almostdue": "current due time %s is approaching",
"pastdue": "current due time %s is past",
"duenow": "current due time %s is today",
"act-withDue": "__card__ due reminders [__board__]",
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now"
} }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -702,5 +702,21 @@
"swimlane-delete-pop": "Todas las acciones serán eliminadas del historial de actividades y no se podrá recuperar el carril de flujo. Esta acción no puede deshacerse.", "swimlane-delete-pop": "Todas las acciones serán eliminadas del historial de actividades y no se podrá recuperar el carril de flujo. Esta acción no puede deshacerse.",
"restore-all": "Restaurar todas", "restore-all": "Restaurar todas",
"delete-all": "Borrar todas", "delete-all": "Borrar todas",
"loading": "Cargando. Por favor, espere." "loading": "Cargando. Por favor, espere.",
"previous_as": "last time was",
"act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__",
"act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)",
"act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)",
"act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)",
"a-dueAt": "modified due time to be",
"a-endAt": "modified ending time to be",
"a-startAt": "modified starting time to be",
"a-receivedAt": "modified received time to be",
"almostdue": "current due time %s is approaching",
"pastdue": "current due time %s is past",
"duenow": "current due time %s is today",
"act-withDue": "__card__ due reminders [__board__]",
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now"
} }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -702,5 +702,21 @@
"swimlane-delete-pop": "Toutes les actions vont être supprimées du suivi d'activités et vous ne pourrez plus utiliser ce couloir. Cette action est irréversible.", "swimlane-delete-pop": "Toutes les actions vont être supprimées du suivi d'activités et vous ne pourrez plus utiliser ce couloir. Cette action est irréversible.",
"restore-all": "Tout supprimer", "restore-all": "Tout supprimer",
"delete-all": "Tout restaurer", "delete-all": "Tout restaurer",
"loading": "Chargement, merci de patienter." "loading": "Chargement, merci de patienter.",
"previous_as": "last time was",
"act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__",
"act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)",
"act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)",
"act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)",
"a-dueAt": "modified due time to be",
"a-endAt": "modified ending time to be",
"a-startAt": "modified starting time to be",
"a-receivedAt": "modified received time to be",
"almostdue": "current due time %s is approaching",
"pastdue": "current due time %s is past",
"duenow": "current due time %s is today",
"act-withDue": "__card__ due reminders [__board__]",
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now"
} }

File diff suppressed because it is too large Load diff

View file

@ -702,5 +702,21 @@
"swimlane-delete-pop": "כל הפעולות יוסרו מהזנת הפעילות ולא תהיה לך אפשרות לשחזר את המסלול. אי אפשר לחזור אחורה.", "swimlane-delete-pop": "כל הפעולות יוסרו מהזנת הפעילות ולא תהיה לך אפשרות לשחזר את המסלול. אי אפשר לחזור אחורה.",
"restore-all": "לשחזר הכול", "restore-all": "לשחזר הכול",
"delete-all": "למחוק הכול", "delete-all": "למחוק הכול",
"loading": "העמוד בטעינה, אנא המתינו." "loading": "העמוד בטעינה, אנא המתינו.",
"previous_as": "הזמן הקודם היה",
"act-a-dueAt": "זמן יעד שונה ל: \n__timeValue__\nבכרטיס: __card__\n זמן היעד הקודם היה __timeOldValue__",
"act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)",
"act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)",
"act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)",
"a-dueAt": "modified due time to be",
"a-endAt": "modified ending time to be",
"a-startAt": "modified starting time to be",
"a-receivedAt": "modified received time to be",
"almostdue": "current due time %s is approaching",
"pastdue": "current due time %s is past",
"duenow": "current due time %s is today",
"act-withDue": "__card__ due reminders [__board__]",
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now"
} }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -702,5 +702,21 @@
"swimlane-delete-pop": "Wszystkie akcje będą usunięte z widoku aktywności, nie można będzie przywrócić diagramu czynności. Usunięcie jest nieodwracalne.", "swimlane-delete-pop": "Wszystkie akcje będą usunięte z widoku aktywności, nie można będzie przywrócić diagramu czynności. Usunięcie jest nieodwracalne.",
"restore-all": "Przywróć wszystkie", "restore-all": "Przywróć wszystkie",
"delete-all": "Usuń wszystkie", "delete-all": "Usuń wszystkie",
"loading": "Ładowanie, proszę czekać." "loading": "Ładowanie, proszę czekać.",
"previous_as": "last time was",
"act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__",
"act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)",
"act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)",
"act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)",
"a-dueAt": "modified due time to be",
"a-endAt": "modified ending time to be",
"a-startAt": "modified starting time to be",
"a-receivedAt": "modified received time to be",
"almostdue": "current due time %s is approaching",
"pastdue": "current due time %s is past",
"duenow": "current due time %s is today",
"act-withDue": "__card__ due reminders [__board__]",
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now"
} }

View file

@ -702,5 +702,21 @@
"swimlane-delete-pop": "Todas as ações serão excluídas da lista de atividades e você não poderá recuperar a raia. Não há como desfazer.", "swimlane-delete-pop": "Todas as ações serão excluídas da lista de atividades e você não poderá recuperar a raia. Não há como desfazer.",
"restore-all": "Restaurar tudo", "restore-all": "Restaurar tudo",
"delete-all": "Excluir tudo", "delete-all": "Excluir tudo",
"loading": "Carregando, aguarde por favor." "loading": "Carregando, aguarde por favor.",
"previous_as": "last time was",
"act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__",
"act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)",
"act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)",
"act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)",
"a-dueAt": "modified due time to be",
"a-endAt": "modified ending time to be",
"a-startAt": "modified starting time to be",
"a-receivedAt": "modified received time to be",
"almostdue": "current due time %s is approaching",
"pastdue": "current due time %s is past",
"duenow": "current due time %s is today",
"act-withDue": "__card__ due reminders [__board__]",
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now"
} }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -702,5 +702,21 @@
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.", "swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "Återställ alla", "restore-all": "Återställ alla",
"delete-all": "Ta bort alla", "delete-all": "Ta bort alla",
"loading": "Läser in, var god vänta." "loading": "Läser in, var god vänta.",
"previous_as": "last time was",
"act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__",
"act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)",
"act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)",
"act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)",
"a-dueAt": "modified due time to be",
"a-endAt": "modified ending time to be",
"a-startAt": "modified starting time to be",
"a-receivedAt": "modified received time to be",
"almostdue": "current due time %s is approaching",
"pastdue": "current due time %s is past",
"duenow": "current due time %s is today",
"act-withDue": "__card__ due reminders [__board__]",
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now"
} }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -702,5 +702,21 @@
"swimlane-delete-pop": "所有活动将从活动源中删除,您将无法恢复泳道。此操作无法撤销。", "swimlane-delete-pop": "所有活动将从活动源中删除,您将无法恢复泳道。此操作无法撤销。",
"restore-all": "全部恢复", "restore-all": "全部恢复",
"delete-all": "全部删除", "delete-all": "全部删除",
"loading": "加载中,请稍等。" "loading": "加载中,请稍等。",
"previous_as": "last time was",
"act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__",
"act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)",
"act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)",
"act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)",
"a-dueAt": "modified due time to be",
"a-endAt": "modified ending time to be",
"a-startAt": "modified starting time to be",
"a-receivedAt": "modified received time to be",
"almostdue": "current due time %s is approaching",
"pastdue": "current due time %s is past",
"duenow": "current due time %s is today",
"act-withDue": "__card__ due reminders [__board__]",
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now"
} }

File diff suppressed because it is too large Load diff

View file

@ -702,5 +702,21 @@
"swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.", "swimlane-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the swimlane. There is no undo.",
"restore-all": "全部還原", "restore-all": "全部還原",
"delete-all": "全部刪除", "delete-all": "全部刪除",
"loading": "讀取中,請稍後" "loading": "讀取中,請稍後",
"previous_as": "last time was",
"act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__",
"act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)",
"act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)",
"act-a-receivedAt": "modified received time to __timeValue__ from (__timeOldValue__)",
"a-dueAt": "modified due time to be",
"a-endAt": "modified ending time to be",
"a-startAt": "modified starting time to be",
"a-receivedAt": "modified received time to be",
"almostdue": "current due time %s is approaching",
"pastdue": "current due time %s is past",
"duenow": "current due time %s is today",
"act-withDue": "__card__ due reminders [__board__]",
"act-almostdue": "was reminding the current due (__timeValue__) of __card__ is approaching",
"act-pastdue": "was reminding the current due (__timeValue__) of __card__ is past",
"act-duenow": "was reminding the current due (__timeValue__) of __card__ is now"
} }

View file

@ -189,7 +189,9 @@ if (Meteor.isServer) {
if (activity.customFieldId) { if (activity.customFieldId) {
const customField = activity.customField(); const customField = activity.customField();
params.customField = customField.name; params.customField = customField.name;
params.customFieldValue = customField.text; params.customFieldValue = Activities.findOne({
customFieldId: customField._id,
}).value;
} }
// Label activity did not work yet, unable to edit labels when tried this. // Label activity did not work yet, unable to edit labels when tried this.
//if (activity.labelId) { //if (activity.labelId) {

View file

@ -1582,12 +1582,13 @@ const findDueCards = days => {
}; };
const addCronJob = _.debounce( const addCronJob = _.debounce(
Meteor.bindEnvironment(function findDueCardsDebounced() { Meteor.bindEnvironment(function findDueCardsDebounced() {
const notifydays = parseInt(process.env.NOTIFY_DUE_DAYS, 10) || 2; // default as 2 days b4 and after const notifydays =
parseInt(process.env.NOTIFY_DUE_DAYS_BEFORE_AND_AFTER, 10) || 2; // default as 2 days before and after
if (!(notifydays > 0 && notifydays < 15)) { if (!(notifydays > 0 && notifydays < 15)) {
// notifying due is disabled // notifying due is disabled
return; return;
} }
const notifyitvl = process.env.NOTIFY_DUE_ITVL; //passed in the itvl has to be a number standing for the hour of current time const notifyitvl = process.env.NOTIFY_DUE_AT_HOUR_OF_DAY; //passed in the itvl has to be a number standing for the hour of current time
const defaultitvl = 8; // default every morning at 8am, if the passed env variable has parsing error use default const defaultitvl = 8; // default every morning at 8am, if the passed env variable has parsing error use default
const itvl = parseInt(notifyitvl, 10) || defaultitvl; const itvl = parseInt(notifyitvl, 10) || defaultitvl;
const scheduler = (job => () => { const scheduler = (job => () => {
@ -1619,9 +1620,9 @@ if (Meteor.isServer) {
// With a huge database, this result in a very slow app and high CPU on the mongodb side. // With a huge database, this result in a very slow app and high CPU on the mongodb side.
// To correct it, add Index to parentId: // To correct it, add Index to parentId:
Cards._collection._ensureIndex({ parentId: 1 }); Cards._collection._ensureIndex({ parentId: 1 });
/*let notifydays = parseInt(process.env.NOTIFY_DUE_DAYS) || 2; // default as 2 days b4 and after // let notifydays = parseInt(process.env.NOTIFY_DUE_DAYS_BEFORE_AND_AFTER) || 2; // default as 2 days b4 and after
let notifyitvl = parseInt(process.env.NOTIFY_DUE_ITVL) || 3600 * 24 * 1e3; // default interval as one day // let notifyitvl = parseInt(process.env.NOTIFY_DUE_AT_HOUR_OF_DAY) || 3600 * 24 * 1e3; // default interval as one day
Meteor.call("findDueCards",notifydays,notifyitvl);*/ // Meteor.call("findDueCards",notifydays,notifyitvl);
Meteor.defer(() => { Meteor.defer(() => {
addCronJob(); addCronJob();
}); });

View file

@ -165,11 +165,15 @@ function customFieldDeletion(userId, doc) {
// instead it shows undefined, and no listId and swimlaneId. // instead it shows undefined, and no listId and swimlaneId.
function customFieldEdit(userId, doc) { function customFieldEdit(userId, doc) {
const card = Cards.findOne(doc.cardId); const card = Cards.findOne(doc.cardId);
const customFieldValue = Activities.findOne({ customFieldId: doc._id }).value;
const boardId = card.boardId;
//boardId: doc.boardIds[0], // We are creating a customField, it has only one boardId
Activities.insert({ Activities.insert({
userId, userId,
activityType: 'editCustomField', activityType: 'setCustomField',
boardId: doc.boardIds[0], // We are creating a customField, it has only one boardId boardId,
customFieldId: doc._id, customFieldId: doc._id,
customFieldValue,
listId: card.listId, listId: card.listId,
swimlaneId: card.swimlaneId, swimlaneId: card.swimlaneId,
}); });

View file

@ -53,7 +53,7 @@
"prettier-eslint": "^8.8.2" "prettier-eslint": "^8.8.2"
}, },
"dependencies": { "dependencies": {
"@babel/runtime": "^7.5.1", "@babel/runtime": "^7.5.4",
"bcrypt": "^3.0.2", "bcrypt": "^3.0.2",
"bson": "^4.0.0", "bson": "^4.0.0",
"bunyan": "^1.8.12", "bunyan": "^1.8.12",

View file

@ -73,10 +73,11 @@ do
if [[ "$OSTYPE" == "linux-gnu" ]]; then if [[ "$OSTYPE" == "linux-gnu" ]]; then
echo "Linux"; echo "Linux";
# Debian, Ubuntu, Mint # Debian, Ubuntu, Mint
sudo apt-get install -y build-essential gcc g++ make git curl wget npm nodejs sudo apt-get install -y build-essential gcc g++ make git curl wget
sudo npm -g install npm # npm nodejs
sudo chown wekan:wekan ../../.npm -R #sudo npm -g install npm
#curl -0 -L https://npmjs.org/install.sh | sudo sh curl -0 -L https://npmjs.org/install.sh | sudo sh
sudo chown -R $(id -u):$(id -g) $HOME/.npm
sudo npm -g install n sudo npm -g install n
sudo n 8.16.0 sudo n 8.16.0
#curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - #curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
@ -113,7 +114,7 @@ do
npm_call -g install fibers@4.0.1 npm_call -g install fibers@4.0.1
# Install Meteor, if it's not yet installed # Install Meteor, if it's not yet installed
curl https://install.meteor.com | bash curl https://install.meteor.com | bash
sudo chown -R $USER ~/.meteor sudo chown -R $(id -u):$(id -g) $HOME/.npm $HOME/.meteor
break break
;; ;;
"Build Wekan") "Build Wekan")
@ -141,6 +142,7 @@ do
# sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js # sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js
#fi #fi
#cd .. #cd ..
sudo chown -R $(id -u):$(id -g) $HOME/.npm $HOME/.meteor
rm -rf node_modules rm -rf node_modules
meteor npm install meteor npm install
rm -rf .build rm -rf .build

View file

@ -35,7 +35,24 @@
#export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3 #export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3
#export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60 #export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60
#export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 #export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15
#--------------------------------------------- #---------------------------------------------------------------
# ==== EMAIL DUE DATE NOTIFICATION =====
# https://github.com/wekan/wekan/pull/2536
# System timelines will be showing any user modification for
# dueat startat endat receivedat, also notification to
# the watchers and if any card is due, about due or past due.
#
# Notify due days, default 2 days before and after. 0 = due notifications disabled. Default: 2
#export NOTIFY_DUE_DAYS_BEFORE_AND_AFTER=2
#
# Notify due at hour of day. Default every morning at 8am. Can be 0-23.
# If env variable has parsing error, use default. Notification sent to watchers.
#export NOTIFY_DUE_AT_HOUR_OF_DAY=8
#-----------------------------------------------------------------
# ==== EMAIL NOTIFICATION TIMEOUT, ms =====
# Defaut: 30000 ms = 30s
#export EMAIL_NOTIFICATION_TIMEOUT=30000
#-----------------------------------------------------------------
# CORS: Set Access-Control-Allow-Origin header. Example: * # CORS: Set Access-Control-Allow-Origin header. Example: *
#export CORS=* #export CORS=*
# To enable the Set Access-Control-Allow-Headers header. "Authorization,Content-Type" is required for cross-origin use of the API. # To enable the Set Access-Control-Allow-Headers header. "Authorization,Content-Type" is required for cross-origin use of the API.

View file

@ -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 MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API 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 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_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" keys="DEBUG MONGODB_BIND_UNIX_SOCKET MONGODB_BIND_IP MONGODB_PORT MAIL_URL MAIL_FROM ROOT_URL PORT DISABLE_MONGODB CADDY_ENABLED CADDY_BIND_PORT WITH_API 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 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_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"
# 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'"
@ -80,6 +80,14 @@ DESCRIPTION_ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW="Accounts lockout unkn
DEFAULT_ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW="15" DEFAULT_ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW="15"
KEY_ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW="accounts-lockout-unknown-users-failure-window" KEY_ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW="accounts-lockout-unknown-users-failure-window"
DESCRIPTION_NOTIFY_DUE_DAYS_BEFORE_AND_AFTER="Notify due days, default 2 days before and after. 0 = due notifications disabled. Default: 2"
DEFAULT_NOTIFY_DUE_DAYS_BEFORE_AND_AFTER=""
KEY_NOTIFY_DUE_DAYS_BEFORE_AND_AFTER="notify-due-days-before-and-after"
DESCRIPTION_NOTIFY_DUE_AT_HOUR_OF_DAY="Notify due at hour of day. Default every morning at 8am. Can be 0-23. If env variable has parsing error, use default. Notification sent to watchers. Default: 0"
DEFAULT_NOTIFY_DUE_AT_HOUR_OF_DAY=""
KEY_NOTIFY_DUE_AT_HOUR_OF_DAY="notify-due-at-hour-of-day"
DESCRIPTION_EMAIL_NOTIFICATION_TIMEOUT="Email notification timeout, ms. Default: 30000 (=30s)." DESCRIPTION_EMAIL_NOTIFICATION_TIMEOUT="Email notification timeout, ms. Default: 30000 (=30s)."
DEFAULT_EMAIL_NOTIFICATION_TIMEOUT="30000" DEFAULT_EMAIL_NOTIFICATION_TIMEOUT="30000"
KEY_EMAIL_NOTIFICATION_TIMEOUT="email-notification-timeout" KEY_EMAIL_NOTIFICATION_TIMEOUT="email-notification-timeout"

View file

@ -58,6 +58,24 @@ echo -e "\n"
echo -e "Accounts lockout unknown users failure window, in seconds. Default: 15" echo -e "Accounts lockout unknown users failure window, in seconds. Default: 15"
echo -e "\t$ snap set $SNAP_NAME accounts-lockout-unknown-users-failure-window='15'" echo -e "\t$ snap set $SNAP_NAME accounts-lockout-unknown-users-failure-window='15'"
echo -e "\n" echo -e "\n"
echo -e "EMAIL DUE DATE NOTIFICATION https://github.com/wekan/wekan/pull/2536"
echo -e "System timelines will be showing any user modification for dueat startat endat receivedat, also notification to the watchers and if any card is due, about due or past due."
echo -e "Notify due days, default 2 days before and after. 0 = due notifications disabled. Default: 2"
echo -e "To enable different Notify Due Days Before And After than default 2:"
echo -e "\t$ snap set $SNAP_NAME notify-due-days-before-and-after='4'"
echo -e "\t-Disable Notifying for Due Days:"
echo -e "\t$ snap set $SNAP_NAME notify-due-days-before-and-after='0'"
echo -e "\n"
echo -e "\t-To set back to default 2:"
echo -e "\t$ snap set $SNAP_NAME notify-due-days-before-and-after=''"
echo -e "\n"
echo -e "Notify due at hour of day. Default every morning at 8am. Can be 0-23."
echo -e "If env variable has parsing error, use default. Notification sent to watchers."
echo -e "To enable different Notify Due At Hour Of Day than default 8:"
echo -e "\t$ snap set $SNAP_NAME notify-due-at-hour-of-day='10'"
echo -e "\t-To set back default 8 of Notify Due at Hour of Day:"
echo -e "\t$ snap set $SNAP_NAME notify-due-at-hour-of-day=''"
echo -e "\n"
echo -e "To enable the Email Notification Timeout of wekan in ms, default 30000 (=30s):" echo -e "To enable the Email Notification Timeout of wekan in ms, default 30000 (=30s):"
echo -e "\t$ snap set $SNAP_NAME email-notification-timeout='10000'" echo -e "\t$ snap set $SNAP_NAME email-notification-timeout='10000'"
echo -e "\t-Disable the Email Notification Timeout of Wekan:" echo -e "\t-Disable the Email Notification Timeout of Wekan:"

View file

@ -31,6 +31,21 @@ 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 # ==== EMAIL DUE DATE NOTIFICATION =====
REM # https://github.com/wekan/wekan/pull/2536
REM # System timelines will be showing any user modification for
REM # dueat startat endat receivedat, also notification to
REM # the watchers and if any card is due, about due or past due.
REM # Notify due days, default 2 days before and after. 0 = due notifications disabled. Default: 2
REM SET NOTIFY_DUE_DAYS_BEFORE_AND_AFTER=2
REM # Notify due at hour of day. Default every morning at 8am. Can be 0-23.
REM # If env variable has parsing error, use default. Notification sent to watchers.
REM SET NOTIFY_DUE_AT_HOUR_OF_DAY=8
REM # ==== EMAIL NOTIFICATION TIMEOUT, ms =====
REM # Defaut: 30000 ms = 30s
REM SET EMAIL_NOTIFICATION_TIMEOUT=30000
REM # CORS: Set Access-Control-Allow-Origin header. Example: * REM # CORS: Set Access-Control-Allow-Origin header. Example: *
REM SET CORS=* REM SET CORS=*
REM # To enable the Set Access-Control-Allow-Headers header. "Authorization,Content-Type" is required for cross-origin use of the API. REM # To enable the Set Access-Control-Allow-Headers header. "Authorization,Content-Type" is required for cross-origin use of the API.

View file

@ -36,7 +36,24 @@
#export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3 #export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3
#export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60 #export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60
#export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 #export ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15
#--------------------------------------------- #---------------------------------------------------------------
# ==== EMAIL DUE DATE NOTIFICATION =====
# https://github.com/wekan/wekan/pull/2536
# System timelines will be showing any user modification for
# dueat startat endat receivedat, also notification to
# the watchers and if any card is due, about due or past due.
#
# Notify due days, default 2 days before and after. 0 = due notifications disabled. Default: 2
#export NOTIFY_DUE_DAYS_BEFORE_AND_AFTER=2
#
# Notify due at hour of day. Default every morning at 8am. Can be 0-23.
# If env variable has parsing error, use default. Notification sent to watchers.
#export NOTIFY_DUE_AT_HOUR_OF_DAY=8
#-----------------------------------------------------------------
# ==== EMAIL NOTIFICATION TIMEOUT, ms =====
# Defaut: 30000 ms = 30s
#export EMAIL_NOTIFICATION_TIMEOUT=30000
#-----------------------------------------------------------------
# CORS: Set Access-Control-Allow-Origin header. Example: * # CORS: Set Access-Control-Allow-Origin header. Example: *
#export CORS=* #export CORS=*
# To enable the Set Access-Control-Allow-Headers header. "Authorization,Content-Type" is required for cross-origin use of the API. # To enable the Set Access-Control-Allow-Headers header. "Authorization,Content-Type" is required for cross-origin use of the API.