mirror of
https://github.com/wekan/wekan.git
synced 2026-11-08 11:25:19 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26abb2d99d | ||
|
|
396ca6967e | ||
|
|
52ce6da32c | ||
|
|
e64942a909 | ||
|
|
b38e2fa35f | ||
|
|
16991498fb | ||
|
|
7ebdd1b68b | ||
|
|
79e61f6d64 | ||
|
|
a130e9b52b | ||
|
|
e103bf46dd | ||
|
|
92375c3c2b | ||
|
|
eacb310e59 | ||
|
|
4dbbb29573 | ||
|
|
73e690a5fe | ||
|
|
f2acf67cb6 | ||
|
|
637442563e | ||
|
|
8ae70ed0c0 | ||
|
|
240e05ba16 | ||
|
|
028dd9f0be | ||
|
|
33c2b4b74a | ||
|
|
8cba42efbe | ||
|
|
be2e002720 | ||
|
|
59c0b378a1 | ||
|
|
b68493b009 | ||
|
|
c777bf39d1 | ||
|
|
fa32010a65 | ||
|
|
a29e40359a | ||
|
|
549982b5e1 | ||
|
|
110030ac60 | ||
|
|
676591c317 | ||
|
|
22469ba18b | ||
|
|
6425e5bf04 | ||
|
|
eb62c7a0e4 | ||
|
|
2c20f7c6db | ||
|
|
44e0f897c9 | ||
|
|
3a6f99f47c | ||
|
|
31f8c54571 | ||
|
|
f516f12b13 | ||
|
|
8a37cabec4 | ||
|
|
d0a04522d0 | ||
|
|
7ada41e741 | ||
|
|
ea39cfbf5a | ||
|
|
7eea0207e4 | ||
|
|
68d2b470a7 | ||
|
|
47478ee2b4 | ||
|
|
3b49f10897 | ||
|
|
1f778a5d89 | ||
|
|
522ab40f43 | ||
|
|
e431ce8405 | ||
|
|
b40654cdfe | ||
|
|
b64715f70a | ||
|
|
c27a00a4a8 | ||
|
|
f5eccc1605 | ||
|
|
05c6e101ff | ||
|
|
1ed057daf3 | ||
|
|
ab944e51c7 | ||
|
|
d11082385f | ||
|
|
22d98fec38 | ||
|
|
870fd3d526 | ||
|
|
73a25775e1 | ||
|
|
9a9dbd26f9 | ||
|
|
09bdc666c6 | ||
|
|
cd8aa91aa8 | ||
|
|
fcb9e99528 | ||
|
|
c6a8b4bcbc | ||
|
|
6b88ae2ba2 | ||
|
|
e1478f2f45 | ||
|
|
a45b101193 | ||
|
|
8610f7356c | ||
|
|
3aedc24c2b | ||
|
|
7d1ab0a388 | ||
|
|
56a1617c7e | ||
|
|
7baa95fcab | ||
|
|
8f70ae1cd0 | ||
|
|
32fb38e539 | ||
|
|
dfe05cc924 | ||
|
|
3e77e27d7b | ||
|
|
c138212592 | ||
|
|
473e2c28c6 | ||
|
|
8d9df72114 | ||
|
|
ffdeed099e | ||
|
|
f56ac1d45e | ||
|
|
c898a3f5ea | ||
|
|
941fccd10a | ||
|
|
d971428f49 | ||
|
|
688de96615 | ||
|
|
ecfce447be | ||
|
|
4933bf8203 | ||
|
|
adaa3dcc58 | ||
|
|
e3a85df053 | ||
|
|
d72b436542 | ||
|
|
7f9aa75093 | ||
|
|
451f860b5d | ||
|
|
ee4a3b5b35 | ||
|
|
e1e2461e21 | ||
|
|
74b98a5ee4 | ||
|
|
e67f5b3967 | ||
|
|
6fdd3d6c53 | ||
|
|
089913ff4c | ||
|
|
55f084dc7d | ||
|
|
36cf471e69 | ||
|
|
ed03a9ccaf | ||
|
|
b9f74c5add | ||
|
|
4a45d32d4f | ||
|
|
b818f0e5cd | ||
|
|
0be4eff3f4 | ||
|
|
18087f756e | ||
|
|
30f50fc705 | ||
|
|
47468a4750 | ||
|
|
968a32164b | ||
|
|
3b936ff6e7 | ||
|
|
75d524f615 | ||
|
|
fac3ff9c37 | ||
|
|
f4e315cf52 | ||
|
|
021db14a43 | ||
|
|
6215e3b584 | ||
|
|
a781c0e7dc | ||
|
|
922452fe41 | ||
|
|
c22e71e3a2 | ||
|
|
e01fd2b158 | ||
|
|
2d652df176 | ||
|
|
777c8c1ae1 | ||
|
|
edcc937a6b | ||
|
|
873d8f16d8 | ||
|
|
9a505c7ccc | ||
|
|
65a231a040 | ||
|
|
daa57fd05e | ||
|
|
72fa2972f0 | ||
|
|
00826660b4 | ||
|
|
8b12018e26 | ||
|
|
86814a0fd8 | ||
|
|
1a35db62b1 | ||
|
|
894ce65a79 | ||
|
|
e60eddda04 | ||
|
|
d9c26c7c49 | ||
|
|
e5ddee13c1 | ||
|
|
a415becbf7 | ||
|
|
80312d3052 | ||
|
|
1f216f5bff | ||
|
|
2c99d1cecb | ||
|
|
427eb8ebd1 | ||
|
|
ac67a25891 | ||
|
|
a5cb55935b | ||
|
|
2a190fdc19 | ||
|
|
66fa59d715 | ||
|
|
7f91055d8c | ||
|
|
29f153d71d | ||
|
|
7c80a34cf2 | ||
|
|
41cdfa4496 | ||
|
|
e83945c1a6 | ||
|
|
a15c54833f | ||
|
|
cb2a683f0a | ||
|
|
db0c91fee5 | ||
|
|
7d754a137c | ||
|
|
8ea9780140 | ||
|
|
925099a1ee | ||
|
|
16a2cc6ba9 | ||
|
|
94bc6d8e45 | ||
|
|
da28af516d | ||
|
|
73b5bbfc9e | ||
|
|
e2dde19db2 | ||
|
|
f421d135a6 | ||
|
|
ae4232465b | ||
|
|
112b628a99 | ||
|
|
bf313ca842 | ||
|
|
a0da05c660 | ||
|
|
394149b2e0 | ||
|
|
9ce51d8db2 | ||
|
|
76591632c5 | ||
|
|
b03ea37944 | ||
|
|
6e490b0f8d | ||
|
|
32e50b869d | ||
|
|
6a38b9fb0f | ||
|
|
1f059898ca | ||
|
|
cb4ce5cddf | ||
|
|
7dfb1eb6ce | ||
|
|
9857d4a5bf | ||
|
|
73f943f89a | ||
|
|
d5308d2d04 | ||
|
|
b62221504d | ||
|
|
9d5af24e7b | ||
|
|
fe20a5b54e | ||
|
|
b068d07ce5 | ||
|
|
a494c768f2 | ||
|
|
7b94188f64 | ||
|
|
249d3b0739 | ||
|
|
e181f3a385 | ||
|
|
90797066e7 | ||
|
|
13711f02b6 | ||
|
|
f8adc3605a | ||
|
|
f75fd82339 | ||
|
|
45edeccef9 | ||
|
|
6ffde36d84 | ||
|
|
17aa702860 | ||
|
|
4c7f1090fd | ||
|
|
baf1ddc8e5 | ||
|
|
38b1301258 | ||
|
|
f295f42363 | ||
|
|
0716eba84e | ||
|
|
c47d5ca64e | ||
|
|
7d48fe4c23 | ||
|
|
f4a6ce9f31 | ||
|
|
c769bed7dd | ||
|
|
b1525d4221 | ||
|
|
4153fe7d0d | ||
|
|
c570e426a1 | ||
|
|
271877565b | ||
|
|
d6b960f79a | ||
|
|
be938ebd4b | ||
|
|
558d406148 | ||
|
|
f61b9239de | ||
|
|
409bd50d67 | ||
|
|
48dcd11af0 | ||
|
|
08afc05c38 | ||
|
|
28e97808f5 | ||
|
|
8a1c2e8860 | ||
|
|
4b22174183 | ||
|
|
9bf3b960a1 | ||
|
|
fa58d0ec3b | ||
|
|
03f7fd6340 | ||
|
|
d48068f63c |
No files matched your search
@@ -20,6 +20,7 @@ ENV \
|
||||
SRC_PATH=./ \
|
||||
WITH_API=true \
|
||||
RESULTS_PER_PAGE="" \
|
||||
DEFAULT_BOARD_ID="" \
|
||||
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3 \
|
||||
ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60 \
|
||||
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15 \
|
||||
|
||||
@@ -7,7 +7,7 @@ If you can not login for any reason: https://github.com/wekan/wekan/wiki/Forgot-
|
||||
Email settings, only SMTP MAIL_URL and MAIL_FROM are in use: https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
|
||||
|
||||
The following types of issues should be reported separately:
|
||||
- SECURITY ISSUES: https://github.com/wekan/wekan/blob/master/SECURITY.md
|
||||
- SECURITY ISSUES: https://github.com/wekan/wekan/blob/main/SECURITY.md
|
||||
- UCS: https://github.com/wekan/univention/issues
|
||||
-->
|
||||
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [master]
|
||||
pull_request:
|
||||
# The branches below must be a subset of the branches above
|
||||
branches: [master]
|
||||
schedule:
|
||||
- cron: '0 16 * * 3'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
permissions:
|
||||
actions: read # for github/codeql-action/init to get workflow details
|
||||
contents: read # for actions/checkout to fetch code
|
||||
security-events: write # for github/codeql-action/autobuild to send a status report
|
||||
name: Analyze
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# Override automatic language detection by changing the below list
|
||||
# Supported options are ['csharp', 'cpp', 'go', 'java', 'javascript', 'python']
|
||||
language: ['javascript', 'python']
|
||||
# Learn more...
|
||||
# https://docs.github.com/en/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#overriding-automatic-language-detection
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
# We must fetch at least the immediate parents so that if this is
|
||||
# a pull request then we can checkout the head.
|
||||
fetch-depth: 2
|
||||
|
||||
# If this run was triggered by a pull request event, then checkout
|
||||
# the head of the pull request instead of the merge commit.
|
||||
- run: git checkout HEAD^2
|
||||
if: ${{ github.event_name == 'pull_request' }}
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v2
|
||||
|
||||
# ℹ️ Command-line programs to run using the OS shell.
|
||||
# 📚 https://git.io/JvXDl
|
||||
|
||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
||||
# and modify them (or add more) to build your code if your project
|
||||
# uses a compiled language
|
||||
|
||||
#- run: |
|
||||
# make bootstrap
|
||||
# make release
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
@@ -9,6 +9,6 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: 'Checkout Repository'
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
- name: 'Dependency Review'
|
||||
uses: actions/dependency-review-action@v3
|
||||
@@ -9,11 +9,11 @@ on:
|
||||
schedule:
|
||||
- cron: '28 23 * * *'
|
||||
push:
|
||||
branches: [ master ]
|
||||
branches: [ main ]
|
||||
# Publish semver tags as releases.
|
||||
tags: [ 'v*.*.*' ]
|
||||
pull_request:
|
||||
branches: [ master ]
|
||||
branches: [ main ]
|
||||
|
||||
env:
|
||||
# Use docker.io for Docker Hub if empty
|
||||
@@ -32,13 +32,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Login against a Docker registry except on PR
|
||||
# https://github.com/docker/login-action
|
||||
- name: Log into registry ${{ env.REGISTRY }}
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@465a07811f14bebb1938fbed4728c6a1ff8901fc
|
||||
uses: docker/login-action@343f7c4344506bcbf9b4de18042ae17996df046d
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
@@ -48,14 +48,14 @@ jobs:
|
||||
# https://github.com/docker/metadata-action
|
||||
- name: Extract Docker metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@818d4b7b91585d195f67373fd9cb0332e31a7175
|
||||
uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
|
||||
# Build and push Docker image with Buildx (don't push on PR)
|
||||
# https://github.com/docker/build-push-action
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@2eb1c1961a95fc15694676618e422e8ba1d63825
|
||||
uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09
|
||||
with:
|
||||
context: .
|
||||
push: ${{ github.event_name != 'pull_request' }}
|
||||
|
||||
@@ -3,7 +3,7 @@ name: Docker Image CI
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -15,6 +15,6 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
- name: Build the Docker image
|
||||
run: docker build . --file Dockerfile --tag wekan:$(date +%s)
|
||||
@@ -3,7 +3,7 @@ name: Release Charts
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -15,7 +15,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ name: Test suite
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
pull_request:
|
||||
|
||||
permissions:
|
||||
@@ -18,7 +18,7 @@ jobs:
|
||||
# runs-on: ubuntu-latest
|
||||
# steps:
|
||||
# - name: checkout
|
||||
# uses: actions/checkout@v3
|
||||
# uses: actions/checkout@v4
|
||||
#
|
||||
# - name: setup node
|
||||
# uses: actions/setup-node@v1
|
||||
@@ -42,7 +42,7 @@ jobs:
|
||||
# needs: [lintcode]
|
||||
# steps:
|
||||
# - name: checkout
|
||||
# uses: actions/checkout@v3
|
||||
# uses: actions/checkout@v4
|
||||
#
|
||||
# - name: setup node
|
||||
# uses: actions/setup-node@v1
|
||||
@@ -65,7 +65,7 @@ jobs:
|
||||
# needs: [lintcode,lintstyle]
|
||||
# steps:
|
||||
# - name: checkout
|
||||
# uses: actions/checkout@v3
|
||||
# uses: actions/checkout@v4
|
||||
#
|
||||
# - name: setup node
|
||||
# uses: actions/setup-node@v1
|
||||
@@ -90,7 +90,7 @@ jobs:
|
||||
|
||||
# CHECKOUTS
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# CACHING
|
||||
- name: Install Meteor
|
||||
@@ -147,7 +147,7 @@ jobs:
|
||||
needs: [tests]
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Download coverage
|
||||
uses: actions/download-artifact@v3
|
||||
|
||||
+6
-85
@@ -16,7 +16,6 @@ es5-shim@4.8.0
|
||||
|
||||
# Collections
|
||||
aldeed:collection2
|
||||
cfs:standard-packages
|
||||
cottz:publish-relations
|
||||
dburles:collection-helpers
|
||||
idmontie:migrations
|
||||
@@ -54,91 +53,11 @@ raix:handlebar-helpers
|
||||
http@2.0.0! # force new http package
|
||||
|
||||
# Datepicker
|
||||
rajit:bootstrap3-datepicker
|
||||
rajit:bootstrap3-datepicker-de
|
||||
rajit:bootstrap3-datepicker-tr
|
||||
rajit:bootstrap3-datepicker-ja
|
||||
rajit:bootstrap3-datepicker-fr
|
||||
rajit:bootstrap3-datepicker-it
|
||||
rajit:bootstrap3-datepicker-th
|
||||
rajit:bootstrap3-datepicker-nl
|
||||
rajit:bootstrap3-datepicker-es
|
||||
rajit:bootstrap3-datepicker-lv
|
||||
rajit:bootstrap3-datepicker-sv
|
||||
rajit:bootstrap3-datepicker-gl
|
||||
rajit:bootstrap3-datepicker-eu
|
||||
rajit:bootstrap3-datepicker-vi
|
||||
rajit:bootstrap3-datepicker-no
|
||||
rajit:bootstrap3-datepicker-en-gb
|
||||
rajit:bootstrap3-datepicker-ro
|
||||
rajit:bootstrap3-datepicker-rs
|
||||
rajit:bootstrap3-datepicker-ru
|
||||
rajit:bootstrap3-datepicker-bs
|
||||
rajit:bootstrap3-datepicker-mn
|
||||
rajit:bootstrap3-datepicker-id
|
||||
rajit:bootstrap3-datepicker-fa
|
||||
rajit:bootstrap3-datepicker-ko
|
||||
rajit:bootstrap3-datepicker-pt
|
||||
rajit:bootstrap3-datepicker-sl
|
||||
rajit:bootstrap3-datepicker-sq
|
||||
rajit:bootstrap3-datepicker-cy
|
||||
rajit:bootstrap3-datepicker-ka
|
||||
rajit:bootstrap3-datepicker-sr
|
||||
rajit:bootstrap3-datepicker-az
|
||||
rajit:bootstrap3-datepicker-cs
|
||||
rajit:bootstrap3-datepicker-me
|
||||
rajit:bootstrap3-datepicker-ta
|
||||
rajit:bootstrap3-datepicker-eo
|
||||
rajit:bootstrap3-datepicker-oc
|
||||
rajit:bootstrap3-datepicker-he
|
||||
rajit:bootstrap3-datepicker-sw
|
||||
rajit:bootstrap3-datepicker-rs-latin
|
||||
rajit:bootstrap3-datepicker-da
|
||||
rajit:bootstrap3-datepicker-pt-br
|
||||
rajit:bootstrap3-datepicker-br
|
||||
rajit:bootstrap3-datepicker-it-ch
|
||||
rajit:bootstrap3-datepicker-en-za
|
||||
rajit:bootstrap3-datepicker-en-ie
|
||||
rajit:bootstrap3-datepicker-en-ca
|
||||
rajit:bootstrap3-datepicker-uz-latn
|
||||
rajit:bootstrap3-datepicker-ms
|
||||
rajit:bootstrap3-datepicker-uk
|
||||
rajit:bootstrap3-datepicker-hu
|
||||
rajit:bootstrap3-datepicker-fo
|
||||
rajit:bootstrap3-datepicker-kr
|
||||
rajit:bootstrap3-datepicker-hi
|
||||
rajit:bootstrap3-datepicker-km
|
||||
rajit:bootstrap3-datepicker-fi
|
||||
rajit:bootstrap3-datepicker-is
|
||||
rajit:bootstrap3-datepicker-kh
|
||||
rajit:bootstrap3-datepicker-bg
|
||||
rajit:bootstrap3-datepicker-bn
|
||||
rajit:bootstrap3-datepicker-pl
|
||||
rajit:bootstrap3-datepicker-et
|
||||
rajit:bootstrap3-datepicker-ar
|
||||
rajit:bootstrap3-datepicker-ca
|
||||
rajit:bootstrap3-datepicker-kk
|
||||
rajit:bootstrap3-datepicker-sk
|
||||
rajit:bootstrap3-datepicker-el
|
||||
rajit:bootstrap3-datepicker-hy
|
||||
rajit:bootstrap3-datepicker-hr
|
||||
rajit:bootstrap3-datepicker-tg
|
||||
rajit:bootstrap3-datepicker-nb
|
||||
rajit:bootstrap3-datepicker-mk
|
||||
rajit:bootstrap3-datepicker-nl-be
|
||||
rajit:bootstrap3-datepicker-zh-cn
|
||||
rajit:bootstrap3-datepicker-ar-tn
|
||||
rajit:bootstrap3-datepicker-en-au
|
||||
rajit:bootstrap3-datepicker-fr-ch
|
||||
rajit:bootstrap3-datepicker-zh-tw
|
||||
rajit:bootstrap3-datepicker-uz-cyrl
|
||||
rajit:bootstrap3-datepicker-sr-latin
|
||||
rajit:bootstrap3-datepicker-en-nz
|
||||
wekan-bootstrap-datepicker
|
||||
|
||||
# UI components
|
||||
ostrio:i18n
|
||||
reactive-var@1.0.12
|
||||
fortawesome:fontawesome
|
||||
mousetrap:mousetrap
|
||||
mquandalle:jquery-textcomplete
|
||||
mquandalle:mousetrap-bindglobal
|
||||
@@ -147,8 +66,6 @@ meteor-autosize
|
||||
shell-server@0.5.0
|
||||
email@2.2.5
|
||||
dynamic-import@0.7.3
|
||||
cfs:gridfs
|
||||
rzymek:fullcalendar
|
||||
msavin:usercache
|
||||
# Keep stylus in 1.1.0, because building v2 takes extra 52 minutes.
|
||||
meteorhacks:subs-manager
|
||||
@@ -156,7 +73,6 @@ meteorhacks:aggregate@1.3.0
|
||||
wekan-markdown
|
||||
konecty:mongo-counter
|
||||
percolate:synced-cron
|
||||
cfs:filesystem
|
||||
ostrio:cookies
|
||||
ostrio:files@2.3.0
|
||||
pascoual:pdfkit
|
||||
@@ -173,3 +89,8 @@ minifier-css@1.6.4
|
||||
blaze
|
||||
kadira:blaze-layout
|
||||
peerlibrary:blaze-components
|
||||
ejson@1.1.3
|
||||
logging@1.3.2
|
||||
wekan-fullcalendar
|
||||
momentjs:moment@2.29.3
|
||||
wekan-fontawesome
|
||||
+1
-1
@@ -1 +1 @@
|
||||
METEOR@2.13
|
||||
METEOR@2.13.3
|
||||
+4
-102
@@ -20,24 +20,6 @@ boilerplate-generator@1.7.1
|
||||
caching-compiler@1.2.2
|
||||
caching-html-compiler@1.2.1
|
||||
callback-hook@1.5.1
|
||||
cfs:access-point@0.1.49
|
||||
cfs:base-package@0.0.30
|
||||
cfs:collection@0.5.5
|
||||
cfs:collection-filters@0.2.4
|
||||
cfs:data-man@0.0.6
|
||||
cfs:file@0.1.17
|
||||
cfs:filesystem@0.1.2
|
||||
cfs:gridfs@0.0.34
|
||||
cfs:http-methods@0.0.32
|
||||
cfs:http-publish@0.0.13
|
||||
cfs:power-queue@0.9.11
|
||||
cfs:reactive-list@0.0.9
|
||||
cfs:reactive-property@0.0.4
|
||||
cfs:standard-packages@0.5.10
|
||||
cfs:storage-adapter@0.2.4
|
||||
cfs:tempstore@0.1.6
|
||||
cfs:upload-http@0.0.20
|
||||
cfs:worker@0.1.5
|
||||
check@1.3.2
|
||||
coffeescript@2.7.0
|
||||
coffeescript-compiler@2.4.1
|
||||
@@ -63,7 +45,6 @@ ejson@1.1.3
|
||||
email@2.2.5
|
||||
es5-shim@4.8.0
|
||||
fetch@0.1.3
|
||||
fortawesome:fontawesome@4.7.0
|
||||
geojson-utils@1.0.11
|
||||
hot-code-push@1.0.4
|
||||
html-tools@1.1.3
|
||||
@@ -77,11 +58,10 @@ kadira:blaze-layout@2.3.0
|
||||
kadira:dochead@1.5.0
|
||||
kadira:flow-router@2.12.1
|
||||
konecty:mongo-counter@0.0.5_3
|
||||
livedata@1.0.18
|
||||
lmieulet:meteor-coverage@1.1.4
|
||||
localstorage@1.2.0
|
||||
logging@1.3.2
|
||||
matb33:collection-hooks@1.2.2
|
||||
matb33:collection-hooks@1.3.0
|
||||
mdg:validation-error@0.5.1
|
||||
meteor@1.11.3
|
||||
meteor-autosize@5.0.1
|
||||
@@ -135,86 +115,6 @@ percolate:synced-cron@1.3.2
|
||||
promise@0.12.2
|
||||
raix:eventemitter@0.1.3
|
||||
raix:handlebar-helpers@0.2.5
|
||||
rajit:bootstrap3-datepicker@1.7.1_1
|
||||
rajit:bootstrap3-datepicker-ar@1.7.1
|
||||
rajit:bootstrap3-datepicker-ar-tn@1.7.1
|
||||
rajit:bootstrap3-datepicker-az@1.7.1
|
||||
rajit:bootstrap3-datepicker-bg@1.7.1
|
||||
rajit:bootstrap3-datepicker-bn@1.7.1
|
||||
rajit:bootstrap3-datepicker-br@1.7.1
|
||||
rajit:bootstrap3-datepicker-bs@1.7.1
|
||||
rajit:bootstrap3-datepicker-ca@1.7.1
|
||||
rajit:bootstrap3-datepicker-cs@1.7.1
|
||||
rajit:bootstrap3-datepicker-cy@1.7.1
|
||||
rajit:bootstrap3-datepicker-da@1.7.1
|
||||
rajit:bootstrap3-datepicker-de@1.7.1
|
||||
rajit:bootstrap3-datepicker-el@1.7.1
|
||||
rajit:bootstrap3-datepicker-en-au@1.7.1
|
||||
rajit:bootstrap3-datepicker-en-ca@1.7.1
|
||||
rajit:bootstrap3-datepicker-en-gb@1.7.1
|
||||
rajit:bootstrap3-datepicker-en-ie@1.7.1
|
||||
rajit:bootstrap3-datepicker-en-nz@1.7.1
|
||||
rajit:bootstrap3-datepicker-en-za@1.7.1
|
||||
rajit:bootstrap3-datepicker-eo@1.7.1
|
||||
rajit:bootstrap3-datepicker-es@1.7.1
|
||||
rajit:bootstrap3-datepicker-et@1.7.1
|
||||
rajit:bootstrap3-datepicker-eu@1.7.1
|
||||
rajit:bootstrap3-datepicker-fa@1.7.1
|
||||
rajit:bootstrap3-datepicker-fi@1.7.1
|
||||
rajit:bootstrap3-datepicker-fo@1.7.1
|
||||
rajit:bootstrap3-datepicker-fr@1.7.1
|
||||
rajit:bootstrap3-datepicker-fr-ch@1.7.1
|
||||
rajit:bootstrap3-datepicker-gl@1.7.1
|
||||
rajit:bootstrap3-datepicker-he@1.7.1
|
||||
rajit:bootstrap3-datepicker-hi@1.7.1
|
||||
rajit:bootstrap3-datepicker-hr@1.7.1
|
||||
rajit:bootstrap3-datepicker-hu@1.7.1
|
||||
rajit:bootstrap3-datepicker-hy@1.7.1
|
||||
rajit:bootstrap3-datepicker-id@1.7.1
|
||||
rajit:bootstrap3-datepicker-is@1.7.1
|
||||
rajit:bootstrap3-datepicker-it@1.7.1
|
||||
rajit:bootstrap3-datepicker-it-ch@1.7.1
|
||||
rajit:bootstrap3-datepicker-ja@1.7.1
|
||||
rajit:bootstrap3-datepicker-ka@1.7.1
|
||||
rajit:bootstrap3-datepicker-kh@1.7.1
|
||||
rajit:bootstrap3-datepicker-kk@1.7.1
|
||||
rajit:bootstrap3-datepicker-km@1.7.1
|
||||
rajit:bootstrap3-datepicker-ko@1.7.1
|
||||
rajit:bootstrap3-datepicker-kr@1.7.1
|
||||
rajit:bootstrap3-datepicker-lv@1.7.1
|
||||
rajit:bootstrap3-datepicker-me@1.7.1
|
||||
rajit:bootstrap3-datepicker-mk@1.7.1
|
||||
rajit:bootstrap3-datepicker-mn@1.7.1
|
||||
rajit:bootstrap3-datepicker-ms@1.7.1
|
||||
rajit:bootstrap3-datepicker-nb@1.7.1
|
||||
rajit:bootstrap3-datepicker-nl@1.7.1
|
||||
rajit:bootstrap3-datepicker-nl-be@1.7.1
|
||||
rajit:bootstrap3-datepicker-no@1.7.1
|
||||
rajit:bootstrap3-datepicker-oc@1.7.1
|
||||
rajit:bootstrap3-datepicker-pl@1.7.1
|
||||
rajit:bootstrap3-datepicker-pt@1.7.1
|
||||
rajit:bootstrap3-datepicker-pt-br@1.7.1
|
||||
rajit:bootstrap3-datepicker-ro@1.7.1
|
||||
rajit:bootstrap3-datepicker-rs@1.7.1
|
||||
rajit:bootstrap3-datepicker-rs-latin@1.7.1
|
||||
rajit:bootstrap3-datepicker-ru@1.7.1
|
||||
rajit:bootstrap3-datepicker-sk@1.7.1
|
||||
rajit:bootstrap3-datepicker-sl@1.7.1
|
||||
rajit:bootstrap3-datepicker-sq@1.7.1
|
||||
rajit:bootstrap3-datepicker-sr@1.7.1
|
||||
rajit:bootstrap3-datepicker-sr-latin@1.7.1
|
||||
rajit:bootstrap3-datepicker-sv@1.7.1
|
||||
rajit:bootstrap3-datepicker-sw@1.7.1
|
||||
rajit:bootstrap3-datepicker-ta@1.7.1
|
||||
rajit:bootstrap3-datepicker-tg@1.7.1
|
||||
rajit:bootstrap3-datepicker-th@1.7.1
|
||||
rajit:bootstrap3-datepicker-tr@1.7.1
|
||||
rajit:bootstrap3-datepicker-uk@1.7.1
|
||||
rajit:bootstrap3-datepicker-uz-cyrl@1.7.1
|
||||
rajit:bootstrap3-datepicker-uz-latn@1.7.1
|
||||
rajit:bootstrap3-datepicker-vi@1.7.1
|
||||
rajit:bootstrap3-datepicker-zh-cn@1.7.1
|
||||
rajit:bootstrap3-datepicker-zh-tw@1.7.1
|
||||
random@1.2.1
|
||||
rate-limit@1.1.1
|
||||
react-fast-refresh@0.2.7
|
||||
@@ -223,7 +123,6 @@ reactive-var@1.0.12
|
||||
reload@1.3.1
|
||||
retry@1.1.0
|
||||
routepolicy@1.1.1
|
||||
rzymek:fullcalendar@3.8.0
|
||||
service-configuration@1.3.1
|
||||
session@1.2.1
|
||||
sha@1.0.9
|
||||
@@ -255,6 +154,9 @@ wekan-accounts-cas@0.1.0
|
||||
wekan-accounts-lockout@1.0.0
|
||||
wekan-accounts-oidc@1.0.10
|
||||
wekan-accounts-sandstorm@0.8.0
|
||||
wekan-bootstrap-datepicker@1.10.0
|
||||
wekan-fontawesome@6.4.2
|
||||
wekan-fullcalendar@3.10.5
|
||||
wekan-ldap@0.0.2
|
||||
wekan-markdown@1.0.9
|
||||
wekan-oidc@1.0.12
|
||||
|
||||
+205
-5
@@ -20,6 +20,204 @@ Note:
|
||||
|
||||
[How to upgrade WeKan](https://github.com/wekan/wekan/issues/4585)
|
||||
|
||||
# v7.10 2023-09-29 WeKan ® release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- At opened card, toggle to show checklist at minicard.
|
||||
[Part 1](https://github.com/wekan/wekan/commit/2a190fdc194ac2fc2d8086521c5a3eaa2aff0641),
|
||||
[Part 2](https://github.com/wekan/wekan/commit/2c99d1cecbaab8556b65bce857b8d93c2cc62c37),
|
||||
[Part 3](https://github.com/wekan/wekan/commit/80312d30520840145ee24042aca3ebeda3260d99),
|
||||
[Part 4](https://github.com/wekan/wekan/commit/86814a0fd8615fde1867dcf2841b6a24fcfb105b),
|
||||
[Part 5](https://github.com/wekan/wekan/commit/75d524f61558b2b6003220c43aa23adb142da91d),
|
||||
[Part 6](https://github.com/wekan/wekan/commit/47468a475003c433db0fcc7735741e4548d6c19c).
|
||||
Thanks to xet7.
|
||||
- [Added show-subtasks-field to be translateable at Board Settings / Subtasks Settings](https://github.com/wekan/wekan/commit/e60eddda0440f49d769d73db212322d5ba994662).
|
||||
Thanks to xet7.
|
||||
- [After OIDC login, add users to board DEFAULT_BOARD_ID](https://github.com/wekan/wekan/pull/5098).
|
||||
Thanks to diegosteiner.
|
||||
- [Added DEFAULT_BOARD_ID environment variable setting to all WeKan platforms](https://github.com/wekan/wekan/commit/a781c0e7dcfdbe34c1483ee83cec12455b7026f7).
|
||||
Thanks to xet7.
|
||||
- [Make available translation text to set empty string](https://github.com/wekan/wekan/pull/5103).
|
||||
Thanks to ipyramiddev.
|
||||
- [Added a condition to filter unwanted webhooks](https://github.com/wekan/wekan/pull/5106).
|
||||
Thanks to ipyramiddev.
|
||||
- [Added docker-compose.yml-arm64](https://github.com/wekan/wekan/commit/e103bf46dd796b5c589b315ca68c7a60b5e388db).
|
||||
Thanks to xet7.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [In rebuild-wekan.sh, option 9 to Save Meteor dependency chain to ../meteor-deps.txt](https://github.com/wekan/wekan/commit/7c80a34cf238cbccfe4fed0fb92cf73ddff6beed).
|
||||
Thanks to xet7.
|
||||
- [Update FullCalendar version to 3.10.5](https://github.com/wekan/wekan/pull/5100).
|
||||
Thanks to helioguardabaxo.
|
||||
- [Renamed directory packages/meteor-fullcalendar to packages/wekan-fullcalendar](https://github.com/wekan/wekan/commit/2d652df176b63f7cc27e9de51fbf2f2cbd52ef34).
|
||||
Thanks to xet7.
|
||||
- [Removed old demo API key to silence GitHub secret scanning warning](https://github.com/wekan/wekan/commit/c22e71e3a2175260e483a08026e1ea3446dc77fa).
|
||||
Thanks to xet7.
|
||||
- [Added assetlinks.json](https://github.com/wekan/wekan/commit/74b98a5ee40564448906f41cf66f93ee73faaea1).
|
||||
Thanks to xet7.
|
||||
- [Update translations. Added Afrikaans (af), Afrikaans (South africa)(af_ZA), English (South Africa)(en_ZA)](https://github.com/wekan/wekan/commit/ee4a3b5b35ade479b8ddf7cdedf56aa1ef676b3f).
|
||||
Thanks to translators.
|
||||
- Updated dependencies.
|
||||
[Part 1](https://github.com/wekan/wekan/commit/4933bf8203dd615ca02963bd502a1cca2584bbac),
|
||||
[Part 2](https://github.com/wekan/wekan/pull/5119).
|
||||
[Part 3](https://github.com/wekan/wekan/pull/5129).
|
||||
Thanks to developers of dependencies.
|
||||
- [Update Font Awesome version to 6.4.2](https://github.com/wekan/wekan/pull/5125).
|
||||
Thanks to helioguardabaxo.
|
||||
- [Removed Font Awesome not in use directories svgs, scss and less](https://github.com/wekan/wekan/commit/473e2c28c6093403881515067e1b0560eddc85b2).
|
||||
Thanks to xet7.
|
||||
- [Add all Font Awesome characters](https://github.com/wekan/wekan/pull/5128).
|
||||
Thanks to helioguardabaxo.
|
||||
- [Update Bootstrap Datepicker version to 1.10.0](https://github.com/wekan/wekan/pull/5126).
|
||||
Thanks to helioguardabaxo.
|
||||
- [Removed non-existing sw translation and not needed files from bootstrap-datepicker](https://github.com/wekan/wekan/commit/dfe05cc924767e69f40a7332f0e0196ddf2bc8d5).
|
||||
Thanks to xet7.
|
||||
- [Upgraded to Meteor 2.13.3](https://github.com/wekan/wekan/commit/6b88ae2ba26427ab58597b580440e601fd77b320).
|
||||
Thanks to Meteor developers.
|
||||
- [Upgrade Snap Candidate to MongoDB 6.0.10](https://github.com/wekan/wekan/commit/522ab40f436be5656fd6fbd8057c6715afa2fa36).
|
||||
Thanks to MongoDB developers.
|
||||
- Renamed WeKan repo branch master to main.
|
||||
[Part 1](https://github.com/wekan/wekan/commit/549982b5e10c240fb2358c21b0781fef2e63a2ba),
|
||||
[Part 2](https://github.com/wekan/wekan/commit/fa32010a656a47a6fba9a625d6ab216c9b2034df),
|
||||
[Part 3](https://github.com/wekan/wekan/commit/b68493b009bbbb63cf26c9020299762c2a2717aa).
|
||||
Thanks to xet7.
|
||||
- [Use newest Docker build from newest main branch commit at docker-compose.yml](https://github.com/wekan/wekan/commit/8cba42efbefeac159c0c653b53f6464a2fc5ed09).
|
||||
Thanks to xet7.
|
||||
- [Removed disabled codeql-analysis workflow](https://github.com/wekan/wekan/commit/240e05ba1640e92de639ddded5c4a20b32a74d2a).
|
||||
Thanks to xet7.
|
||||
- [Updated versions at Dockerfile](https://github.com/wekan/wekan/commit/637442563ea843a89396d557db3327c1775e6a12).
|
||||
Thanks to xet7.
|
||||
- [Fixed arm64 Dockerfile](https://github.com/wekan/wekan/commit/73e690a5fee24707377d3fe7985c52947cbc8929).
|
||||
Thanks to manfromdownunder and xet7.
|
||||
- [Added Dockerfile for s390x](https://github.com/wekan/wekan/commit/eacb310e59e03b44b0249206b28e4cb3adf163d0).
|
||||
Thanks to xet7.
|
||||
- [Updated dependencies](https://github.com/wekan/wekan/commit/52ce6da32c54d8c65ed679072c64fda66e1606a0).
|
||||
Thanks to developers of dependencies.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Correctly display preview for very tall images](https://github.com/wekan/wekan/pull/5097).
|
||||
Thanks to VidVidex.
|
||||
- Replaced ldap logger https://www.npmjs.com/package/bunyan with https://docs.meteor.com/packages/logging.html, because bunyan did show dtrace errors when building WeKan.
|
||||
[Part 1](https://github.com/wekan/wekan/commit/e83945c1a6c08fe58f660bcd7b7f8494f629e913),
|
||||
[Part 2](https://github.com/wekan/wekan/commit/427eb8ebd16b847eb278cd319adb75adc5206e99).
|
||||
Thanks to xet7.
|
||||
- [Comment out warning about unset variable at ldap.js](https://github.com/wekan/wekan/commit/7f91055d8c7ed508b2f6fca111f17ec1353c445a).
|
||||
Thanks to xet7.
|
||||
- [Removed CollectionFS and and attachment migrations, because they prevented using MONGO_URL username/passwrod with MongoDB 6.x, CollectionFS forced old MongoDB driver](https://github.com/wekan/wekan/commit/3b936ff6e7ed733a65488f1384f868e17b8ab751).
|
||||
Thanks to xet7.
|
||||
- [Hide incomplete feature Show checklist at minicard](https://github.com/wekan/wekan/commit/75d524f61558b2b6003220c43aa23adb142da91d).
|
||||
Thanks to xet7.
|
||||
- [Fix for CalendarView, Create Card without Refresh](https://github.com/wekan/wekan/pull/5105).
|
||||
Thanks to DimDz.
|
||||
- [Active members list now is ordered](https://github.com/wekan/wekan/pull/5107).
|
||||
Thanks to helioguardabaxo.
|
||||
- [Removed limit when setting Swimlane max height](https://github.com/wekan/wekan/commit/7f9aa7509314a85a550dd16615429c5e030b5f2b).
|
||||
Thanks to Meeques, mark-i-m and xet7.
|
||||
- [Fixed Can't login via LDAP because of some Node.js issues](https://github.com/wekan/wekan/commit/c898a3f5ea689469f4e1003b90162bd4233b6aeb).
|
||||
Thanks to Danny-Graf and xet7.
|
||||
- [Stop using /etc/timezone in Docker. Only use /etc/localtime](https://github.com/wekan/wekan/commit/7baa95fcab5447a359c84a2139b1968f0332f683).
|
||||
Thanks to dabiao2008 and xet7.
|
||||
- [Fix createCardWithDueDate Error: User id is required](https://github.com/wekan/wekan/commit/7d1ab0a38875909de02230e70181a7ddb5187870).
|
||||
Thanks to xet7.
|
||||
- [Fix Swimlane Default title from "key default returned an object instead of string" to translated title of "Default"](https://github.com/wekan/wekan/commit/73a25775e1cb7b1f1b355707e21e3704b98ca9c5).
|
||||
Thanks to titho85, hpvb and xet7.
|
||||
- [Fix allow normal user to view subtasks at subtasks board](https://github.com/wekan/wekan/commit/22d98fec38dd16b4cc8ad0fdca8c2973e9779e08).
|
||||
Thanks to xet7.
|
||||
- [Fix minicard description text color to black, so that it is visible at light grey background](https://github.com/wekan/wekan/commit/ab944e51c728412d455d88b5714e84393eccb210).
|
||||
Thanks to xet7.
|
||||
- [Fix mini width of add list also to moderndark theme](https://github.com/wekan/wekan/commit/05c6e101ff32efb42365ac2ffbd802497d5199ac).
|
||||
Thanks to xet7.
|
||||
- [Fixed typo at ldap.js](https://github.com/wekan/wekan/commit/c27a00a4a872cca280ee07079f93941bbee9844f).
|
||||
Thanks to xet7.
|
||||
- [Try to get some label outgoing webhooks working](https://github.com/wekan/wekan/commit/b40654cdfea61cd7a0a6c7f5efca86b62b3a2cbd).
|
||||
Thanks to xet7.
|
||||
- [Fix missing Font Awesome icons](https://github.com/wekan/wekan/pull/5133).
|
||||
Thanks to helioguardabaxo.
|
||||
- [Font Awesome 6.4.2 adding missing icons](https://github.com/wekan/wekan/pull/5134).
|
||||
Thanks to mfilser.
|
||||
- [Make sessinAffinity stickable to clientIP](https://github.com/wekan/wekan/pull/5136).
|
||||
Thanks to Dexus.
|
||||
- [Users can't change their password since V7.02](https://github.com/wekan/wekan/pull/5146).
|
||||
Thanks to nebulade.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v7.09 2023-08-21 WeKan ® release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Move card to other boards API](https://github.com/wekan/wekan/pull/5090).
|
||||
Thanks to DimDz.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Upgraded Snap Candidate MongoDB to 6.0.9](https://github.com/wekan/wekan/commit/9d5af24e7b656c2bf6ad32bc8360bb80374408d6).
|
||||
Thanks to MongoDB developers.
|
||||
- Fixed building s390x release.
|
||||
[Part 1](https://github.com/wekan/wekan/commit/73f943f89a89374a83cdfb31f0bfbfdfe4d6f52e),
|
||||
[Part 2](https://github.com/wekan/wekan/commit/7dfb1eb6ce00166a6263f98b9bf975b8a84d1143).
|
||||
Thanks to xet7.
|
||||
- [ReactiveCache, use default parameters](https://github.com/wekan/wekan/pull/5091).
|
||||
Thanks to mfilser.
|
||||
- [ReactiveCache, serialize and parse json with EJSON](https://github.com/wekan/wekan/pull/5092).
|
||||
Thanks to mfilser.
|
||||
- [Translations are working on the client side again](https://github.com/wekan/wekan/pull/5093).
|
||||
Thanks to mfilser.
|
||||
- [ReactiveCache, full implementation of the collection "Translation"](https://github.com/wekan/wekan/pull/5094).
|
||||
Thanks to mfilser.
|
||||
- [Attachments, big images are now fully displayed](https://github.com/wekan/wekan/pull/5095).
|
||||
Thanks to mfilser.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v7.08 2023-08-17 WeKan ® release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Custom translation strings at Admin Panel](https://github.com/wekan/wekan/pull/5085).
|
||||
Thanks to ipyramiddev.
|
||||
- [Added remaining translations to feature custom translation strings at Admin Panel](https://github.com/wekan/wekan/commit/c769bed7dd6d61b5f56e0ec5d43c9f2662a156d2).
|
||||
Thanks to xet7.
|
||||
- [Corrected source code so that it works correctly with reactiveCache](https://github.com/wekan/wekan/pull/5087).
|
||||
Thanks to ipyramiddev.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- Updated release scripts.
|
||||
[Part 1](https://github.com/wekan/wekan/commit/558d406148eb47c27de9828b541f6081ceac224a),
|
||||
[Part 2](https://github.com/wekan/wekan/commit/d6b960f79a5cb9db83587fae7d9c83d2ee63d90c),
|
||||
[Part 3](https://github.com/wekan/wekan/commit/c570e426a1e6c4055a72a8ae6febce016c3eef5a),
|
||||
[Part 4](https://github.com/wekan/wekan/commit/c47d5ca64e8c9c8a977d7dca5aeb92afb2e62fe5),
|
||||
[Part 5](https://github.com/wekan/wekan/commit/7b94188f64e554be11bee244892a0cd9fefd0a9a),
|
||||
[Part 6](https://github.com/wekan/wekan/commit/b068d07ce56add0fbd02a4a23fcb14d77bd9fcfd).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix broken attachment preview in Safari](https://github.com/wekan/wekan/pull/5088).
|
||||
Thanks to VidVidex.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v7.07 2023-08-16 WeKan ® release
|
||||
|
||||
This release adds the following updates:
|
||||
|
||||
- [Update Windows bundle build script](https://github.com/wekan/wekan/commit/d48068f63c93fc5a9f8041acb220d6491b5e22ae).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix downloading attachments with unusual filenames](https://github.com/wekan/wekan/pull/5083).
|
||||
Thanks to VidVidex.
|
||||
- [Add some filename, if there is no filename after sanitize](https://github.com/wekan/wekan/commit/3d1a161c59a0cb4eafb50ab2fdb04443d54b2086).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v7.06 2023-08-15 WeKan ® release
|
||||
|
||||
This release adds the following updates:
|
||||
@@ -28,6 +226,8 @@ This release adds the following updates:
|
||||
Thanks to developers of dependencies.
|
||||
- [Update building Windows bundle](https://github.com/wekan/wekan/commit/6d1705af344a36e1cd7846c3d41e486ae0200e2e).
|
||||
Thanks to xet7.
|
||||
- [s390x disabled, because there is problem adding fibers](https://github.com/wekan/wekan/commit/9bf3b960a199ec8d65faab3061947d809144ebdc).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
@@ -2512,7 +2712,7 @@ and adds the following accessibility improvements:
|
||||
|
||||
- Made WeKan zoomable by recommendation of Axe browser extension
|
||||
https://github.com/wekan/wekan/issues/459#issuecomment-999098233 by changing meta viewport settings at
|
||||
https://github.com/wekan/wekan/blob/master/client/components/main/layouts.jade#L3 ,
|
||||
https://github.com/wekan/wekan/blob/main/client/components/main/layouts.jade#L3 ,
|
||||
in some commit of this WeKan v5.88.
|
||||
Thanks to xet7.
|
||||
|
||||
@@ -6366,7 +6566,7 @@ This release fixes the following CRITICAL SECURITY VULNERABILITIES:
|
||||
- [Fix XSS bug reported today 4 hours ago by Cyb3rjunky](https://github.com/wekan/wekan/commit/482682e50079d70c5113169020d6834013b57c11).
|
||||
Logged in users could run javascript in input fields.
|
||||
This affects Wekan versions v3.12-v3.84.
|
||||
In [Wekan v3.12](https://github.com/wekan/wekan/blob/master/CHANGELOG.md#v312-2019-08-09-wekan-release)
|
||||
In [Wekan v3.12](https://github.com/wekan/wekan/blob/main/CHANGELOG.md#v312-2019-08-09-wekan-release)
|
||||
there was [changes for XSS filter to allow inserting images, videos etc
|
||||
on comment WYSIWYG editor](https://github.com/wekan/wekan/pull/2593)
|
||||
so features related to that are now removed.
|
||||
@@ -8832,7 +9032,7 @@ This release adds the following new features:
|
||||
and fixes the following bugs:
|
||||
|
||||
- Revert [Sandstorm API changes](https://github.com/wekan/wekan/commit/be03a191c4321c2f80116c0ee1ae6c826d882535)
|
||||
that were done at [Wekan v2.05](https://github.com/wekan/wekan/blob/master/CHANGELOG.md#v205-2019-01-27-wekan-release)
|
||||
that were done at [Wekan v2.05](https://github.com/wekan/wekan/blob/main/CHANGELOG.md#v205-2019-01-27-wekan-release)
|
||||
to fix #2143. Thanks to pantraining and xet7.
|
||||
|
||||
Thanks to above GitHub users and translators for contributions.
|
||||
@@ -8979,7 +9179,7 @@ Update translations. Thanks to translators.
|
||||
This release adds the following new features:
|
||||
|
||||
- [IFTTT Rules improvements](https://github.com/wekan/wekan/pull/2088). Thanks to Angtrim.
|
||||
- Add [find.sh](https://github.com/wekan/wekan/blob/master/find.sh) bash script that ignores
|
||||
- Add [find.sh](https://github.com/wekan/wekan/blob/main/find.sh) bash script that ignores
|
||||
extra directories when searching. xet7 uses this a lot when developing. Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions.
|
||||
@@ -10490,7 +10690,7 @@ This release adds the following new features:
|
||||
|
||||
- [Checklist templates](https://github.com/wekan/wekan/pull/1470);
|
||||
- Added [Finnish language changelog](https://github.com/wekan/wekan/tree/devel/meta/t9n-changelog)
|
||||
and [more Finnish traslations](https://github.com/wekan/wekan/blob/master/sandstorm-pkgdef.capnp)
|
||||
and [more Finnish traslations](https://github.com/wekan/wekan/blob/main/sandstorm-pkgdef.capnp)
|
||||
to Sandstorm.
|
||||
|
||||
Thanks to GitHub users erikturk and xet7 for their contributions.
|
||||
|
||||
+3
-3
@@ -1,7 +1,7 @@
|
||||
## Contributing Security related
|
||||
|
||||
For responsible security disclosure, please follow this process:
|
||||
https://github.com/wekan/wekan/blob/master/SECURITY.md
|
||||
https://github.com/wekan/wekan/blob/main/SECURITY.md
|
||||
|
||||
CVE Hall of Fame is at https://wekan.github.io/hall-of-fame/
|
||||
|
||||
@@ -22,7 +22,7 @@ https://github.com/wekan/wekan/issues
|
||||
WeKan code contributors Hall of Fame is at ChangeLog, where
|
||||
GitHub usernames are mentioned with changes added:
|
||||
|
||||
https://github.com/wekan/wekan/blob/master/CHANGELOG.md
|
||||
https://github.com/wekan/wekan/blob/main/CHANGELOG.md
|
||||
|
||||
Changes can be like typo fixes, bugfixes, features, or anything else
|
||||
like for example at open GitHub issues https://github.com/wekan/wekan/issues .
|
||||
@@ -53,7 +53,7 @@ https://transifex.com/wekan/wekan
|
||||
When adding new features, in your PR to
|
||||
https://github.com/wekan/wekan/pulls
|
||||
only add new English source language strings
|
||||
to https://github.com/wekan/wekan/blob/master/imports/i18n/data/en.i18n.json
|
||||
to https://github.com/wekan/wekan/blob/main/imports/i18n/data/en.i18n.json
|
||||
|
||||
Maintainer of WeKan xet7 downloads all newest
|
||||
translations from Transifex and adds
|
||||
|
||||
+6
-5
@@ -22,15 +22,16 @@ ARG DEBIAN_FRONTEND=noninteractive
|
||||
ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-essential git ca-certificates python3" \
|
||||
DEBUG=false \
|
||||
NODE_VERSION=v14.21.4 \
|
||||
METEOR_RELEASE=METEOR@2.13 \
|
||||
METEOR_RELEASE=METEOR@2.13.3 \
|
||||
USE_EDGE=false \
|
||||
METEOR_EDGE=1.5-beta.17 \
|
||||
NPM_VERSION=latest \
|
||||
NPM_VERSION=9.8.1 \
|
||||
FIBERS_VERSION=4.0.1 \
|
||||
ARCHITECTURE=linux-x64 \
|
||||
SRC_PATH=./ \
|
||||
WITH_API=true \
|
||||
RESULTS_PER_PAGE="" \
|
||||
DEFAULT_BOARD_ID="" \
|
||||
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3 \
|
||||
ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60 \
|
||||
ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15 \
|
||||
@@ -210,7 +211,7 @@ RUN \
|
||||
#paxctl -mC `which node` && \
|
||||
\
|
||||
# Install Node dependencies. Python path for node-gyp.
|
||||
npm install -g npm@${NPM_VERSION} && \
|
||||
#npm install -g npm@${NPM_VERSION} && \
|
||||
\
|
||||
# Change user to wekan and install meteor
|
||||
cd /home/wekan/ && \
|
||||
@@ -229,11 +230,11 @@ RUN \
|
||||
mkdir -p /home/wekan/.npm && \
|
||||
chown wekan --recursive /home/wekan/.npm /home/wekan/.config /home/wekan/.meteor && \
|
||||
chmod u+w *.json && \
|
||||
gosu wekan:wekan npm install && \
|
||||
gosu wekan:wekan meteor npm install && \
|
||||
gosu wekan:wekan /home/wekan/.meteor/meteor build --directory /home/wekan/app_build && \
|
||||
cd /home/wekan/app_build/bundle/programs/server/ && \
|
||||
chmod u+w *.json && \
|
||||
gosu wekan:wekan npm install && \
|
||||
gosu wekan:wekan meteor npm install && \
|
||||
cd node_modules/fibers && \
|
||||
node build.js && \
|
||||
cd ../.. && \
|
||||
|
||||
+22
-36
@@ -1,24 +1,18 @@
|
||||
FROM amd64/alpine:3.7 AS builder
|
||||
FROM arm64v8/ubuntu:23.04 AS builder
|
||||
#FROM amd64/alpine:latest AS builder
|
||||
|
||||
# Set the environment variables for builder
|
||||
ENV QEMU_VERSION=v4.2.0-6 \
|
||||
ENV QEMU_VERSION=v7.2.0-1 \
|
||||
QEMU_ARCHITECTURE=aarch64 \
|
||||
NODE_ARCHITECTURE=linux-arm64 \
|
||||
NODE_VERSION=v14.21.4 \
|
||||
WEKAN_VERSION=latest \
|
||||
WEKAN_ARCHITECTURE=arm64 \
|
||||
NODE_OPTIONS="--max_old_space_size=4096"
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
# https://github.com/wekan/wekan/issues/3585#issuecomment-1021522132
|
||||
# Add more Node heap:
|
||||
# NODE_OPTIONS="--max_old_space_size=4096"
|
||||
# Add more stack:
|
||||
# bash -c "ulimit -s 65500; exec node --stack-size=65500 main.js"
|
||||
#---------------------------------------------------------------------
|
||||
WEKAN_ARCHITECTURE=arm64
|
||||
|
||||
# Install dependencies
|
||||
RUN apk update && apk add ca-certificates outils-sha1 && \
|
||||
#RUN apk update && apk add ca-certificates outils-sha1 && \
|
||||
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
|
||||
RUN apt update && apt install ca-certificates wget unzip -y && \
|
||||
\
|
||||
# Download qemu static for our architecture
|
||||
wget https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-${QEMU_ARCHITECTURE}-static.tar.gz -O - | tar -xz && \
|
||||
@@ -33,25 +27,27 @@ RUN apk update && apk add ca-certificates outils-sha1 && \
|
||||
unzip wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip && \
|
||||
\
|
||||
# Download node and shasums
|
||||
wget https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz && \
|
||||
wget https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/SHASUMS256.txt && \
|
||||
#wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz && \
|
||||
#wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
|
||||
#wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz && \
|
||||
#wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
|
||||
\
|
||||
# Verify nodejs authenticity
|
||||
grep node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz SHASUMS256.txt.asc | sha256sum -c - && \
|
||||
grep node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz SHASUMS256.txt | sha256sum -c - && \
|
||||
\
|
||||
# Extract node and remove tar.gz
|
||||
tar xvzf node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz
|
||||
|
||||
# Build wekan dockerfile
|
||||
FROM arm64v8/ubuntu:19.10
|
||||
FROM --platform=linux/arm64 arm64v8/ubuntu:23.04
|
||||
LABEL maintainer="wekan"
|
||||
|
||||
# Set the environment variables (defaults where required)
|
||||
ENV QEMU_ARCHITECTURE=aarch64 \
|
||||
NODE_ARCHITECTURE=linux-arm64 \
|
||||
NODE_VERSION=v14.21.3 \
|
||||
NODE_VERSION=v14.21.4 \
|
||||
NODE_ENV=production \
|
||||
NPM_VERSION=latest \
|
||||
WITH_API=true \
|
||||
@@ -77,30 +73,20 @@ RUN \
|
||||
ln -s /opt/nodejs/bin/node /usr/bin/node && \
|
||||
ln -s /opt/nodejs/bin/npm /usr/bin/npm && \
|
||||
mkdir -p /opt/nodejs/lib/node_modules/fibers/.node-gyp /root/.node-gyp/8.16.1 /home/wekan/.config && \
|
||||
chown wekan --recursive /home/wekan/.config && \
|
||||
\
|
||||
# Install Node dependencies
|
||||
npm install -g npm@${NPM_VERSION} && \
|
||||
\
|
||||
# Install Health Check dependencies
|
||||
apk add curl
|
||||
chown wekan --recursive /home/wekan/.config
|
||||
|
||||
HEALTHCHECK --start-period=30s --interval=30s --timeout=10s --retries=3 \
|
||||
CMD curl --fail "http://localhost:$PORT" || exit 1
|
||||
# \
|
||||
# # Install Node dependencies
|
||||
# #npm install -g npm@${NPM_VERSION} && \
|
||||
# \
|
||||
# # Install Health Check dependencies
|
||||
# #apk add curl
|
||||
#
|
||||
#HEALTHCHECK --start-period=30s --interval=30s --timeout=10s --retries=3 \
|
||||
# CMD curl --fail "http://localhost:$PORT" || exit 1
|
||||
|
||||
EXPOSE $PORT
|
||||
USER wekan
|
||||
|
||||
#---------------------------------------------------------------------
|
||||
# https://github.com/wekan/wekan/issues/3585#issuecomment-1021522132
|
||||
# Add more Node heap:
|
||||
# NODE_OPTIONS="--max_old_space_size=4096"
|
||||
# Add more stack:
|
||||
# bash -c "ulimit -s 65500; exec node --stack-size=65500 main.js"
|
||||
#---------------------------------------------------------------------
|
||||
#
|
||||
#CMD ["node", "/home/wekan/bundle/main.js"]
|
||||
|
||||
#CMD ["bash", "-c", "ulimit -s 65500; exec node --stack-size=65500 /home/wekan/bundle/main.js"]
|
||||
CMD ["bash", "-c", "ulimit -s 65500; exec node /home/wekan/bundle/main.js"]
|
||||
|
||||
@@ -0,0 +1,94 @@
|
||||
FROM arm64v8/ubuntu:23.04 AS builder
|
||||
#FROM --platform=linux/amd64 amd64/ubuntu:23.04 AS builder
|
||||
#FROM --platform=linux/amd64 ghcr.io/wekan/wekan:main AS builder
|
||||
#FROM arm64v8/ubuntu:23.04 AS builder
|
||||
#FROM amd64/alpine:latest AS builder
|
||||
|
||||
# Set the environment variables for builder
|
||||
ENV QEMU_VERSION=v7.2.0-1 \
|
||||
QEMU_ARCHITECTURE=s390x \
|
||||
NODE_ARCHITECTURE=linux-s390x \
|
||||
NODE_VERSION=v14.21.4 \
|
||||
WEKAN_VERSION=latest \
|
||||
WEKAN_ARCHITECTURE=s390x
|
||||
|
||||
# Install dependencies
|
||||
#RUN apk update && apk add ca-certificates outils-sha1 && \
|
||||
RUN echo 'debconf debconf/frontend select Noninteractive' | debconf-set-selections
|
||||
RUN apt update && apt install ca-certificates wget unzip -y && \
|
||||
\
|
||||
# Download qemu static for our architecture
|
||||
wget https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-${QEMU_ARCHITECTURE}-static.tar.gz -O - | tar -xz && \
|
||||
\
|
||||
# Download wekan and shasum
|
||||
wget https://releases.wekan.team/${WEKAN_ARCHITECTURE}/wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip && \
|
||||
wget https://releases.wekan.team/${WEKAN_ARCHITECTURE}/SHA256SUMS.txt && \
|
||||
# Verify wekan
|
||||
grep wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip SHA256SUMS.txt | sha256sum -c - && \
|
||||
\
|
||||
# Unzip wekan
|
||||
unzip wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip && \
|
||||
\
|
||||
# Download node and shasums
|
||||
wget https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz && \
|
||||
wget https://github.com/wekan/node-v14-esm/releases/download/${NODE_VERSION}/SHASUMS256.txt && \
|
||||
#wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz && \
|
||||
#wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
|
||||
#wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz && \
|
||||
#wget https://nodejs.org/dist/${NODE_VERSION}/SHASUMS256.txt.asc && \
|
||||
\
|
||||
# Verify nodejs authenticity
|
||||
grep node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz SHASUMS256.txt | sha256sum -c - && \
|
||||
\
|
||||
# Extract node and remove tar.gz
|
||||
tar xvzf node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz
|
||||
|
||||
# Build wekan dockerfile
|
||||
FROM --platform=linux/s390x s390x/ubuntu:23.04
|
||||
LABEL maintainer="wekan"
|
||||
|
||||
# Set the environment variables (defaults where required)
|
||||
ENV QEMU_ARCHITECTURE=s390x \
|
||||
NODE_ARCHITECTURE=linux-s390x \
|
||||
NODE_VERSION=v14.21.4 \
|
||||
NODE_ENV=production \
|
||||
NPM_VERSION=latest \
|
||||
WITH_API=true \
|
||||
PORT=8080 \
|
||||
ROOT_URL=http://localhost \
|
||||
MONGO_URL=mongodb://127.0.0.1:27017/wekan
|
||||
|
||||
# Copy qemu-static to image
|
||||
COPY --from=builder qemu-${QEMU_ARCHITECTURE}-static /usr/bin
|
||||
|
||||
# Copy the app to the image
|
||||
COPY --from=builder bundle /home/wekan/bundle
|
||||
|
||||
# Copy
|
||||
COPY --from=builder node-${NODE_VERSION}-${NODE_ARCHITECTURE} /opt/nodejs
|
||||
|
||||
RUN \
|
||||
set -o xtrace && \
|
||||
# Add non-root user wekan
|
||||
useradd --user-group --system --home-dir /home/wekan wekan && \
|
||||
\
|
||||
# Install Node
|
||||
ln -s /opt/nodejs/bin/node /usr/bin/node && \
|
||||
ln -s /opt/nodejs/bin/npm /usr/bin/npm && \
|
||||
mkdir -p /opt/nodejs/lib/node_modules/fibers/.node-gyp /root/.node-gyp/8.16.1 /home/wekan/.config && \
|
||||
chown wekan --recursive /home/wekan/.config
|
||||
|
||||
# \
|
||||
# # Install Node dependencies
|
||||
# #npm install -g npm@${NPM_VERSION} && \
|
||||
# \
|
||||
# # Install Health Check dependencies
|
||||
# #apk add curl
|
||||
#
|
||||
#HEALTHCHECK --start-period=30s --interval=30s --timeout=10s --retries=3 \
|
||||
# CMD curl --fail "http://localhost:$PORT" || exit 1
|
||||
|
||||
EXPOSE $PORT
|
||||
USER wekan
|
||||
|
||||
CMD ["bash", "-c", "ulimit -s 65500; exec node /home/wekan/bundle/main.js"]
|
||||
@@ -70,14 +70,14 @@ that by providing one-click installation on various platforms.
|
||||
[Mac](https://github.com/wekan/wekan/wiki/Mac) / [Windows](https://github.com/wekan/wekan/wiki/Install-Wekan-from-source-on-Windows).
|
||||
[More Platforms](https://github.com/wekan/wekan/wiki/Platforms), bundle for RasPi3 ARM and other CPUs where Node.js and MongoDB exists.
|
||||
- 1 GB RAM minimum free for WeKan ®. Production server should have minimum total 4 GB RAM.
|
||||
For thousands of users, for example with [Docker](https://github.com/wekan/wekan/blob/master/docker-compose.yml): 3 frontend servers,
|
||||
For thousands of users, for example with [Docker](https://github.com/wekan/wekan/blob/main/docker-compose.yml): 3 frontend servers,
|
||||
each having 2 CPU and 2 wekan-app containers. One backend wekan-db server with many CPUs.
|
||||
- Enough disk space and alerts about low disk space. If you run out disk space, MongoDB database gets corrupted.
|
||||
- SECURITY: Updating to newest WeKan ® version very often. Please check you do not have automatic updates of Sandstorm or Snap turned off.
|
||||
Old versions have security issues because of old versions Node.js etc. Only newest WeKan ® is supported.
|
||||
WeKan ® on Sandstorm is not usually affected by any Standalone WeKan ® (Snap/Docker/Source) security issues.
|
||||
- [Reporting all new bugs immediately](https://github.com/wekan/wekan/issues).
|
||||
New features and fixes are added to WeKan ® [many times a day](https://github.com/wekan/wekan/blob/master/CHANGELOG.md).
|
||||
New features and fixes are added to WeKan ® [many times a day](https://github.com/wekan/wekan/blob/main/CHANGELOG.md).
|
||||
- [Backups](https://github.com/wekan/wekan/wiki/Backup) of WeKan ® database once a day miminum.
|
||||
Bugs, updates, users deleting list or card, harddrive full, harddrive crash etc can eat your data. There is no undo yet.
|
||||
Some bug can cause WeKan ® board to not load at all, requiring manual fixing of database content.
|
||||
@@ -89,7 +89,7 @@ that by providing one-click installation on various platforms.
|
||||
[Developer Documentation][dev_docs]
|
||||
|
||||
- There is many companies and individuals contributing code to WeKan ®, to add features and bugfixes
|
||||
[many times a day](https://github.com/wekan/wekan/blob/master/CHANGELOG.md).
|
||||
[many times a day](https://github.com/wekan/wekan/blob/main/CHANGELOG.md).
|
||||
- [Please add Add new Feature Requests and Bug Reports immediately](https://github.com/wekan/wekan/issues).
|
||||
- [Commercial Support](https://wekan.team/commercial-support/).
|
||||
|
||||
|
||||
+4
-4
@@ -51,8 +51,8 @@ This also means all Standalone Wekan functionality works in offline local networ
|
||||
Wekan is used by companies that have [thousands of users](https://github.com/wekan/wekan/wiki/AWS) and at healthcare.
|
||||
|
||||
Wekan uses xss package for input fields like cards, as you can see from
|
||||
[package.json](https://github.com/wekan/wekan/blob/master/package.json). Other used versions can be seen from
|
||||
[Meteor versions file](https://github.com/wekan/wekan/blob/master/.meteor/versions).
|
||||
[package.json](https://github.com/wekan/wekan/blob/main/package.json). Other used versions can be seen from
|
||||
[Meteor versions file](https://github.com/wekan/wekan/blob/main/.meteor/versions).
|
||||
Forms can include markdown links, html, image tags etc like you see at https://wekan.github.io .
|
||||
It's possible to add attachments to cards, and markdown/html links to files.
|
||||
|
||||
@@ -69,7 +69,7 @@ access to outside of Wekan grain.
|
||||
Standalone Wekan only has password auth currently, there is work in progress to add
|
||||
[oauth2](https://github.com/wekan/wekan/pull/1578), [Openid](https://github.com/wekan/wekan/issues/538),
|
||||
[LDAP](https://github.com/wekan/wekan/issues/119) etc. If you need more login security for Standalone Wekan now,
|
||||
it's possible add additional [Google Auth proxybouncer](https://github.com/wekan/wekan/wiki/Let's-Encrypt-and-Google-Auth) in front of password auth, and then use Google Authenticator for Google Auth. Standalone Wekan does have [brute force protection with eluck:accounts-lockout and browser-policy clickjacking protection](https://github.com/wekan/wekan/blob/master/CHANGELOG.md#v080-2018-04-04-wekan-release). You can also optionally use some [WAF](https://en.wikipedia.org/wiki/Web_application_firewall)
|
||||
it's possible add additional [Google Auth proxybouncer](https://github.com/wekan/wekan/wiki/Let's-Encrypt-and-Google-Auth) in front of password auth, and then use Google Authenticator for Google Auth. Standalone Wekan does have [brute force protection with eluck:accounts-lockout and browser-policy clickjacking protection](https://github.com/wekan/wekan/blob/main/CHANGELOG.md#v080-2018-04-04-wekan-release). You can also optionally use some [WAF](https://en.wikipedia.org/wiki/Web_application_firewall)
|
||||
like for example [AWS WAF](https://aws.amazon.com/waf/).
|
||||
|
||||
[All Wekan Platforms](https://github.com/wekan/wekan/wiki/Platforms)
|
||||
@@ -106,7 +106,7 @@ a security issue, we'd like to know about it, and also how to fix it:
|
||||
Typical already known or "no impact" bugs such as:
|
||||
|
||||
- Brute force password guessing. Currently there is
|
||||
[brute force protection with eluck:accounts-lockout](https://github.com/wekan/wekan/blob/master/CHANGELOG.md#v080-2018-04-04-wekan-release).
|
||||
[brute force protection with eluck:accounts-lockout](https://github.com/wekan/wekan/blob/main/CHANGELOG.md#v080-2018-04-04-wekan-release).
|
||||
- Security issues related to that Wekan uses Meteor 1.6.0.1 related packages, and upgrading to newer
|
||||
Meteor 1.6.1 is complicated process that requires lots of changes to many dependency packages.
|
||||
Upgrading [has been tried many times, spending a lot of time](https://github.com/meteor/meteor/issues/9609)
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v7.06.0"
|
||||
appVersion: "v7.10.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -320,7 +320,7 @@ BlazeComponent.extendComponent({
|
||||
calendarOptions() {
|
||||
return {
|
||||
id: 'calendar-view',
|
||||
defaultView: 'agendaDay',
|
||||
defaultView: 'month',
|
||||
editable: true,
|
||||
selectable: true,
|
||||
timezone: 'local',
|
||||
|
||||
@@ -1740,10 +1740,19 @@
|
||||
background: #666;
|
||||
border-radius: 0;
|
||||
border: 0px solid #666;
|
||||
flex: 0 0 265px;
|
||||
}
|
||||
.board-color-moderndark .swimlane .list:first-child {
|
||||
margin-left: 0;
|
||||
color: #eee;
|
||||
min-width: 20px;
|
||||
margin-left: 0px;
|
||||
border-left: none;
|
||||
}
|
||||
.board-color-moderndark .swimlane .list-composer .list-header-add .inlined-form .edit-controls .quiet,
|
||||
.board-color-moderndark .swimlane .list-composer .list-header-add .inlined-form .edit-controls .quiet a.js-list-template {
|
||||
color: #eee;
|
||||
}
|
||||
.board-color-moderndark .swimlane .list:nth-child {
|
||||
flex: 0 0 265px;
|
||||
}
|
||||
.board-color-moderndark .swimlane .list:nth-child(even) .list-header,
|
||||
.board-color-moderndark .swimlane .list:nth-child(even) .list-body {
|
||||
@@ -1811,6 +1820,7 @@
|
||||
.board-color-moderndark .list .list-composer .open-list-composer i {
|
||||
color: #bbb;
|
||||
}
|
||||
.board-color-moderndark .swimlane .list:first-child .open-list-composer:hover i,
|
||||
.board-color-moderndark .list-body a.open-minicard-composer:hover,
|
||||
.board-color-moderndark .list-body a.open-minicard-composer:hover i,
|
||||
.board-color-moderndark .list .list-composer .open-list-composer:hover i {
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
min-width: 150px;
|
||||
max-height: 150px;
|
||||
padding-right: 16px;
|
||||
|
||||
}
|
||||
.attachment-thumbnail {
|
||||
max-width: 150px;
|
||||
@@ -78,10 +77,10 @@
|
||||
width: 100%;
|
||||
height: 100vh;
|
||||
position: fixed;
|
||||
top: 48px; /* height of the navbar */
|
||||
top: 0;
|
||||
left: 0;
|
||||
z-index: 9999 !important;
|
||||
background: rgba(13,13,13,0.95);
|
||||
background: rgba(13, 13, 13, 0.95);
|
||||
}
|
||||
#viewer-container {
|
||||
display: flex;
|
||||
@@ -99,10 +98,12 @@
|
||||
#attachment-name {
|
||||
color: white;
|
||||
font-size: 1.5em;
|
||||
max-width: calc(100% - 50px); /* Make sure the name does not overlap the close button */
|
||||
max-width: calc(
|
||||
100% - 50px
|
||||
); /* Make sure the name does not overlap the close button */
|
||||
}
|
||||
#viewer-close {
|
||||
color:white;
|
||||
color: white;
|
||||
cursor: pointer;
|
||||
font-size: 4em;
|
||||
top: 0;
|
||||
@@ -111,25 +112,32 @@
|
||||
}
|
||||
.attachment-arrow {
|
||||
font-size: 4em;
|
||||
color:white;
|
||||
color: white;
|
||||
cursor: pointer;
|
||||
align-self: center;
|
||||
margin: 0 20px;
|
||||
}
|
||||
#viewer-content {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
height: calc(100% - 50px);
|
||||
}
|
||||
#image-viewer {
|
||||
background:
|
||||
repeating-conic-gradient(#808080 0% 25%, transparent 0% 50%)
|
||||
50% / 20px 20px; /* Checkerboard background for transparent images */
|
||||
background: repeating-conic-gradient(#808080 0% 25%, transparent 0% 50%) 50% /
|
||||
20px 20px; /* Checkerboard background for transparent images */
|
||||
max-width: 100%;
|
||||
max-height: 100%;
|
||||
}
|
||||
#pdf-viewer {
|
||||
width: 40vw;
|
||||
height: 100vh;
|
||||
height: 100%;
|
||||
}
|
||||
#txt-viewer{
|
||||
#txt-viewer {
|
||||
background-color: white;
|
||||
width: 40vw;
|
||||
height: 100vh;
|
||||
height: 100%;
|
||||
}
|
||||
.pdf-preview-error {
|
||||
margin-top: 20vh;
|
||||
@@ -148,25 +156,29 @@
|
||||
#viewer-container {
|
||||
display: block;
|
||||
}
|
||||
.attachment-arrow{
|
||||
.attachment-arrow {
|
||||
position: absolute;
|
||||
bottom: 2.2em;
|
||||
font-size: 1.6em;
|
||||
padding: 16px;
|
||||
}
|
||||
#prev-attachment{
|
||||
#prev-attachment {
|
||||
left: 0;
|
||||
}
|
||||
#next-attachment{
|
||||
#next-attachment {
|
||||
right: 0;
|
||||
}
|
||||
#pdf-viewer {
|
||||
width: 100%;
|
||||
height: calc(100vh - 155px); /* Full height - height of top and bottom bars */
|
||||
height: calc(
|
||||
100vh - 155px
|
||||
); /* Full height - height of top and bottom bars */
|
||||
}
|
||||
#txt-viewer {
|
||||
width: 100%;
|
||||
height: calc(100vh - 155px); /* Full height - height of top and bottom bars */
|
||||
height: calc(
|
||||
100vh - 155px
|
||||
); /* Full height - height of top and bottom bars */
|
||||
}
|
||||
#audio-viewer {
|
||||
margin-top: 20%;
|
||||
|
||||
@@ -231,14 +231,20 @@ Template.attachmentViewer.events({
|
||||
'click #viewer-container'(event) {
|
||||
|
||||
// Make sure the click was on #viewer-container and not on any of its children
|
||||
if(event.target !== event.currentTarget) return;
|
||||
if(event.target !== event.currentTarget) {
|
||||
event.stopPropagation();
|
||||
return;
|
||||
}
|
||||
|
||||
closeAttachmentViewer();
|
||||
},
|
||||
'click #viewer-content'(event) {
|
||||
|
||||
// Make sure the click was on #viewer-content and not on any of its children
|
||||
if(event.target !== event.currentTarget) return;
|
||||
if(event.target !== event.currentTarget) {
|
||||
event.stopPropagation();
|
||||
return;
|
||||
}
|
||||
|
||||
closeAttachmentViewer();
|
||||
},
|
||||
@@ -292,13 +298,23 @@ Template.cardAttachmentsPopup.events({
|
||||
let uploads = [];
|
||||
for (const file of files) {
|
||||
const fileId = new ObjectID().toString();
|
||||
// If filename is not same as sanitized filename, has XSS, then cancel upload
|
||||
if (file.name !== DOMPurify.sanitize(file.name)) {
|
||||
return false;
|
||||
let fileName = DOMPurify.sanitize(file.name);
|
||||
|
||||
// If sanitized filename is not same as original filename,
|
||||
// it could be XSS that is already fixed with sanitize,
|
||||
// or just normal mistake, so it is not a problem.
|
||||
// That is why here is no warning.
|
||||
if (fileName !== file.name) {
|
||||
// If filename is empty, only in that case add some filename
|
||||
if (fileName.length === 0) {
|
||||
fileName = 'Empty-filename-after-sanitize.txt';
|
||||
}
|
||||
}
|
||||
|
||||
const config = {
|
||||
file: file,
|
||||
fileId: fileId,
|
||||
fileName: fileName,
|
||||
meta: Utils.getCommonAttachmentMetaFrom(card),
|
||||
chunkSize: 'dynamic',
|
||||
};
|
||||
|
||||
@@ -2,6 +2,9 @@ template(name="cardDetailsPopup")
|
||||
+cardDetails(popupCard)
|
||||
|
||||
template(name="cardDetails")
|
||||
|
||||
+attachmentViewer
|
||||
|
||||
section.card-details.js-card-details(class='{{#if cardMaximized}}card-details-maximized{{/if}}' class='{{#if isPopup}}card-details-popup{{/if}}'): .card-details-canvas
|
||||
.card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}')
|
||||
+inlinedForm(classNames="js-card-details-title")
|
||||
@@ -562,7 +565,6 @@ template(name="cardDetails")
|
||||
br
|
||||
| {{_ 'invalid-file'}}
|
||||
.card-checklist-attachmentGallery.card-attachmentGallery
|
||||
+attachmentViewer
|
||||
+attachmentGallery
|
||||
hr
|
||||
|
||||
|
||||
@@ -8,6 +8,20 @@ textarea.js-edit-checklist-item {
|
||||
resize: none;
|
||||
height: 34px;
|
||||
}
|
||||
.card-details .text-show-at-minicard {
|
||||
width: 350px;
|
||||
text-align: left;
|
||||
}
|
||||
.minicard .text-show-at-minicard {
|
||||
display: none;
|
||||
}
|
||||
.text-some-space {
|
||||
width: 20px;
|
||||
}
|
||||
.text-hide-checked-items {
|
||||
width: 400px;
|
||||
text-align: left;
|
||||
}
|
||||
.delete-text,
|
||||
.js-delete-checklist-item,
|
||||
.js-convert-checklist-item-to-card {
|
||||
@@ -26,6 +40,8 @@ textarea.js-edit-checklist-item {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
|
||||
.checklist-progress-bar-container {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
||||
@@ -9,18 +9,10 @@ template(name="checklists")
|
||||
else
|
||||
a.add-checklist-top.js-open-inlined-form(title="{{_ 'add-checklist'}}")
|
||||
i.fa.fa-plus
|
||||
if currentUser.isBoardMember
|
||||
.material-toggle-switch(title="{{_ 'hide-checked-items'}}")
|
||||
//span.toggle-switch-title
|
||||
if hideCheckedItems
|
||||
input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton" checked="checked")
|
||||
else
|
||||
input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton")
|
||||
label.toggle-label(for="toggleHideCheckedItemsButton")
|
||||
|
||||
.card-checklist-items
|
||||
each checklist in checklists
|
||||
+checklistDetail(checklist = checklist)
|
||||
+checklistDetail(checklist=checklist)
|
||||
|
||||
if canModifyCard
|
||||
+inlinedForm(autoclose=false classNames="js-add-checklist" cardId = cardId)
|
||||
@@ -130,6 +122,27 @@ template(name='checklistItemDetail')
|
||||
= item.title
|
||||
|
||||
template(name="checklistActionsPopup")
|
||||
if currentUser.isBoardMember
|
||||
span.text-show-at-minicard
|
||||
| {{_ 'show-at-minicard'}}
|
||||
.material-toggle-switch(title="{{_ 'show-checklist-at-minicard'}}")
|
||||
if showAtMinicard
|
||||
input.toggle-switch(type="checkbox" id="toggleShowChecklistAtMinicardButton" checked="checked")
|
||||
else
|
||||
input.toggle-switch(type="checkbox" id="toggleShowChecklistAtMinicardButton")
|
||||
label.toggle-label(for="toggleShowChecklistAtMinicardButton")
|
||||
hr
|
||||
span.text-hide-checked-items
|
||||
| {{_ 'hide-checked-items'}}
|
||||
.material-toggle-switch(title="{{_ 'hide-checked-items'}}")
|
||||
//span.toggle-switch-title
|
||||
//.check-square-icon.i.fa.fa-check-square-o
|
||||
if hideCheckedItems
|
||||
input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton" checked="checked")
|
||||
else
|
||||
input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton")
|
||||
label.toggle-label(for="toggleHideCheckedItemsButton")
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-delete-checklist.delete-checklist
|
||||
|
||||
@@ -202,9 +202,6 @@ BlazeComponent.extendComponent({
|
||||
|
||||
events() {
|
||||
const events = {
|
||||
'click #toggleHideCheckedItemsButton'() {
|
||||
Meteor.call('toggleHideCheckedItems');
|
||||
},
|
||||
};
|
||||
|
||||
return [
|
||||
@@ -274,6 +271,11 @@ Template.checklists.helpers({
|
||||
const ret = card.checklists();
|
||||
return ret;
|
||||
},
|
||||
showAtMinicard() {
|
||||
const card = ReactiveCache.getCard(this.cardId);
|
||||
const ret = card.checklists({'showAtMinicard':1});
|
||||
return ret;
|
||||
},
|
||||
hideCheckedItems() {
|
||||
const currentUser = ReactiveCache.getCurrentUser();
|
||||
if (currentUser) return currentUser.hasHideCheckedItems();
|
||||
@@ -301,9 +303,26 @@ BlazeComponent.extendComponent({
|
||||
}).register('addChecklistItemForm');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
toggleItem() {
|
||||
const checklist = this.currentData().checklist;
|
||||
const item = this.currentData().item;
|
||||
if (checklist && item && item._id) {
|
||||
item.toggleItem();
|
||||
}
|
||||
},
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'click .js-checklist-item .check-box-container': this.toggleItem,
|
||||
'click #toggleShowChecklistAtMinicardButton'() {
|
||||
const checklist = this.checklist;
|
||||
if (checklist && checklist._id) {
|
||||
Meteor.call('toggleShowChecklistAtMinicard', checklist._id);
|
||||
}
|
||||
},
|
||||
'click #toggleHideCheckedItemsButton'() {
|
||||
Meteor.call('toggleHideCheckedItems');
|
||||
},
|
||||
'click .js-delete-checklist': Popup.afterConfirm('checklistDelete', function () {
|
||||
Popup.back(2);
|
||||
const checklist = this.checklist;
|
||||
|
||||
@@ -1,3 +1,12 @@
|
||||
.minicard .checklists-title,
|
||||
.minicard .add-checklist,
|
||||
.minicard .add-checklist-item,
|
||||
.minicard .checklist-details-menu {
|
||||
display: none;
|
||||
}
|
||||
.minicard .checklist-progress-bar-container {
|
||||
width: 190px; /* TODO: Add adjustable width https://github.com/wekan/wekan/pull/4964 */
|
||||
}
|
||||
.minicard-wrapper {
|
||||
cursor: pointer;
|
||||
position: relative;
|
||||
@@ -127,6 +136,14 @@
|
||||
max-width: 100%;
|
||||
margin-right: 4px;
|
||||
}
|
||||
/*
|
||||
.minicard .checklists-title,
|
||||
.minicard .add-checklist,
|
||||
.minicard .add-checklist-item,
|
||||
.minicard .checklist-details-menu {
|
||||
display: none;
|
||||
}
|
||||
*/
|
||||
.minicard .handle {
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
@@ -248,6 +265,7 @@
|
||||
}
|
||||
.minicard .minicard-description {
|
||||
padding: 6px 0 0 8px;
|
||||
color: #000;
|
||||
background-color: #eee;
|
||||
width: 100%;
|
||||
margin-bottom: 2px;
|
||||
|
||||
@@ -111,6 +111,12 @@ template(name="minicard")
|
||||
+viewer
|
||||
= trueValue
|
||||
|
||||
.card-checklist-attachmentGalleries
|
||||
.card-checklist-attachmentGallery.card-checklists
|
||||
if currentBoard.allowsChecklists
|
||||
//hr
|
||||
//+checklists(cardId=_id showAtMinicard=true)
|
||||
|
||||
if showAssignee
|
||||
if getAssignees
|
||||
.minicard-assignees.js-minicard-assignees
|
||||
@@ -131,7 +137,7 @@ template(name="minicard")
|
||||
unless currentUser.isNoComments
|
||||
if comments.length
|
||||
.badge(title="{{_ 'card-comments-title' comments.length }}")
|
||||
span.badge-icon.fa.fa-comment-o.badge-comment
|
||||
span.badge-icon.fa.fa-comment-o.badge-comment.badge-text
|
||||
= ' '
|
||||
= comments.length
|
||||
//span.badge-comment.badge-text
|
||||
|
||||
@@ -92,6 +92,11 @@ BlazeComponent.extendComponent({
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'click .minicard-checklists'() {
|
||||
// Prevents clicking checklist at minicard from opening card details,
|
||||
// while still allowing checking checlist items.
|
||||
event.preventDefault();
|
||||
},
|
||||
'click .js-linked-link'() {
|
||||
if (this.data().isLinkedCard()) Utils.goCardId(this.data().linkedId);
|
||||
else if (this.data().isLinkedBoard())
|
||||
|
||||
@@ -26,8 +26,7 @@ template(name="subtaskDetail")
|
||||
.subtask-title
|
||||
span
|
||||
if canModifyCard
|
||||
if currentUser.isBoardAdmin
|
||||
a.fa.fa-navicon.subtask-details-menu.js-open-subtask-details-menu(title="{{_ 'subtaskActionsPopup-title'}}")
|
||||
a.fa.fa-navicon.subtask-details-menu.js-open-subtask-details-menu(title="{{_ 'subtaskActionsPopup-title'}}")
|
||||
if canModifyCard
|
||||
h2.title.js-open-inlined-form.is-editable
|
||||
+viewer
|
||||
@@ -95,7 +94,8 @@ template(name="subtaskActionsPopup")
|
||||
a.js-view-subtask(title="{{ subtask.title }}")
|
||||
i.fa.fa-eye
|
||||
| {{_ "view-it"}}
|
||||
a.js-delete-subtask.delete-subtask
|
||||
i.fa.fa-trash
|
||||
| {{_ "delete"}} ...
|
||||
if currentUser.isBoardAdmin
|
||||
a.js-delete-subtask.delete-subtask
|
||||
i.fa.fa-trash
|
||||
| {{_ "delete"}} ...
|
||||
|
||||
@@ -68,6 +68,10 @@ BlazeComponent.extendComponent({
|
||||
}
|
||||
},
|
||||
|
||||
isBoardAdmin() {
|
||||
return ReactiveCache.getCurrentUser().isBoardAdmin();
|
||||
},
|
||||
|
||||
editSubtask(event) {
|
||||
event.preventDefault();
|
||||
const textarea = this.find('textarea.js-edit-subtask-item');
|
||||
@@ -104,6 +108,9 @@ BlazeComponent.extendComponent({
|
||||
}).register('subtaskItemDetail');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
isBoardAdmin() {
|
||||
return ReactiveCache.getCurrentUser().isBoardAdmin();
|
||||
},
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
@@ -129,3 +136,14 @@ BlazeComponent.extendComponent({
|
||||
]
|
||||
}
|
||||
}).register('subtaskActionsPopup');
|
||||
|
||||
Template.editSubtaskItemForm.helpers({
|
||||
user() {
|
||||
return ReactiveCache.getUser(this.userId);
|
||||
},
|
||||
isBoardAdmin() {
|
||||
return ReactiveCache.getCurrentUser().isBoardAdmin();
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -79,18 +79,18 @@ template(name="linkCardPopup")
|
||||
select.js-select-boards
|
||||
option(value="")
|
||||
each boards
|
||||
option(value="{{_id}}") {{title}}
|
||||
option(value="{{_id}}") {{isTitleDefault title}}
|
||||
input.primary.confirm.js-link-board(type="button" value="{{_ 'link'}}")
|
||||
|
||||
label {{_ 'swimlanes'}}:
|
||||
select.js-select-swimlanes
|
||||
each swimlanes
|
||||
option(value="{{_id}}") {{title}}
|
||||
option(value="{{_id}}") {{isTitleDefault title}}
|
||||
|
||||
label {{_ 'lists'}}:
|
||||
select.js-select-lists
|
||||
each lists
|
||||
option(value="{{_id}}") {{title}}
|
||||
option(value="{{_id}}") {{isTitleDefault title}}
|
||||
|
||||
label {{_ 'cards'}}:
|
||||
select.js-select-cards
|
||||
|
||||
@@ -593,6 +593,31 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
}).register('linkCardPopup');
|
||||
|
||||
Template.linkCardPopup.helpers({
|
||||
isTitleDefault(title) {
|
||||
// https://github.com/wekan/wekan/issues/4763
|
||||
// https://github.com/wekan/wekan/issues/4742
|
||||
// Translation text for "default" does not work, it returns an object.
|
||||
// When that happens, try use translation "defaultdefault" that has same content of default, or return text "Default".
|
||||
// This can happen, if swimlane does not have name.
|
||||
// Yes, this is fixing the symptom (Swimlane title does not have title)
|
||||
// instead of fixing the problem (Add Swimlane title when creating swimlane)
|
||||
// because there could be thousands of swimlanes, adding name Default to all of them
|
||||
// would be very slow.
|
||||
if (title.startsWith("key 'default") && title.endsWith('returned an object instead of string.')) {
|
||||
if (`${TAPi18n.__('defaultdefault')}`.startsWith("key 'default") && `${TAPi18n.__('defaultdefault')}`.endsWith('returned an object instead of string.')) {
|
||||
return 'Default';
|
||||
} else {
|
||||
return `${TAPi18n.__('defaultdefault')}`;
|
||||
}
|
||||
} else if (title === 'Default') {
|
||||
return `${TAPi18n.__('defaultdefault')}`;
|
||||
} else {
|
||||
return title;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
mixins() {
|
||||
return [];
|
||||
|
||||
@@ -20,6 +20,10 @@ template(name="settingHeaderBar")
|
||||
i.fa(class="fa-paperclip")
|
||||
span {{_ 'attachments'}}
|
||||
|
||||
a.setting-header-btn.informations(href="{{pathFor 'translation'}}")
|
||||
i.fa(class="fa-font")
|
||||
span {{_ 'translation'}}
|
||||
|
||||
a.setting-header-btn.informations(href="{{pathFor 'information'}}")
|
||||
i.fa(class="fa-info-circle")
|
||||
span {{_ 'info'}}
|
||||
|
||||
@@ -0,0 +1,67 @@
|
||||
.main-body {
|
||||
overflow: scroll;
|
||||
}
|
||||
table {
|
||||
color: #000;
|
||||
}
|
||||
table td,
|
||||
table th {
|
||||
border: 1px solid #d2d0d0;
|
||||
text-align: left;
|
||||
padding: 8px;
|
||||
}
|
||||
table tr:nth-child(even) {
|
||||
background-color: #ddd;
|
||||
}
|
||||
.ext-box {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
height: 34px;
|
||||
}
|
||||
.ext-box .ext-box-left {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
gap: 10px;
|
||||
}
|
||||
.ext-box span {
|
||||
vertical-align: center;
|
||||
line-height: 34px;
|
||||
}
|
||||
.ext-box input,
|
||||
.ext-box button {
|
||||
padding: 0;
|
||||
}
|
||||
.ext-box button {
|
||||
min-width: 90px;
|
||||
}
|
||||
.content-wrapper {
|
||||
margin-top: 10px;
|
||||
}
|
||||
.buttonsContainer {
|
||||
display: flex;
|
||||
}
|
||||
.buttonsContainer input {
|
||||
margin: 0;
|
||||
}
|
||||
.buttonsContainer div {
|
||||
margin: auto;
|
||||
}
|
||||
.more-settings-translation {
|
||||
margin-left: 10px;
|
||||
}
|
||||
#cancelBtn {
|
||||
margin-left: 5% !important;
|
||||
background: #ffa500;
|
||||
color: #fff;
|
||||
}
|
||||
#deleteAction {
|
||||
margin-left: 5% !important;
|
||||
}
|
||||
p.js-translation-language {
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
}
|
||||
p.js-translation-text {
|
||||
font-weight: bold;
|
||||
color: #000;
|
||||
}
|
||||
@@ -0,0 +1,105 @@
|
||||
template(name="translation")
|
||||
.setting-content
|
||||
unless currentUser.isAdmin
|
||||
| {{_ 'error-notAuthorized'}}
|
||||
else
|
||||
.content-title.ext-box
|
||||
.ext-box-left
|
||||
if loading.get
|
||||
+spinner
|
||||
else if translationSetting.get
|
||||
span
|
||||
i.fa.fa-font
|
||||
unless isMiniScreen
|
||||
| {{_ 'translation'}}
|
||||
input#searchTranslationInput(placeholder="{{_ 'search'}}")
|
||||
button#searchTranslationButton
|
||||
i.fa.fa-search
|
||||
| {{_ 'search'}}
|
||||
.ext-box-right
|
||||
span {{#unless isMiniScreen}}{{_ 'translation-number'}}{{/unless}} #{translationNumber}
|
||||
|
||||
.content-body
|
||||
.side-menu
|
||||
ul
|
||||
li.active
|
||||
a.js-translation-menu(data-id="translation-setting")
|
||||
i.fa.fa-font
|
||||
| {{_ 'translation'}}
|
||||
.main-body
|
||||
if loading.get
|
||||
+spinner
|
||||
else if translationSetting.get
|
||||
+translationGeneral
|
||||
|
||||
template(name="translationGeneral")
|
||||
table
|
||||
tbody
|
||||
tr
|
||||
th {{_ 'language'}}
|
||||
th {{_ 'text'}}
|
||||
th {{_ 'translation-text'}}
|
||||
th
|
||||
+newTranslationRow
|
||||
each translation in translationList
|
||||
+translationRow(translationId=translation._id)
|
||||
|
||||
template(name="newTranslationRow")
|
||||
a.new-translation
|
||||
i.fa.fa-plus-square
|
||||
| {{_ 'new'}}
|
||||
|
||||
template(name="translationRow")
|
||||
tr
|
||||
td {{translationData.language}}
|
||||
td {{translationData.text}}
|
||||
td {{translationData.translationText}}
|
||||
td
|
||||
a.edit-translation
|
||||
i.fa.fa-edit
|
||||
| {{_ 'edit'}}
|
||||
a.more-settings-translation
|
||||
i.fa.fa-ellipsis-h
|
||||
|
||||
template(name="editTranslationPopup")
|
||||
form
|
||||
label
|
||||
| {{_ 'language'}}
|
||||
input.js-translation-language(type="text" value=translation.language required readonly)
|
||||
label
|
||||
| {{_ 'text'}}
|
||||
input.js-translation-text(type="text" value=translation.text required readonly)
|
||||
label
|
||||
| {{_ 'translation-text'}}
|
||||
input.js-translation-translation-text(type="text" value=translation.translationText)
|
||||
hr
|
||||
div.buttonsContainer
|
||||
input.primary.wide(type="submit" value="{{_ 'save'}}")
|
||||
|
||||
template(name="newTranslationPopup")
|
||||
form
|
||||
label
|
||||
| {{_ 'language'}}
|
||||
input.js-translation-language(type="text" value="en" required)
|
||||
label
|
||||
| {{_ 'text'}}
|
||||
span.error.hide.text-taken
|
||||
| {{_ 'error-text-taken'}}
|
||||
input.js-translation-text(type="text" value="" required)
|
||||
label
|
||||
| {{_ 'translation-text'}}
|
||||
input.js-translation-translation-text(type="text" value="")
|
||||
hr
|
||||
div.buttonsContainer
|
||||
input.primary.wide(type="submit" value="{{_ 'save'}}")
|
||||
|
||||
template(name="settingsTranslationPopup")
|
||||
ul.pop-over-list
|
||||
li
|
||||
form
|
||||
label
|
||||
| {{_ 'delete-translation-confirm-popup'}}
|
||||
br
|
||||
label.hide.orgId(type="text" value=org._id)
|
||||
div.buttonsContainer
|
||||
input#deleteButton.card-details-red.right.wide(type="button" value="{{_ 'delete'}}")
|
||||
@@ -0,0 +1,214 @@
|
||||
import { ReactiveCache } from '/imports/reactiveCache';
|
||||
|
||||
const translationsPerPage = 25;
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
mixins() {
|
||||
return [Mixins.InfiniteScrolling];
|
||||
},
|
||||
onCreated() {
|
||||
this.error = new ReactiveVar('');
|
||||
this.loading = new ReactiveVar(false);
|
||||
this.translationSetting = new ReactiveVar(true);
|
||||
this.findTranslationsOptions = new ReactiveVar({});
|
||||
this.numberTranslations = new ReactiveVar(0);
|
||||
|
||||
this.page = new ReactiveVar(1);
|
||||
this.loadNextPageLocked = false;
|
||||
this.callFirstWith(null, 'resetNextPeak');
|
||||
this.autorun(() => {
|
||||
const limitTranslations = this.page.get() * translationsPerPage;
|
||||
|
||||
this.subscribe('translation', this.findTranslationsOptions.get(), 0, () => {
|
||||
this.loadNextPageLocked = false;
|
||||
const nextPeakBefore = this.callFirstWith(null, 'getNextPeak');
|
||||
this.calculateNextPeak();
|
||||
const nextPeakAfter = this.callFirstWith(null, 'getNextPeak');
|
||||
if (nextPeakBefore === nextPeakAfter) {
|
||||
this.callFirstWith(null, 'resetNextPeak');
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'click #searchTranslationButton'() {
|
||||
this.filterTranslation();
|
||||
},
|
||||
'keydown #searchTranslationInput'(event) {
|
||||
if (event.keyCode === 13 && !event.shiftKey) {
|
||||
this.filterTranslation();
|
||||
}
|
||||
},
|
||||
'click #newTranslationButton'() {
|
||||
Popup.open('newTranslation');
|
||||
},
|
||||
'click a.js-translation-menu': this.switchMenu,
|
||||
},
|
||||
];
|
||||
},
|
||||
filterTranslation() {
|
||||
const value = $('#searchTranslationInput').first().val();
|
||||
if (value === '') {
|
||||
this.findTranslationsOptions.set({});
|
||||
} else {
|
||||
const regex = new RegExp(value, 'i');
|
||||
this.findTranslationsOptions.set({
|
||||
$or: [
|
||||
{ language: regex },
|
||||
{ text: regex },
|
||||
{ translationText: regex },
|
||||
],
|
||||
});
|
||||
}
|
||||
},
|
||||
loadNextPage() {
|
||||
if (this.loadNextPageLocked === false) {
|
||||
this.page.set(this.page.get() + 1);
|
||||
this.loadNextPageLocked = true;
|
||||
}
|
||||
},
|
||||
calculateNextPeak() {
|
||||
const element = this.find('.main-body');
|
||||
if (element) {
|
||||
const altitude = element.scrollHeight;
|
||||
this.callFirstWith(this, 'setNextPeak', altitude);
|
||||
}
|
||||
},
|
||||
reachNextPeak() {
|
||||
this.loadNextPage();
|
||||
},
|
||||
setError(error) {
|
||||
this.error.set(error);
|
||||
},
|
||||
setLoading(w) {
|
||||
this.loading.set(w);
|
||||
},
|
||||
translationList() {
|
||||
const translations = ReactiveCache.getTranslations(this.findTranslationsOptions.get(), {
|
||||
sort: { modifiedAt: 1 },
|
||||
fields: { _id: true },
|
||||
});
|
||||
this.numberTranslations.set(translations.length);
|
||||
return translations;
|
||||
},
|
||||
translationNumber() {
|
||||
return this.numberTranslations.get();
|
||||
},
|
||||
switchMenu(event) {
|
||||
const target = $(event.target);
|
||||
if (!target.hasClass('active')) {
|
||||
$('.side-menu li.active').removeClass('active');
|
||||
target.parent().addClass('active');
|
||||
const targetID = target.data('id');
|
||||
this.translationSetting.set('translation-setting' === targetID);
|
||||
}
|
||||
},
|
||||
}).register('translation');
|
||||
|
||||
Template.translationRow.helpers({
|
||||
translationData() {
|
||||
return ReactiveCache.getTranslation(this.translationId);
|
||||
},
|
||||
});
|
||||
|
||||
Template.editTranslationPopup.helpers({
|
||||
translation() {
|
||||
return ReactiveCache.getTranslation(this.translationId);
|
||||
},
|
||||
errorMessage() {
|
||||
return Template.instance().errorMessage.get();
|
||||
},
|
||||
});
|
||||
|
||||
Template.newTranslationPopup.onCreated(function () {
|
||||
this.errorMessage = new ReactiveVar('');
|
||||
});
|
||||
|
||||
Template.newTranslationPopup.helpers({
|
||||
translation() {
|
||||
return ReactiveCache.getTranslation(this.translationId);
|
||||
},
|
||||
errorMessage() {
|
||||
return Template.instance().errorMessage.get();
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {},
|
||||
translation() {
|
||||
return ReactiveCache.getTranslation(this.translationId);
|
||||
},
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'click a.edit-translation': Popup.open('editTranslation'),
|
||||
'click a.more-settings-translation': Popup.open('settingsTranslation'),
|
||||
},
|
||||
];
|
||||
},
|
||||
}).register('translationRow');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'click a.new-translation': Popup.open('newTranslation'),
|
||||
},
|
||||
];
|
||||
},
|
||||
}).register('newTranslationRow');
|
||||
|
||||
Template.editTranslationPopup.events({
|
||||
submit(event, templateInstance) {
|
||||
event.preventDefault();
|
||||
const translation = ReactiveCache.getTranslation(this.translationId);
|
||||
const translationText = templateInstance.find('.js-translation-translation-text').value.trim();
|
||||
|
||||
Meteor.call(
|
||||
'setTranslationText',
|
||||
translation,
|
||||
translationText
|
||||
);
|
||||
|
||||
Popup.back();
|
||||
},
|
||||
});
|
||||
|
||||
Template.newTranslationPopup.events({
|
||||
submit(event, templateInstance) {
|
||||
event.preventDefault();
|
||||
const language = templateInstance.find('.js-translation-language').value.trim();
|
||||
const text = templateInstance.find('.js-translation-text').value.trim();
|
||||
const translationText = templateInstance.find('.js-translation-translation-text').value.trim();
|
||||
|
||||
Meteor.call(
|
||||
'setCreateTranslation',
|
||||
language,
|
||||
text,
|
||||
translationText,
|
||||
function(error) {
|
||||
const textMessageElement = templateInstance.$('.text-taken');
|
||||
if (error) {
|
||||
const errorElement = error.error;
|
||||
if (errorElement === 'text-already-taken') {
|
||||
textMessageElement.show();
|
||||
}
|
||||
} else {
|
||||
textMessageElement.hide();
|
||||
Popup.back();
|
||||
}
|
||||
},
|
||||
);
|
||||
Popup.back();
|
||||
},
|
||||
});
|
||||
|
||||
Template.settingsTranslationPopup.events({
|
||||
'click #deleteButton'(event) {
|
||||
event.preventDefault();
|
||||
Translation.remove(this.translationId);
|
||||
Popup.back();
|
||||
}
|
||||
});
|
||||
@@ -17,9 +17,11 @@ template(name="swimlaneFixedHeader")
|
||||
| {{_ 'list-templates-swimlane'}}
|
||||
else if $eq title 'Board Templates'
|
||||
| {{_ 'board-templates-swimlane'}}
|
||||
else if $eq title 'Default'
|
||||
| {{_ 'defaultdefault'}}
|
||||
else
|
||||
+viewer
|
||||
= title
|
||||
| {{isTitleDefault title}}
|
||||
.swimlane-header-menu
|
||||
unless currentUser.isCommentOnly
|
||||
if currentUser.isBoardAdmin
|
||||
@@ -33,7 +35,7 @@ template(name="swimlaneFixedHeader")
|
||||
|
||||
template(name="editSwimlaneTitleForm")
|
||||
.list-composer
|
||||
input.list-name-input.full-line(type="text" value=title autofocus)
|
||||
input.list-name-input.full-line(type="text" value="{{isTitleDefault title}}" autofocus)
|
||||
.edit-controls.clearfix
|
||||
button.primary.confirm(type="submit") {{_ 'save'}}
|
||||
a.fa.fa-times-thin.js-close-inlined-form
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import { TAPi18n } from '/imports/i18n';
|
||||
import { ReactiveCache } from '/imports/reactiveCache';
|
||||
const { calculateIndexData } = Utils;
|
||||
|
||||
@@ -33,6 +34,53 @@ Template.swimlaneFixedHeader.helpers({
|
||||
isBoardAdmin() {
|
||||
return ReactiveCache.getCurrentUser().isBoardAdmin();
|
||||
},
|
||||
isTitleDefault(title) {
|
||||
// https://github.com/wekan/wekan/issues/4763
|
||||
// https://github.com/wekan/wekan/issues/4742
|
||||
// Translation text for "default" does not work, it returns an object.
|
||||
// When that happens, try use translation "defaultdefault" that has same content of default, or return text "Default".
|
||||
// This can happen, if swimlane does not have name.
|
||||
// Yes, this is fixing the symptom (Swimlane title does not have title)
|
||||
// instead of fixing the problem (Add Swimlane title when creating swimlane)
|
||||
// because there could be thousands of swimlanes, adding name Default to all of them
|
||||
// would be very slow.
|
||||
if (title.startsWith("key 'default") && title.endsWith('returned an object instead of string.')) {
|
||||
if (`${TAPi18n.__('defaultdefault')}`.startsWith("key 'default") && `${TAPi18n.__('defaultdefault')}`.endsWith('returned an object instead of string.')) {
|
||||
return 'Default';
|
||||
} else {
|
||||
return `${TAPi18n.__('defaultdefault')}`;
|
||||
}
|
||||
} else if (title === 'Default') {
|
||||
return `${TAPi18n.__('defaultdefault')}`;
|
||||
} else {
|
||||
return title;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
Template.editSwimlaneTitleForm.helpers({
|
||||
isTitleDefault(title) {
|
||||
// https://github.com/wekan/wekan/issues/4763
|
||||
// https://github.com/wekan/wekan/issues/4742
|
||||
// Translation text for "default" does not work, it returns an object.
|
||||
// When that happens, try use translation "defaultdefault" that has same content of default, or return text "Default".
|
||||
// This can happen, if swimlane does not have name.
|
||||
// Yes, this is fixing the symptom (Swimlane title does not have title)
|
||||
// instead of fixing the problem (Add Swimlane title when creating swimlane)
|
||||
// because there could be thousands of swimlanes, adding name Default to all of them
|
||||
// would be very slow.
|
||||
if (title.startsWith("key 'default") && title.endsWith('returned an object instead of string.')) {
|
||||
if (`${TAPi18n.__('defaultdefault')}`.startsWith("key 'default") && `${TAPi18n.__('defaultdefault')}`.endsWith('returned an object instead of string.')) {
|
||||
return 'Default';
|
||||
} else {
|
||||
return `${TAPi18n.__('defaultdefault')}`;
|
||||
}
|
||||
} else if (title === 'Default') {
|
||||
return `${TAPi18n.__('defaultdefault')}`;
|
||||
} else {
|
||||
return title;
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
Template.swimlaneActionPopup.events({
|
||||
|
||||
@@ -47,7 +47,6 @@
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
overflow: 0;
|
||||
max-height: calc(100% - 26px);
|
||||
}
|
||||
.swimlane.placeholder {
|
||||
background-color: rgba(0,0,0,0.2);
|
||||
|
||||
@@ -248,6 +248,7 @@ Template.editProfilePopup.events({
|
||||
// XXX For some reason the useraccounts autofocus isnt working in this case.
|
||||
// See https://github.com/meteor-useraccounts/core/issues/384
|
||||
Template.changePasswordPopup.onRendered(function() {
|
||||
$('.at-pwd-form').show();
|
||||
this.find('#at-field-current_password').focus();
|
||||
});
|
||||
|
||||
|
||||
+3
-4
@@ -126,10 +126,9 @@ AccountsTemplates.configure({
|
||||
|
||||
AccountsTemplates.configureRoute('changePwd', {
|
||||
redirect() {
|
||||
// XXX We should emit a notification once we have a notification system.
|
||||
// Currently the user has no indication that his modification has been
|
||||
// applied.
|
||||
Popup.back();
|
||||
// We should go back with the popup but we don't since user feedback about the change is within the popup only.
|
||||
// Once we have a global feedback popup mechanism we can use that here and close with the following:
|
||||
// Popup.back();
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
@@ -381,6 +381,30 @@ FlowRouter.route('/attachments', {
|
||||
},
|
||||
});
|
||||
|
||||
FlowRouter.route('/translation', {
|
||||
name: 'translation',
|
||||
triggersEnter: [
|
||||
AccountsTemplates.ensureSignedIn,
|
||||
() => {
|
||||
Session.set('currentBoard', null);
|
||||
Session.set('currentList', null);
|
||||
Session.set('currentCard', null);
|
||||
Session.set('popupCardId', null);
|
||||
Session.set('popupCardBoardId', null);
|
||||
|
||||
Filter.reset();
|
||||
Session.set('sortBy', '');
|
||||
EscapeActions.executeAll();
|
||||
},
|
||||
],
|
||||
action() {
|
||||
BlazeLayout.render('defaultLayout', {
|
||||
headerBar: 'settingHeaderBar',
|
||||
content: 'translation',
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
FlowRouter.notFound = {
|
||||
action() {
|
||||
BlazeLayout.render('defaultLayout', { content: 'notFound' });
|
||||
|
||||
+6
-2
@@ -105,9 +105,9 @@ services:
|
||||
- 27017
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- /etc/timezone:/etc/timezone:ro
|
||||
- wekan-db:/data/db
|
||||
- wekan-db-dump:/dump
|
||||
#- /etc/timezone:/etc/timezone:ro # Do not use https://github.com/wekan/wekan/issues/5123
|
||||
|
||||
wekan:
|
||||
#-------------------------------------------------------------------------------------
|
||||
@@ -120,7 +120,7 @@ services:
|
||||
# image: quay.io/wekan/wekan:v6.89
|
||||
# image: wekanteam/wekan:v6.89
|
||||
# b) GitHub Container registry.
|
||||
image: ghcr.io/wekan/wekan:latest
|
||||
image: ghcr.io/wekan/wekan:main
|
||||
# c) Quay:
|
||||
#image: quay.io/wekan/wekan:latest
|
||||
# d) Docker Hub:
|
||||
@@ -245,6 +245,10 @@ services:
|
||||
# ==== NUMBER OF SEARCH RESULTS PER PAGE BY DEFAULT ====
|
||||
#- RESULTS_PER_PAGE=20
|
||||
#---------------------------------------------------------------
|
||||
# ==== AFTER OIDC LOGIN, ADD USERS AUTOMATICALLY TO THIS BOARD ID ====
|
||||
# https://github.com/wekan/wekan/pull/5098
|
||||
#- DEFAULT_BOARD_ID=abcd1234
|
||||
#---------------------------------------------------------------
|
||||
# ==== WEKAN API AND EXPORT BOARD ====
|
||||
# Wekan Export Board works when WITH_API=true.
|
||||
# https://github.com/wekan/wekan/wiki/REST-API
|
||||
|
||||
@@ -0,0 +1,782 @@
|
||||
version: '2'
|
||||
|
||||
#---------------------------------------------------------------------------------------------------------
|
||||
# ==== START ====
|
||||
# docker-compose up -d -f docker-compose.yml-arm64
|
||||
#---------------------------------------------------------------------------------------------------------
|
||||
# Note: Do not add single quotes '' to variables. Having spaces still works without quotes where required.
|
||||
#---------------------------------------------------------------------------------------------------------
|
||||
# ==== CREATING USERS AND LOGGING IN TO WEKAN ====
|
||||
# https://github.com/wekan/wekan/wiki/Adding-users
|
||||
#---------------------------------------------------------------------------------------------------------
|
||||
# ==== FORGOT PASSWORD ====
|
||||
# https://github.com/wekan/wekan/wiki/Forgot-Password
|
||||
#---------------------------------------------------------------------------------------------------------
|
||||
# ==== Upgrading Wekan to new version =====
|
||||
# NOTE: MongoDB has changed from 3.x to 4.x, in that case you need backup/restore with --noIndexRestore
|
||||
# see https://github.com/wekan/wekan/wiki/Backup
|
||||
# 1) Stop Wekan:
|
||||
# docker-compose stop
|
||||
# 2) Remove old Wekan app (wekan-app only, not that wekan-db container that has all your data)
|
||||
# docker rm wekan-app
|
||||
# 3) Get newest docker-compose.yml from https://github.com/wekan/wekan to have correct image,
|
||||
# for example: "image: quay.io/wekan/wekan" or version tag "image: quay.io/wekan/wekan:v4.52"
|
||||
# 4) Start Wekan:
|
||||
# docker-compose up -d
|
||||
#----------------------------------------------------------------------------------
|
||||
# ==== OPTIONAL: DEDICATED DOCKER USER ====
|
||||
# 1) Optionally create a dedicated user for Wekan, for example:
|
||||
# sudo useradd -d /home/wekan -m -s /bin/bash wekan
|
||||
# 2) Add this user to the docker group, then logout+login or reboot:
|
||||
# sudo usermod -aG docker wekan
|
||||
# 3) Then login as user wekan.
|
||||
# 4) Create this file /home/wekan/docker-compose.yml with your modifications.
|
||||
#----------------------------------------------------------------------------------
|
||||
# ==== RUN DOCKER AS SERVICE ====
|
||||
# 1a) Running Docker as service, on Systemd like Debian 9, Ubuntu 16.04, CentOS 7:
|
||||
# sudo systemctl enable docker
|
||||
# sudo systemctl start docker
|
||||
# 1b) Running Docker as service, on init.d like Debian 8, Ubuntu 14.04, CentOS 6:
|
||||
# sudo update-rc.d docker defaults
|
||||
# sudo service docker start
|
||||
# ----------------------------------------------------------------------------------
|
||||
# ==== USAGE OF THIS docker-compose.yml ====
|
||||
# 1) For seeing does Wekan work, try this and check with your web browser:
|
||||
# docker-compose up
|
||||
# 2) Stop Wekan and start Wekan in background:
|
||||
# docker-compose stop
|
||||
# docker-compose up -d
|
||||
# 3) See running Docker containers:
|
||||
# docker ps
|
||||
# 4) Stop Docker containers:
|
||||
# docker-compose stop
|
||||
# ----------------------------------------------------------------------------------
|
||||
# ===== INSIDE DOCKER CONTAINERS, AND BACKUP/RESTORE ====
|
||||
# https://github.com/wekan/wekan/wiki/Backup
|
||||
# If really necessary, repair MongoDB: https://github.com/wekan/wekan-mongodb/issues/6#issuecomment-424004116
|
||||
# 1) Going inside containers:
|
||||
# a) Wekan app, does not contain data
|
||||
# docker exec -it wekan-app bash
|
||||
# b) MongoDB, contains all data
|
||||
# docker exec -it wekan-db bash
|
||||
# 2) Copying database to outside of container:
|
||||
# docker exec -it wekan-db bash
|
||||
# cd /data
|
||||
# mongodump
|
||||
# exit
|
||||
# docker cp wekan-db:/data/dump .
|
||||
# 3) Restoring database
|
||||
# # 1) Stop wekan
|
||||
# docker stop wekan-app
|
||||
# # 2) Go inside database container
|
||||
# docker exec -it wekan-db bash
|
||||
# # 3) and data directory
|
||||
# cd /data
|
||||
# # 4) Remove previous dump
|
||||
# rm -rf dump
|
||||
# # 5) Exit db container
|
||||
# exit
|
||||
# # 6) Copy dump to inside docker container
|
||||
# docker cp dump wekan-db:/data/
|
||||
# # 7) Go inside database container
|
||||
# docker exec -it wekan-db bash
|
||||
# # 8) and data directory
|
||||
# cd /data
|
||||
# # 9) Restore
|
||||
# mongorestore --drop
|
||||
# # 10) Exit db container
|
||||
# exit
|
||||
# # 11) Start wekan
|
||||
# docker start wekan-app
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
services:
|
||||
|
||||
wekandb:
|
||||
#-------------------------------------------------------------------------------------
|
||||
# ==== MONGODB FROM DOCKER HUB ====
|
||||
image: mongo:6
|
||||
#-------------------------------------------------------------------------------------
|
||||
container_name: wekan-db
|
||||
restart: always
|
||||
# command: mongod --oplogSize 128
|
||||
# Syslog: mongod --syslog --oplogSize 128 --quiet
|
||||
# Disable MongoDB logs:
|
||||
command: mongod --logpath /dev/null --oplogSize 128 --quiet
|
||||
networks:
|
||||
- wekan-tier
|
||||
expose:
|
||||
- 27017
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- wekan-db:/data/db
|
||||
- wekan-db-dump:/dump
|
||||
#- /etc/timezone:/etc/timezone:ro # Do not use https://github.com/wekan/wekan/issues/5123
|
||||
|
||||
wekan:
|
||||
#-------------------------------------------------------------------------------------
|
||||
# ==== WEKAN FROM GITHUB/QUAY/DOCKER HUB ====
|
||||
# All of GitHub, Quay and Docker Hub have latest, but because
|
||||
# latest tag changes when is newest release,
|
||||
# when upgrading would be better to use version tag.
|
||||
# a) Using specific version tag is better:
|
||||
# image: ghcr.io/wekan/wekan:v6.89
|
||||
# image: quay.io/wekan/wekan:v6.89
|
||||
# image: wekanteam/wekan:v6.89
|
||||
# b) GitHub Container registry.
|
||||
#image: ghcr.io/wekan/wekan:main
|
||||
image: ghcr.io/wekan/wekan:v7.09-arm64
|
||||
# c) Quay:
|
||||
#image: quay.io/wekan/wekan:latest
|
||||
# d) Docker Hub:
|
||||
#image: wekanteam/wekan:latest
|
||||
#-------------------------------------------------------------------------------------
|
||||
container_name: wekan-app
|
||||
# On CentOS 7 there is seccomp issue with glibc 6,
|
||||
# so CentOS 7 users shoud use these security_opt seccomp:unconfined
|
||||
# settings to get WeKan working. See:
|
||||
# - https://github.com/wekan/wekan/issues/4585
|
||||
# - https://github.com/wekan/wekan/issues/4587
|
||||
#security_opt:
|
||||
# - seccomp:unconfined
|
||||
restart: always
|
||||
networks:
|
||||
- wekan-tier
|
||||
#-------------------------------------------------------------------------------------
|
||||
# ==== BUILD wekan-app DOCKER CONTAINER FROM SOURCE, if you uncomment these ====
|
||||
# ==== and use commands: docker-compose up -d --build
|
||||
#build:
|
||||
# context: .
|
||||
# dockerfile: Dockerfile
|
||||
#-------------------------------------------------------------------------------------
|
||||
ports:
|
||||
# Docker outsideport:insideport. Do not add anything extra here.
|
||||
# For example, if you want to have wekan on port 3001,
|
||||
# use 3001:8080 . Do not add any extra address etc here, that way it does not work.
|
||||
# remove port mapping if you use nginx reverse proxy, port 8080 is already exposed to wekan-tier network
|
||||
- 80:8080
|
||||
environment:
|
||||
#-----------------------------------------------------------------
|
||||
# ==== WRITEABLE PATH FOR FILE UPLOADS ====
|
||||
- WRITABLE_PATH=/data
|
||||
#-----------------------------------------------------------------
|
||||
# ==== AWS S3 FOR FILES ====
|
||||
# Any region. For example:
|
||||
# us-standard,us-west-1,us-west-2,
|
||||
# eu-west-1,eu-central-1,
|
||||
# ap-southeast-1,ap-northeast-1,sa-east-1
|
||||
#
|
||||
#- S3='{"s3":{"key": "xxx", "secret": "xxx", "bucket": "xxx", "region": "xxx"}}'
|
||||
#-----------------------------------------------------------------
|
||||
# ==== MONGO_URL ====
|
||||
- MONGO_URL=mongodb://wekandb:27017/wekan
|
||||
#---------------------------------------------------------------
|
||||
# ==== ROOT_URL SETTING ====
|
||||
# Change ROOT_URL to your real Wekan URL, for example:
|
||||
# If you have Caddy/Nginx/Apache providing SSL
|
||||
# - https://example.com
|
||||
# - https://boards.example.com
|
||||
# This can be problematic with avatars https://github.com/wekan/wekan/issues/1776
|
||||
# - https://example.com/wekan
|
||||
# If without https, can be only wekan node, no need for Caddy/Nginx/Apache if you don't need them
|
||||
# - http://example.com
|
||||
# - http://boards.example.com
|
||||
# - http://192.168.1.100 <=== using at local LAN
|
||||
- ROOT_URL=http://localhost # <=== using only at same laptop/desktop where Wekan is installed
|
||||
#---------------------------------------------------------------
|
||||
# ==== EMAIL SETTINGS ====
|
||||
# Email settings are only at MAIL_URL and MAIL_FROM.
|
||||
# Admin Panel has test button, but it's not used for settings.
|
||||
# see https://github.com/wekan/wekan/wiki/Troubleshooting-Mail
|
||||
# For SSL in email, change smtp:// to smtps://
|
||||
# NOTE: Special characters need to be url-encoded in MAIL_URL.
|
||||
# You can encode those characters for example at: https://www.urlencoder.org
|
||||
#- MAIL_URL=smtp://user:pass@mailserver.example.com:25/
|
||||
- MAIL_URL=smtp://<mail_url>:25/?ignoreTLS=true&tls={rejectUnauthorized:false}
|
||||
- MAIL_FROM=Wekan Notifications <noreply.wekan@mydomain.com>
|
||||
# Currently MAIL_SERVICE is not in use.
|
||||
#- MAIL_SERVICE=Outlook365
|
||||
#- MAIL_SERVICE_USER=firstname.lastname@hotmail.com
|
||||
#- MAIL_SERVICE_PASSWORD=SecretPassword
|
||||
#---------------------------------------------------------------
|
||||
# https://github.com/wekan/wekan/issues/3585#issuecomment-1021522132
|
||||
# Add more Node heap, this is done by default at Dockerfile:
|
||||
# - NODE_OPTIONS="--max_old_space_size=4096"
|
||||
# Add more stack, this is done at Dockerfile:
|
||||
# bash -c "ulimit -s 65500; exec node --stack-size=65500 main.js"
|
||||
#---------------------------------------------------------------
|
||||
# ==== OPTIONAL: MONGO OPLOG SETTINGS =====
|
||||
# https://github.com/wekan/wekan-mongodb/issues/2#issuecomment-378343587
|
||||
# We've fixed our CPU usage problem today with an environment
|
||||
# change around Wekan. I wasn't aware during implementation
|
||||
# that if you're using more than 1 instance of Wekan
|
||||
# (or any MeteorJS based tool) you're supposed to set
|
||||
# MONGO_OPLOG_URL as an environment variable.
|
||||
# Without setting it, Meteor will perform a poll-and-diff
|
||||
# update of it's dataset. With it, Meteor will update from
|
||||
# the OPLOG. See here
|
||||
# https://blog.meteor.com/tuning-meteor-mongo-livedata-for-scalability-13fe9deb8908
|
||||
# After setting
|
||||
# MONGO_OPLOG_URL=mongodb://<username>:<password>@<mongoDbURL>/local?authSource=admin&replicaSet=rsWekan
|
||||
# the CPU usage for all Wekan instances dropped to an average
|
||||
# of less than 10% with only occasional spikes to high usage
|
||||
# (I guess when someone is doing a lot of work)
|
||||
# - MONGO_OPLOG_URL=mongodb://<username>:<password>@<mongoDbURL>/local?authSource=admin&replicaSet=rsWekan
|
||||
#---------------------------------------------------------------
|
||||
# ==== OPTIONAL: KADIRA PERFORMANCE MONITORING FOR METEOR ====
|
||||
# https://github.com/edemaine/kadira-compose
|
||||
# https://github.com/meteor/meteor-apm-agent
|
||||
# https://blog.meteor.com/kadira-apm-is-now-open-source-490469ffc85f
|
||||
#- APM_OPTIONS_ENDPOINT=http://<kadira-ip>:11011
|
||||
#- APM_APP_ID=
|
||||
#- APM_APP_SECRET=
|
||||
#---------------------------------------------------------------
|
||||
# ==== OPTIONAL: LOGS AND STATS ====
|
||||
# https://github.com/wekan/wekan/wiki/Logs
|
||||
#
|
||||
# Daily export of Wekan changes as JSON to Logstash and ElasticSearch / Kibana (ELK)
|
||||
# https://github.com/wekan/wekan-logstash
|
||||
#
|
||||
# Statistics Python script for Wekan Dashboard
|
||||
# https://github.com/wekan/wekan-stats
|
||||
#
|
||||
# Console, file, and zulip logger on database changes https://github.com/wekan/wekan/pull/1010
|
||||
# with fix to replace console.log by winston logger https://github.com/wekan/wekan/pull/1033
|
||||
# but there could be bug https://github.com/wekan/wekan/issues/1094
|
||||
#
|
||||
# There is Feature Request: Logging date and time of all activity with summary reports,
|
||||
# and requesting reason for changing card to other column https://github.com/wekan/wekan/issues/1598
|
||||
#---------------------------------------------------------------
|
||||
# ==== NUMBER OF SEARCH RESULTS PER PAGE BY DEFAULT ====
|
||||
#- RESULTS_PER_PAGE=20
|
||||
#---------------------------------------------------------------
|
||||
# ==== AFTER OIDC LOGIN, ADD USERS AUTOMATICALLY TO THIS BOARD ID ====
|
||||
# https://github.com/wekan/wekan/pull/5098
|
||||
#- DEFAULT_BOARD_ID=abcd1234
|
||||
#---------------------------------------------------------------
|
||||
# ==== WEKAN API AND EXPORT BOARD ====
|
||||
# Wekan Export Board works when WITH_API=true.
|
||||
# https://github.com/wekan/wekan/wiki/REST-API
|
||||
# https://github.com/wekan/wekan-gogs
|
||||
# If you disable Wekan API with false, Export Board does not work.
|
||||
- WITH_API=true
|
||||
#---------------------------------------------------------------
|
||||
# ==== PASSWORD BRUTE FORCE PROTECTION ====
|
||||
#https://atmospherejs.com/lucasantoniassi/accounts-lockout
|
||||
#Defaults below. Uncomment to change. wekan/server/accounts-lockout.js
|
||||
#- ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURES_BEFORE=3
|
||||
#- ACCOUNTS_LOCKOUT_KNOWN_USERS_PERIOD=60
|
||||
#- ACCOUNTS_LOCKOUT_KNOWN_USERS_FAILURE_WINDOW=15
|
||||
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3
|
||||
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60
|
||||
#- ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15
|
||||
#---------------------------------------------------------------
|
||||
# ==== ACCOUNT OPTIONS ====
|
||||
# https://docs.meteor.com/api/accounts-multi.html#AccountsCommon-config
|
||||
# Defaults below. Uncomment to change. wekan/server/accounts-common.js
|
||||
# - ACCOUNTS_COMMON_LOGIN_EXPIRATION_IN_DAYS=90
|
||||
#---------------------------------------------------------------
|
||||
# ==== RICH TEXT EDITOR IN CARD COMMENTS ====
|
||||
# https://github.com/wekan/wekan/pull/2560
|
||||
- RICHER_CARD_COMMENT_EDITOR=false
|
||||
#---------------------------------------------------------------
|
||||
# ==== CARD OPENED, SEND WEBHOOK MESSAGE ====
|
||||
# https://github.com/wekan/wekan/issues/2518
|
||||
- CARD_OPENED_WEBHOOK_ENABLED=false
|
||||
#---------------------------------------------------------------
|
||||
# ==== Allow configuration to validate uploaded attachments ====
|
||||
#-ATTACHMENTS_UPLOAD_EXTERNAL_PROGRAM=/usr/local/bin/avscan {file}
|
||||
#-ATTACHMENTS_UPLOAD_MIME_TYPES=image/*,text/*
|
||||
#-ATTACHMENTS_UPLOAD_MAX_SIZE=5000000
|
||||
#---------------------------------------------------------------
|
||||
# ==== Allow configuration to validate uploaded avatars ====
|
||||
#-AVATARS_UPLOAD_EXTERNAL_PROGRAM=/usr/local/bin/avscan {file}
|
||||
#-AVATARS_UPLOAD_MIME_TYPES=image/*
|
||||
#-AVATARS_UPLOAD_MAX_SIZE=500000
|
||||
#---------------------------------------------------------------
|
||||
# ==== Allow to shrink attached/pasted image ====
|
||||
# https://github.com/wekan/wekan/pull/2544
|
||||
#- 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",
|
||||
# so any activityType matches the pattern, system will send out
|
||||
# notifications to all board members no matter they are watching
|
||||
# or tracking the board or not. Owner of the wekan server can
|
||||
# disable the feature by setting this variable to "NONE" or
|
||||
# change the pattern to any valid regex. i.e. '|' delimited
|
||||
# activityType names.
|
||||
# a) Example
|
||||
#- BIGEVENTS_PATTERN=due
|
||||
# b) All
|
||||
#- BIGEVENTS_PATTERN=received|start|due|end
|
||||
# c) Disabled
|
||||
- BIGEVENTS_PATTERN=NONE
|
||||
#---------------------------------------------------------------
|
||||
# ==== 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 is None, 2 days before and on the event day
|
||||
#- NOTIFY_DUE_DAYS_BEFORE_AND_AFTER=2,0
|
||||
#
|
||||
# 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 =====
|
||||
# Default: 30000 ms = 30s
|
||||
#- EMAIL_NOTIFICATION_TIMEOUT=30000
|
||||
#-----------------------------------------------------------------
|
||||
# ==== CORS =====
|
||||
# CORS: Set Access-Control-Allow-Origin header.
|
||||
#- CORS=*
|
||||
# CORS_ALLOW_HEADERS: Set Access-Control-Allow-Headers header. "Authorization,Content-Type" is required for cross-origin use of the API.
|
||||
#- CORS_ALLOW_HEADERS=Authorization,Content-Type
|
||||
# CORS_EXPOSE_HEADERS: Set Access-Control-Expose-Headers header. This is not needed for typical CORS situations
|
||||
#- CORS_EXPOSE_HEADERS=*
|
||||
#-----------------------------------------------------------------
|
||||
# ==== MATOMO INTEGRATION ====
|
||||
# Optional: Integration with Matomo https://matomo.org that is installed to your server
|
||||
# The address of the server where Matomo is hosted.
|
||||
#- MATOMO_ADDRESS=https://example.com/matomo
|
||||
# The value of the site ID given in Matomo server for Wekan
|
||||
#- MATOMO_SITE_ID=1
|
||||
# The option do not track which enables users to not be tracked by matomo
|
||||
#- MATOMO_DO_NOT_TRACK=true
|
||||
# The option that allows matomo to retrieve the username:
|
||||
#- MATOMO_WITH_USERNAME=true
|
||||
#-----------------------------------------------------------------
|
||||
# ==== BROWSER POLICY AND TRUSTED IFRAME URL ====
|
||||
# Enable browser policy and allow one trusted URL that can have iframe that has Wekan embedded inside.
|
||||
# Setting this to false is not recommended, it also disables all other browser policy protections
|
||||
# and allows all iframing etc. See wekan/server/policy.js
|
||||
- BROWSER_POLICY_ENABLED=true
|
||||
# When browser policy is enabled, HTML code at this Trusted URL can have iframe that embeds Wekan inside.
|
||||
#- TRUSTED_URL=https://intra.example.com
|
||||
#-----------------------------------------------------------------
|
||||
# ==== METRICS ALLOWED IP ADDRESSES ====
|
||||
# https://github.com/wekan/wekan/wiki/Metrics
|
||||
#- METRICS_ALLOWED_IP_ADDRESSES=192.168.0.100,192.168.0.200
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OUTGOING WEBHOOKS ====
|
||||
# What to send to Outgoing Webhook, or leave out. If commented out the default values will be: cardId,listId,oldListId,boardId,comment,user,card,commentId,swimlaneId,customerField,customFieldValue
|
||||
#- WEBHOOKS_ATTRIBUTES=cardId,listId,oldListId,boardId,comment,user,card,commentId
|
||||
#-----------------------------------------------------------------
|
||||
# ==== Debug OIDC OAuth2 etc ====
|
||||
#- DEBUG=true
|
||||
#---------------------------------------------
|
||||
# ==== AUTOLOGIN WITH OIDC/OAUTH2 ====
|
||||
# https://github.com/wekan/wekan/wiki/autologin
|
||||
#- OIDC_REDIRECTION_ENABLED=true
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OAUTH2 ORACLE on premise identity manager OIM ====
|
||||
#- ORACLE_OIM_ENABLED=true
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OAUTH2 AZURE ====
|
||||
# https://github.com/wekan/wekan/wiki/Azure
|
||||
# 1) Register the application with Azure. Make sure you capture
|
||||
# the application ID as well as generate a secret key.
|
||||
# 2) Configure the environment variables. This differs slightly
|
||||
# by installation type, but make sure you have the following:
|
||||
#- OAUTH2_ENABLED=true
|
||||
# Optional OAuth2 CA Cert, see https://github.com/wekan/wekan/issues/3299
|
||||
#- OAUTH2_CA_CERT=ABCD1234
|
||||
# Use OAuth2 ADFS additional changes. Also needs OAUTH2_ENABLED=true setting.
|
||||
#- OAUTH2_ADFS_ENABLED=false
|
||||
# OAuth2 login style: popup or redirect.
|
||||
#- OAUTH2_LOGIN_STYLE=redirect
|
||||
# Application GUID captured during app registration:
|
||||
#- OAUTH2_CLIENT_ID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
|
||||
# Secret key generated during app registration:
|
||||
#- OAUTH2_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
#- OAUTH2_SERVER_URL=https://login.microsoftonline.com/
|
||||
#- OAUTH2_AUTH_ENDPOINT=/oauth2/v2.0/authorize
|
||||
#- OAUTH2_USERINFO_ENDPOINT=https://graph.microsoft.com/oidc/userinfo
|
||||
#- OAUTH2_TOKEN_ENDPOINT=/oauth2/v2.0/token
|
||||
# The claim name you want to map to the unique ID field:
|
||||
#- OAUTH2_ID_MAP=email
|
||||
# The claim name you want to map to the username field:
|
||||
#- OAUTH2_USERNAME_MAP=email
|
||||
# The claim name you want to map to the full name field:
|
||||
#- OAUTH2_FULLNAME_MAP=name
|
||||
# The claim name you want to map to the email field:
|
||||
#- OAUTH2_EMAIL_MAP=email
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OAUTH2 Nextcloud ====
|
||||
# 1) Register the application with Nextcloud: https://your.nextcloud/index.php/settings/admin/security
|
||||
# Make sure you capture the application ID as well as generate a secret key.
|
||||
# Use https://your.wekan/_oauth/oidc for the redirect URI.
|
||||
# 2) Configure the environment variables. This differs slightly
|
||||
# by installation type, but make sure you have the following:
|
||||
#- OAUTH2_ENABLED=true
|
||||
# OAuth2 login style: popup or redirect.
|
||||
#- OAUTH2_LOGIN_STYLE=redirect
|
||||
# Application GUID captured during app registration:
|
||||
#- OAUTH2_CLIENT_ID=xxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
|
||||
# Secret key generated during app registration:
|
||||
#- OAUTH2_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||
#- OAUTH2_SERVER_URL=https://your-nextcloud.tld
|
||||
#- OAUTH2_AUTH_ENDPOINT=/index.php/apps/oauth2/authorize
|
||||
#- OAUTH2_USERINFO_ENDPOINT=/ocs/v2.php/cloud/user?format=json
|
||||
#- OAUTH2_TOKEN_ENDPOINT=/index.php/apps/oauth2/api/v1/token
|
||||
# The claim name you want to map to the unique ID field:
|
||||
#- OAUTH2_ID_MAP=id
|
||||
# The claim name you want to map to the username field:
|
||||
#- OAUTH2_USERNAME_MAP=id
|
||||
# The claim name you want to map to the full name field:
|
||||
#- OAUTH2_FULLNAME_MAP=display-name
|
||||
# The claim name you want to map to the email field:
|
||||
#- OAUTH2_EMAIL_MAP=email
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OAUTH2 KEYCLOAK ====
|
||||
# https://github.com/wekan/wekan/wiki/Keycloak <== MAPPING INFO, REQUIRED
|
||||
#- OAUTH2_ENABLED=true
|
||||
# OAuth2 login style: popup or redirect.
|
||||
#- OAUTH2_LOGIN_STYLE=redirect
|
||||
#- OAUTH2_CLIENT_ID=<Keycloak create Client ID>
|
||||
#- OAUTH2_SERVER_URL=<Keycloak server name>/auth
|
||||
#- OAUTH2_AUTH_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/auth
|
||||
#- OAUTH2_USERINFO_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/userinfo
|
||||
#- OAUTH2_TOKEN_ENDPOINT=/realms/<keycloak realm>/protocol/openid-connect/token
|
||||
#- OAUTH2_SECRET=<keycloak client secret>
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OAUTH2 DOORKEEPER ====
|
||||
# https://github.com/wekan/wekan/issues/1874
|
||||
# https://github.com/wekan/wekan/wiki/OAuth2
|
||||
# Enable the OAuth2 connection
|
||||
#- OAUTH2_ENABLED=true
|
||||
# OAuth2 docs: https://github.com/wekan/wekan/wiki/OAuth2
|
||||
# OAuth2 login style: popup or redirect.
|
||||
#- OAUTH2_LOGIN_STYLE=redirect
|
||||
# OAuth2 Client ID.
|
||||
#- OAUTH2_CLIENT_ID=abcde12345
|
||||
# OAuth2 Secret.
|
||||
#- OAUTH2_SECRET=54321abcde
|
||||
# OAuth2 Server URL.
|
||||
#- OAUTH2_SERVER_URL=https://chat.example.com
|
||||
# OAuth2 Authorization Endpoint.
|
||||
#- OAUTH2_AUTH_ENDPOINT=/oauth/authorize
|
||||
# OAuth2 Userinfo Endpoint.
|
||||
#- OAUTH2_USERINFO_ENDPOINT=/oauth/userinfo
|
||||
# OAuth2 Token Endpoint.
|
||||
#- OAUTH2_TOKEN_ENDPOINT=/oauth/token
|
||||
# OAUTH2 ID Token Whitelist Fields.
|
||||
#- OAUTH2_ID_TOKEN_WHITELIST_FIELDS=""
|
||||
# OAUTH2 Request Permissions.
|
||||
#- OAUTH2_REQUEST_PERMISSIONS=openid profile email
|
||||
# OAuth2 ID Mapping
|
||||
#- OAUTH2_ID_MAP=
|
||||
# OAuth2 Username Mapping
|
||||
#- OAUTH2_USERNAME_MAP=
|
||||
# OAuth2 Fullname Mapping
|
||||
#- OAUTH2_FULLNAME_MAP=
|
||||
# OAuth2 Email Mapping
|
||||
#- OAUTH2_EMAIL_MAP=
|
||||
#-----------------------------------------------------------------
|
||||
# ==== LDAP: UNCOMMENT ALL TO ENABLE LDAP ====
|
||||
# https://github.com/wekan/wekan/wiki/LDAP
|
||||
# For Snap settings see https://github.com/wekan/wekan-snap/wiki/Supported-settings-keys
|
||||
# Most settings work both on Snap and Docker below.
|
||||
# Note: Do not add single quotes '' to variables. Having spaces still works without quotes where required.
|
||||
#
|
||||
# The default authentication method used if a user does not exist to create and authenticate. Can be set as ldap.
|
||||
# (this is set properly in the Admin Panel, changing this item does not remove Password login option)
|
||||
#- DEFAULT_AUTHENTICATION_METHOD=ldap
|
||||
#
|
||||
# Enable or not the connection by the LDAP
|
||||
#- LDAP_ENABLE=true
|
||||
#
|
||||
# The port of the LDAP server
|
||||
#- LDAP_PORT=389
|
||||
#
|
||||
# The host server for the LDAP server
|
||||
#- LDAP_HOST=localhost
|
||||
#
|
||||
#-----------------------------------------------------------------
|
||||
# ==== LDAP AD Simple Auth ====
|
||||
#
|
||||
# Set to true, if you want to connect with Active Directory by Simple Authentication.
|
||||
# When using AD Simple Auth, LDAP_BASEDN is not needed.
|
||||
#
|
||||
# Example:
|
||||
#- LDAP_AD_SIMPLE_AUTH=true
|
||||
#
|
||||
# === LDAP User Authentication ===
|
||||
#
|
||||
# a) Option to login to the LDAP server with the user's own username and password, instead of
|
||||
# an administrator key. Default: false (use administrator key).
|
||||
#
|
||||
# b) When using AD Simple Auth, set to true, when login user is used for binding,
|
||||
# and LDAP_BASEDN is not needed.
|
||||
#
|
||||
# Example:
|
||||
#- LDAP_USER_AUTHENTICATION=true
|
||||
#
|
||||
# Which field is used to find the user for the user authentication. Default: uid.
|
||||
#- LDAP_USER_AUTHENTICATION_FIELD=uid
|
||||
#
|
||||
# === LDAP Default Domain ===
|
||||
#
|
||||
# a) In case AD SimpleAuth is configured, the default domain is appended to the given
|
||||
# loginname for creating the correct username for the bind request to AD.
|
||||
#
|
||||
# b) The default domain of the ldap it is used to create email if the field is not map
|
||||
# correctly with the LDAP_SYNC_USER_DATA_FIELDMAP
|
||||
#
|
||||
# Example :
|
||||
#- LDAP_DEFAULT_DOMAIN=mydomain.com
|
||||
#
|
||||
#-----------------------------------------------------------------
|
||||
# ==== LDAP BASEDN Auth ====
|
||||
#
|
||||
# The base DN for the LDAP Tree
|
||||
#- LDAP_BASEDN=ou=user,dc=example,dc=org
|
||||
#
|
||||
#-----------------------------------------------------------------
|
||||
# Fallback on the default authentication method
|
||||
#- LDAP_LOGIN_FALLBACK=false
|
||||
#
|
||||
# Reconnect to the server if the connection is lost
|
||||
#- LDAP_RECONNECT=true
|
||||
#
|
||||
# Overall timeout, in milliseconds
|
||||
#- LDAP_TIMEOUT=10000
|
||||
#
|
||||
# Specifies the timeout for idle LDAP connections in milliseconds
|
||||
#- LDAP_IDLE_TIMEOUT=10000
|
||||
#
|
||||
# Connection timeout, in milliseconds
|
||||
#- LDAP_CONNECT_TIMEOUT=10000
|
||||
#
|
||||
# If the LDAP needs a user account to search
|
||||
#- LDAP_AUTHENTIFICATION=true
|
||||
#
|
||||
# The search user DN - You need quotes when you have spaces in parameters
|
||||
# 2 examples:
|
||||
#- LDAP_AUTHENTIFICATION_USERDN=CN=ldap admin,CN=users,DC=domainmatter,DC=lan
|
||||
#- LDAP_AUTHENTIFICATION_USERDN=CN=wekan_adm,OU=serviceaccounts,OU=admin,OU=prod,DC=mydomain,DC=com
|
||||
#
|
||||
# The password for the search user
|
||||
#- LDAP_AUTHENTIFICATION_PASSWORD=pwd
|
||||
#
|
||||
# Enable logs for the module
|
||||
#- LDAP_LOG_ENABLED=true
|
||||
#
|
||||
# If the sync of the users should be done in the background
|
||||
#- LDAP_BACKGROUND_SYNC=false
|
||||
#
|
||||
# At which interval does the background task sync.
|
||||
# The format must be as specified in:
|
||||
# https://bunkat.github.io/later/parsers.html#text
|
||||
#- LDAP_BACKGROUND_SYNC_INTERVAL=every 1 hour
|
||||
#
|
||||
#- LDAP_BACKGROUND_SYNC_KEEP_EXISTANT_USERS_UPDATED=false
|
||||
#
|
||||
#- LDAP_BACKGROUND_SYNC_IMPORT_NEW_USERS=false
|
||||
#
|
||||
# If using LDAPS: LDAP_ENCRYPTION=ssl
|
||||
#- LDAP_ENCRYPTION=false
|
||||
#
|
||||
# The certification for the LDAPS server. Certificate needs to be included in this docker-compose.yml file.
|
||||
#- LDAP_CA_CERT=-----BEGIN CERTIFICATE-----MIIE+G2FIdAgIC...-----END CERTIFICATE-----
|
||||
#
|
||||
# Reject Unauthorized Certificate
|
||||
#- LDAP_REJECT_UNAUTHORIZED=false
|
||||
#
|
||||
# Optional extra LDAP filters. Don't forget the outmost enclosing parentheses if needed
|
||||
#- LDAP_USER_SEARCH_FILTER=
|
||||
#
|
||||
# base (search only in the provided DN), one (search only in the provided DN and one level deep), or sub (search the whole subtree)
|
||||
#- LDAP_USER_SEARCH_SCOPE=one
|
||||
#
|
||||
# Which field is used to find the user, like uid / sAMAccountName
|
||||
#- LDAP_USER_SEARCH_FIELD=sAMAccountName
|
||||
#
|
||||
# Used for pagination (0=unlimited)
|
||||
#- LDAP_SEARCH_PAGE_SIZE=0
|
||||
#
|
||||
# The limit number of entries (0=unlimited)
|
||||
#- LDAP_SEARCH_SIZE_LIMIT=0
|
||||
#
|
||||
# Enable group filtering. Note the authenticated ldap user must be able to query all relevant group data with own login data from ldap.
|
||||
#- LDAP_GROUP_FILTER_ENABLE=false
|
||||
#
|
||||
# The object class for filtering. Example: group
|
||||
#- LDAP_GROUP_FILTER_OBJECTCLASS=
|
||||
#
|
||||
# The attribute of a group identifying it. Example: cn
|
||||
#- LDAP_GROUP_FILTER_GROUP_ID_ATTRIBUTE=
|
||||
#
|
||||
# The attribute inside a group object listing its members. Example: member
|
||||
#- LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE=
|
||||
#
|
||||
# The format of the value of LDAP_GROUP_FILTER_GROUP_MEMBER_ATTRIBUTE. Example: 'dn' if the users dn is saved as value into the attribute.
|
||||
#- LDAP_GROUP_FILTER_GROUP_MEMBER_FORMAT=
|
||||
#
|
||||
# The group name (id) that matches all users.
|
||||
#- LDAP_GROUP_FILTER_GROUP_NAME=
|
||||
#
|
||||
# LDAP_UNIQUE_IDENTIFIER_FIELD : This field is sometimes class GUID (Globally Unique Identifier). Example: guid
|
||||
#- LDAP_UNIQUE_IDENTIFIER_FIELD=
|
||||
#
|
||||
# LDAP_UTF8_NAMES_SLUGIFY : Convert the username to utf8
|
||||
#- LDAP_UTF8_NAMES_SLUGIFY=true
|
||||
#
|
||||
# LDAP_USERNAME_FIELD : Which field contains the ldap username. username / sAMAccountName
|
||||
#- LDAP_USERNAME_FIELD=sAMAccountName
|
||||
#
|
||||
# LDAP_FULLNAME_FIELD : Which field contains the ldap fullname. fullname / sAMAccountName
|
||||
#- LDAP_FULLNAME_FIELD=fullname
|
||||
#
|
||||
#- LDAP_MERGE_EXISTING_USERS=false
|
||||
#
|
||||
# Allow existing account matching by e-mail address when username does not match
|
||||
#- LDAP_EMAIL_MATCH_ENABLE=true
|
||||
#
|
||||
# LDAP_EMAIL_MATCH_REQUIRE : require existing account matching by e-mail address when username does match
|
||||
#- LDAP_EMAIL_MATCH_REQUIRE=true
|
||||
#
|
||||
# LDAP_EMAIL_MATCH_VERIFIED : require existing account email address to be verified for matching
|
||||
#- LDAP_EMAIL_MATCH_VERIFIED=true
|
||||
#
|
||||
# LDAP_EMAIL_FIELD : which field contains the LDAP e-mail address
|
||||
#- LDAP_EMAIL_FIELD=mail
|
||||
#-----------------------------------------------------------------
|
||||
#- LDAP_SYNC_USER_DATA=false
|
||||
#
|
||||
#- LDAP_SYNC_USER_DATA_FIELDMAP={"cn":"name", "mail":"email"}
|
||||
#
|
||||
#- LDAP_SYNC_GROUP_ROLES=
|
||||
#
|
||||
# The default domain of the ldap it is used to create email if the field is not map correctly
|
||||
# with the LDAP_SYNC_USER_DATA_FIELDMAP is defined in setting LDAP_DEFAULT_DOMAIN above.
|
||||
#
|
||||
# Enable/Disable syncing of admin status based on ldap groups:
|
||||
#- LDAP_SYNC_ADMIN_STATUS=true
|
||||
#
|
||||
# Comma separated list of admin group names to sync.
|
||||
#- LDAP_SYNC_ADMIN_GROUPS=group1,group2
|
||||
#---------------------------------------------------------------------
|
||||
# Login to LDAP automatically with HTTP header.
|
||||
# In below example for siteminder, at right side of = is header name.
|
||||
#- HEADER_LOGIN_ID=HEADERUID
|
||||
#- HEADER_LOGIN_FIRSTNAME=HEADERFIRSTNAME
|
||||
#- HEADER_LOGIN_LASTNAME=HEADERLASTNAME
|
||||
#- HEADER_LOGIN_EMAIL=HEADEREMAILADDRESS
|
||||
#---------------------------------------------------------------------
|
||||
# ==== LOGOUT TIMER, probably does not work yet ====
|
||||
# LOGOUT_WITH_TIMER : Enables or not the option logout with timer
|
||||
# example : LOGOUT_WITH_TIMER=true
|
||||
#- LOGOUT_WITH_TIMER=
|
||||
#
|
||||
# LOGOUT_IN : The number of days
|
||||
# example : LOGOUT_IN=1
|
||||
#- LOGOUT_IN=
|
||||
#
|
||||
# LOGOUT_ON_HOURS : The number of hours
|
||||
# example : LOGOUT_ON_HOURS=9
|
||||
#- LOGOUT_ON_HOURS=
|
||||
#
|
||||
# LOGOUT_ON_MINUTES : The number of minutes
|
||||
# example : LOGOUT_ON_MINUTES=55
|
||||
#- LOGOUT_ON_MINUTES=
|
||||
#-------------------------------------------------------------------
|
||||
# Hide password login form
|
||||
# - PASSWORD_LOGIN_ENABLED=true
|
||||
#-------------------------------------------------------------------
|
||||
#- CAS_ENABLED=true
|
||||
#- CAS_BASE_URL=https://cas.example.com/cas
|
||||
#- CAS_LOGIN_URL=https://cas.example.com/login
|
||||
#- CAS_VALIDATE_URL=https://cas.example.com/cas/p3/serviceValidate
|
||||
#---------------------------------------------------------------------
|
||||
#- SAML_ENABLED=true
|
||||
#- SAML_PROVIDER=
|
||||
#- SAML_ENTRYPOINT=
|
||||
#- SAML_ISSUER=
|
||||
#- SAML_CERT=
|
||||
#- SAML_IDPSLO_REDIRECTURL=
|
||||
#- SAML_PRIVATE_KEYFILE=
|
||||
#- SAML_PUBLIC_CERTFILE=
|
||||
#- SAML_IDENTIFIER_FORMAT=
|
||||
#- SAML_LOCAL_PROFILE_MATCH_ATTRIBUTE=
|
||||
#- SAML_ATTRIBUTES=
|
||||
#---------------------------------------------------------------------
|
||||
# Wait spinner to use
|
||||
# - WAIT_SPINNER=Bounce
|
||||
#---------------------------------------------------------------------
|
||||
depends_on:
|
||||
- wekandb
|
||||
volumes:
|
||||
- /etc/localtime:/etc/localtime:ro
|
||||
- wekan-files:/data:rw
|
||||
|
||||
#---------------------------------------------------------------------------------
|
||||
# ==== OPTIONAL: SHARE DATABASE TO OFFICE LAN AND REMOTE VPN ====
|
||||
# When using Wekan both at office LAN and remote VPN:
|
||||
# 1) Have above Wekan docker container config with LAN IP address
|
||||
# 2) Copy all of above wekan container config below, look above of this part above and all config below it,
|
||||
# before above depends_on: part:
|
||||
#
|
||||
# wekan:
|
||||
# #-------------------------------------------------------------------------------------
|
||||
# # ==== MONGODB AND METEOR VERSION ====
|
||||
# # a) For Wekan Meteor 1.8.x version at meteor-1.8 branch, .....
|
||||
#
|
||||
#
|
||||
# and change name to different name like wekan2 or wekanvpn, and change ROOT_URL to server VPN IP
|
||||
# address.
|
||||
# 3) This way both Wekan containers can use same MongoDB database
|
||||
# and see the same Wekan boards.
|
||||
# 4) You could also add 3rd Wekan container for 3rd network etc.
|
||||
# EXAMPLE:
|
||||
# wekan2:
|
||||
# ....COPY CONFIG FROM ABOVE TO HERE...
|
||||
# environment:
|
||||
# - ROOT_URL='http://10.10.10.10'
|
||||
# ...COPY CONFIG FROM ABOVE TO HERE...
|
||||
#---------------------------------------------------------------------------------
|
||||
|
||||
# OPTIONAL NGINX CONFIG FOR REVERSE PROXY
|
||||
# nginx:
|
||||
# image: nginx
|
||||
# container_name: nginx
|
||||
# restart: always
|
||||
# networks:
|
||||
# - wekan-tier
|
||||
# depends_on:
|
||||
# - wekan
|
||||
# ports:
|
||||
# - 80:80
|
||||
# - 443:443
|
||||
# volumes:
|
||||
# - ./nginx/ssl:/etc/nginx/ssl/:ro
|
||||
# - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
|
||||
## Alternative volume config:
|
||||
## volumes:
|
||||
## - ./nginx/nginx.conf:/etc/nginx/conf.d/default.conf:ro
|
||||
## - ./nginx/ssl/ssl.conf:/etc/nginx/conf.d/ssl/ssl.conf:ro
|
||||
## - ./nginx/ssl/testvm-ehu.crt:/etc/nginx/conf.d/ssl/certs/mycert.crt:ro
|
||||
## - ./nginx/ssl/testvm-ehu.key:/etc/nginx/conf.d/ssl/certs/mykey.key:ro
|
||||
## - ./nginx/ssl/pphrase:/etc/nginx/conf.d/ssl/pphrase:ro
|
||||
|
||||
volumes:
|
||||
wekan-files:
|
||||
driver: local
|
||||
wekan-db:
|
||||
driver: local
|
||||
wekan-db-dump:
|
||||
driver: local
|
||||
|
||||
networks:
|
||||
wekan-tier:
|
||||
driver: bridge
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "نص",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Изтрий таблото",
|
||||
"default-subtasks-board": "Подзадачи за табло __board__",
|
||||
"default": "по подразбиране",
|
||||
"defaultdefault": "по подразбиране",
|
||||
"queue": "Опашка",
|
||||
"subtask-settings": "Настройки на Подзадачите",
|
||||
"card-settings": "Настройки на Карта",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Текст",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Suprimeix el tauler",
|
||||
"default-subtasks-board": "Subtasques per al tauler __board__",
|
||||
"default": "Per defecte",
|
||||
"defaultdefault": "Per defecte",
|
||||
"queue": "Cua",
|
||||
"subtask-settings": "Configuració de subtasques",
|
||||
"card-settings": "Configuració de fitxa",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Tipus de fitxer permesos per a l'avatar:",
|
||||
"invalid-file": "Si el nom de fitxer és invàlid, actualitzar o renombrar es cancel·la.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Smazat tablo",
|
||||
"default-subtasks-board": "Podúkoly pro tablo __board__",
|
||||
"default": "Výchozí",
|
||||
"defaultdefault": "Výchozí",
|
||||
"queue": "Fronta",
|
||||
"subtask-settings": "Nastavení podúkolů",
|
||||
"card-settings": "Nastavení karet",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Smazat tablo",
|
||||
"default-subtasks-board": "Podúkoly pro tablo __board__",
|
||||
"default": "Výchozí",
|
||||
"defaultdefault": "Výchozí",
|
||||
"queue": "Fronta",
|
||||
"subtask-settings": "Nastavení podúkolů",
|
||||
"card-settings": "Nastavení karet",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Slet tavle",
|
||||
"default-subtasks-board": "Delopgaver for tavlen __board__",
|
||||
"default": "Standard",
|
||||
"defaultdefault": "Standard",
|
||||
"queue": "Kø",
|
||||
"subtask-settings": "Indstillinger for delopgaver",
|
||||
"card-settings": "Indstillinger for kort",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Tekst",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Board löschen",
|
||||
"default-subtasks-board": "Teilaufgabe für __board__ Board",
|
||||
"default": "Standard",
|
||||
"defaultdefault": "Standard",
|
||||
"queue": "Warteschlange",
|
||||
"subtask-settings": "Einstellungen für Teilaufgaben",
|
||||
"card-settings": "Karten-Einstellungen",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Board löschen",
|
||||
"default-subtasks-board": "Teilaufgabe für __board__ Board",
|
||||
"default": "Standard",
|
||||
"defaultdefault": "Standard",
|
||||
"queue": "Warteschlange",
|
||||
"subtask-settings": "Einstellungen für Teilaufgaben",
|
||||
"card-settings": "Karten-Einstellungen",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -150,7 +150,7 @@
|
||||
"board-background-image-url": "Hintergrundbild URL",
|
||||
"add-background-image": "Hintergrundbild hinzufügen",
|
||||
"remove-background-image": "Hintergrundbild entfernen",
|
||||
"show-at-all-boards-page" : "Zeige auf \"Alle Boards\" Seite",
|
||||
"show-at-all-boards-page" : "Auf der \"Alle Boards\" Seite anzeigen",
|
||||
"board-info-on-my-boards" : "Einstellungen für Alle Boards",
|
||||
"boardInfoOnMyBoardsPopup-title" : "Einstellungen für Alle Boards",
|
||||
"boardInfoOnMyBoards-title": "Einstellungen für Alle Boards",
|
||||
@@ -695,7 +695,7 @@
|
||||
"show-field-on-card": "Zeige dieses Feld auf der Karte",
|
||||
"automatically-field-on-card": "Füge Feld neuen Karten hinzu",
|
||||
"always-field-on-card": "Füge Feld allen Karten hinzu",
|
||||
"showLabel-field-on-card": "Feld für Label auf Minikarte anzeigen",
|
||||
"showLabel-field-on-card": " Label Feld auf Minikarte anzeigen",
|
||||
"showSum-field-on-list": "Zeige Summe der Felder oben in der Liste",
|
||||
"yes": "Ja",
|
||||
"no": "Nein",
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Board löschen",
|
||||
"default-subtasks-board": "Teilaufgabe für __board__ Board",
|
||||
"default": "Standard",
|
||||
"defaultdefault": "Standard",
|
||||
"queue": "Warteschlange",
|
||||
"subtask-settings": "Einstellungen für Teilaufgaben",
|
||||
"card-settings": "Karten-Einstellungen",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Erlaubte Profilbild Dateitypen:",
|
||||
"invalid-file": "Wenn der Dateiname ungültig ist, wird das Hochladen oder Umbenennen abgebrochen.",
|
||||
"preview-pdf-not-supported": "Dein Gerät unterstützt keine PDF Vorschau. Versuche sie stattdessen herunterzuladen.",
|
||||
"drag-board": "Das Board ziehen nach"
|
||||
"drag-board": "Das Board ziehen nach",
|
||||
"translation-number": "Die Anzahl benutzerdefinierter String-Übersetzungen ist:",
|
||||
"delete-translation-confirm-popup": "Möchten Sie diese benutzerdefinierte String-Übersetzung wirklich löschen? Die Aktion kann nicht rückgängig gemacht werden.",
|
||||
"newTranslationPopup-title": "Neue benutzerdefinierte String-Übersetzung",
|
||||
"editTranslationPopup-title": "Bearbeite die benutzerdefinierte String-Übersetzung",
|
||||
"settingsTranslationPopup-title": "Soll die benutzerdefinierte String-Übersetzung gelöscht werden?",
|
||||
"translation": "Übersetzung",
|
||||
"text": "Text",
|
||||
"translation-text": "Übersetzungstext",
|
||||
"show-at-minicard": "Zeige auf Minikarte",
|
||||
"show-checklist-at-minicard": "Checkliste auf Minikarte anzeigen",
|
||||
"show-subtasks-field": "Teilaufgaben Feld anzeigen"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Διαγραφή Πίνακα",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Προεπιλογή",
|
||||
"defaultdefault": "Προεπιλογή",
|
||||
"queue": "Ουρά αναμονής",
|
||||
"subtask-settings": "Ρυθμίσεις υποεργασιών (subtasks)",
|
||||
"card-settings": "Ρυθμίσεις Κάρτας",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Κείμενο",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Διαγραφή Πίνακα",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Προεπιλογή",
|
||||
"defaultdefault": "Προεπιλογή",
|
||||
"queue": "Ουρά αναμονής",
|
||||
"subtask-settings": "Ρυθμίσεις υποεργασιών (subtasks)",
|
||||
"card-settings": "Ρυθμίσεις Κάρτας",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Κείμενο",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"accept": "Akcepti",
|
||||
"act-activity-notify": "Activity Notification",
|
||||
"act-activity-notify": "Agado Sciigo",
|
||||
"act-addAttachment": "aldonita alligitecon __attachment__ al karto __card__ en la listo __list__ en la naĝotubo __swimlane__ en la tabulo __board__",
|
||||
"act-deleteAttachment": "forigita alligitecon __attachment__ al karto __card__ en la listo __list__ en la naĝotubo __swimlane__ en la tabulo __board__",
|
||||
"act-addSubtask": "aldonita subtaskon __subtask__ al karto __card__ en la listo __list__ en la naĝotubo __swimlane__ en la tabulo __board__",
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Defaŭlto",
|
||||
"defaultdefault": "Defaŭlto",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Teksto",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Texto",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Eliminar el tablero",
|
||||
"default-subtasks-board": "Subtareas para el tablero __board__",
|
||||
"default": "Por defecto",
|
||||
"defaultdefault": "Por defecto",
|
||||
"queue": "Cola",
|
||||
"subtask-settings": "Preferencias de las subtareas",
|
||||
"card-settings": "Preferencias de la tarjeta",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Texto",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Eliminar el tablero",
|
||||
"default-subtasks-board": "Subtareas para el tablero __board__",
|
||||
"default": "Por defecto",
|
||||
"defaultdefault": "Por defecto",
|
||||
"queue": "Cola",
|
||||
"subtask-settings": "Configuración de subtareas",
|
||||
"card-settings": "Configuración de tarjeta",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Texto",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Eliminar el tablero",
|
||||
"default-subtasks-board": "Subtareas para el tablero __board__",
|
||||
"default": "Por defecto",
|
||||
"defaultdefault": "Por defecto",
|
||||
"queue": "Cola",
|
||||
"subtask-settings": "Preferencias de las subtareas",
|
||||
"card-settings": "Preferencias de la tarjeta",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Tipos de archivo permitidos para el avatar:",
|
||||
"invalid-file": "Si el nombre de archivo no es válido, la carga o el cambio de nombre es cancelado.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Texto",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Kustuta juhatus",
|
||||
"default-subtasks-board": "Juhatuse __board__ alamülesanded",
|
||||
"default": "Vaikimisi",
|
||||
"defaultdefault": "Vaikimisi",
|
||||
"queue": "Saba",
|
||||
"subtask-settings": "Alaülesannete seaded",
|
||||
"card-settings": "Kaardi seaded",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Tekst",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Lehenetsia",
|
||||
"defaultdefault": "Lehenetsia",
|
||||
"queue": "Ilara",
|
||||
"subtask-settings": "Azpiatazaren ezarpenak",
|
||||
"card-settings": "Txartelaren ezarpenak",
|
||||
@@ -920,7 +921,7 @@
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"addmore-detail": "Add a more detailed description",
|
||||
"show-on-card": "Erakutsi txartelan",
|
||||
"show-on-minicard": "Show on Minicard",
|
||||
"show-on-minicard": "Erakutsi minitxartelean",
|
||||
"new": "New",
|
||||
"editOrgPopup-title": "Edit Organization",
|
||||
"newOrgPopup-title": "New Organization",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Baimendutako avatar fitxategi motak:",
|
||||
"invalid-file": "Fitxategi-izena baliogabea bada, karga edo izena aldaketa bertan behera geratuko da.",
|
||||
"preview-pdf-not-supported": "Zure gailuak ez du onartzen PDF aurrebistarik. Saiatu deskargatzen.",
|
||||
"drag-board": "Arrastatu taula"
|
||||
"drag-board": "Arrastatu taula",
|
||||
"translation-number": "Itzulpen-kate pertsonalizatuen kopurua hau da:",
|
||||
"delete-translation-confirm-popup": "Ziur itzulpen-kate pertsonalizatu hau ezabatu nahi duzula? Ezin da desegin.",
|
||||
"newTranslationPopup-title": "Itzulpen-kate pertsonalizatu berria",
|
||||
"editTranslationPopup-title": "Editatu itzulpen-kate pertsonalizatua",
|
||||
"settingsTranslationPopup-title": "Itzulpen-kate pertsonalizatu hau ezabatu nahi duzu?",
|
||||
"translation": "Itzulpena",
|
||||
"text": "Testua",
|
||||
"translation-text": "itzulpenaren testua",
|
||||
"show-at-minicard": "Erakutsi minitxartelean",
|
||||
"show-checklist-at-minicard": "Erakutsi kontrol-zerrenda minitxartelean",
|
||||
"show-subtasks-field": "azpi-zereginen eremua bezala"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "حذف برد",
|
||||
"default-subtasks-board": "زیروظایفِ برد __board__",
|
||||
"default": "پیشفرض",
|
||||
"defaultdefault": "پیشفرض",
|
||||
"queue": "صف",
|
||||
"subtask-settings": "تنظیمات زیروظایف",
|
||||
"card-settings": "تنظیمات کارت",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "متن",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Poista taulu",
|
||||
"default-subtasks-board": "Alitehtävät taululle __board__",
|
||||
"default": "Oletus",
|
||||
"defaultdefault": "Oletus",
|
||||
"queue": "Jono",
|
||||
"subtask-settings": "Alitehtävä-asetukset",
|
||||
"card-settings": "Kortin asetukset",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Sallitut profiilikuva tiedostotyypit:",
|
||||
"invalid-file": "Jos tiedostonimi ei kelpaa, liittäminen tai uudelleennimeäminen perutaan.",
|
||||
"preview-pdf-not-supported": "Laitteesi ei tue PDF-esikatselua. Yritä sen sijaan ladata.",
|
||||
"drag-board": "Vedä taulua"
|
||||
"drag-board": "Vedä taulua",
|
||||
"translation-number": "Mukautettujen käännösten määrä on:",
|
||||
"delete-translation-confirm-popup": "Haluatko varmasti poistaa tämän mukautetun käännöksen? Tätä ei voi peruuttaa.",
|
||||
"newTranslationPopup-title": "Uusi mukautettu käännös",
|
||||
"editTranslationPopup-title": "Muokkaa mukautettua käännöstä",
|
||||
"settingsTranslationPopup-title": "Poista tämä mukautettu käännös?",
|
||||
"translation": "Käännös",
|
||||
"text": "Teksti",
|
||||
"translation-text": "Käännetty teksti",
|
||||
"show-at-minicard": "Näytä minikortilla",
|
||||
"show-checklist-at-minicard": "Näytä tarkistuslista minikortilla",
|
||||
"show-subtasks-field": "Näytä alitehtävät kenttä"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -85,14 +85,14 @@
|
||||
"add-card": "Ajouter une carte",
|
||||
"add-card-to-top-of-list": "Ajouter la carte en haut de la liste",
|
||||
"add-card-to-bottom-of-list": "Ajouter la carte en bas de la liste",
|
||||
"setListWidthPopup-title": "Set List Width",
|
||||
"set-list-width": "Set List Width",
|
||||
"set-list-width-value": "List Width (pixels)",
|
||||
"list-width-error-message": "List width must be a positive integer",
|
||||
"setSwimlaneHeightPopup-title": "Set Swimlane Height",
|
||||
"set-swimlane-height": "Set Swimlane Height",
|
||||
"set-swimlane-height-value": "Swimlane Height (pixels)",
|
||||
"swimlane-height-error-message": "Swimlane height must be a positive integer",
|
||||
"setListWidthPopup-title": "Définir la largeur de la liste",
|
||||
"set-list-width": "Définir la largeur de la liste",
|
||||
"set-list-width-value": "Largeur de la liste (pixels)",
|
||||
"list-width-error-message": "La largeur de la liste doit être un entier positif",
|
||||
"setSwimlaneHeightPopup-title": "Définir la hauteur du couloir",
|
||||
"set-swimlane-height": "Définir la hauteur du couloir",
|
||||
"set-swimlane-height-value": "Hauteur du couloir (pixels)",
|
||||
"swimlane-height-error-message": "La hauteur du couloir doit être un entier positif",
|
||||
"add-swimlane": "Ajouter un couloir",
|
||||
"add-subtask": "Ajouter une sous-tâche",
|
||||
"add-checklist": "Ajouter une checklist",
|
||||
@@ -100,10 +100,10 @@
|
||||
"close-add-checklist-item": "Fermer ajouter un élément du formulaire checklist",
|
||||
"close-edit-checklist-item": "Fermer éditer un élément du formulaire checklist",
|
||||
"convertChecklistItemToCardPopup-title": "Convertir en carte",
|
||||
"add-cover": "Add cover image to minicard",
|
||||
"add-cover": "Ajouter la vignette sur la mini-carte",
|
||||
"add-label": "Ajouter une étiquette",
|
||||
"add-list": "Ajouter une liste",
|
||||
"add-after-list": "Add After List",
|
||||
"add-after-list": "Ajouter après la liste",
|
||||
"add-members": "Assigner des participants",
|
||||
"added": "Ajouté le",
|
||||
"addMemberPopup-title": "Participants",
|
||||
@@ -146,10 +146,10 @@
|
||||
"avatar-too-big": "La taille du fichier de l'avatar est trop importante (__size__ au maximum)",
|
||||
"back": "Retour",
|
||||
"board-change-color": "Changer la couleur",
|
||||
"board-change-background-image": "Change Background Image",
|
||||
"board-background-image-url": "Background Image URL",
|
||||
"add-background-image": "Add Background Image",
|
||||
"remove-background-image": "Remove Background Image",
|
||||
"board-change-background-image": "Changer l'image de fond",
|
||||
"board-background-image-url": "URL de l'image de fond",
|
||||
"add-background-image": "Ajouter une image de fond",
|
||||
"remove-background-image": "Supprimer l'image de fond",
|
||||
"show-at-all-boards-page" : "Afficher sur la page de tous les tableaux",
|
||||
"board-info-on-my-boards" : "Paramètres de tous les tableaux",
|
||||
"boardInfoOnMyBoardsPopup-title" : "Paramètres de tous les tableaux",
|
||||
@@ -162,9 +162,9 @@
|
||||
"board-public-info": "Ce tableau sera <strong>public</strong>.",
|
||||
"board-drag-drop-reorder-or-click-open": "Glisser-déposer les icônes de tableau pour les réordonner. Cliquer sur l'icône du tableau pour l'ouvrir.",
|
||||
"boardChangeColorPopup-title": "Change la couleur de fond du tableau",
|
||||
"boardChangeBackgroundImagePopup-title": "Change Background Image",
|
||||
"boardChangeBackgroundImagePopup-title": "Changer l'image de fond",
|
||||
"allBoardsChangeColorPopup-title": "Changer la couleur",
|
||||
"allBoardsChangeBackgroundImagePopup-title": "Change Background Image",
|
||||
"allBoardsChangeBackgroundImagePopup-title": "Changer l'image de fond",
|
||||
"boardChangeTitlePopup-title": "Renommer le tableau",
|
||||
"boardChangeVisibilityPopup-title": "Changer la visibilité",
|
||||
"boardChangeWatchPopup-title": "Modifier le suivi",
|
||||
@@ -440,7 +440,7 @@
|
||||
"filter-to-selection": "Filtre vers la sélection",
|
||||
"other-filters-label": "Autres filtres",
|
||||
"advanced-filter-label": "Filtre avancé",
|
||||
"advanced-filter-description": "Le filtre avancé permet d'écrire une chaîne contenant les opérateur suivants : == != <= >= && || ( ). Les opérateurs doivent être séparés par des espaces. Vous pouvez filtrer tous les champs personnalisés en saisissant leur nom et leur valeur. Par exemple : champ1 == valeur1. Remarque : si des champs ou valeurs contiennent des espaces, vous devez les mettre entre apostrophes. Par exemple : 'champ 1' = 'valeur 1'. Pour échapper un caractère de contrôle (' \\\\/), vous pouvez utiliser \\\\. Par exemple : champ1 = I\\\\'m. Il est également possible de combiner plusieurs conditions. Par exemple : f1 == v1 || f2 == v2. Normalement, tous les opérateurs sont interprétés de gauche à droite. Vous pouvez changer l'ordre à l'aide de parenthèses. Par exemple : f1 == v1 and (f2 == v2 || f2 == v3). Vous pouvez également chercher parmi les champs texte en utilisant des expressions régulières : f1 == /Test.*/i",
|
||||
"advanced-filter-description": "Le filtre avancé permet d'écrire une chaîne contenant les opérateur suivants : == != <= >= && || ( ). Les opérateurs doivent être séparés par des espaces. Vous pouvez filtrer tous les champs personnalisés en saisissant leur nom et leur valeur. Par exemple : champ1 == valeur1. Remarque : si des champs ou valeurs contiennent des espaces, vous devez les mettre entre apostrophes. Par exemple : 'champ 1' == 'valeur 1'. Pour échapper un caractère de contrôle (' \\/), vous pouvez utiliser \\. Par exemple : champ1 == I\\'m. Il est également possible de combiner plusieurs conditions. Par exemple : f1 == v1 || f2 == v2. Normalement, tous les opérateurs sont interprétés de gauche à droite. Vous pouvez changer l'ordre à l'aide de parenthèses. Par exemple : F1 == V1 && ( F2 == V2 || F2 == V3 ). Vous pouvez également chercher parmi les champs texte en utilisant des expressions régulières : f1 == /Test.*/i",
|
||||
"fullname": "Nom complet",
|
||||
"header-logo-title": "Retourner à la page des tableaux",
|
||||
"hide-system-messages": "Masquer les messages système",
|
||||
@@ -550,7 +550,7 @@
|
||||
"public": "Public",
|
||||
"public-desc": "Ce tableau est public. Il est accessible par toutes les personnes disposant du lien et apparaîtra dans les résultats des moteurs de recherche tels que Google. Seuls les membres peuvent le modifier.",
|
||||
"quick-access-description": "Ajouter un tableau à vos favoris pour créer un raccourci dans cette barre.",
|
||||
"remove-cover": "Remove cover image from minicard",
|
||||
"remove-cover": "Supprimer la vignette de la mini-carte",
|
||||
"remove-from-board": "Retirer du tableau",
|
||||
"remove-label": "Retirer l'étiquette",
|
||||
"listDeletePopup-title": "Supprimer la liste ?",
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Supprimer le tableau",
|
||||
"default-subtasks-board": "Sous-tâches du tableau __board__",
|
||||
"default": "Défaut",
|
||||
"defaultdefault": "Défaut",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Paramètres des sous-tâches",
|
||||
"card-settings": "Paramètres de la carte",
|
||||
@@ -738,9 +739,9 @@
|
||||
"deposit-subtasks-list": "Liste de destination pour les sous-tâches déposées ici :",
|
||||
"show-parent-in-minicard": "Voir la carte parente dans la mini-carte :",
|
||||
"description-on-minicard": "Description sur la mini-carte",
|
||||
"cover-attachment-on-minicard": "Cover image on minicard",
|
||||
"badge-attachment-on-minicard": "Count of attachments on minicard",
|
||||
"card-sorting-by-number-on-minicard": "Card sorting by number on minicard",
|
||||
"cover-attachment-on-minicard": "Vignette sur la mini-carte",
|
||||
"badge-attachment-on-minicard": "Compteur de pièces jointes sur la mini-carte",
|
||||
"card-sorting-by-number-on-minicard": "Tri numérique des cartes sur la mini-carte",
|
||||
"prefix-with-full-path": "Préfixer avec le chemin complet",
|
||||
"prefix-with-parent": "Préfixer avec le parent",
|
||||
"subtext-with-full-path": "Sous-titre avec le chemin complet",
|
||||
@@ -1097,7 +1098,7 @@
|
||||
"label-names": "Noms d'étiquette",
|
||||
"archived-at": "archivée le",
|
||||
"sort-cards": "Trier les cartes",
|
||||
"sort-is-on": "Sort is on",
|
||||
"sort-is-on": "Le tri est activé",
|
||||
"cardsSortPopup-title": "Trier les cartes",
|
||||
"due-date": "Date d'échéance",
|
||||
"server-error": "Erreur serveur",
|
||||
@@ -1228,6 +1229,17 @@
|
||||
"max-avatar-filesize": "Taille maximum du fichier de l'avatar en octets :",
|
||||
"allowed-avatar-filetypes": "Types de fichier autorisés pour l'avatar :",
|
||||
"invalid-file": "Si le nom de fichier est invalide, le téléchargement ou le renommage sera annulé.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"preview-pdf-not-supported": "Votre périphérique ne supporte pas la prévisualisation de PDF. Essayer plutôt le téléchargement.",
|
||||
"drag-board": "Glisser le tableau",
|
||||
"translation-number": "Le nombre de traductions personnalisées est de :",
|
||||
"delete-translation-confirm-popup": "Êtes-vous sûr de vouloir supprimer cette traduction personnalisée ? Cela est irréversible.",
|
||||
"newTranslationPopup-title": "Nouvelle traduction personnalisée",
|
||||
"editTranslationPopup-title": "Éditer la traduction personnalisée",
|
||||
"settingsTranslationPopup-title": "Supprimer cette traduction personnalisée ?",
|
||||
"translation": "Traduction",
|
||||
"text": "Texte",
|
||||
"translation-text": "Texte traduit",
|
||||
"show-at-minicard": "Afficher sur la mini-carte",
|
||||
"show-checklist-at-minicard": "Afficher la check-list sur la mini-carte",
|
||||
"show-subtasks-field": "Afficher le champ des sous-tâches"
|
||||
}
|
||||
@@ -8,14 +8,14 @@
|
||||
"act-addedLabel": "a ajouté l'étiquette __label__ à la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-removeLabel": "a enlevé l'étiquette __label__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-removedLabel": "a enlevé l'étiquette __label__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-addChecklist": "a ajouté la checklist __checklist__ à la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-addChecklistItem": "a ajouté l'élément __checklistItem__ à la checklist __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-removeChecklist": "a supprimé la checklist __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-removeChecklistItem": "a supprimé l'élément __checklistItem__ de la checklist __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-checkedItem": "a coché __checklistItem__ de la checklist __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-uncheckedItem": "a décoché __checklistItem__ de la checklist __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-completeChecklist": "a complété la checklist __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-uncompleteChecklist": "a rendu incomplet la checklist __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-addChecklist": "a ajouté la check-list __checklist__ à la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-addChecklistItem": "a ajouté l'élément __checklistItem__ à la check-list __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-removeChecklist": "a supprimé la check-list __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-removeChecklistItem": "a supprimé l'élément __checklistItem__ de la check-list __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-checkedItem": "a coché __checklistItem__ de la check-list __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-uncheckedItem": "a décoché __checklistItem__ de la check-list __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-completeChecklist": "a complété la check-list __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-uncompleteChecklist": "a rendu incomplet la check-list __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-addComment": "a commenté la carte __card__ : __comment__ dans la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-editComment": "a édité le commentaire de la carte __card__ : __comment__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"act-deleteComment": "a supprimé le commentaire de la carte __card__ : __comment__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
@@ -60,19 +60,19 @@
|
||||
"activity-sent": "a envoyé %s vers %s",
|
||||
"activity-unjoined": "a quitté %s",
|
||||
"activity-subtask-added": "a ajouté une sous-tâche à %s",
|
||||
"activity-checked-item": "a coché %s dans la checklist %s de %s",
|
||||
"activity-unchecked-item": "a décoché %s dans la checklist %s de %s",
|
||||
"activity-checklist-added": "a ajouté une checklist à %s",
|
||||
"activity-checklist-removed": "a supprimé une checklist de %s",
|
||||
"activity-checklist-completed": "a complété la checklist %s de %s",
|
||||
"activity-checklist-uncompleted": "a rendu incomplète la checklist %s de %s",
|
||||
"activity-checklist-item-added": "a ajouté un élément à la checklist '%s' dans %s",
|
||||
"activity-checklist-item-removed": "a supprimé une checklist de '%s' dans %s",
|
||||
"activity-checked-item": "a coché %s dans la check-list %s de %s",
|
||||
"activity-unchecked-item": "a décoché %s dans la check-list %s de %s",
|
||||
"activity-checklist-added": "a ajouté une check-list à %s",
|
||||
"activity-checklist-removed": "a supprimé une check-list de %s",
|
||||
"activity-checklist-completed": "a complété la check-list %s de %s",
|
||||
"activity-checklist-uncompleted": "a rendu incomplète la check-list %s de %s",
|
||||
"activity-checklist-item-added": "a ajouté un élément à la check-list '%s' dans %s",
|
||||
"activity-checklist-item-removed": "a supprimé une check-list de '%s' dans %s",
|
||||
"add": "Ajouter",
|
||||
"activity-checked-item-card": "a coché %s dans la checklist %s",
|
||||
"activity-unchecked-item-card": "a décoché %s dans la checklist %s",
|
||||
"activity-checklist-completed-card": "a complété la checklist __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"activity-checklist-uncompleted-card": "a décoché la checklist %s",
|
||||
"activity-checked-item-card": "a coché %s dans la check-list %s",
|
||||
"activity-unchecked-item-card": "a décoché %s dans la check-list %s",
|
||||
"activity-checklist-completed-card": "a complété la check-list __checklist__ de la carte __card__ de la liste __list__ du couloir __swimlane__ du tableau __board__",
|
||||
"activity-checklist-uncompleted-card": "a décoché la check-list %s",
|
||||
"activity-editComment": "commentaire modifié %s",
|
||||
"activity-deleteComment": "commentaire supprimé %s",
|
||||
"activity-receivedDate": "date de réception éditée de %s à %s",
|
||||
@@ -87,7 +87,7 @@
|
||||
"add-card-to-bottom-of-list": "Ajouter la carte en bas de la liste",
|
||||
"setListWidthPopup-title": "Définir la largeur de la liste",
|
||||
"set-list-width": "Définir la largeur de la liste",
|
||||
"set-list-width-value": "Définir la largeur de la liste (pixels)",
|
||||
"set-list-width-value": "Largeur de la liste (pixels)",
|
||||
"list-width-error-message": "La largeur de la liste doit être un entier positif",
|
||||
"setSwimlaneHeightPopup-title": "Définir la hauteur du couloir",
|
||||
"set-swimlane-height": "Définir la hauteur du couloir",
|
||||
@@ -95,10 +95,10 @@
|
||||
"swimlane-height-error-message": "La hauteur du couloir doit être un entier positif",
|
||||
"add-swimlane": "Ajouter un couloir",
|
||||
"add-subtask": "Ajouter une sous-tâche",
|
||||
"add-checklist": "Ajouter une checklist",
|
||||
"add-checklist-item": "Ajouter un élément à la checklist",
|
||||
"close-add-checklist-item": "Fermer ajouter un élément du formulaire checklist",
|
||||
"close-edit-checklist-item": "Fermer éditer un élément du formulaire checklist",
|
||||
"add-checklist": "Ajouter une check-list",
|
||||
"add-checklist-item": "Ajouter un élément à la check-list",
|
||||
"close-add-checklist-item": "Fermer ajouter un élément du formulaire check-list",
|
||||
"close-edit-checklist-item": "Fermer éditer un élément du formulaire check-list",
|
||||
"convertChecklistItemToCardPopup-title": "Convertir en carte",
|
||||
"add-cover": "Ajouter la vignette sur la mini-carte",
|
||||
"add-label": "Ajouter une étiquette",
|
||||
@@ -260,7 +260,7 @@
|
||||
"changePermissionsPopup-title": "Modifier les permissions",
|
||||
"changeSettingsPopup-title": "Modifier les paramètres",
|
||||
"subtasks": "Sous-tâches",
|
||||
"checklists": "Checklists",
|
||||
"checklists": "Check-lists",
|
||||
"click-to-star": "Cliquez pour ajouter ce tableau aux favoris.",
|
||||
"click-to-unstar": "Cliquez pour retirer ce tableau des favoris.",
|
||||
"clipboard": "Presse-papier ou glisser-déposer",
|
||||
@@ -306,9 +306,9 @@
|
||||
"worker-desc": "Peut seulement déplacer des cartes, s'assigner à une carte et la commenter.",
|
||||
"computer": "Ordinateur",
|
||||
"confirm-subtask-delete-popup": "Êtes-vous sûr de vouloir supprimer la sous-tâche ?",
|
||||
"confirm-checklist-delete-popup": "Êtes-vous sûr de vouloir supprimer la checklist ?",
|
||||
"confirm-checklist-delete-popup": "Êtes-vous sûr de vouloir supprimer la check-list ?",
|
||||
"subtaskDeletePopup-title": "Supprimer la sous-tâche ?",
|
||||
"checklistDeletePopup-title": "Supprimer la checklist ?",
|
||||
"checklistDeletePopup-title": "Supprimer la check-list ?",
|
||||
"copy-card-link-to-clipboard": "Copier le lien de la carte dans le presse-papier",
|
||||
"copy-text-to-clipboard": "Copier le texte dans le presse-papier",
|
||||
"linkCardPopup-title": "Lier une Carte",
|
||||
@@ -440,7 +440,7 @@
|
||||
"filter-to-selection": "Filtre vers la sélection",
|
||||
"other-filters-label": "Autres filtres",
|
||||
"advanced-filter-label": "Filtre avancé",
|
||||
"advanced-filter-description": "Le filtre avancé permet d'écrire une chaîne contenant les opérateur suivants : == != <= >= && || ( ). Les opérateurs doivent être séparés par des espaces. Vous pouvez filtrer tous les champs personnalisés en saisissant leur nom et leur valeur. Par exemple : champ1 == valeur1. Remarque : si des champs ou valeurs contiennent des espaces, vous devez les mettre entre apostrophes. Par exemple : 'champ 1' = 'valeur 1'. Pour échapper un caractère de contrôle (' \\\\/), vous pouvez utiliser \\\\. Par exemple : champ1 = I\\\\'m. Il est également possible de combiner plusieurs conditions. Par exemple : f1 == v1 || f2 == v2. Normalement, tous les opérateurs sont interprétés de gauche à droite. Vous pouvez changer l'ordre à l'aide de parenthèses. Par exemple : f1 == v1 and (f2 == v2 || f2 == v3). Vous pouvez également chercher parmi les champs texte en utilisant des expressions régulières : f1 == /Test.*/i",
|
||||
"advanced-filter-description": "Le filtre avancé permet d'écrire une chaîne contenant les opérateur suivants : == != <= >= && || ( ). Les opérateurs doivent être séparés par des espaces. Vous pouvez filtrer tous les champs personnalisés en saisissant leur nom et leur valeur. Par exemple : champ1 == valeur1. Remarque : si des champs ou valeurs contiennent des espaces, vous devez les mettre entre apostrophes. Par exemple : 'champ 1' == 'valeur 1'. Pour échapper un caractère de contrôle (' \\/), vous pouvez utiliser \\. Par exemple : champ1 == I\\'m. Il est également possible de combiner plusieurs conditions. Par exemple : f1 == v1 || f2 == v2. Normalement, tous les opérateurs sont interprétés de gauche à droite. Vous pouvez changer l'ordre à l'aide de parenthèses. Par exemple : F1 == V1 && ( F2 == V2 || F2 == V3 ). Vous pouvez également chercher parmi les champs texte en utilisant des expressions régulières : f1 == /Test.*/i",
|
||||
"fullname": "Nom complet",
|
||||
"header-logo-title": "Retourner à la page des tableaux",
|
||||
"hide-system-messages": "Masquer les messages système",
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Supprimer le tableau",
|
||||
"default-subtasks-board": "Sous-tâches du tableau __board__",
|
||||
"default": "Défaut",
|
||||
"defaultdefault": "Défaut",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Paramètres des sous-tâches",
|
||||
"card-settings": "Paramètres de la carte",
|
||||
@@ -788,12 +789,12 @@
|
||||
"r-when-the-member": "Quand le participant",
|
||||
"r-name": "nom",
|
||||
"r-when-a-attach": "Quand une pièce jointe",
|
||||
"r-when-a-checklist": "Quand une checklist est",
|
||||
"r-when-the-checklist": "Quand la checklist",
|
||||
"r-when-a-checklist": "Quand une check-list est",
|
||||
"r-when-the-checklist": "Quand la check-list",
|
||||
"r-completed": "Terminé",
|
||||
"r-made-incomplete": "Rendu incomplet",
|
||||
"r-when-a-item": "Quand un élément de la checklist est",
|
||||
"r-when-the-item": "Quand l'élément de la checklist",
|
||||
"r-when-a-item": "Quand un élément de la check-list est",
|
||||
"r-when-the-item": "Quand l'élément de la check-list",
|
||||
"r-checked": "Coché",
|
||||
"r-unchecked": "Décoché",
|
||||
"r-move-card-to": "Déplacer la carte vers",
|
||||
@@ -809,14 +810,14 @@
|
||||
"r-member": "participant",
|
||||
"r-remove-all": "Supprimer tous les membres de la carte",
|
||||
"r-set-color": "Définir la couleur à",
|
||||
"r-checklist": "checklist",
|
||||
"r-checklist": "check-list",
|
||||
"r-check-all": "Tout cocher",
|
||||
"r-uncheck-all": "Tout décocher",
|
||||
"r-items-check": "Élément de checklist",
|
||||
"r-items-check": "Élément de check-list",
|
||||
"r-check": "Cocher",
|
||||
"r-uncheck": "Décocher",
|
||||
"r-item": "élément",
|
||||
"r-of-checklist": "de la checklist",
|
||||
"r-of-checklist": "de la check-list",
|
||||
"r-send-email": "Envoyer un email",
|
||||
"r-to": "à",
|
||||
"r-of": "sur",
|
||||
@@ -844,17 +845,17 @@
|
||||
"r-d-uncheck-all": "Décocher tous les éléments d'une liste",
|
||||
"r-d-check-one": "Cocher l'élément",
|
||||
"r-d-uncheck-one": "Décocher l'élément",
|
||||
"r-d-check-of-list": "de la checklist",
|
||||
"r-d-add-checklist": "Ajouter une checklist",
|
||||
"r-d-remove-checklist": "Supprimer la checklist",
|
||||
"r-d-check-of-list": "de la check-list",
|
||||
"r-d-add-checklist": "Ajouter une check-list",
|
||||
"r-d-remove-checklist": "Supprimer la check-list",
|
||||
"r-by": "par",
|
||||
"r-add-checklist": "Ajouter une checklist",
|
||||
"r-add-checklist": "Ajouter une check-list",
|
||||
"r-with-items": "avec les items",
|
||||
"r-items-list": "item1, item2, item3",
|
||||
"r-add-swimlane": "Ajouter un couloir",
|
||||
"r-swimlane-name": "Nom du couloir",
|
||||
"r-board-note": "Note : laisser le champ vide pour correspondre à toutes les valeurs possibles.",
|
||||
"r-checklist-note": "Note : les items de la checklist doivent être séparés par des virgules.",
|
||||
"r-checklist-note": "Note : les éléments de la check-list doivent être séparés par des virgules.",
|
||||
"r-when-a-card-is-moved": "Quand une carte est déplacée vers une autre liste",
|
||||
"r-set": "Définir",
|
||||
"r-update": "Mettre à jour",
|
||||
@@ -1037,7 +1038,7 @@
|
||||
"predicate-created": "créée",
|
||||
"predicate-attachment": "pièce jointe",
|
||||
"predicate-description": "description",
|
||||
"predicate-checklist": "checklist",
|
||||
"predicate-checklist": "check-list",
|
||||
"predicate-start": "début",
|
||||
"predicate-end": "fin",
|
||||
"predicate-assignee": "personne assignée",
|
||||
@@ -1186,12 +1187,12 @@
|
||||
"acceptance_of_our_legalNotice": "En continuant, vous acceptez nos",
|
||||
"legalNotice": "mentions légales",
|
||||
"copied": "Copié !",
|
||||
"checklistActionsPopup-title": "Actions sur la checklist",
|
||||
"moveChecklist": "Déplacer la checklist",
|
||||
"moveChecklistPopup-title": "Déplacer la checklist",
|
||||
"newlineBecomesNewChecklistItem": "Chaque retour à la ligne produit un nouvel élément de checklist",
|
||||
"copyChecklist": "Copier la checklist",
|
||||
"copyChecklistPopup-title": "Copier la checklist",
|
||||
"checklistActionsPopup-title": "Actions sur la check-list",
|
||||
"moveChecklist": "Déplacer la check-list",
|
||||
"moveChecklistPopup-title": "Déplacer la check-list",
|
||||
"newlineBecomesNewChecklistItem": "Chaque retour à la ligne produit un nouvel élément de check-list",
|
||||
"copyChecklist": "Copier la check-list",
|
||||
"copyChecklistPopup-title": "Copier la check-list",
|
||||
"card-show-lists": "Afficher les listes sur la carte",
|
||||
"subtaskActionsPopup-title": "Action de la sous-tâche",
|
||||
"attachmentActionsPopup-title": "Actions sur les pièces jointes",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Types de fichier autorisés pour l'avatar :",
|
||||
"invalid-file": "Si le nom de fichier est invalide, le téléchargement ou le renommage sera annulé.",
|
||||
"preview-pdf-not-supported": "Votre périphérique ne supporte pas la prévisualisation de PDF. Essayer plutôt le téléchargement.",
|
||||
"drag-board": "Glisser le tableau"
|
||||
"drag-board": "Glisser le tableau",
|
||||
"translation-number": "Le nombre de traductions personnalisées est de :",
|
||||
"delete-translation-confirm-popup": "Êtes-vous sûr de vouloir supprimer cette traduction personnalisée ? Cela est irréversible.",
|
||||
"newTranslationPopup-title": "Nouvelle traduction personnalisée",
|
||||
"editTranslationPopup-title": "Éditer la traduction personnalisée",
|
||||
"settingsTranslationPopup-title": "Supprimer cette traduction personnalisée ?",
|
||||
"translation": "Traduction",
|
||||
"text": "Texte",
|
||||
"translation-text": "Texte traduit",
|
||||
"show-at-minicard": "Afficher sur la mini-carte",
|
||||
"show-checklist-at-minicard": "Afficher la check-list sur la mini-carte",
|
||||
"show-subtasks-field": "Afficher le champ des sous-tâches"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
@@ -727,6 +727,7 @@
|
||||
"delete-board": "Delete Board",
|
||||
"default-subtasks-board": "Subtasks for __board__ board",
|
||||
"default": "Default",
|
||||
"defaultdefault": "Default",
|
||||
"queue": "Queue",
|
||||
"subtask-settings": "Subtasks Settings",
|
||||
"card-settings": "Card Settings",
|
||||
@@ -1229,5 +1230,16 @@
|
||||
"allowed-avatar-filetypes": "Allowed avatar filetypes:",
|
||||
"invalid-file": "If filename is invalid, upload or rename is cancelled.",
|
||||
"preview-pdf-not-supported": "Your device does not support previewing PDF. Try downloading instead.",
|
||||
"drag-board": "Drag board"
|
||||
"drag-board": "Drag board",
|
||||
"translation-number": "The number of custom translation strings is:",
|
||||
"delete-translation-confirm-popup": "Are you sure you want to delete this custom translation string? There is no undo.",
|
||||
"newTranslationPopup-title": "New custom translation string",
|
||||
"editTranslationPopup-title": "Edit custom translation string",
|
||||
"settingsTranslationPopup-title": "Delete this custom translation string?",
|
||||
"translation": "Translation",
|
||||
"text": "Text",
|
||||
"translation-text": "Translation text",
|
||||
"show-at-minicard": "Show at minicard",
|
||||
"show-checklist-at-minicard": "Show checklist at minicard",
|
||||
"show-subtasks-field": "Show subtasks field"
|
||||
}
|
||||
Loaded 100 of 482 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user