Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7db08082bc | ||
|
|
32836d42c9 | ||
|
|
789c4b480a | ||
|
|
abe291837a | ||
|
|
81ac0fdba9 | ||
|
|
d19cc972e0 | ||
|
|
8f6c3550e3 | ||
|
|
40681ccda4 | ||
|
|
4f76e1e1eb | ||
|
|
5cd9f89b21 | ||
|
|
b24685e38d | ||
|
|
5d7aa373fd | ||
|
|
e79b7fad0a | ||
|
|
e05541da88 | ||
|
|
0ccbfcfc9e | ||
|
|
8e6a570d47 | ||
|
|
129a884a4e | ||
|
|
2d278f303a | ||
|
|
dd67bd4b5e | ||
|
|
17239fe052 | ||
|
|
389908be7c | ||
|
|
33cf589c05 | ||
|
|
d961355016 | ||
|
|
9a72cf7ac2 | ||
|
|
53027559cd | ||
|
|
2e5545491b | ||
|
|
f9b0da65f1 | ||
|
|
4c734ee70f | ||
|
|
7173e293ef | ||
|
|
19ff17b3a5 | ||
|
|
d2b84c7773 | ||
|
|
623d6c09c4 | ||
|
|
8ae80138a0 | ||
|
|
cca041e21a | ||
|
|
b333061de7 | ||
|
|
abf4322b6c | ||
|
|
4e1a73fa27 | ||
|
|
214c86cc22 | ||
|
|
e0192f570e | ||
|
|
f5b5ab6331 | ||
|
|
d1c83b28f3 | ||
|
|
aa12b3f162 | ||
|
|
754087b5cf | ||
|
|
e656e36a92 | ||
|
|
0bf138281e | ||
|
|
fe62e12ab4 | ||
|
|
3c64c504c8 | ||
|
|
479472c1d8 | ||
|
|
c10c10c4a9 | ||
|
|
d8c515c858 | ||
|
|
168a308f5f | ||
|
|
fe40c5fd37 | ||
|
|
c430e36357 | ||
|
|
007bf743a6 | ||
|
|
774f57f3f6 | ||
|
|
044a64b964 | ||
|
|
f6bdb4d694 | ||
|
|
6a6b76e084 | ||
|
|
9357ce8a26 | ||
|
|
0aab2b3085 | ||
|
|
3edafd6c67 | ||
|
|
850ded2e17 | ||
|
|
67a58daaf3 | ||
|
|
9fdafd2008 | ||
|
|
66c37ccd3e | ||
|
|
fd3139201a | ||
|
|
abfedf573b | ||
|
|
a1f9536657 | ||
|
|
dec0563e3c | ||
|
|
9a4136399f | ||
|
|
20b0177105 | ||
|
|
e0957f70e6 | ||
|
|
125c4684bd | ||
|
|
991d4909e1 | ||
|
|
f81fd8084f | ||
|
|
231137617f | ||
|
|
f6b4c0ab25 | ||
|
|
30f2de151b | ||
|
|
20fe8bc09b | ||
|
|
2e715444ed | ||
|
|
1b13beb106 | ||
|
|
88213911fd | ||
|
|
50f3957011 | ||
|
|
bf18792d77 | ||
|
|
ca39fce578 | ||
|
|
f0df8dcdc7 | ||
|
|
7d594705fb | ||
|
|
fe5e124f93 | ||
|
|
41b1c55988 | ||
|
|
cfcbf640d6 | ||
|
|
d344c39d49 | ||
|
|
22d07d7a65 | ||
|
|
44fc7c0771 | ||
|
|
7ec671bb9f | ||
|
|
df35683043 | ||
|
|
03bfd8a734 | ||
|
|
409245e374 | ||
|
|
5870d38e8e | ||
|
|
c105e348d8 | ||
|
|
ccd0f89ae0 | ||
|
|
bdd28444bb | ||
|
|
c96468d76d | ||
|
|
943cd25592 | ||
|
|
7f4d3ff3ec | ||
|
|
5d2daa4a80 | ||
|
|
6372bb82c4 | ||
|
|
03a7da0795 | ||
|
|
bc1165ef3e | ||
|
|
47f34f6d12 | ||
|
|
d887e553ce | ||
|
|
13b5bb6407 | ||
|
|
5863df3323 | ||
|
|
b0cf69c160 | ||
|
|
60b2787c55 | ||
|
|
4d1e4f011f | ||
|
|
ec607596d1 | ||
|
|
7e4b791c29 | ||
|
|
55d8d26b34 | ||
|
|
3f5175778d | ||
|
|
7e80db36cf | ||
|
|
6828a1e07a | ||
|
|
2a51a17ddc | ||
|
|
ce11933dda | ||
|
|
b9f87bf310 | ||
|
|
28eeee3a28 | ||
|
|
e17e8d4154 | ||
|
|
dee7020a5a | ||
|
|
79f4e2ad6d | ||
|
|
25f1256724 | ||
|
|
4d49265b25 | ||
|
|
3d0e91f80e | ||
|
|
533857c961 | ||
|
|
83bc176ebf | ||
|
|
910f0cecbe | ||
|
|
10f0c49007 | ||
|
|
ba2911a645 | ||
|
|
07860bd4de | ||
|
|
42bd03e333 | ||
|
|
97f525fdbc | ||
|
|
1050e04c10 | ||
|
|
1534b22315 | ||
|
|
bcec728c2e | ||
|
|
6f503ca818 | ||
|
|
1b927a9d3a | ||
|
|
045b8a84a2 | ||
|
|
1624fc82f7 | ||
|
|
42d8773e36 | ||
|
|
15dff73b94 | ||
|
|
ec1d8f275f | ||
|
|
68391a943b | ||
|
|
9c48cc9ec0 | ||
|
|
41c06c1374 | ||
|
|
2c6841210c | ||
|
|
eba8fb4c9c | ||
|
|
95522ebcd9 | ||
|
|
8bf13f43e8 | ||
|
|
ca8f2a70a4 | ||
|
|
f6e9f5a5e8 | ||
|
|
be6d1044a0 | ||
|
|
52938b2f1c | ||
|
|
116372e11e | ||
|
|
14cdb5bdf1 | ||
|
|
de28bf8569 | ||
|
|
419615bed4 | ||
|
|
3ee9b13b3b | ||
|
|
0725ce3fb1 | ||
|
|
eb7623e218 | ||
|
|
19acd7861d | ||
|
|
282f0f91fe | ||
|
|
b51094d5cd | ||
|
|
b9a4b0b51d | ||
|
|
1a49d25c90 | ||
|
|
f57ed2990f | ||
|
|
87412ceb55 | ||
|
|
87cb4598f7 | ||
|
|
b35b9d8aa2 | ||
|
|
6646d48ccb | ||
|
|
23ee93ca3d | ||
|
|
0911511d0c | ||
|
|
b7562a7085 | ||
|
|
16a793e672 | ||
|
|
6e4407ed9c | ||
|
|
05cd1247ab | ||
|
|
af240450d6 | ||
|
|
ba24c4e40c | ||
|
|
2cbd7d83f9 | ||
|
|
892008563b | ||
|
|
c7a40784e7 | ||
|
|
c5e0832e00 | ||
|
|
eb4219504d | ||
|
|
a5e5b44330 | ||
|
|
ee6852f8ea | ||
|
|
2575552e11 | ||
|
|
a77cf56fbd | ||
|
|
07dfe33ed8 | ||
|
|
c8b21b2e17 | ||
|
|
0be1c00fcc | ||
|
|
20edac091a | ||
|
|
311c0d23a4 | ||
|
|
032099cfbe | ||
|
|
cd97cca7b8 | ||
|
|
3f0fddf448 | ||
|
|
f1e103b082 | ||
|
|
afe00d02cd | ||
|
|
e21c078521 | ||
|
|
5eb3784527 | ||
|
|
0ff1e63a5d | ||
|
|
b11ae567c9 | ||
|
|
e41256f935 | ||
|
|
b00db983c8 | ||
|
|
3e4a8bca36 | ||
|
|
54b4682258 | ||
|
|
bda49ed609 | ||
|
|
39be9aa58d | ||
|
|
f245b6b7fa | ||
|
|
ad87f9ff4e | ||
|
|
40abff4c1e | ||
|
|
51ad89c3af | ||
|
|
768412ba7c | ||
|
|
670b964e6b | ||
|
|
f6c377eb9f | ||
|
|
6d063a4f64 | ||
|
|
207be3a363 | ||
|
|
e1ffe943c8 | ||
|
|
431d884e83 | ||
|
|
983714cd72 | ||
|
|
e6629779f7 | ||
|
|
f1587753cb | ||
|
|
a6d4f445fb | ||
|
|
8f34cdc279 | ||
|
|
71cbac358b | ||
|
|
3b2b108744 | ||
|
|
100e2d4696 | ||
|
|
d42c4fb4f6 | ||
|
|
ed3e20dce5 | ||
|
|
82b0bd9ddb | ||
|
|
ab6ec59bfb | ||
|
|
b144fab042 | ||
|
|
b1d1c7c45a | ||
|
|
2353f654de | ||
|
|
6e0ae161ad | ||
|
|
f1660e3b9f | ||
|
|
336a22555f | ||
|
|
06b548f12e | ||
|
|
e4de42d487 | ||
|
|
1617577378 | ||
|
|
2add82efc5 | ||
|
|
06cacd7a5a | ||
|
|
2d4f29cb5a | ||
|
|
0b26250b46 | ||
|
|
09677d0bfa | ||
|
|
aa4bdf7efb | ||
|
|
5755ece33e | ||
|
|
2e93a975c4 | ||
|
|
c4df69a05b | ||
|
|
a562ee4ba1 | ||
|
|
781b384fe9 | ||
|
|
b6cc6c440d | ||
|
|
20da91b774 | ||
|
|
e530077fc5 | ||
|
|
444fff47dc | ||
|
|
1aa8f502ae | ||
|
|
2a25318ba8 | ||
|
|
39a8524354 | ||
|
|
573ca73b45 | ||
|
|
07d1a864d8 | ||
|
|
ffcd380523 | ||
|
|
55534b8b2e | ||
|
|
ca23934bde | ||
|
|
8a622ec7c3 | ||
|
|
39519d1cc9 | ||
|
|
dcbf92b5b1 | ||
|
|
7f6d500cbe | ||
|
|
cb1e91fee8 | ||
|
|
96494bacf5 | ||
|
|
99f68f36b0 | ||
|
|
61e682470c | ||
|
|
415e94d187 | ||
|
|
6b22f96313 | ||
|
|
8c3322f9a9 | ||
|
|
f935cf391e | ||
|
|
fb44df9815 | ||
|
|
e127895cf3 | ||
|
|
1f85b25549 | ||
|
|
df9851e2b7 | ||
|
|
232bc746f4 | ||
|
|
ea448cd6c3 | ||
|
|
a7d12ddcaa | ||
|
|
420e9b23d2 | ||
|
|
cd49018306 | ||
|
|
ddbf4f18ff | ||
|
|
24104991b4 | ||
|
|
d9d451a206 | ||
|
|
1f07050979 | ||
|
|
399ddd2dab | ||
|
|
2876ce633c | ||
|
|
333b9c811d | ||
|
|
1df3d56f7c | ||
|
|
d2a7a82870 | ||
|
|
5e49006b6f | ||
|
|
f73ea218ee | ||
|
|
6ac3249272 | ||
|
|
784f960e8f | ||
|
|
04db8d739e | ||
|
|
7226afdc39 | ||
|
|
446a81ddd0 | ||
|
|
5fd167c182 | ||
|
|
7cd57ee023 | ||
|
|
07ab3b83b1 | ||
|
|
3ade9d95a6 | ||
|
|
55c5f07026 | ||
|
|
b4ade0256b | ||
|
|
afcb8aa49b | ||
|
|
a47ca598e7 | ||
|
|
c9a28db3ab | ||
|
|
1cfb6eee4b | ||
|
|
6c68867efe | ||
|
|
0ef84a0d5f | ||
|
|
e0f4758667 | ||
|
|
8c149da9e9 | ||
|
|
18eafe2fec | ||
|
|
5ac636fdd4 | ||
|
|
6db3474cdf | ||
|
|
6a1bc167cf | ||
|
|
191071d295 | ||
|
|
3e4a9471ba | ||
|
|
9b68aa919a | ||
|
|
8732e4b18f | ||
|
|
d26786a628 | ||
|
|
54b9035eb2 | ||
|
|
3cf6ed916f | ||
|
|
351d9d0c95 | ||
|
|
c0923ed3cf | ||
|
|
fc2eb2e935 | ||
|
|
88844034fc | ||
|
|
3d33ea911a | ||
|
|
bb08e40ea5 | ||
|
|
c4879de4b1 | ||
|
|
fd0afd7b05 | ||
|
|
5c02850bc1 | ||
|
|
1f450df1af | ||
|
|
e933890730 | ||
|
|
8eafa1ac66 | ||
|
|
858bb35612 | ||
|
|
f9018fc3a8 | ||
|
|
252c4b19f9 | ||
|
|
05349a5deb | ||
|
|
d52affe658 | ||
|
|
23dcd084a4 | ||
|
|
a853189486 | ||
|
|
82d0a3df85 | ||
|
|
ef189477dd | ||
|
|
4bcc795778 | ||
|
|
01346152b5 | ||
|
|
5b7b5b3e7e | ||
|
|
2df29324e6 | ||
|
|
51f52fee23 | ||
|
|
6e088af3d1 | ||
|
|
fc9f0d8392 | ||
|
|
cfa2bbd3d4 | ||
|
|
52d633ca69 | ||
|
|
b2fee6a6c1 | ||
|
|
66d35a1528 | ||
|
|
b7105d7b57 | ||
|
|
d5fbd50b76 | ||
|
|
06515559a6 | ||
|
|
c61a126c8b | ||
|
|
b737adfcdf | ||
|
|
3b44acd87c | ||
|
|
6fad68b9b9 | ||
|
|
b05f8e5251 | ||
|
|
31c2afb072 | ||
|
|
863f0fc5db | ||
|
|
055b528532 | ||
|
|
fda392e662 | ||
|
|
e5f9d0a4dd | ||
|
|
3f16bf6054 | ||
|
|
6774b9e905 | ||
|
|
00a38b36a4 | ||
|
|
de365ad62a | ||
|
|
fe631ff75b | ||
|
|
eed649fbe6 | ||
|
|
8ddbc622db | ||
|
|
24b21d23ba | ||
|
|
64fa02cdf5 | ||
|
|
3b50b2c59f | ||
|
|
921460db40 | ||
|
|
4156073b1a | ||
|
|
af7c74b2d3 | ||
|
|
4064f3f406 | ||
|
|
94e47401cb | ||
|
|
5ef83ab236 | ||
|
|
c22eaa26cd | ||
|
|
060b9acd86 | ||
|
|
213b7b4819 | ||
|
|
7a576f9ae4 | ||
|
|
62f06a792f | ||
|
|
1ac11d92ba | ||
|
|
0c299e3225 | ||
|
|
bcc3a39c06 | ||
|
|
13dffca055 | ||
|
|
68ee88a041 | ||
|
|
3718dd4d45 | ||
|
|
506a747fce | ||
|
|
98e255ccec | ||
|
|
4879df0244 | ||
|
|
3bdeaaf552 | ||
|
|
45dea737bf | ||
|
|
b80396f627 | ||
|
|
0735981366 | ||
|
|
5d8cca40d2 | ||
|
|
09ce3e464f | ||
|
|
4c5a2fbd1f | ||
|
|
9c6cd51ca7 | ||
|
|
ea74a34d72 | ||
|
|
28cffc4328 | ||
|
|
0a12319002 | ||
|
|
2f33e3a76b | ||
|
|
96507e6777 | ||
|
|
e6d6b5322e | ||
|
|
b8d8081ded | ||
|
|
0e428233f2 | ||
|
|
fdbc1b5c22 | ||
|
|
ea0239538a | ||
|
|
aa084b7a7e | ||
|
|
8a2509007c | ||
|
|
d0208b2112 | ||
|
|
851bfa53e6 | ||
|
|
ba01ebe05d | ||
|
|
e6a2ffc592 | ||
|
|
f90ca00669 | ||
|
|
bbb65ae4e2 | ||
|
|
eece32d51b | ||
|
|
1865bdbee9 | ||
|
|
85f254da38 | ||
|
|
1fe7394d05 | ||
|
|
6b9a7a3fc1 | ||
|
|
8f33517142 | ||
|
|
0a51ea753f | ||
|
|
235bedab00 | ||
|
|
564e1919af | ||
|
|
1c9dd7233e | ||
|
|
6e7a58b204 | ||
|
|
75bdd33fda | ||
|
|
5f915ef966 | ||
|
|
a570c4a861 | ||
|
|
a797abaa36 | ||
|
|
2bb5a31fa4 | ||
|
|
012ca39a8d | ||
|
|
c3458855bd | ||
|
|
cfcc73724f | ||
|
|
4448488767 | ||
|
|
1742bcd9b1 | ||
|
|
7dc0bbd7b2 | ||
|
|
269698ba78 | ||
|
|
0a1bfd37b3 | ||
|
|
ec03bbe260 | ||
|
|
3cc0a93e0e | ||
|
|
079867ff37 | ||
|
|
533bc045d0 | ||
|
|
b5773232d5 | ||
|
|
3042d2ff9a | ||
|
|
8d5adc0464 | ||
|
|
9cba640120 | ||
|
|
b740381a72 | ||
|
|
2691f033cb | ||
|
|
c7d4a90d5c | ||
|
|
92dd6bbba2 | ||
|
|
e42adcaed0 | ||
|
|
301d96f392 | ||
|
|
1c488cb8a7 | ||
|
|
9e33d8cbab | ||
|
|
4c3907bd41 | ||
|
|
153d729544 | ||
|
|
3d5abd60cc | ||
|
|
1d89e96dd1 | ||
|
|
bc3696b64a | ||
|
|
f803520c76 | ||
|
|
6afc9259f0 | ||
|
|
47df8d6737 | ||
|
|
d2dfd9c3b9 | ||
|
|
63f501c574 | ||
|
|
6aa0aa50dc | ||
|
|
9ae20a3f51 | ||
|
|
280e66947e | ||
|
|
9b9e3c9e0c | ||
|
|
1696bd688e | ||
|
|
63ad79a784 | ||
|
|
f7a0d15db7 | ||
|
|
6a7cb809f4 | ||
|
|
3244c3c32b | ||
|
|
09666585e2 | ||
|
|
ee106d1cb4 | ||
|
|
8ef435c83e | ||
|
|
3a74b88294 | ||
|
|
c5079096b5 | ||
|
|
927e43ab3f | ||
|
|
eddcb2260b | ||
|
|
ff73aa4566 | ||
|
|
de993a079d | ||
|
|
7bb0aa7488 | ||
|
|
fe7398faef | ||
|
|
8e709c1b79 | ||
|
|
5899b9366c | ||
|
|
4b196d5378 | ||
|
|
b34ed58289 | ||
|
|
617fdaeb74 | ||
|
|
d26bf04bfa | ||
|
|
a365899312 | ||
|
|
6ebd6defe9 | ||
|
|
93337c20f8 | ||
|
|
6cdd464f54 | ||
|
|
3e0bedd8c7 | ||
|
|
4dcdec0084 | ||
|
|
05c53ca01d |
No files matched your search
@@ -1,4 +1,4 @@
|
||||
FROM ubuntu:disco
|
||||
FROM ubuntu:rolling
|
||||
LABEL maintainer="sgr"
|
||||
|
||||
ENV BUILD_DEPS="gnupg gosu bsdtar wget curl bzip2 g++ build-essential python git ca-certificates iproute2"
|
||||
@@ -6,8 +6,8 @@ ENV DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
ENV \
|
||||
DEBUG=false \
|
||||
NODE_VERSION=8.17.0 \
|
||||
METEOR_RELEASE=1.8.1 \
|
||||
NODE_VERSION=v12.18.4 \
|
||||
METEOR_RELEASE=1.10.2 \
|
||||
USE_EDGE=false \
|
||||
METEOR_EDGE=1.5-beta.17 \
|
||||
NPM_VERSION=latest \
|
||||
@@ -21,10 +21,13 @@ ENV \
|
||||
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURES_BERORE=3 \
|
||||
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_LOCKOUT_PERIOD=60 \
|
||||
ACCOUNTS_LOCKOUT_UNKNOWN_USERS_FAILURE_WINDOW=15 \
|
||||
RICHER_CARD_COMMENT_EDITOR=true \
|
||||
RICHER_CARD_COMMENT_EDITOR=false \
|
||||
CARD_OPENED_WEBHOOK_ENABLED=false \
|
||||
ATTACHMENTS_STORE_PATH="" \
|
||||
MAX_IMAGE_PIXEL="" \
|
||||
IMAGE_COMPRESS_RATIO="" \
|
||||
BIGEVENTS_PATTERN="" \
|
||||
NOTIFICATION_TRAY_AFTER_READ_DAYS_BEFORE_REMOVE="" \
|
||||
BIGEVENTS_PATTERN=NONE \
|
||||
NOTIFY_DUE_DAYS_BEFORE_AND_AFTER="" \
|
||||
NOTIFY_DUE_AT_HOUR_OF_DAY="" \
|
||||
EMAIL_NOTIFICATION_TIMEOUT=30000 \
|
||||
@@ -36,6 +39,7 @@ ENV \
|
||||
TRUSTED_URL="" \
|
||||
WEBHOOKS_ATTRIBUTES="" \
|
||||
OAUTH2_ENABLED=false \
|
||||
OAUTH2_ADFS_ENABLED=false \
|
||||
OAUTH2_LOGIN_STYLE=redirect \
|
||||
OAUTH2_CLIENT_ID="" \
|
||||
OAUTH2_SECRET="" \
|
||||
@@ -108,7 +112,23 @@ ENV \
|
||||
CORS="" \
|
||||
CORS_ALLOW_HEADERS="" \
|
||||
CORS_EXPOSE_HEADERS="" \
|
||||
DEFAULT_AUTHENTICATION_METHOD=""
|
||||
DEFAULT_AUTHENTICATION_METHOD="" \
|
||||
PASSWORD_LOGIN_ENABLED=true \
|
||||
CAS_ENABLED=false \
|
||||
CAS_BASE_URL="" \
|
||||
CAS_LOGIN_URL="" \
|
||||
CAS_VALIDATE_URL="" \
|
||||
SAML_ENABLED=false \
|
||||
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=""
|
||||
|
||||
# Install OS
|
||||
RUN set -o xtrace \
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@
|
||||
"no-spaced-func": 2,
|
||||
"no-trailing-spaces": 2,
|
||||
"operator-linebreak": 2,
|
||||
"quotes": [2, "single"],
|
||||
"quotes": [2, "single", { "avoidEscape": true }],
|
||||
"semi-spacing": 2,
|
||||
"space-unary-ops": 2,
|
||||
"arrow-spacing": 2,
|
||||
|
||||
@@ -81,7 +81,7 @@ parts:
|
||||
wekan:
|
||||
source: .
|
||||
plugin: nodejs
|
||||
node-engine: 12.16.2
|
||||
node-engine: 12.18.4
|
||||
node-packages:
|
||||
- node-gyp
|
||||
- node-pre-gyp
|
||||
|
||||
Executable
+198
@@ -0,0 +1,198 @@
|
||||
#!/bin/bash
|
||||
|
||||
echo "Note: If you use other locale than en_US.UTF-8 , you need to additionally install en_US.UTF-8"
|
||||
echo " with 'sudo dpkg-reconfigure locales' , so that MongoDB works correctly."
|
||||
echo " You can still use any other locale as your main locale."
|
||||
|
||||
#Below script installs newest node 8.x for Debian/Ubuntu/Mint.
|
||||
#NODE_VERSION=12.18.2
|
||||
#X64NODE="https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.gz"
|
||||
|
||||
function pause(){
|
||||
read -p "$*"
|
||||
}
|
||||
|
||||
function cprec(){
|
||||
if [[ -d "$1" ]]; then
|
||||
if [[ ! -d "$2" ]]; then
|
||||
sudo mkdir -p "$2"
|
||||
fi
|
||||
|
||||
for i in $(ls -A "$1"); do
|
||||
cprec "$1/$i" "$2/$i"
|
||||
done
|
||||
else
|
||||
sudo cp "$1" "$2"
|
||||
fi
|
||||
}
|
||||
|
||||
# sudo npm doesn't work right, so this is a workaround
|
||||
function npm_call(){
|
||||
TMPDIR="/tmp/tmp_npm_prefix"
|
||||
if [[ -d "$TMPDIR" ]]; then
|
||||
rm -rf $TMPDIR
|
||||
fi
|
||||
mkdir $TMPDIR
|
||||
NPM_PREFIX="$(npm config get prefix)"
|
||||
npm config set prefix $TMPDIR
|
||||
npm "$@"
|
||||
npm config set prefix "$NPM_PREFIX"
|
||||
|
||||
echo "Moving files to $NPM_PREFIX"
|
||||
for i in $(ls -A $TMPDIR); do
|
||||
cprec "$TMPDIR/$i" "$NPM_PREFIX/$i"
|
||||
done
|
||||
rm -rf $TMPDIR
|
||||
}
|
||||
|
||||
#function wekan_repo_check(){
|
||||
## UNCOMMENTING, IT'S NOT REQUIRED THAT /HOME/USERNAME IS /HOME/WEKAN
|
||||
# git_remotes="$(git remote show 2>/dev/null)"
|
||||
# res=""
|
||||
# for i in $git_remotes; do
|
||||
# res="$(git remote get-url $i | sed 's/.*wekan\/wekan.*/wekan\/wekan/')"
|
||||
# if [[ "$res" == "wekan/wekan" ]]; then
|
||||
# break
|
||||
# fi
|
||||
# done
|
||||
#
|
||||
# if [[ "$res" != "wekan/wekan" ]]; then
|
||||
# echo "$PWD is not a wekan repository"
|
||||
# exit;
|
||||
# fi
|
||||
#}
|
||||
|
||||
echo
|
||||
PS3='Please enter your choice: '
|
||||
options=("Install Wekan dependencies" "Build Wekan" "Run Meteor for dev on http://localhost:4000" "Run Meteor for dev on http://CURRENT-IP-ADDRESS:4000" "Run Meteor for dev on http://CUSTOM-IP-ADDRESS:PORT" "Quit")
|
||||
|
||||
select opt in "${options[@]}"
|
||||
do
|
||||
case $opt in
|
||||
"Install Wekan dependencies")
|
||||
|
||||
if [[ "$OSTYPE" == "linux-gnu" ]]; then
|
||||
echo "Linux";
|
||||
# Debian, Ubuntu, Mint
|
||||
sudo apt-get install -y build-essential gcc g++ make git curl wget
|
||||
# npm nodejs
|
||||
#sudo npm -g install npm
|
||||
curl -0 -L https://npmjs.org/install.sh | sudo sh
|
||||
sudo chown -R $(id -u):$(id -g) $HOME/.npm
|
||||
sudo npm -g install n
|
||||
sudo n 12.18.2
|
||||
#curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
|
||||
#sudo apt-get install -y nodejs
|
||||
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
echo "macOS";
|
||||
pause '1) Install XCode 2) Install Node 8.x from https://nodejs.org/en/ 3) Press [Enter] key to continue.'
|
||||
elif [[ "$OSTYPE" == "cygwin" ]]; then
|
||||
# POSIX compatibility layer and Linux environment emulation for Windows
|
||||
echo "TODO: Add Cygwin";
|
||||
exit;
|
||||
elif [[ "$OSTYPE" == "msys" ]]; then
|
||||
# Lightweight shell and GNU utilities compiled for Windows (part of MinGW)
|
||||
echo "TODO: Add msys on Windows";
|
||||
exit;
|
||||
elif [[ "$OSTYPE" == "win32" ]]; then
|
||||
# I'm not sure this can happen.
|
||||
echo "TODO: Add Windows";
|
||||
exit;
|
||||
elif [[ "$OSTYPE" == "freebsd"* ]]; then
|
||||
echo "TODO: Add FreeBSD";
|
||||
exit;
|
||||
else
|
||||
echo "Unknown"
|
||||
echo ${OSTYPE}
|
||||
exit;
|
||||
fi
|
||||
|
||||
## Latest npm with Meteor 1.8.x
|
||||
npm_call -g install npm
|
||||
npm_call -g install node-gyp
|
||||
# Latest fibers for Meteor 1.8.x
|
||||
sudo mkdir -p /usr/local/lib/node_modules/fibers/.node-gyp
|
||||
npm_call -g install fibers
|
||||
# Install Meteor, if it's not yet installed
|
||||
curl https://install.meteor.com | bash
|
||||
sudo chown -R $(id -u):$(id -g) $HOME/.npm $HOME/.meteor
|
||||
break
|
||||
;;
|
||||
|
||||
"Build Wekan")
|
||||
echo "Building Wekan."
|
||||
#wekan_repo_check
|
||||
# REPOS BELOW ARE INCLUDED TO WEKAN REPO
|
||||
#rm -rf packages/kadira-flow-router packages/meteor-useraccounts-core packages/meteor-accounts-cas packages/wekan-ldap packages/wekan-ldap packages/wekan-scrfollbar packages/meteor-accounts-oidc packages/markdown
|
||||
#mkdir packages
|
||||
#cd packages
|
||||
#git clone --depth 1 -b master https://github.com/wekan/flow-router.git kadira-flow-router
|
||||
#git clone --depth 1 -b master https://github.com/meteor-useraccounts/core.git meteor-useraccounts-core
|
||||
#git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-cas.git
|
||||
#git clone --depth 1 -b master https://github.com/wekan/wekan-ldap.git
|
||||
#git clone --depth 1 -b master https://github.com/wekan/wekan-scrollbar.git
|
||||
#git clone --depth 1 -b master https://github.com/wekan/meteor-accounts-oidc.git
|
||||
#git clone --depth 1 -b master --recurse-submodules https://github.com/wekan/markdown.git
|
||||
#mv meteor-accounts-oidc/packages/switch_accounts-oidc wekan_accounts-oidc
|
||||
#mv meteor-accounts-oidc/packages/switch_oidc wekan_oidc
|
||||
#rm -rf meteor-accounts-oidc
|
||||
#if [[ "$OSTYPE" == "darwin"* ]]; then
|
||||
# echo "sed at macOS";
|
||||
# sed -i '' 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js
|
||||
#else
|
||||
# echo "sed at ${OSTYPE}"
|
||||
# sed -i 's/api\.versionsFrom/\/\/api.versionsFrom/' ~/repos/wekan/packages/meteor-useraccounts-core/package.js
|
||||
#fi
|
||||
#cd ..
|
||||
sudo chown -R $(id -u):$(id -g) $HOME/.npm $HOME/.meteor
|
||||
rm -rf node_modules .meteor/local
|
||||
npm install
|
||||
rm -rf .build
|
||||
meteor build .build --directory
|
||||
cp -f fix-download-unicode/cfs_access-point.txt .build/bundle/programs/server/packages/cfs_access-point.js
|
||||
# Remove legacy webbroser bundle, so that Wekan works also at Android Firefox, iOS Safari, etc.
|
||||
rm -rf .build/bundle/programs/web.browser.legacy
|
||||
#Removed binary version of bcrypt because of security vulnerability that is not fixed yet.
|
||||
#https://github.com/wekan/wekan/commit/4b2010213907c61b0e0482ab55abb06f6a668eac
|
||||
#https://github.com/wekan/wekan/commit/7eeabf14be3c63fae2226e561ef8a0c1390c8d3c
|
||||
#cd ~/repos/wekan/.build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt
|
||||
#rm -rf node_modules/bcrypt
|
||||
#meteor npm install bcrypt
|
||||
cd .build/bundle/programs/server
|
||||
rm -rf node_modules
|
||||
npm install
|
||||
#meteor npm install bcrypt
|
||||
cd ../../../..
|
||||
echo Done.
|
||||
break
|
||||
;;
|
||||
|
||||
"Run Meteor for dev on http://localhost:4000")
|
||||
WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://localhost:4000 meteor run --exclude-archs web.browser.legacy,web.cordova --port 4000
|
||||
break
|
||||
;;
|
||||
|
||||
"Run Meteor for dev on http://CURRENT-IP-ADDRESS:4000")
|
||||
IPADDRESS=$(ip a | grep 'noprefixroute' | grep 'inet ' | cut -d: -f2 | awk '{ print $2}' | cut -d '/' -f 1)
|
||||
echo "Your IP address is $IPADDRESS"
|
||||
WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:4000 meteor run --exclude-archs web.browser.legacy,web.cordova --port 4000
|
||||
break
|
||||
;;
|
||||
|
||||
"Run Meteor for dev on http://CUSTOM-IP-ADDRESS:PORT")
|
||||
ip address
|
||||
echo "From above list, what is your IP address?"
|
||||
read IPADDRESS
|
||||
echo "On what port you would like to run Wekan?"
|
||||
read PORT
|
||||
echo "ROOT_URL=http://$IPADDRESS:$PORT"
|
||||
WITH_API=true RICHER_CARD_COMMENT_EDITOR=false ROOT_URL=http://$IPADDRESS:$PORT meteor run --exclude-archs web.browser.legacy,web.cordova --port $PORT
|
||||
break
|
||||
;;
|
||||
|
||||
"Quit")
|
||||
break
|
||||
;;
|
||||
*) echo invalid option;;
|
||||
esac
|
||||
done
|
||||
@@ -83,7 +83,7 @@ parts:
|
||||
wekan:
|
||||
source: .
|
||||
plugin: nodejs
|
||||
node-engine: 12.14.1
|
||||
node-engine: 12.18.4
|
||||
node-packages:
|
||||
- node-gyp
|
||||
- node-pre-gyp
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
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'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
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@v2
|
||||
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@v1
|
||||
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@v1
|
||||
|
||||
# ℹ️ 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@v1
|
||||
@@ -5,6 +5,7 @@
|
||||
tmp/
|
||||
node_modules/
|
||||
npm-debug.log
|
||||
.gitmodules
|
||||
.vscode/
|
||||
.idea/
|
||||
.build/*
|
||||
|
||||
+52
-4
@@ -70,20 +70,18 @@ rajit:bootstrap3-datepicker
|
||||
shell-server@0.5.0
|
||||
simple:rest-accounts-password
|
||||
useraccounts:core
|
||||
email@1.2.3
|
||||
email@2.0.0
|
||||
horka:swipebox
|
||||
dynamic-import@0.5.2
|
||||
staringatlights:fast-render
|
||||
|
||||
accounts-password@1.6.0
|
||||
accounts-password@1.6.2
|
||||
cfs:gridfs
|
||||
rzymek:fullcalendar
|
||||
momentjs:moment@2.22.2
|
||||
browser-policy-framing@1.1.0
|
||||
mquandalle:moment
|
||||
msavin:usercache
|
||||
wekan-scrollbar
|
||||
mquandalle:perfect-scrollbar
|
||||
mdg:meteor-apm-agent@3.2.0-rc.0!
|
||||
# Keep stylus in 1.1.0, because building v2 takes extra 52 minutes.
|
||||
coagmano:stylus@1.1.0!
|
||||
@@ -98,3 +96,53 @@ percolate:synced-cron
|
||||
easylogic:summernote
|
||||
cfs:filesystem
|
||||
ostrio:cookies
|
||||
tmeasday:check-npm-versions
|
||||
steffo:meteor-accounts-saml
|
||||
rajit:bootstrap3-datepicker-fi
|
||||
rajit:bootstrap3-datepicker-ar
|
||||
rajit:bootstrap3-datepicker-bg
|
||||
rajit:bootstrap3-datepicker-br
|
||||
rajit:bootstrap3-datepicker-ca
|
||||
rajit:bootstrap3-datepicker-cs
|
||||
rajit:bootstrap3-datepicker-da
|
||||
rajit:bootstrap3-datepicker-de
|
||||
rajit:bootstrap3-datepicker-el
|
||||
rajit:bootstrap3-datepicker-en-gb
|
||||
rajit:bootstrap3-datepicker-eo
|
||||
rajit:bootstrap3-datepicker-es
|
||||
rajit:bootstrap3-datepicker-eu
|
||||
rajit:bootstrap3-datepicker-fa
|
||||
rajit:bootstrap3-datepicker-fr
|
||||
rajit:bootstrap3-datepicker-gl
|
||||
rajit:bootstrap3-datepicker-he
|
||||
rajit:bootstrap3-datepicker-hi
|
||||
rajit:bootstrap3-datepicker-hu
|
||||
rajit:bootstrap3-datepicker-hy
|
||||
rajit:bootstrap3-datepicker-id
|
||||
rajit:bootstrap3-datepicker-it
|
||||
rajit:bootstrap3-datepicker-ja
|
||||
rajit:bootstrap3-datepicker-ka
|
||||
rajit:bootstrap3-datepicker-km
|
||||
rajit:bootstrap3-datepicker-ko
|
||||
rajit:bootstrap3-datepicker-lv
|
||||
rajit:bootstrap3-datepicker-mk
|
||||
rajit:bootstrap3-datepicker-mn
|
||||
rajit:bootstrap3-datepicker-nb
|
||||
rajit:bootstrap3-datepicker-nl
|
||||
rajit:bootstrap3-datepicker-oc
|
||||
rajit:bootstrap3-datepicker-pl
|
||||
rajit:bootstrap3-datepicker-pt-br
|
||||
rajit:bootstrap3-datepicker-pt
|
||||
rajit:bootstrap3-datepicker-ro
|
||||
rajit:bootstrap3-datepicker-ru
|
||||
rajit:bootstrap3-datepicker-sl
|
||||
rajit:bootstrap3-datepicker-sr
|
||||
rajit:bootstrap3-datepicker-sv
|
||||
rajit:bootstrap3-datepicker-sw
|
||||
rajit:bootstrap3-datepicker-ta
|
||||
rajit:bootstrap3-datepicker-th
|
||||
rajit:bootstrap3-datepicker-tr
|
||||
rajit:bootstrap3-datepicker-uk
|
||||
rajit:bootstrap3-datepicker-vi
|
||||
rajit:bootstrap3-datepicker-zh-cn
|
||||
rajit:bootstrap3-datepicker-zh-tw
|
||||
+1
-1
@@ -1 +1 @@
|
||||
METEOR@1.10.2
|
||||
METEOR@1.11
|
||||
+67
-19
@@ -1,7 +1,7 @@
|
||||
3stack:presence@1.1.2
|
||||
accounts-base@1.6.0
|
||||
accounts-base@1.7.0
|
||||
accounts-oauth@1.2.0
|
||||
accounts-password@1.6.0
|
||||
accounts-password@1.6.2
|
||||
aldeed:collection2@2.10.0
|
||||
aldeed:collection2-core@1.2.0
|
||||
aldeed:schema-deny@1.1.0
|
||||
@@ -17,7 +17,7 @@ base64@1.0.12
|
||||
binary-heap@1.0.11
|
||||
blaze@2.3.4
|
||||
blaze-tools@1.0.10
|
||||
boilerplate-generator@1.7.0
|
||||
boilerplate-generator@1.7.1
|
||||
browser-policy-common@1.0.11
|
||||
browser-policy-framing@1.1.0
|
||||
caching-compiler@1.2.2
|
||||
@@ -51,18 +51,18 @@ dburles:collection-helpers@1.1.0
|
||||
ddp@1.4.0
|
||||
ddp-client@2.3.3
|
||||
ddp-common@1.4.0
|
||||
ddp-rate-limiter@1.0.7
|
||||
ddp-server@2.3.1
|
||||
ddp-rate-limiter@1.0.9
|
||||
ddp-server@2.3.2
|
||||
deps@1.0.12
|
||||
diff-sequence@1.1.1
|
||||
dynamic-import@0.5.2
|
||||
easylogic:summernote@0.8.8
|
||||
ecmascript@0.14.3
|
||||
ecmascript-runtime@0.7.0
|
||||
ecmascript-runtime-client@0.10.0
|
||||
ecmascript-runtime-server@0.9.0
|
||||
ecmascript-runtime-client@0.11.0
|
||||
ecmascript-runtime-server@0.10.0
|
||||
ejson@1.1.1
|
||||
email@1.2.3
|
||||
email@2.0.0
|
||||
es5-shim@4.8.0
|
||||
fastclick@1.0.13
|
||||
fetch@0.1.1
|
||||
@@ -91,7 +91,7 @@ logging@1.1.20
|
||||
lucasantoniassi:accounts-lockout@1.0.0
|
||||
matb33:collection-hooks@0.9.1
|
||||
matteodem:easy-search@1.6.4
|
||||
mdg:meteor-apm-agent@3.2.5
|
||||
mdg:meteor-apm-agent@3.3.0
|
||||
mdg:validation-error@0.5.1
|
||||
meteor@1.9.3
|
||||
meteor-base@1.4.0
|
||||
@@ -101,7 +101,7 @@ meteorhacks:collection-utils@1.2.0
|
||||
meteorhacks:picker@1.0.3
|
||||
meteorhacks:subs-manager@1.6.4
|
||||
meteorspark:util@0.2.0
|
||||
minifier-css@1.5.0
|
||||
minifier-css@1.5.3
|
||||
minifier-js@2.6.0
|
||||
minifiers@1.1.8-faster-rebuild.0
|
||||
minimongo@1.6.0
|
||||
@@ -109,7 +109,7 @@ mobile-status-bar@1.1.0
|
||||
modern-browsers@0.1.5
|
||||
modules@0.15.0
|
||||
modules-runtime@0.12.0
|
||||
momentjs:moment@2.24.0
|
||||
momentjs:moment@2.28.0
|
||||
mongo@1.10.0
|
||||
mongo-decimal@0.1.1
|
||||
mongo-dev-server@1.1.0
|
||||
@@ -124,10 +124,9 @@ mquandalle:jquery-textcomplete@0.8.0_1
|
||||
mquandalle:jquery-ui-drag-drop-sort@0.2.0
|
||||
mquandalle:moment@1.0.1
|
||||
mquandalle:mousetrap-bindglobal@0.0.1
|
||||
mquandalle:perfect-scrollbar@0.6.5_2
|
||||
msavin:usercache@1.8.0
|
||||
npm-bcrypt@0.9.3
|
||||
npm-mongo@3.7.0
|
||||
npm-mongo@3.8.1
|
||||
oauth@1.3.0
|
||||
oauth2@1.3.0
|
||||
observe-sequence@1.0.16
|
||||
@@ -144,6 +143,54 @@ promise@0.11.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-bg@1.7.1
|
||||
rajit:bootstrap3-datepicker-br@1.7.1
|
||||
rajit:bootstrap3-datepicker-ca@1.7.1
|
||||
rajit:bootstrap3-datepicker-cs@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-gb@1.7.1
|
||||
rajit:bootstrap3-datepicker-eo@1.7.1
|
||||
rajit:bootstrap3-datepicker-es@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-fr@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-hu@1.7.1
|
||||
rajit:bootstrap3-datepicker-hy@1.7.1
|
||||
rajit:bootstrap3-datepicker-id@1.7.1
|
||||
rajit:bootstrap3-datepicker-it@1.7.1
|
||||
rajit:bootstrap3-datepicker-ja@1.7.1
|
||||
rajit:bootstrap3-datepicker-ka@1.7.1
|
||||
rajit:bootstrap3-datepicker-km@1.7.1
|
||||
rajit:bootstrap3-datepicker-ko@1.7.1
|
||||
rajit:bootstrap3-datepicker-lv@1.7.1
|
||||
rajit:bootstrap3-datepicker-mk@1.7.1
|
||||
rajit:bootstrap3-datepicker-mn@1.7.1
|
||||
rajit:bootstrap3-datepicker-nb@1.7.1
|
||||
rajit:bootstrap3-datepicker-nl@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-ru@1.7.1
|
||||
rajit:bootstrap3-datepicker-sl@1.7.1
|
||||
rajit:bootstrap3-datepicker-sr@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-th@1.7.1
|
||||
rajit:bootstrap3-datepicker-tr@1.7.1
|
||||
rajit:bootstrap3-datepicker-uk@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.0
|
||||
rate-limit@1.0.9
|
||||
reactive-dict@1.3.0
|
||||
@@ -162,26 +209,28 @@ simple:json-routes@2.1.0
|
||||
simple:rest-accounts-password@1.1.2
|
||||
simple:rest-bearer-token-parser@1.0.1
|
||||
simple:rest-json-error-handler@1.0.1
|
||||
socket-stream-client@0.3.0
|
||||
socket-stream-client@0.3.1
|
||||
softwarerero:accounts-t9n@1.3.11
|
||||
spacebars@1.0.15
|
||||
spacebars-compiler@1.1.3
|
||||
srp@1.1.0
|
||||
standard-minifier-css@1.6.0
|
||||
standard-minifier-css@1.6.1
|
||||
standard-minifier-js@2.6.0
|
||||
staringatlights:fast-render@3.2.0
|
||||
staringatlights:fast-render@3.3.0
|
||||
staringatlights:inject-data@2.3.0
|
||||
steffo:meteor-accounts-saml@0.0.18
|
||||
tap:i18n@1.8.2
|
||||
templates:tabs@2.3.0
|
||||
templating@1.3.2
|
||||
templating-compiler@1.3.3
|
||||
templating-runtime@1.3.2
|
||||
templating-tools@1.1.2
|
||||
tmeasday:check-npm-versions@0.3.2
|
||||
tracker@1.2.0
|
||||
twbs:bootstrap@3.3.6
|
||||
ui@1.0.13
|
||||
underscore@1.0.10
|
||||
url@1.3.0
|
||||
url@1.3.1
|
||||
useraccounts:core@1.14.2
|
||||
useraccounts:flow-routing@1.14.2
|
||||
useraccounts:unstyled@1.14.2
|
||||
@@ -191,8 +240,7 @@ webapp-hashing@1.0.9
|
||||
wekan-accounts-cas@0.1.0
|
||||
wekan-accounts-oidc@1.0.10
|
||||
wekan-ldap@0.0.2
|
||||
wekan-markdown@1.0.7
|
||||
wekan-markdown@1.0.9
|
||||
wekan-oidc@1.0.12
|
||||
wekan-scrollbar@3.1.3
|
||||
yasaricli:slugify@0.0.7
|
||||
zimme:active-route@2.3.2
|
||||
+2
-2
@@ -1,9 +1,9 @@
|
||||
dist: eoan
|
||||
dist: focal
|
||||
sudo: required
|
||||
|
||||
env:
|
||||
TRAVIS_DOCKER_COMPOSE_VERSION: 1.24.0
|
||||
TRAVIS_NODE_VERSION: 12.16.2
|
||||
TRAVIS_NODE_VERSION: 12.18.4
|
||||
TRAVIS_NPM_VERSION: latest
|
||||
|
||||
before_install:
|
||||
|
||||
+1
-1
@@ -39,7 +39,7 @@ host = https://www.transifex.com
|
||||
# tap:i18n requires us to use `-` separator in the language identifiers whereas
|
||||
# Transifex uses a `_` separator, without an option to customize it on one side
|
||||
# or the other, so we need to do a Manual mapping.
|
||||
lang_map = bg_BG:bg, en_GB:en-GB, es_AR:es-AR, el_GR:el, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
|
||||
lang_map = bg_BG:bg, en_GB:en-GB, es_AR:es-AR, es_CL:es-CL, es_PE:es-PE, el_GR:el, fi_FI:fi, hu_HU:hu, id_ID:id, mn_MN:mn, no:nb, lv_LV:lv, pt_BR:pt-BR, ro_RO:ro, sl_SI:sl, zh_CN:zh-CN, zh_TW:zh-TW, zh_HK:zh-HK
|
||||
|
||||
[wekan.application]
|
||||
file_filter = i18n/<lang>.i18n.json
|
||||
|
||||
+746
@@ -1,3 +1,749 @@
|
||||
# v4.39 2020-09-17 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Impersonate one user](https://github.com/wekan/wekan/pull/3280) and
|
||||
[related translatable strings](https://github.com/wekan/wekan/commit/81ac0fdba9b52477dbbe7b6ed01b6d299288bcca).
|
||||
Thanks to Akuket and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.38 2020-09-16 Wekan release
|
||||
|
||||
This release fixes the following CRITICAL VULNERABILITIES:
|
||||
|
||||
- [Upgrade to Node.js v12.18.4](https://github.com/wekan/wekan/commit/5cd9f89b21e6f800c2b78da49a1c0cf7f6fba955).
|
||||
Thanks to Node.js developers.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.37 2020-09-15 Wekan release
|
||||
|
||||
This release adds the following UI improvements:
|
||||
|
||||
- [UI improvements in filter, multi-selection and rules](https://github.com/wekan/wekan/pull/3279).
|
||||
Thanks to helioguardabaxo and xet7.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Update release scripts](https://github.com/wekan/wekan/commit/e79b7fad0a35f29020c48a4a4eedb435573c9bf1).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix parse error in docker-compose.yml](https://github.com/wekan/wekan/pull/3278).
|
||||
Thanks to devilmengcry.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.36 2020-09-15 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Added translations for date selection popups](https://github.com/wekan/wekan/commit/f9b0da65f1de48a2af11aa7afbd767559ba95b79).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.35 2020-09-14 Wekan release
|
||||
|
||||
This release tries to fix the following bugs:
|
||||
|
||||
- [Try to fix Snap](https://github.com/wekan/wekan/commit/7173e293ef6b0d3c1fe82b5320340589c72c9326).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.34 2020-09-14 Wekan release
|
||||
|
||||
This release tries to fix the following bugs:
|
||||
|
||||
- [Try to fix Snap](https://github.com/wekan/wekan/commit/d2b84c7773f20b34bca8be23078469a8809005a6).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.33 2020-09-14 Wekan release
|
||||
|
||||
This release adds the following login settings:
|
||||
|
||||
- [Added some CAS and SAML settings](https://github.com/wekan/wekan/commit/214c86cc22f4c721a79ec0a4a4f3bbd90d673f93).
|
||||
Not tested. Please test and send pull requests if it does not work.
|
||||
See https://github.com/wekan/wekan/wiki/SAML and https://github.com/wekan/wekan/wiki/CAS .
|
||||
Thanks to xet7.
|
||||
|
||||
and updates some dependencies:
|
||||
|
||||
- [Update dependencies](https://github.com/wekan/wekan/commit/cca041e21a66087ca4008a22cb0f5b4176801101).
|
||||
Thanks to developers of dependencies.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.32 2020-09-13 Wekan release
|
||||
|
||||
This release tried to fix the following bugs:
|
||||
|
||||
- [Try to fix Snap](https://github.com/wekan/wekan/commit/).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.31 2020-09-13 Wekan release
|
||||
|
||||
This release tried to fix the following bugs:
|
||||
|
||||
- [Try to fix Snap](https://github.com/wekan/wekan/commit/fe62e12ab46c41ea30ba79795b0dc39b3451d4a2).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.30 2020-09-13 Wekan release
|
||||
|
||||
This release adds the following new features and improvements:
|
||||
|
||||
- [Add setting for OAUTH2_ADFS_ENABLED=true](https://github.com/wekan/wekan/pull/3269)
|
||||
for [SSO Integration with ADFS 4.0 using OAuth 2 and OpenID](https://github.com/wekan/wekan/issues/3184).
|
||||
Thanks to phaseshift3r.
|
||||
- [Add setting OAUTH2_ADFS_ENABLED=false for most platforms. Remove mouse scroll settings of already removed custom scrollbar.
|
||||
Add testing for both string and boolean version of true](https://github.com/wekan/wekan/commit/f6bdb4d694453d73f4bfa6a75814833594cf5000).
|
||||
Thanks to xet7.
|
||||
- [Design improvements in templates, card details and custom fields](https://github.com/wekan/wekan/pull/3271)
|
||||
and [related change to translation](https://github.com/wekan/wekan/commit/fe40c5fd37a7c54240c080caf98b6130229f5d31).
|
||||
Thanks to helioguardabaxo and xet7.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Use forked & updated version of gridfs-stream](https://github.com/wekan/wekan/pull/3270).
|
||||
Thanks to blaggacao.
|
||||
- [Update dependencies](https://github.com/wekan/wekan/pull/3268).
|
||||
Thanks to blaggacao.
|
||||
- [Update npm-mongo dependency](https://github.com/wekan/wekan/commit/9fdafd20081b20302af3d1a6397fb840348f1209).
|
||||
Thanks to filipenevola.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.29 2020-09-11 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Changed markdown from marked to markdown-it](https://github.com/wekan/wekan/commit/20b01771055ca4d8871d13abb559ab92ecee10f4) and
|
||||
added emoji support https://github.com/wekan/wekan/wiki/Emoji .
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.28 2020-09-11 Wekan release
|
||||
|
||||
This release updates some dependencies:
|
||||
|
||||
- [Update some dependencies](https://github.com/wekan/wekan/commit/125c4684bd6815a8f49241bc2663e82112afe67b).
|
||||
Thanks to developers of dependencies.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix card scrollbar on Windows](https://github.com/wekan/wekan/pull/3264).
|
||||
Thanks to tborychowski.
|
||||
- [Try to fix language names](https://github.com/wekan/wekan/commit/f81fd8084fd6cd1ad57daefcc22ed1fb0acaaeca).
|
||||
Thanks to buplet, xoas and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.27 2020-09-09 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Reverted incomplete fix for "Checklist + card title with starting number and point", because it disabled some markdown.
|
||||
Also more fixes to GFM checklist not displayed properly](https://github.com/wekan/wekan/commit/bf18792d7733d6e6cfb61a8d6db4caafdcc19b34).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.26 2020-09-05 Wekan release
|
||||
|
||||
This release adds the following quality checks:
|
||||
|
||||
- [Added GitHub automatic code quality analysis](https://github.com/wekan/wekan/commit/df35683043603f6ecb9bd4f2a4b357e374397ad1).
|
||||
Thanks to xet7.
|
||||
|
||||
and updates the following dependencies:
|
||||
|
||||
- [bl](https://github.com/wekan/wekan/commit/7ec671bb9f8a33c5eb28c26b98143f9b4cd9b958).
|
||||
Thanks to developers of dependencies.
|
||||
- [Delete markdown demo that is not in use](https://github.com/wekan/wekan/commit/d344c39d497cc291ee7927fdda900dc8bac22bc2).
|
||||
Thanks to xet7.
|
||||
- [Update markdown and xss](https://github.com/wekan/wekan/commit/cfcbf640d64bdfc4f3a482c32e35f396e1a22191)
|
||||
Thanks to developers of dependencies.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Disable list formatting and converting to HTML. This fixes markdown numbering and viewing bugs](https://github.com/wekan/wekan/commit/41b1c55988a9a65005ac0b9e1ddcc0596c047a49).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.25 2020-08-31 Wekan release
|
||||
|
||||
This release adds the following docker-compose.yml changes:
|
||||
|
||||
- [Mongo 4.4 does not work. Mongo 4.2 and 3.x works](https://github.com/wekan/wekan/commit/5d2daa4a80c819f0610ff2f17589de1e1085836c).
|
||||
Thanks to GuidoDr for info. Related https://github.com/wekan/wekan/issues/3247
|
||||
|
||||
and adds the following Nextcloud documentation:
|
||||
|
||||
- [Improving documentation for Nextcloud integration](https://github.com/wekan/wekan/pull/3248).
|
||||
Thanks to relikd.
|
||||
|
||||
and removes the following code and allows double quotes in code:
|
||||
|
||||
- Removed custom scrollbar [1](https://github.com/wekan/wekan/pull/3246) and [2](https://github.com/wekan/wekan/commit/5870d38e8e63159ede8c18d1766a4f9f6ba8987c).
|
||||
Also in eslint settings allowed double quotes in code. Thanks to tborychowski and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.24 2020-08-27 Wekan release
|
||||
|
||||
This release adds the following updates:
|
||||
|
||||
- [Upgrade to Meteor 1.11](https://github.com/wekan/wekan/commit/4d49265b25595444553e1c2d6e48c7a699949654).
|
||||
Thanks to Meteor developers.
|
||||
- [Update bcrypt](https://github.com/wekan/wekan/commit/dee7020a5aaa90c8580ef42fa73aff0ca4ae3e12).
|
||||
Thanks to bcrypt developers.
|
||||
- [Update dependencies](https://github.com/wekan/wekan/commit/60b2787c559b9966d6040a622c5b971fa95241c3).
|
||||
Thanks to developers of dependencies.
|
||||
|
||||
and adds the following translations:
|
||||
|
||||
- [Add Trigger and Action header words to Rule Details](https://github.com/wekan/wekan/pull/3244).
|
||||
Thanks to helioguardabaxo.
|
||||
- [Add Spanish (Peru) (es_PE)](https://github.com/wekan/wekan/commit/b9f87bf310b4f071c8219bb7511b15a7fa27340d).
|
||||
Thanks to translators.
|
||||
|
||||
and adds the following mouse scroll settings:
|
||||
|
||||
- [Add setting for mouse scroll deltafactor. Fix snap setting for mouse scroll amount](https://github.com/wekan/wekan/commit/7e4b791c2964f4b130abbaee62ffdff1536450c4).
|
||||
Thanks to danger89 and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.23 2020-08-13 Wekan release
|
||||
|
||||
This release fixes following CRITICAL VULNERABILITIES:
|
||||
|
||||
- [Update vulnerable dependency elliptic that is dependency of meteor-node-stubs that is dependency of
|
||||
Wekan](https://github.com/wekan/wekan/commit/910f0cecbe7a4b3fdff603e5e74c2cb1c40b660b).
|
||||
Thanks to filipenevola, neeldug, L25inux and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.22 2020-07-23 Wekan release
|
||||
|
||||
This release adds back these features:
|
||||
|
||||
- [Export to JSON and HTML .zip file](https://github.com/commit/1624fc82f7c319e84a78f29445c7867f7da15c32)
|
||||
that also fixes #3216 Clone Boards not working.
|
||||
Thanks to xet7.
|
||||
|
||||
and hides these features temporarily:
|
||||
|
||||
- [Hide CSV export until it's fixed in EdgeHTML compatible way](https://github.com/wekan/wekan/commit/045b8a84a29dde09201dd5108c757719d00e6f55).
|
||||
Thanks to xet7.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Upgrade to Node 12.18.3](https://github.com/wekan/wekan/commit/6f503ca818abff17a20b6612aeea1f9e2c4a8234).
|
||||
Thanks to Node developers.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix Snap](https://github.com/wekan/wekan/commit/68391a943bd37d9f98819ffb7b7a29692d0bd380).
|
||||
This fix was already included to Wekan v4.21 to get it released.
|
||||
TODO: Sometime migrate from Caddy v1 to Caddy v2.
|
||||
Thanks to xet7.
|
||||
- [Fix detecting current IP address on rebuild-wekan.sh](https://github.com/wekan/wekan/commit/ec1d8f275ff4cd720a8cd3bc918b32f9c5f5d099).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.21 2020-07-21 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [REST API: Changed edit_card and get_card_by_customfields to return full documents](https://github.com/wekan/wekan/pull/3215).
|
||||
Thanks to gvespignani70.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.20 2020-07-20 Wekan release
|
||||
|
||||
This release adds the following updates:
|
||||
|
||||
- Update dependencies [Part1](https://github.com/wekan/wekan/commit/419615bed43b6e9de4030193c47137a066b85bde) and
|
||||
[Part2](https://github.com/wekan/wekan/commit/116372e11e09ce9b8376a8694553add595e02815).
|
||||
Thanks to developers of dependencies and xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Change slug on card rename](https://github.com/wekan/wekan/pull/3214).
|
||||
Thanks to NicoP-S.
|
||||
- [Add missing Wekan logo sizes for PWAs and Apps](https://github.com/wekan/wekan/commit/de28bf8569a7373a5d6fd60a4f413e76673adc26).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.19 2020-07-18 Wekan release
|
||||
|
||||
This release adds the following features:
|
||||
|
||||
- [Add support for EdgeHTML browser (Microsoft Legacy Edge, not based on Chromium) by removing incompatible csv-stringify package.
|
||||
CSV export will be fixed later](https://github.com/wekan/wekan/commit/b9a4b0b51d3692fcbb715b1afc875f21cd204ae5).
|
||||
Thanks to xet7.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- Update dependencies [Part1](https://github.com/wekan/wekan/commit/23ee93ca3d4ea161a93627a8e28e1ce93eea1bab),
|
||||
[Part2](https://github.com/wekan/wekan/commit/6646d48ccbaf04c4935de35fe037eff3bd7fd469),
|
||||
[Part3](https://github.com/wekan/wekan/commit/87cb4598f745a362aaac06b8b457198c40aaf61e),
|
||||
[Part4](https://github.com/wekan/wekan/commit/f57ed2990f5c6e1af10d270b24c7092805711afe).
|
||||
Thanks to developers of dependencies and xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Checklist Item PUT API: boolean cast on isFinished](https://github.com/wekan/wekan/pull/3211).
|
||||
Thanks to Robert-Lebedeu.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.18 2020-07-10 Wekan release
|
||||
|
||||
This release adds the following updates:
|
||||
|
||||
- [Upgrade to Node 12.18.2](https://github.com/wekan/wekan/commit/6e4407ed9cb3c95a99e0dbbb4383324dd57d6be1).
|
||||
Thanks to Node developers and xet7.
|
||||
- [Update dependencies](https://github.com/wekan/wekan/commit/05cd1247ab935f586d747743bb9cd79d23e0b1e6).
|
||||
Thanks to dependency developers and xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [All logged in users are now allowed to reorder boards by dragging at All Boards page and Public Boards page](https://github.com/wekan/wekan/commit/ba24c4e40c728d030504ed21ccf79247d0449e1b).
|
||||
Thanks to xet7.
|
||||
- [Fix running meteor for dev in rebuild-wekan.sh](https://github.com/wekan/wekan/commit/a77cf56fbdaf0b74d8b97aa41b0a88fee85e3ee1).
|
||||
Thanks to xet7.
|
||||
- [Fix start-wekan.bat](https://github.com/wekan/wekan/commit/0be1c00fccef8797a1b3612593a6623a9b465e0d) and
|
||||
[Windows bundle install](https://github.com/wekan/wekan/wiki/Windows#a-bundle-with-windows-nodemongodb).
|
||||
Thanks to xet7.
|
||||
- [Fix typo](https://github.com/wekan/wekan/pull/3197).
|
||||
Thanks to Lua00808.
|
||||
- [Fix creating user misbehaving in some special case](https://github.com/wekan/wekan/pull/3206).
|
||||
Thanks to salleman33.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.17 2020-06-18 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Revert finding correct user changes that were made at Wekan v4.16](https://github.com/wekan/wekan/commit/5eb378452761ad1d6d67a491316007fdf6dfd689).
|
||||
Thanks to xet7.
|
||||
- [Fix activities view on mobile devices](https://github.com/wekan/wekan/pull/3183).
|
||||
Thanks to marc1006.
|
||||
- [Add back checks about can user export CSV/TSV](https://github.com/wekan/wekan/commit/afe00d02cddf016a3ccc1ed9a98a7f10d3339f26).
|
||||
Thanks to marc1006 and xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.16 2020-06-17 Wekan release
|
||||
|
||||
This release adds the following features:
|
||||
|
||||
- [Add find-replace.sh script for development](https://github.com/wekan/wekan/commit/bda49ed60947e0438206b2f55119f5c5c132c734).
|
||||
Thanks to xet7.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Upgrade to Node 12.18.1](https://github.com/wekan/wekan/commit/b11ae567c9b2d16a115ea4f3f7f88e67d076f326).
|
||||
Thanks to Node developers and xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [OpenAPI: Fix jsdoc/operation matching](https://github.com/wekan/wekan/pull/3171).
|
||||
Thanks to bentiss.
|
||||
- Fix finding corrent user [Part1](https://github.com/wekan/wekan/pull/3180) and
|
||||
[Part2](https://github.com/wekan/wekan/commit/f245b6b7faa29b4f276527daca48c305fe9689c1).
|
||||
Thanks to salleman33 and xet7.
|
||||
- [Try to prevent errors on CSV/TSV export](https://github.com/wekan/wekan/commit/b00db983c8506e0cdc9968e452c3c8025fc10776).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.15 2020-06-16 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- Fix lint errors [Part1](https://github.com/wekan/wekan/commit/f1587753cb0bba38e4b1df2e0300d3dc2826da72) and
|
||||
[Part2](https://github.com/wekan/wekan/commit/e6629779f77676eadfe4465c407f0bee0ec64061).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.14 2020-06-16 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Add user option to hide finished checklist items. Strikethrough checked items](https://github.com/wekan/wekan/pull/3167).
|
||||
Thanks to marc1006.
|
||||
- [Added the possibility to start a vote via API edit_card. And added some better visibility to see what was voted](https://github.com/wekan/wekan/pull/3170).
|
||||
Thanks to NicoP-S.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Update dependencies](https://github.com/wekan/wekan/commit/8f34cdc279602e97085e0a504f7716495349f83c).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix infinite scrolling for activities](https://github.com/wekan/wekan/pull/3168).
|
||||
Thanks to marc1006.
|
||||
- [Remove top and bottom margin for hidden checklist items](https://github.com/wekan/wekan/pull/3172).
|
||||
Thanks to marc1006.
|
||||
- [Alignment and spacing of minicard labels](https://github.com/wekan/wekan/pull/3174).
|
||||
Thanks to hgustafsson.
|
||||
- [Fix: Unable to delete a custom field in a board](https://github.com/wekan/wekan/commit/3b2b1087447bc8613baa8254bfec55e3d485bdc4).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.13 2020-06-09 Wekan release
|
||||
|
||||
This release adds the following updates:
|
||||
|
||||
- [OpenShift template updates](https://github.com/wekan/wekan/pull/3158), Thanks to jimmyjones2:
|
||||
1) Remove status fields (this is created by Kubernetes at run time)
|
||||
2) The latest MongoDB by default available with OpenShift is 3.6
|
||||
3) Change MongoDB service name to contain wekan to avoid potentially conflicting with other mongodb instances in the same project.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Copy the labels only if the target board is different](https://github.com/wekan/wekan/pull/3154).
|
||||
Thanks to marc1006.
|
||||
- [Fix condition whether a card is in list](https://github.com/wekan/wekan/pull/3165).
|
||||
Thanks to marc1006.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.12 2020-06-08 Wekan release
|
||||
|
||||
This release fixes the following CRITICAL SECURITY VULNERABILITIES:
|
||||
|
||||
- Fix XSS bug reported 2020-05-24 by [swsjona](https://twitter.com/swsjona):
|
||||
[Part 1](https://github.com/wekan/wekan/commit/1f85b25549b50602380f1745f19e5fe44fe36d6f),
|
||||
[Part 2](https://github.com/wekan/wekan/commit/fb44df981581354bf23a6928427ad2bf73c4550f),
|
||||
[Part 3](https://github.com/wekan/wekan/commit/99f68f36b028d6c75acf2e5b83585b1acee65f97),
|
||||
[Part 4](https://github.com/wekan/wekan/commit/8a622ec7c3043bf8f34399ef34563e6a9a19dcd8).
|
||||
Logged in users could run javascript in input fields. This was partially fixed at v3.85,
|
||||
but at some fields XSS was still possible. This affects at least Wekan versions v3.12-v4.12.
|
||||
After this fix, Javascript in input fields is not executed.
|
||||
Thanks to swsjona, marc1006 and xet7.
|
||||
|
||||
and adds the following new features:
|
||||
|
||||
- Change default view to Swimlanes:
|
||||
[Part 1](https://github.com/wekan/wekan/commit/8c3322f9a93c321e8a2cc5cfcd4b1d6316a5fb7c),
|
||||
[Part 2](https://github.com/wekan/wekan/commit/61e682470cdaef42cce2d74b41fb752cfc61848b),
|
||||
[Part 3 Change dropdown order to Swimlanes/Lists/Calendar](https://github.com/wekan/wekan/commit/7f6d500cbec15496ae357b05b9df3f10e51ed1f1),
|
||||
[Part 4.1. Public board default view to Swimlane. Part 4.2. When changing Public board
|
||||
view (sets view cookie), also reload page so view is changed
|
||||
immediately](https://github.com/wekan/wekan/commit/39519d1cc944c567837be0f88ab4a037e2144c61).
|
||||
Thanks to xet7.
|
||||
- [Use markdown in Swimlane titles](https://github.com/wekan/wekan/commit/6b22f96313354b45b851b93c25aa392bbe346bdb).
|
||||
Thanks to xet7.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Update minifier-css](https://github.com/wekan/wekan/commit/cb1e91fee83eaad1e926c288c0abfc1e4f2a8bd4).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- Fix indent [Part1](https://github.com/wekan/wekan/commit/415e94d187ffcb9a4afaecc5c6960a50a87ca7eb),
|
||||
[Part 2](https://github.com/wekan/wekan/commit/96494bacf550cde65598e6d59199517f311aa33d).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.11 2020-06-04 Wekan release
|
||||
|
||||
This release adds the following new platforms:
|
||||
|
||||
- [Using arm64 bundle on Raspberry Pi OS arm64 with MongoDB 4.2.x for RasPi3 and
|
||||
RasPi4](https://github.com/wekan/wekan/wiki/Raspberry-Pi#raspberry-pi-os-arm64-with-mongodb-42x).
|
||||
Thanks to Raspberry Pi OS devs, MongoDB devs and xet7.
|
||||
- [s390x RHEL 8](https://github.com/wekan/wekan/wiki/s390x#rhel-8).
|
||||
Thanks to IBM, Red Hat Linux, Linux Foundation and xet7.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Upgrade to Node v12.18.0](https://github.com/wekan/wekan/commit/d9d451a206cabe7f6ca8ad5d35eb76443198e4c1).
|
||||
Thanks to Node developers and xet7.
|
||||
- [Update `markedjs` package](https://github.com/wekan/wekan/pull/3149).
|
||||
Thanks to marc1006.
|
||||
- [Add fibers](https://github.com/wekan/wekan/commit/cd49018306f826fff37b7024dfde9de05d88b620).
|
||||
Thanks to xet7.
|
||||
|
||||
and adds the following new features:
|
||||
|
||||
- [Add Calendar Month Event List view](https://github.com/wekan/wekan/commit/f73ea218eefba3f0d6c642849dfede9e03052d25).
|
||||
Thanks to xet7.
|
||||
- [Added dates & assignees to REST API calls](https://github.com/wekan/wekan/pull/3146).
|
||||
Thanks to GitGramm.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.10 2020-05-30 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Added an API to get the cards for a specific custom field value](https://github.com/wekan/wekan/pulls/3131).
|
||||
Thanks to gvespignani70.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Upgrade to Node v12.17.0](https://github.com/wekan/wekan/commit/3ade9d95a69b269c345127e1755e1b539dc07263).
|
||||
Thanks to Node developers and xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix email verification in `sendSMTPTestEmail`](https://github.com/wekan/wekan/pull/3135).
|
||||
Thanks to marc1006.
|
||||
- [Try to Fix Registration broken "Templates board id is required" with ugly hack. If it works, ugly becomes
|
||||
beautiful](https://github.com/wekan/wekan/pull/3140).
|
||||
Thanks to marc1006.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.09 2020-05-27 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fix vote export & export/import currency custom field to CSV/TSV](https://github.com/wekan/wekan/pull/3128).
|
||||
Thanks to brymut.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.08 2020-05-26 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Add the 'Currency' Custom Field type](https://github.com/wekan/wekan/pull/3123).
|
||||
Thanks to habenamare.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Add some changes to Modern theme](https://github.com/wekan/wekan/commit/6a1bc167cf10e75d61b3196db9eac2978d70ad8e).
|
||||
Thanks to jeroenstoker and xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix typo that caused parse error](https://github.com/wekan/wekan/commit/351d9d0c9577c9d543d543bc12a51388b0141324).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.07 2020-05-26 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fix move selection](https://github.com/wekan/wekan/pull/3120).
|
||||
Thanks to marc1006.
|
||||
- [Fix Python API generation](https://github.com/wekan/wekan/pull/3121).
|
||||
Thanks to marc1006.
|
||||
- [Fix default value of `sort`](https://github.com/wekan/wekan/pull/3122).
|
||||
Thanks to marc1006.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.06 2020-05-25 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fix Card export CSV, check for vote
|
||||
undefined](https://github.com/wekan/wekan/commit/8eafa1ac66fdcf5fb5f0a95aa6cfee454ddad67f).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.05 2020-05-25 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Import/Export Custom Fields in CSV/TSV](https://github.com/wekan/wekan/pull/3115).
|
||||
Thanks to brymut.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Update packages](https://github.com/wekan/wekan/commit/3b44acd87c35340bf9fe5d210f4402f1b1a1dfdf).
|
||||
Thanks to xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- Try to fix Snap [1](https://github.com/wekan/wekan/commit/6fad68b9b9afd8de7074037d73eeac40f6a3f7c1), [2](https://github.com/wekan/wekan/commit/b737adfcdfc9b8084a7eb84420a89c014bbec1fb). Later reverted those like other ostrio-files changes too.
|
||||
Thanks to xet7.
|
||||
- [Add default attachments store path /var/snap/wekan/common/uploads where attachments will be
|
||||
stored](https://github.com/wekan/wekan/commit/c61a126c8bcb25a1eda0203b89c990ae31de7a70).
|
||||
Thanks to xet7.
|
||||
- [Make scrollParentContainer() more robust as it's used in a timeout callback. Example exception: Exception in setTimeout callback: TypeError: Cannot read property 'parentComponent' of null. Probably there is a better fix for this](https://github.com/wekan/wekan/commit/d5fbd50b760b1d3b84b5b4e8af3a8ed7608e2918).
|
||||
Thanks to marc1006.
|
||||
- [Fix error link not available. Fixes: Exception in template helper: TypeError: Cannot read property 'link' of
|
||||
undefined](https://github.com/wekan/wekan/commit/b7105d7b5712dcdbf9dadebfddaba7691810da5c).
|
||||
Thanks to marc1006.
|
||||
- [Fix minicard cover functionality. Otherwise, if `this.coverId` is undefined then `Attachments.findOne()` would return any
|
||||
attachment](https://github.com/wekan/wekan/commit/66d35a15280795b76a81c3e59cebbd2a29e4dff8).
|
||||
Thanks to marc1006.
|
||||
- [Some fixes suggested by deepcode.ai](https://github.com/wekan/wekan/pull/3112).
|
||||
Thanks to marc1006.
|
||||
- [Sorry marc1006, I had to revert deepcode.ai arrow function fixes because Python API docs generator does not work all when code has arrow functions](https://github.com/wekan/wekan/commit/f9018fc3a87080d8d97c371e29a8f3f0a20ca932).
|
||||
Thanks to xet7.
|
||||
- [Move In Progress ostrio-files changes to separate branch, and revert ostrio-files changes, so that:
|
||||
Export to CSV/TSV with custom fields works, Attachments are not exported to disk,
|
||||
It is possible to build arm64/s390x versions
|
||||
again](https://github.com/wekan/wekan/commit/d52affe65893f17bab59bb43aa9f5afbb54993d3).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.04 2020-05-24 Wekan release
|
||||
|
||||
Please use v4.05 or newer instead, that works better.
|
||||
|
||||
This release adds the following features:
|
||||
|
||||
- [Found Time Tracking GPLv3 software "Titra" with integration to Wekan](https://github.com/wekan/wekan/wiki/Time-Tracking).
|
||||
Thanks to willhseitz.
|
||||
- [Theme: Natural](https://github.com/wekan/wekan/pull/3098).
|
||||
You can select it from Board Settings / Change color / natural.
|
||||
Thanks to compumatter and helioguardabaxo.
|
||||
- [Theme: Modern](https://github.com/wekan/wekan/pull/3106).
|
||||
Thanks to jeroenstoker com and helioguardabaxo.
|
||||
- [Export board to HTML static page .zip archive](https://github.com/wekan/wekan/pull/3043).
|
||||
Thanks to Lewiscowles1986.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Change the swimlaneid of a card only if a new target swimlaneid is selected](https://github.com/wekan/wekan/pull/3108).
|
||||
Thanks to marc1006.
|
||||
- [Set '*' as default value for swimlane and list name in card move action](https://github.com/wekan/wekan/pull/3109).
|
||||
Thanks to hickorysb and marc1006.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.03 2020-05-16 Wekan release
|
||||
|
||||
This release adds the following features:
|
||||
|
||||
- [Theme: Clearblue](https://github.com/wekan/wekan/pull/3093).
|
||||
You can select it from Board Settings / Change color / clearblue.
|
||||
Thanks to CidKramer.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix Can't Scroll on All Boards on mobile phone. Added drag handles](https://github.com/wekan/wekan/issues/3096).
|
||||
Thanks to xet7.
|
||||
- [Try to fix Sandstorm Wekan Export menu](https://github.com/wekan/wekan/commit/1ac11d92ba8f38981c87db25e5b5e1fa2adb6968).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.02 2020-05-15 Wekan release
|
||||
|
||||
This release adds the following server platforms:
|
||||
|
||||
- [Android arm64/x64](https://github.com/wekan/wekan/wiki/Android).
|
||||
Thanks to xet7.
|
||||
|
||||
and adds the following features:
|
||||
|
||||
- [Install Wekan to mobile homescreen icon and use fullscreen
|
||||
PWA](https://github.com/wekan/wekan/commit/8d5adc04645e3e71423f16869f39b8d79969bccd).
|
||||
[Docs for iOS and Android at wiki PWA page](https://github.com/wekan/wekan/wiki/PWA).
|
||||
Thanks to xet7.
|
||||
- [Add options to rebuild-wekan.sh to run Meteor in development mode where after
|
||||
file change it rebuilds](https://github.com/wekan/wekan/commit/5f915ef966170ea7baca7ddeb11319bc08a26fef).
|
||||
Thanks to xet7.
|
||||
|
||||
and adds the following updates:
|
||||
|
||||
- [Update dependencies](https://github.com/wekan/wekan/commit/75bdd33fda58ea0233f5b38c466bcb1a9b0406ab).
|
||||
Thanks to xet7.
|
||||
|
||||
and adds the following translations:
|
||||
|
||||
- [Add Spanish (Chile)](https://github.com/wekan/wekan/commit/96507e6777ed77a324eaec9799c5b46b0d25ad26).
|
||||
Thanks to isos, Transifex user.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix Deleting linked card makes board not load](https://github.com/wekan/wekan/issues/2785).
|
||||
Thanks to marc1006 and xet7.
|
||||
- [Fix getStartDayOfWeek once again](https://github.com/wekan/wekan/pull/3061).
|
||||
Thanks to marc1006.
|
||||
- [Fix shortcuts list and support card shortcuts when hovering
|
||||
a card](https://github.com/wekan/wekan/pull/3066).
|
||||
Thanks to marc1006.
|
||||
- [Add white-space:normal to copy-to-clipboard button in card
|
||||
details](https://github.com/wekan/wekan/pull/3075).
|
||||
Thanks to helioguardabaxo.
|
||||
- [Fix avatar-image class](https://github.com/wekan/wekan/pull/3083).
|
||||
Thanks to krupupakku.
|
||||
- [Fix Swimlanes ID missing in new boards](https://github.com/wekan/wekan/pull/3088).
|
||||
Thanks to krupupakku.
|
||||
- [Fix REST API so Create card does now allow an empty member
|
||||
list](https://github.com/wekan/wekan/pull/3084).
|
||||
Thanks to wackazong.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.01 2020-04-28 Wekan release
|
||||
|
||||
This release adds the following updates:
|
||||
|
||||
- [Upgrade to Node v12.16.3](https://github.com/wekan/wekan/commit/1d89e96dd101c11913f1acdd6d16b5650eaf18a7).
|
||||
Thanks to Node developers and xet7.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Fix Docker builds](https://github.com/wekan/wekan/commit/280e66947e3afa878c41e876cf827ebcec81a2c6).
|
||||
Thanks to xet7.
|
||||
- [Fix Cards and Users API docs at https://wekan.github.io/api/ not generated because of
|
||||
syntax error and new Javascript syntax](https://github.com/wekan/wekan/commit/9ae20a3f51e63c29f536e2f5b3e66a2c7d88c691).
|
||||
Wekan uses wekan/releases/generate-docs*.sh Python code to generate OpenAPI docs,
|
||||
it did not show any errors while generating docs, only left out parts of API docs.
|
||||
This affected Wekan versions v3.94-v4.00.
|
||||
Thanks to pvcon13 and xet7.
|
||||
- [Fix list header height when cards count is shown](https://github.com/wekan/wekan/pull/3056).
|
||||
Thanks to marc1006.
|
||||
- [Smaller height for Add Board button](https://github.com/wekan/wekan/commit/6afc9259f084717a0cc3ce6d66979fd7c1471939).
|
||||
Thanks to xet7.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v4.00 2020-04-27 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Make sure that the board header buttons fit into one line even for devices with 360px width
|
||||
resolution](https://github.com/wekan/wekan/pull/3052).
|
||||
Thanks to marc1006.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.99 2020-04-27 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fix Boards are very hard to tap in mobile](https://github.com/wekan/wekan/pull/3051).
|
||||
Thanks to marc1006.
|
||||
|
||||
Thanks to above GitHub users for their contributions and translators for their translations.
|
||||
|
||||
# v3.98 2020-04-25 Wekan release
|
||||
|
||||
News:
|
||||
|
||||
+20
-4
@@ -4,9 +4,11 @@ LABEL maintainer="wekan"
|
||||
# Set the environment variables (defaults where required)
|
||||
# DOES NOT WORK: paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
|
||||
# ENV BUILD_DEPS="paxctl"
|
||||
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=v12.16.2 \
|
||||
NODE_VERSION=v12.18.4 \
|
||||
METEOR_RELEASE=1.10.2 \
|
||||
USE_EDGE=false \
|
||||
METEOR_EDGE=1.5-beta.17 \
|
||||
@@ -39,6 +41,7 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
|
||||
TRUSTED_URL="" \
|
||||
WEBHOOKS_ATTRIBUTES="" \
|
||||
OAUTH2_ENABLED=false \
|
||||
OAUTH2_ADFS_ENABLED=false \
|
||||
OAUTH2_LOGIN_STYLE=redirect \
|
||||
OAUTH2_CLIENT_ID="" \
|
||||
OAUTH2_SECRET="" \
|
||||
@@ -112,9 +115,22 @@ ENV BUILD_DEPS="apt-utils libarchive-tools gnupg gosu wget curl bzip2 g++ build-
|
||||
CORS_ALLOW_HEADERS="" \
|
||||
CORS_EXPOSE_HEADERS="" \
|
||||
DEFAULT_AUTHENTICATION_METHOD="" \
|
||||
SCROLLINERTIA="0" \
|
||||
SCROLLAMOUNT="auto" \
|
||||
PASSWORD_LOGIN_ENABLED=true
|
||||
PASSWORD_LOGIN_ENABLED=true \
|
||||
CAS_ENABLED=false \
|
||||
CAS_BASE_URL="" \
|
||||
CAS_LOGIN_URL="" \
|
||||
CAS_VALIDATE_URL="" \
|
||||
SAML_ENABLED=false \
|
||||
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=""
|
||||
|
||||
# Copy the app to the image
|
||||
COPY ${SRC_PATH} /home/wekan/app
|
||||
|
||||
+8
-8
@@ -4,11 +4,11 @@ FROM amd64/alpine:3.7 AS builder
|
||||
ENV QEMU_VERSION=v4.2.0-6 \
|
||||
QEMU_ARCHITECTURE=aarch64 \
|
||||
NODE_ARCHITECTURE=linux-arm64 \
|
||||
NODE_VERSION=v12.16.1 \
|
||||
NODE_VERSION=v12.18.4 \
|
||||
WEKAN_VERSION=3.96 \
|
||||
WEKAN_ARCHITECTURE=arm64
|
||||
|
||||
# Install dependencies
|
||||
|
||||
# Install dependencies
|
||||
RUN apk update && apk add ca-certificates outils-sha1 && \
|
||||
\
|
||||
# Download qemu static for our architecture
|
||||
@@ -18,7 +18,7 @@ RUN apk update && apk add ca-certificates outils-sha1 && \
|
||||
wget https://releases.wekan.team/raspi3/wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip && \
|
||||
wget https://releases.wekan.team/raspi3/SHA256SUMS.txt && \
|
||||
# Verify wekan
|
||||
grep wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip SHA256SUMS.txt | sha256sum -c - && \
|
||||
grep wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip SHA256SUMS.txt | sha256sum -c - && \
|
||||
\
|
||||
# Unzip wekan
|
||||
unzip wekan-${WEKAN_VERSION}-${WEKAN_ARCHITECTURE}.zip && \
|
||||
@@ -33,20 +33,20 @@ RUN apk update && apk add ca-certificates outils-sha1 && \
|
||||
# Extract node and remove tar.gz
|
||||
tar xvzf node-${NODE_VERSION}-${NODE_ARCHITECTURE}.tar.gz
|
||||
|
||||
# Build wekan dockerfile
|
||||
# Build wekan dockerfile
|
||||
FROM arm64v8/ubuntu:19.10
|
||||
LABEL maintainer="wekan"
|
||||
|
||||
# Set the environment variables (defaults where required)
|
||||
ENV QEMU_ARCHITECTURE=aarch64 \
|
||||
NODE_ARCHITECTURE=linux-arm64 \
|
||||
NODE_VERSION=v12.16.1 \
|
||||
NODE_VERSION=v12.18.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
|
||||
MONGO_URL=mongodb://127.0.0.1:27017/wekan
|
||||
|
||||
# Copy qemu-static to image
|
||||
COPY --from=builder qemu-${QEMU_ARCHITECTURE}-static /usr/bin
|
||||
@@ -55,7 +55,7 @@ COPY --from=builder qemu-${QEMU_ARCHITECTURE}-static /usr/bin
|
||||
COPY --from=builder bundle /home/wekan/bundle
|
||||
|
||||
# Copy
|
||||
COPY --from=builder node-${NODE_VERSION}-${NODE_ARCHITECTURE} /opt/nodejs
|
||||
COPY --from=builder node-${NODE_VERSION}-${NODE_ARCHITECTURE} /opt/nodejs
|
||||
|
||||
RUN \
|
||||
set -o xtrace && \
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
appId: wekan-public/apps/77b94f60-dec9-0136-304e-16ff53095928
|
||||
appVersion: "v3.98.0"
|
||||
appVersion: "v4.39.0"
|
||||
files:
|
||||
userUploads:
|
||||
- README.md
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
// PWA
|
||||
if ('serviceWorker' in navigator) {
|
||||
window.addEventListener('load', function() {
|
||||
navigator.serviceWorker.register('/pwa-service-worker.js');
|
||||
});
|
||||
}
|
||||
@@ -34,38 +34,38 @@ template(name="activity")
|
||||
//- board activity ------------------------------------------------------
|
||||
if($eq mode 'board')
|
||||
if($eq activity.activityType 'createBoard')
|
||||
| {{_ 'activity-created' boardLabel}}.
|
||||
| {{{_ 'activity-created' boardLabelLink}}}.
|
||||
|
||||
if($eq activity.activityType 'importBoard')
|
||||
| {{{_ 'activity-imported-board' boardLabel sourceLink}}}.
|
||||
| {{{_ 'activity-imported-board' boardLabelLink sourceLink}}}.
|
||||
|
||||
if($eq activity.activityType 'addBoardMember')
|
||||
| {{{_ 'activity-added' memberLink boardLabel}}}.
|
||||
| {{{_ 'activity-added' memberLink boardLabelLink}}}.
|
||||
|
||||
if($eq activity.activityType 'removeBoardMember')
|
||||
| {{{_ 'activity-excluded' memberLink boardLabel}}}.
|
||||
| {{{_ 'activity-excluded' memberLink boardLabelLink}}}.
|
||||
|
||||
//- card activity -------------------------------------------------------
|
||||
if($eq activity.activityType 'createCard')
|
||||
if($eq mode 'card')
|
||||
| {{{_ 'activity-added' cardLabel activity.listName}}}.
|
||||
| {{{_ 'activity-added' cardLabelLink (sanitize activity.listName)}}}.
|
||||
else
|
||||
| {{{_ 'activity-added' cardLabel boardLabel}}}.
|
||||
| {{{_ 'activity-added' cardLabelLink boardLabelLink}}}.
|
||||
|
||||
if($eq activity.activityType 'importCard')
|
||||
| {{{_ 'activity-imported' cardLink boardLabel sourceLink}}}.
|
||||
| {{{_ 'activity-imported' cardLink boardLabelLink sourceLink}}}.
|
||||
|
||||
if($eq activity.activityType 'moveCard')
|
||||
| {{{_ 'activity-moved' cardLabel activity.oldList.title activity.list.title}}}.
|
||||
| {{{_ 'activity-moved' cardLabelLink (sanitize activity.oldList.title) (sanitize activity.list.title)}}}.
|
||||
|
||||
if($eq activity.activityType 'moveCardBoard')
|
||||
| {{{_ 'activity-moved' cardLink activity.oldBoardName activity.boardName}}}.
|
||||
| {{{_ 'activity-moved' cardLink (sanitize activity.oldBoardName) (sanitize activity.boardName)}}}.
|
||||
|
||||
if($eq activity.activityType 'archivedCard')
|
||||
| {{{_ 'activity-archived' cardLink}}}.
|
||||
|
||||
if($eq activity.activityType 'restoredCard')
|
||||
| {{{_ 'activity-sent' cardLink boardLabel}}}.
|
||||
| {{{_ 'activity-sent' cardLink boardLabelLink}}}.
|
||||
|
||||
//- checklist activity --------------------------------------------------
|
||||
if($eq activity.activityType 'addChecklist')
|
||||
@@ -83,25 +83,25 @@ template(name="activity")
|
||||
| {{{_ 'activity-checklist-removed' cardLink}}}.
|
||||
|
||||
if($eq activity.activityType 'completeChecklist')
|
||||
| {{{_ 'activity-checklist-completed' activity.checklist.title cardLink}}}.
|
||||
| {{{_ 'activity-checklist-completed' (sanitize activity.checklist.title) cardLink}}}.
|
||||
|
||||
if($eq activity.activityType 'uncompleteChecklist')
|
||||
| {{{_ 'activity-checklist-uncompleted' activity.checklist.title cardLink}}}.
|
||||
| {{{_ 'activity-checklist-uncompleted' (sanitize activity.checklist.title) cardLink}}}.
|
||||
|
||||
if($eq activity.activityType 'checkedItem')
|
||||
| {{{_ 'activity-checked-item' checkItem activity.checklist.title cardLink}}}.
|
||||
| {{{_ 'activity-checked-item' (sanitize checkItem) (sanitize activity.checklist.title) cardLink}}}.
|
||||
|
||||
if($eq activity.activityType 'uncheckedItem')
|
||||
| {{{_ 'activity-unchecked-item' checkItem activity.checklist.title cardLink}}}.
|
||||
| {{{_ 'activity-unchecked-item' (sanitize checkItem) (sanitize activity.checklist.title) cardLink}}}.
|
||||
|
||||
if($eq activity.activityType 'addChecklistItem')
|
||||
| {{{_ 'activity-checklist-item-added' activity.checklist.title cardLink}}}.
|
||||
| {{{_ 'activity-checklist-item-added' (sanitize activity.checklist.title) cardLink}}}.
|
||||
.activity-checklist(href="{{ activity.card.absoluteUrl }}")
|
||||
+viewer
|
||||
= activity.checklistItem.title
|
||||
|
||||
if($eq activity.activityType 'removedChecklistItem')
|
||||
| {{{_ 'activity-checklist-item-removed' activity.checklist.title cardLink}}}.
|
||||
| {{{_ 'activity-checklist-item-removed' (sanitize activity.checklist.title) cardLink}}}.
|
||||
|
||||
//- comment activity ----------------------------------------------------
|
||||
if($eq mode 'card')
|
||||
@@ -143,31 +143,31 @@ template(name="activity")
|
||||
| {{_ 'activity-customfield-created' customField}}.
|
||||
|
||||
if($eq activity.activityType 'setCustomField')
|
||||
| {{{_ 'activity-set-customfield' lastCustomField lastCustomFieldValue cardLink}}}.
|
||||
| {{{_ 'activity-set-customfield' (sanitize lastCustomField) (sanitize lastCustomFieldValue) cardLink}}}.
|
||||
|
||||
if($eq activity.activityType 'unsetCustomField')
|
||||
| {{{_ 'activity-unset-customfield' lastCustomField cardLink}}}.
|
||||
| {{{_ 'activity-unset-customfield' (sanitize lastCustomField) cardLink}}}.
|
||||
|
||||
//- label activity ------------------------------------------------------
|
||||
if($eq activity.activityType 'addedLabel')
|
||||
| {{{_ 'activity-added-label' lastLabel cardLink}}}.
|
||||
| {{{_ 'activity-added-label' (sanitize lastLabel) cardLink}}}.
|
||||
|
||||
if($eq activity.activityType 'removedLabel')
|
||||
| {{{_ 'activity-removed-label' lastLabel cardLink}}}.
|
||||
| {{{_ 'activity-removed-label' (sanitize lastLabel) cardLink}}}.
|
||||
|
||||
//- list activity -------------------------------------------------------
|
||||
if($neq mode 'card')
|
||||
if($eq activity.activityType 'createList')
|
||||
| {{{_ 'activity-added' listLabel boardLabel}}}.
|
||||
| {{{_ 'activity-added' (sanitize listLabel) boardLabelLink}}}.
|
||||
|
||||
if($eq activity.activityType 'importList')
|
||||
| {{{_ 'activity-imported' listLabel boardLabel sourceLink}}}.
|
||||
| {{{_ 'activity-imported' (sanitize listLabel) boardLabelLink sourceLink}}}.
|
||||
|
||||
if($eq activity.activityType 'removeList')
|
||||
| {{{_ 'activity-removed' activity.title boardLabel}}}.
|
||||
| {{{_ 'activity-removed' (sanitize activity.title) boardLabelLink}}}.
|
||||
|
||||
if($eq activity.activityType 'archivedList')
|
||||
| {{_ 'activity-archived' listLabel}}.
|
||||
| {{_ 'activity-archived' (sanitize listLabel)}}.
|
||||
|
||||
//- member activity ----------------------------------------------------
|
||||
if($eq activity.activityType 'joinMember')
|
||||
@@ -185,15 +185,15 @@ template(name="activity")
|
||||
//- swimlane activity --------------------------------------------------
|
||||
if($neq mode 'card')
|
||||
if($eq activity.activityType 'createSwimlane')
|
||||
| {{{_ 'activity-added' activity.swimlane.title boardLabel}}}.
|
||||
| {{_ 'activity-added' (sanitize activity.swimlane.title) boardLabelLink}}.
|
||||
|
||||
if($eq activity.activityType 'archivedSwimlane')
|
||||
| {{_ 'activity-archived' activity.swimlane.title}}.
|
||||
| {{_ 'activity-archived' (sanitize activity.swimlane.title)}}.
|
||||
|
||||
|
||||
//- I don't understand this part ----------------------------------------
|
||||
if(currentData.timeKey)
|
||||
| {{{_ activity.activityType }}}
|
||||
| {{_ activity.activityType }}
|
||||
= ' '
|
||||
i(title=currentData.timeValue).activity-meta {{ moment currentData.timeValue 'LLL' }}
|
||||
if (currentData.timeOldValue)
|
||||
@@ -203,6 +203,6 @@ template(name="activity")
|
||||
i(title=currentData.timeOldValue).activity-meta {{ moment currentData.timeOldValue 'LLL' }}
|
||||
= ' @'
|
||||
else if(currentData.timeValue)
|
||||
| {{{_ activity.activityType currentData.timeValue}}}
|
||||
| {{_ activity.activityType currentData.timeValue}}
|
||||
|
||||
span(title=activity.createdAt).activity-meta {{ moment activity.createdAt }}
|
||||
@@ -1,3 +1,5 @@
|
||||
import sanitizeXss from 'xss';
|
||||
|
||||
const activitiesPerPage = 20;
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
@@ -5,8 +7,9 @@ BlazeComponent.extendComponent({
|
||||
// XXX Should we use ReactiveNumber?
|
||||
this.page = new ReactiveVar(1);
|
||||
this.loadNextPageLocked = false;
|
||||
const sidebar = this.parentComponent(); // XXX for some reason not working
|
||||
sidebar.callFirstWith(null, 'resetNextPeak');
|
||||
// TODO is sidebar always available? E.g. on small screens/mobile devices
|
||||
const sidebar = Sidebar;
|
||||
sidebar && sidebar.callFirstWith(null, 'resetNextPeak');
|
||||
this.autorun(() => {
|
||||
let mode = this.data().mode;
|
||||
const capitalizedMode = Utils.capitalize(mode);
|
||||
@@ -27,6 +30,8 @@ BlazeComponent.extendComponent({
|
||||
this.subscribe('activities', mode, searchId, limit, hideSystem, () => {
|
||||
this.loadNextPageLocked = false;
|
||||
|
||||
// TODO the guard can be removed as soon as the TODO above is resolved
|
||||
if (!sidebar) return;
|
||||
// If the sibear peak hasn't increased, that mean that there are no more
|
||||
// activities, and we can stop calling new subscriptions.
|
||||
// XXX This is hacky! We need to know excatly and reactively how many
|
||||
@@ -41,23 +46,22 @@ BlazeComponent.extendComponent({
|
||||
});
|
||||
});
|
||||
},
|
||||
}).register('activities');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
loadNextPage() {
|
||||
if (this.loadNextPageLocked === false) {
|
||||
this.page.set(this.page.get() + 1);
|
||||
this.loadNextPageLocked = true;
|
||||
}
|
||||
},
|
||||
}).register('activities');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
checkItem() {
|
||||
const checkItemId = this.currentData().activity.checklistItemId;
|
||||
const checkItem = ChecklistItems.findOne({ _id: checkItemId });
|
||||
return checkItem && checkItem.title;
|
||||
},
|
||||
|
||||
boardLabel() {
|
||||
boardLabelLink() {
|
||||
const data = this.currentData();
|
||||
if (data.mode !== 'board') {
|
||||
return createBoardLink(data.activity.board(), data.activity.listName);
|
||||
@@ -65,10 +69,10 @@ BlazeComponent.extendComponent({
|
||||
return TAPi18n.__('this-board');
|
||||
},
|
||||
|
||||
cardLabel() {
|
||||
cardLabelLink() {
|
||||
const data = this.currentData();
|
||||
if (data.mode !== 'card') {
|
||||
return createCardLink(this.currentData().activity.card());
|
||||
return createCardLink(data.activity.card());
|
||||
}
|
||||
return TAPi18n.__('this-card');
|
||||
},
|
||||
@@ -134,11 +138,11 @@ BlazeComponent.extendComponent({
|
||||
{
|
||||
href: source.url,
|
||||
},
|
||||
source.system,
|
||||
sanitizeXss(source.system),
|
||||
),
|
||||
);
|
||||
} else {
|
||||
return source.system;
|
||||
return sanitizeXss(source.system);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@@ -162,10 +166,10 @@ BlazeComponent.extendComponent({
|
||||
href: attachment.url({ download: true }),
|
||||
target: '_blank',
|
||||
},
|
||||
attachment.name(),
|
||||
sanitizeXss(attachment.name()),
|
||||
),
|
||||
)) ||
|
||||
this.currentData().activity.attachmentName
|
||||
sanitizeXss(this.currentData().activity.attachmentName)
|
||||
);
|
||||
},
|
||||
|
||||
@@ -202,7 +206,14 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
}).register('activity');
|
||||
|
||||
Template.activity.helpers({
|
||||
sanitize(value) {
|
||||
return sanitizeXss(value);
|
||||
},
|
||||
});
|
||||
|
||||
function createCardLink(card) {
|
||||
if (!card) return '';
|
||||
return (
|
||||
card &&
|
||||
Blaze.toHTML(
|
||||
@@ -211,7 +222,7 @@ function createCardLink(card) {
|
||||
href: card.absoluteUrl(),
|
||||
class: 'action-card',
|
||||
},
|
||||
card.title,
|
||||
sanitizeXss(card.title),
|
||||
),
|
||||
)
|
||||
);
|
||||
@@ -228,7 +239,7 @@ function createBoardLink(board, list) {
|
||||
href: board.absoluteUrl(),
|
||||
class: 'action-board',
|
||||
},
|
||||
text,
|
||||
sanitizeXss(text),
|
||||
),
|
||||
)
|
||||
);
|
||||
|
||||
@@ -15,7 +15,7 @@ template(name="board")
|
||||
template(name="boardBody")
|
||||
.board-wrapper(class=currentBoard.colorClass)
|
||||
+sidebar
|
||||
.board-canvas.js-swimlanes.js-perfect-scrollbar(
|
||||
.board-canvas.js-swimlanes(
|
||||
class="{{#if Sidebar.isOpen}}is-sibling-sidebar-open{{/if}}"
|
||||
class="{{#if MultiSelection.isActive}}is-multiselection-active{{/if}}"
|
||||
class="{{#if draggingActive.get}}is-dragging-active{{/if}}")
|
||||
|
||||
@@ -323,7 +323,7 @@ BlazeComponent.extendComponent({
|
||||
header: {
|
||||
left: 'title today prev,next',
|
||||
center:
|
||||
'agendaDay,listDay,timelineDay agendaWeek,listWeek,timelineWeek month,timelineMonth timelineYear',
|
||||
'agendaDay,listDay,timelineDay agendaWeek,listWeek,timelineWeek month,listMonth',
|
||||
right: '',
|
||||
},
|
||||
// height: 'parent', nope, doesn't work as the parent might be small
|
||||
|
||||
@@ -293,3 +293,449 @@ setBoardColor(color)
|
||||
|
||||
//.header-quick-access
|
||||
// backgroud-color: #568ba2
|
||||
|
||||
|
||||
/*
|
||||
Alternate "Clear" Styling
|
||||
*/
|
||||
setBoardClear(color1,color2)
|
||||
//color1: The quick access color
|
||||
//color2: The main bar color
|
||||
|
||||
&.sk-spinner div,
|
||||
.board-backgrounds-list &.background-box,
|
||||
.board-list & a
|
||||
background: linear-gradient(180deg, color1 0%, color2 100%)
|
||||
//background: linear-gradient(180deg, rgb(73, 155, 234) 0%, rgb(0, 174, 204) 100%)
|
||||
|
||||
.is-selected .minicard
|
||||
border-left: 3px solid color1
|
||||
|
||||
&.pop-over .pop-over-list li a:not(.disabled):hover,
|
||||
.sidebar .sidebar-content .sidebar-btn:hover,
|
||||
.sidebar-list li a:hover
|
||||
background-color: lighten(color1, 10%)
|
||||
|
||||
&#header ul li.current, &#header-quick-access ul li.current
|
||||
border-bottom: 4px solid lighten(color2, 10%)
|
||||
|
||||
&#header-quick-access
|
||||
background: darken(color1, 10%)
|
||||
//background: rgba(66,137,204,1)
|
||||
color: #FFF
|
||||
|
||||
&#header-quick-access #header-new-board-icon,
|
||||
&#header-quick-access #header-user-bar,
|
||||
&#header-quick-access ul li
|
||||
color: rgba(255,255,255,0.5)
|
||||
|
||||
// The background-color value here is not seen,
|
||||
// its covered by the background of #header-main-bar
|
||||
// it's just to aid transitions between boards
|
||||
&#header
|
||||
background-color: color2
|
||||
border-bottom: 1px solid darken(color2, 20%)
|
||||
border-top: 1px solid darken(color2, 40%)
|
||||
|
||||
// Since the theme uses a gradient for the header
|
||||
// and gradients break transitions, it has to be set here
|
||||
&#header #header-main-bar
|
||||
background: linear-gradient(180deg, color1 0%, color2 100%)
|
||||
|
||||
&#header #header-main-bar p
|
||||
margin-bottom: 6px
|
||||
|
||||
&#header #header-main-bar .board-header-btn.emphasis
|
||||
background: lighten(color2, 10%)
|
||||
|
||||
&:hover,
|
||||
.board-header-btn-close
|
||||
background: rgba(0,0,0,0.2)
|
||||
|
||||
&:hover .board-header-btn-close
|
||||
background: rgba(0,0,0,0.2)
|
||||
|
||||
.materialCheckBox.is-checked
|
||||
border-bottom: 2px solid color1
|
||||
border-right: 2px solid color1
|
||||
|
||||
.is-multiselection-active .multi-selection-checkbox
|
||||
&.is-checked + .minicard
|
||||
background: lighten(color2, 90%)
|
||||
|
||||
&:not(.is-checked) + .minicard:hover:not(.minicard-composer)
|
||||
background: lighten(color2, 97%)
|
||||
|
||||
.toggle-switch:checked ~ .toggle-label
|
||||
background-color: lighten(color1, 20%)
|
||||
|
||||
&:after
|
||||
background-color: darken(color1, 20%)
|
||||
|
||||
.board-canvas
|
||||
background: linear-gradient(135deg, color1 0%, color2 100%)
|
||||
|
||||
.swimlane
|
||||
background: none
|
||||
|
||||
.list:first-child
|
||||
margin-left: 15px
|
||||
|
||||
.list
|
||||
background: rgba(255,255,255,0.35)
|
||||
margin: 10px
|
||||
border: 0
|
||||
border-radius: 14px
|
||||
|
||||
.list.list-composer
|
||||
background: rgba(255,255,255,0.1)
|
||||
height: min-content
|
||||
flex: unset
|
||||
width: 270px
|
||||
padding-bottom: 16px
|
||||
|
||||
.list.list-composer .open-list-composer
|
||||
border-radius: 7px
|
||||
color: rgba(0,0,0,0.3)
|
||||
padding: 7px 10px
|
||||
display: block
|
||||
|
||||
.list.list-composer .open-list-composer:hover
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,.2)
|
||||
background: rgba(255,255,255,0.7)
|
||||
color: rgba(0,0,0,0.6)
|
||||
|
||||
.list-header
|
||||
background-color: rgba(255,255,255,0.25)
|
||||
border-radius: 14px 14px 0 0
|
||||
|
||||
.list-header:not([class*="list-header-"])
|
||||
border-bottom: 6px solid rgba(255,255,255,0)
|
||||
|
||||
.list-header .list-header-name
|
||||
color: rgba(0,0,0,0.6)
|
||||
|
||||
.list-body
|
||||
padding: 11px
|
||||
|
||||
.minicard
|
||||
border-radius: 7px
|
||||
padding: 10px 10px 4px 10px
|
||||
box-shadow: 2px 2px 4px 0px rgba(0,0,0,0.15)
|
||||
color: #222
|
||||
|
||||
.card-details
|
||||
border-radius: 0 0 14px 14px
|
||||
box-shadow: 0 0 7px 0 rgba(0,0,0,0.5)
|
||||
margin-left: -10px
|
||||
|
||||
.list-body .open-minicard-composer
|
||||
border-radius: 7px
|
||||
color: rgba(0,0,0,.3)
|
||||
margin-bottom: 11px
|
||||
|
||||
.list-body .open-minicard-composer:hover
|
||||
background: rgba(255,255,255,0.7)
|
||||
color: rgba(0,0,0,0.6)
|
||||
|
||||
button[type=submit].primary, input[type=submit].primary
|
||||
box-shadow: none
|
||||
background-color: rgba(255,255,255,0.5)
|
||||
color: rgba(0,0,0,0.55)
|
||||
border-radius: 7px
|
||||
border: 0
|
||||
|
||||
button[type="submit"].primary:hover, input[type="submit"].primary:hover
|
||||
background-color: rgba(255,255,255,0.7)
|
||||
color: rgba(0,0,0,0.8)
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,.2)
|
||||
|
||||
.quiet, .quiet a
|
||||
color: rgba(0,0,0,0.4)
|
||||
|
||||
.list-header .list-header-watch-icon
|
||||
color: rgba(0,0,0,0.5)
|
||||
position: absolute
|
||||
margin-top: -34px
|
||||
margin-let: -11px
|
||||
|
||||
a.fa, a i.fa
|
||||
color: rgba(0,0,0,0.3)
|
||||
|
||||
a:not(.disabled).is-active.fa, a:not(.disabled).is-active i.fa, a:not(.disabled):hover.fa, a:not(.disabled):hover i.fa
|
||||
color: rgba(0,0,0,0.6)
|
||||
|
||||
input[type="email"], input[type="password"], input[type="text"]
|
||||
border: 0
|
||||
border-radius: 7px
|
||||
|
||||
.sidebar-shadow
|
||||
box-shadow: none
|
||||
border-left: 9px solid color2
|
||||
|
||||
.is-open .sidebar-shadow
|
||||
box-shadow: -10px 0 8px rgba(0,0,0,0.3)
|
||||
|
||||
.list.ui-sortable-helper
|
||||
transform:rotate(0deg)
|
||||
|
||||
.minicard-wrapper.placeholder
|
||||
background: rgba(0,0,0,0.1)
|
||||
|
||||
.minicard-wrapper.ui-sortable-helper
|
||||
transform:rotate(0deg)
|
||||
opacity: 0.8
|
||||
|
||||
.list-body .open-minicard-composer
|
||||
color: rgba(0,0,0,.3)
|
||||
|
||||
.swinlane.ui-sortable-helper
|
||||
transform:rotate(0deg)
|
||||
|
||||
.swimlane .swimlane-header-wrap
|
||||
background: linear-gradient(0deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.25) 100%)
|
||||
|
||||
.swimlane-header-wrap .inlined-form
|
||||
width: 100%
|
||||
|
||||
.swimlane-header-wrap .list-composer
|
||||
text-align: center
|
||||
margin: 5px
|
||||
|
||||
.swimlane-header-wrap .list-name-input.full-line
|
||||
margin: 0
|
||||
display: inline-block
|
||||
width: 270px
|
||||
|
||||
.swimlane-header-wrap .edit-controls
|
||||
display: inline-block
|
||||
vertical-align: middle
|
||||
|
||||
.swimlane-header-wrap .primary.confirm
|
||||
margin-right: 0
|
||||
|
||||
.swimlane-header-wrap .fa.fa-times-thin
|
||||
margin-top: 2px
|
||||
|
||||
// This is a general fix so that the little grabby hand appears when dragging the list via the title
|
||||
.list.ui-sortable-helper,
|
||||
.list.ui-sortable-helper .list-header.ui-sortable-handle,
|
||||
.list.ui-sortable-helper .viewer
|
||||
cursor:-webkit-grabbing;
|
||||
cursor:grabbing
|
||||
|
||||
.board-color-clearblue
|
||||
setBoardClear(rgb(73, 155, 234),rgb(0, 174, 204))
|
||||
|
||||
/*
|
||||
Alternate "Natural" Styling
|
||||
*/
|
||||
.board-color-natural
|
||||
setBoardColor(#596557)
|
||||
|
||||
&#header-quick-access
|
||||
background-color: #2d392b
|
||||
|
||||
.ui-sortable
|
||||
background-color:#dedede
|
||||
|
||||
.list-header
|
||||
background-color: #c9cfc3
|
||||
border-bottom: 6px solid #c9cfc3
|
||||
|
||||
.swimlane .swimlane-header-wrap
|
||||
background-color: #c2c0ab
|
||||
|
||||
/*
|
||||
Alternate "Modern" Styling
|
||||
*/
|
||||
.board-color-modern
|
||||
setBoardColor(#2A80B8)
|
||||
|
||||
/* General */
|
||||
body
|
||||
background: #f5f5f5
|
||||
|
||||
&#header-quick-access
|
||||
padding: 10px
|
||||
font-size: 14px
|
||||
background: #333 !important
|
||||
|
||||
&#header-quick-access ul
|
||||
overflow: visible
|
||||
|
||||
&#header-quick-access ul li.current
|
||||
border: 0 !important
|
||||
font-weight: bold
|
||||
|
||||
&#header-quick-access ul li.separator
|
||||
display: none
|
||||
|
||||
&#header-quick-access ul li:nth-child(3)
|
||||
margin-right: 10px
|
||||
|
||||
&#header-quick-access ul li a
|
||||
padding: 5px 10px
|
||||
border-radius: 2px
|
||||
|
||||
&#header-quick-access ul li.current a
|
||||
border-radius: 2px
|
||||
background: rgba(255,255,255,.2)
|
||||
|
||||
&#header #header-main-bar h1
|
||||
font-family: Poppins
|
||||
font-weight: bold
|
||||
&#header-quick-access #header-user-bar
|
||||
position relative
|
||||
|
||||
&#header-quick-access #header-user-bar .header-user-bar-name
|
||||
margin: 5px 3px 0 0;
|
||||
|
||||
section#notifications-drawer
|
||||
top: 46px;
|
||||
box-shadow: 0 4px 20px rgba(0,0,0,.1)
|
||||
max-width: 100%
|
||||
|
||||
section#notifications-drawer .header
|
||||
top: 46px;
|
||||
border-radius: 0 3px
|
||||
height: 21px
|
||||
background: #f7f7f7
|
||||
|
||||
/* Swimlane */
|
||||
.swimlane
|
||||
background: #f5f5f5
|
||||
|
||||
.swimlane .swimlane-header-wrap .swimlane-header
|
||||
font-family: Poppins
|
||||
|
||||
/* All board views */
|
||||
.board-list .board-list-item
|
||||
padding: 20px
|
||||
|
||||
.board-list-item-name
|
||||
font-family: Poppins
|
||||
|
||||
/* Board */
|
||||
.list
|
||||
background: transparent
|
||||
border-left: 0
|
||||
margin: 10px 0
|
||||
padding: 0px
|
||||
border-radius: 5px
|
||||
min-width: 300px
|
||||
|
||||
.list-body .open-minicard-composer:hover /*me*/
|
||||
background: none
|
||||
box-shadow: none
|
||||
|
||||
.list:first-child
|
||||
margin-left: 5px
|
||||
|
||||
.list.list-composer.js-list-composer
|
||||
transition: all .3s ease
|
||||
min-width: 80px
|
||||
|
||||
.open-list-composer.js-open-inlined-form:hover
|
||||
color: #222
|
||||
|
||||
.list-header
|
||||
background: none
|
||||
border-bottom-width: 0px
|
||||
|
||||
.list-header .list-header-name
|
||||
font-family: Poppins
|
||||
color: #000
|
||||
font-weight: 500
|
||||
|
||||
/* Card changes */
|
||||
.minicard
|
||||
background: #FFF
|
||||
padding: 15px 15px 10px
|
||||
box-shadow: 0 3px 8px rgba(0,0,0,.05)
|
||||
|
||||
.minicard-plum:hover:not(.minicard-composer), .is-selected .minicard-plum, .draggable-hover-card .minicard-plum
|
||||
background: none
|
||||
|
||||
.minicard-title
|
||||
line-height: 1.5em
|
||||
|
||||
.minicard .minicard-cover
|
||||
background-size: cover
|
||||
margin: -15px -15px 10px
|
||||
height: 100px
|
||||
|
||||
.card-label-orange
|
||||
color: #fff
|
||||
|
||||
.card-date
|
||||
font-size: 12px
|
||||
padding: 3px 5px
|
||||
|
||||
/* Pop over */
|
||||
.header-title
|
||||
font-family: Poppins
|
||||
font-size: 16px
|
||||
color: #333
|
||||
|
||||
.pop-over
|
||||
box-shadow: 0 4px 20px rgba(0,0,0,.2)
|
||||
border: 0
|
||||
border-radius: 5px
|
||||
|
||||
.pop-over .header
|
||||
padding: 10px
|
||||
border-bottom: 0
|
||||
border-radius: 5px 5px 0 0
|
||||
background:#eee
|
||||
|
||||
.pop-over .header .header-title
|
||||
font-family: Poppins
|
||||
font-size:16px
|
||||
color:#333
|
||||
|
||||
.pop-over .header .close-btn
|
||||
font-size:20px
|
||||
top:6px
|
||||
right:8px
|
||||
|
||||
.pop-over .content-container .content
|
||||
padding: 5px 20px 20px
|
||||
width: 260px
|
||||
|
||||
.pop-over-list li > a
|
||||
border-radius: 5px
|
||||
|
||||
.pop-over-list li > a > i
|
||||
margin-right: 5px
|
||||
|
||||
.pop-over-list li>a .sub-name
|
||||
margin-bottom: 8px
|
||||
|
||||
/* Sidebar */
|
||||
.sidebar .sidebar-shadow
|
||||
box-shadow: 0 0 60px rgba(0,0,0,.2)
|
||||
|
||||
.sidebar .sidebar-content
|
||||
padding: 30px
|
||||
|
||||
/* Notifications */
|
||||
.board-color-modern section#notifications-drawer
|
||||
border-radius:5px
|
||||
|
||||
.board-color-modern section#notifications-drawer .header
|
||||
padding: 18px 16px
|
||||
border-bottom: 0
|
||||
border-radius: 5px 5px 0 0
|
||||
background: #eee
|
||||
|
||||
.board-color-modern section#notifications-drawer .header h5
|
||||
font-family: Poppins
|
||||
font-weight: bold
|
||||
|
||||
.board-color-modern section#notifications-drawer .header .close
|
||||
font-size: 20px
|
||||
top: 14px
|
||||
|
||||
section#notifications-drawer .header .toggle-read
|
||||
top: 18px
|
||||
@@ -99,13 +99,13 @@ template(name="boardHeaderBar")
|
||||
a.board-header-btn.js-toggle-board-view(
|
||||
title="{{_ 'board-view'}}")
|
||||
i.fa.fa-caret-down
|
||||
if $eq boardView 'board-view-lists'
|
||||
i.fa.fa-trello
|
||||
if $eq boardView 'board-view-swimlanes'
|
||||
i.fa.fa-th-large
|
||||
if $eq boardView 'board-view-lists'
|
||||
i.fa.fa-trello
|
||||
if $eq boardView 'board-view-cal'
|
||||
i.fa.fa-calendar
|
||||
span {{#if boardView}}{{_ boardView}}{{else}}{{_ 'board-view-lists'}}{{/if}}
|
||||
span {{#if boardView}}{{_ boardView}}{{else}}{{_ 'board-view-swimlanes'}}{{/if}}
|
||||
|
||||
if canModifyBoard
|
||||
a.board-header-btn.js-multiselection-activate(
|
||||
@@ -172,13 +172,6 @@ template(name="boardChangeWatchPopup")
|
||||
|
||||
template(name="boardChangeViewPopup")
|
||||
ul.pop-over-list
|
||||
li
|
||||
with "board-view-lists"
|
||||
a.js-open-lists-view
|
||||
i.fa.fa-trello.colorful
|
||||
| {{_ 'board-view-lists'}}
|
||||
if $eq Utils.boardView "board-view-lists"
|
||||
i.fa.fa-check
|
||||
li
|
||||
with "board-view-swimlanes"
|
||||
a.js-open-swimlanes-view
|
||||
@@ -186,6 +179,13 @@ template(name="boardChangeViewPopup")
|
||||
| {{_ 'board-view-swimlanes'}}
|
||||
if $eq Utils.boardView "board-view-swimlanes"
|
||||
i.fa.fa-check
|
||||
li
|
||||
with "board-view-lists"
|
||||
a.js-open-lists-view
|
||||
i.fa.fa-trello.colorful
|
||||
| {{_ 'board-view-lists'}}
|
||||
if $eq Utils.boardView "board-view-lists"
|
||||
i.fa.fa-check
|
||||
li
|
||||
with "board-view-cal"
|
||||
a.js-open-cal-view
|
||||
|
||||
@@ -31,6 +31,10 @@ template(name="boardList")
|
||||
i.fa.js-has-spenttime-cards(
|
||||
class="fa-circle{{#if hasOvertimeCards}} has-overtime-card-active{{else}} no-overtime-card-active{{/if}}"
|
||||
title="{{#if hasOvertimeCards}}{{_ 'has-overtime-cards'}}{{else}}{{_ 'has-spenttime-cards'}}{{/if}}")
|
||||
if isMiniScreen
|
||||
i.fa.board-handle(
|
||||
class="fa-arrows"
|
||||
title="{{_ 'Drag board'}}")
|
||||
unless isMiniScreen
|
||||
if isSandstorm
|
||||
i.fa.js-clone-board(
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
const subManager = new SubsManager();
|
||||
const { calculateIndex } = Utils;
|
||||
const { calculateIndex, enableClickOnTouch } = Utils;
|
||||
|
||||
Template.boardListHeaderBar.events({
|
||||
'click .js-open-archived-board'() {
|
||||
@@ -25,11 +25,6 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
|
||||
onRendered() {
|
||||
const self = this;
|
||||
function userIsAllowedToMove() {
|
||||
return Meteor.user();
|
||||
}
|
||||
|
||||
const itemsSelector = '.js-board:not(.placeholder)';
|
||||
|
||||
const $boards = this.$('.js-boards');
|
||||
@@ -68,14 +63,21 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
});
|
||||
|
||||
// ugly touch event hotfix
|
||||
enableClickOnTouch(itemsSelector);
|
||||
|
||||
// Disable drag-dropping if the current user is not a board member or is comment only
|
||||
this.autorun(() => {
|
||||
$boards.sortable('option', 'disabled', !userIsAllowedToMove());
|
||||
if (Utils.isMiniScreen()) {
|
||||
$boards.sortable({
|
||||
handle: '.board-handle',
|
||||
});
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
boards() {
|
||||
let query = {
|
||||
const query = {
|
||||
archived: false,
|
||||
type: 'board',
|
||||
};
|
||||
|
||||
@@ -69,7 +69,7 @@ $spaceBetweenTiles = 16px
|
||||
|
||||
.label
|
||||
font-weight: normal
|
||||
line-height:90px
|
||||
line-height: 56px
|
||||
|
||||
:hover
|
||||
background-color:#939393
|
||||
@@ -208,6 +208,22 @@ $spaceBetweenTiles = 16px
|
||||
top: -100px
|
||||
left: -100px
|
||||
|
||||
.board-handle
|
||||
position: absolute
|
||||
padding: 7px
|
||||
top: 50%
|
||||
transform: translateY(-50%)
|
||||
right: 10px
|
||||
font-size: 24px
|
||||
|
||||
@media screen and (max-width: 360px)
|
||||
li
|
||||
width: 100%
|
||||
|
||||
.board-handle
|
||||
position: absolute
|
||||
padding: 7px
|
||||
top: 50%
|
||||
transform: translateY(-50%)
|
||||
right: 10px
|
||||
font-size: 24px
|
||||
@@ -4,8 +4,7 @@ template(name="cardCustomFieldsPopup")
|
||||
li.item(class="")
|
||||
a.name.js-select-field(href="#")
|
||||
span.full-name
|
||||
+viewer
|
||||
= name
|
||||
= name
|
||||
if hasCustomField
|
||||
i.fa.fa-check
|
||||
hr
|
||||
@@ -53,6 +52,23 @@ template(name="cardCustomField-number")
|
||||
if value
|
||||
= value
|
||||
|
||||
template(name="cardCustomField-currency")
|
||||
if canModifyCard
|
||||
+inlinedForm(classNames="js-card-customfield-currency")
|
||||
input(type="text" value=data.value)
|
||||
.edit-controls.clearfix
|
||||
button.primary(type="submit") {{_ 'save'}}
|
||||
a.fa.fa-times-thin.js-close-inlined-form
|
||||
else
|
||||
a.js-open-inlined-form
|
||||
if value
|
||||
= formattedValue
|
||||
else
|
||||
| {{_ 'edit'}}
|
||||
else
|
||||
if value
|
||||
= formattedValue
|
||||
|
||||
template(name="cardCustomField-date")
|
||||
if canModifyCard
|
||||
a.js-edit-date(title="{{showTitle}}" class="{{classes}}")
|
||||
|
||||
@@ -80,6 +80,36 @@ CardCustomField.register('cardCustomField');
|
||||
}
|
||||
}.register('cardCustomField-number'));
|
||||
|
||||
// cardCustomField-currency
|
||||
(class extends CardCustomField {
|
||||
onCreated() {
|
||||
super.onCreated();
|
||||
|
||||
this.currencyCode = this.data().definition.settings.currencyCode;
|
||||
}
|
||||
|
||||
formattedValue() {
|
||||
const locale = TAPi18n.getLanguage();
|
||||
|
||||
return new Intl.NumberFormat(locale, {
|
||||
style: 'currency',
|
||||
currency: this.currencyCode,
|
||||
}).format(this.data().value);
|
||||
}
|
||||
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'submit .js-card-customfield-currency'(event) {
|
||||
event.preventDefault();
|
||||
const value = Number(this.find('input').value, 10);
|
||||
this.card.setCustomField(this.customFieldId, value);
|
||||
},
|
||||
},
|
||||
];
|
||||
}
|
||||
}.register('cardCustomField-currency'));
|
||||
|
||||
// cardCustomField-date
|
||||
(class extends CardCustomField {
|
||||
onCreated() {
|
||||
|
||||
@@ -386,3 +386,30 @@ CardEndDate.register('cardEndDate');
|
||||
return this.date.get().format('l');
|
||||
}
|
||||
}.register('minicardEndDate'));
|
||||
|
||||
class VoteEndDate extends CardDate {
|
||||
onCreated() {
|
||||
super.onCreated();
|
||||
const self = this;
|
||||
self.autorun(() => {
|
||||
self.date.set(moment(self.data().getVoteEnd()));
|
||||
});
|
||||
}
|
||||
classes() {
|
||||
const classes = 'end-date' + ' ';
|
||||
return classes;
|
||||
}
|
||||
showDate() {
|
||||
return this.date.get().format('l LT');
|
||||
}
|
||||
showTitle() {
|
||||
return `${TAPi18n.__('card-end-on')} ${this.date.get().format('LLLL')}`;
|
||||
}
|
||||
|
||||
events() {
|
||||
return super.events().concat({
|
||||
'click .js-edit-date': Popup.open('editVoteEndDate'),
|
||||
});
|
||||
}
|
||||
}
|
||||
VoteEndDate.register('voteEndDate');
|
||||
@@ -1,5 +1,5 @@
|
||||
template(name="cardDetails")
|
||||
section.card-details.js-card-details.js-perfect-scrollbar: .card-details-canvas
|
||||
section.card-details.js-card-details: .card-details-canvas
|
||||
.card-details-header(class='{{#if colorClass}}card-details-{{colorClass}}{{/if}}')
|
||||
+inlinedForm(classNames="js-card-details-title")
|
||||
+editCardTitleForm
|
||||
@@ -42,12 +42,28 @@ template(name="cardDetails")
|
||||
else
|
||||
p.warning {{_ 'card-archived'}}
|
||||
|
||||
.card-details-items
|
||||
.card-details-items
|
||||
if currentBoard.allowsLabels
|
||||
.card-details-item.card-details-item-labels
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-tags
|
||||
| {{_ 'labels'}}
|
||||
a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}")
|
||||
each labels
|
||||
span.card-label(class="card-label-{{color}}" title=name)
|
||||
+viewer
|
||||
= name
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
|
||||
i.fa.fa-plus
|
||||
|
||||
if currentBoard.allowsReceivedDate
|
||||
hr
|
||||
.card-details-item.card-details-item-received
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-sign-out
|
||||
card-details-item-title {{_ 'card-received'}}
|
||||
| {{_ 'card-received'}}
|
||||
if getReceived
|
||||
+cardReceivedDate
|
||||
else
|
||||
@@ -58,9 +74,9 @@ template(name="cardDetails")
|
||||
|
||||
if currentBoard.allowsStartDate
|
||||
.card-details-item.card-details-item-start
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-hourglass-start
|
||||
card-details-item-title {{_ 'card-start'}}
|
||||
| {{_ 'card-start'}}
|
||||
if getStart
|
||||
+cardStartDate
|
||||
else
|
||||
@@ -71,9 +87,9 @@ template(name="cardDetails")
|
||||
|
||||
if currentBoard.allowsDueDate
|
||||
.card-details-item.card-details-item-due
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-sign-in
|
||||
card-details-item-title {{_ 'card-due'}}
|
||||
| {{_ 'card-due'}}
|
||||
if getDue
|
||||
+cardDueDate
|
||||
else
|
||||
@@ -84,9 +100,9 @@ template(name="cardDetails")
|
||||
|
||||
if currentBoard.allowsEndDate
|
||||
.card-details-item.card-details-item-end
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-hourglass-end
|
||||
card-details-item-title {{_ 'card-end'}}
|
||||
| {{_ 'card-end'}}
|
||||
if getEnd
|
||||
+cardEndDate
|
||||
else
|
||||
@@ -97,10 +113,11 @@ template(name="cardDetails")
|
||||
|
||||
//.card-details-items
|
||||
if currentBoard.allowsMembers
|
||||
hr
|
||||
.card-details-item.card-details-item-members
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-users
|
||||
card-details-item-title {{_ 'members'}}
|
||||
| {{_ 'members'}}
|
||||
each getMembers
|
||||
+userAvatar(userId=this cardId=../_id)
|
||||
| {{! XXX Hack to hide syntaxic coloration /// }}
|
||||
@@ -112,9 +129,9 @@ template(name="cardDetails")
|
||||
//if assigneeSelected
|
||||
if currentBoard.allowsAssignee
|
||||
.card-details-item.card-details-item-assignees
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-user
|
||||
card-details-item-title {{_ 'assignee'}}
|
||||
| {{_ 'assignee'}}
|
||||
each getAssignees
|
||||
+userAvatarAssignee(userId=this cardId=../_id)
|
||||
| {{! XXX Hack to hide syntaxic coloration /// }}
|
||||
@@ -126,44 +143,23 @@ template(name="cardDetails")
|
||||
a.assignee.add-assignee.card-details-item-add-button.js-add-assignees(title="{{_ 'assignee'}}")
|
||||
i.fa.fa-plus
|
||||
|
||||
if currentBoard.allowsLabels
|
||||
.card-details-item.card-details-item-labels
|
||||
h3
|
||||
i.fa.fa-tags
|
||||
card-details-item-title {{_ 'labels'}}
|
||||
a(class="{{#if canModifyCard}}js-add-labels{{else}}is-disabled{{/if}}" title="{{_ 'card-labels-title'}}")
|
||||
each labels
|
||||
span.card-label(class="card-label-{{color}}" title=name)
|
||||
+viewer
|
||||
= name
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
a.card-label.add-label.js-add-labels(title="{{_ 'card-labels-title'}}")
|
||||
i.fa.fa-plus
|
||||
|
||||
//.card-details-items
|
||||
each customFieldsWD
|
||||
.card-details-item.card-details-item-customfield
|
||||
h3.card-details-item-title
|
||||
+viewer
|
||||
= definition.name
|
||||
+cardCustomField
|
||||
|
||||
//.card-details-items
|
||||
if getSpentTime
|
||||
.card-details-item.card-details-item-spent
|
||||
if getIsOvertime
|
||||
h3.card-details-item-title {{_ 'overtime-hours'}}
|
||||
h3.card-details-item-title
|
||||
| {{_ 'overtime-hours'}}
|
||||
else
|
||||
h3.card-details-item-title {{_ 'spent-time-hours'}}
|
||||
h3.card-details-item-title
|
||||
| {{_ 'spent-time-hours'}}
|
||||
+cardSpentTime
|
||||
|
||||
//.card-details-items
|
||||
if currentBoard.allowsRequestedBy
|
||||
.card-details-item.card-details-item-name
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-shopping-cart
|
||||
card-details-item-title {{_ 'requested-by'}}
|
||||
| {{_ 'requested-by'}}
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
+inlinedForm(classNames="js-card-details-requester")
|
||||
@@ -181,9 +177,9 @@ template(name="cardDetails")
|
||||
|
||||
if currentBoard.allowsAssignedBy
|
||||
.card-details-item.card-details-item-name
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-user-plus
|
||||
card-details-item-title {{_ 'assigned-by'}}
|
||||
| {{_ 'assigned-by'}}
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
+inlinedForm(classNames="js-card-details-assigner")
|
||||
@@ -199,12 +195,25 @@ template(name="cardDetails")
|
||||
+viewer
|
||||
= getAssignedBy
|
||||
|
||||
//.card-details-items
|
||||
if customFieldsWD
|
||||
hr
|
||||
each customFieldsWD
|
||||
.card-details-item.card-details-item-customfield
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-list-alt
|
||||
= definition.name
|
||||
+cardCustomField
|
||||
|
||||
if getVoteQuestion
|
||||
hr
|
||||
.vote-title
|
||||
h3
|
||||
i.fa.fa-thumbs-up
|
||||
card-details-item-title {{_ 'vote-question'}}
|
||||
div.flex
|
||||
h3
|
||||
i.fa.fa-thumbs-up
|
||||
| {{_ 'vote-question'}}
|
||||
if getVoteEnd
|
||||
+voteEndDate
|
||||
.vote-result
|
||||
if votePublic
|
||||
a.card-label.card-label-green.js-show-positive-votes {{ voteCountPositive }}
|
||||
@@ -212,19 +221,28 @@ template(name="cardDetails")
|
||||
else
|
||||
.card-label.card-label-green {{ voteCountPositive }}
|
||||
.card-label.card-label-red {{ voteCountNegative }}
|
||||
unless ($and currentBoard.isPublic voteAllowNonBoardMembers )
|
||||
.card-label.card-label-gray {{ voteCount }} {{_ 'r-of' }} {{ currentBoard.activeMembers.length }}
|
||||
+viewer
|
||||
= getVoteQuestion
|
||||
button.card-details-green.js-vote.js-vote-positive(class="{{#if voteState}}voted{{/if}}") {{_ 'vote-for-it'}}
|
||||
button.card-details-red.js-vote.js-vote-negative(class="{{#if $eq voteState false}}voted{{/if}}") {{_ 'vote-against'}}
|
||||
if showVotingButtons
|
||||
button.card-details-green.js-vote.js-vote-positive(class="{{#if voteState}}voted{{/if}}")
|
||||
if voteState
|
||||
i.fa.fa-thumbs-up
|
||||
| {{_ 'vote-for-it'}}
|
||||
button.card-details-red.js-vote.js-vote-negative(class="{{#if $eq voteState false}}voted{{/if}}")
|
||||
if $eq voteState false
|
||||
i.fa.fa-thumbs-down
|
||||
| {{_ 'vote-against'}}
|
||||
|
||||
//- XXX We should use "editable" to avoid repetiting ourselves
|
||||
if canModifyCard
|
||||
unless currentUser.isWorker
|
||||
if currentBoard.allowsDescriptionTitle
|
||||
hr
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-align-left
|
||||
card-details-item-title {{_ 'description'}}
|
||||
| {{_ 'description'}}
|
||||
if currentBoard.allowsDescriptionText
|
||||
+inlinedCardDescription(classNames="card-description js-card-description")
|
||||
+editor(autofocus=true)
|
||||
@@ -264,7 +282,7 @@ template(name="cardDetails")
|
||||
+subtasks(cardId = _id)
|
||||
if currentBoard.allowsAttachments
|
||||
hr
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-paperclip
|
||||
| {{_ 'attachments'}}
|
||||
.card-checklist-attachmentGalery.card-attachmentGalery
|
||||
@@ -273,7 +291,7 @@ template(name="cardDetails")
|
||||
hr
|
||||
unless currentUser.isNoComments
|
||||
.activity-title
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-history
|
||||
| {{ _ 'activity'}}
|
||||
if currentUser.isBoardMember
|
||||
@@ -333,16 +351,10 @@ template(name="cardDetailsActionsPopup")
|
||||
//li: a.js-members {{_ 'card-edit-members'}}
|
||||
//li: a.js-labels {{_ 'card-edit-labels'}}
|
||||
//li: a.js-attachments {{_ 'card-edit-attachments'}}
|
||||
if getVoteQuestion
|
||||
li
|
||||
a.js-cancel-voting
|
||||
i.fa.fa-thumbs-up
|
||||
| {{_ 'card-cancel-voting'}}
|
||||
else
|
||||
li
|
||||
a.js-start-voting
|
||||
i.fa.fa-thumbs-up
|
||||
| {{_ 'card-start-voting'}}
|
||||
li
|
||||
a.js-start-voting
|
||||
i.fa.fa-thumbs-up
|
||||
| {{_ 'card-edit-voting'}}
|
||||
li
|
||||
a.js-custom-fields
|
||||
i.fa.fa-list-alt
|
||||
@@ -465,14 +477,14 @@ template(name="cardAssigneesPopup")
|
||||
i.fa.fa-check
|
||||
if currentUser.isWorker
|
||||
ul.pop-over-list.js-card-assignee-list
|
||||
li.item(class="{{#if currentUser.isCardAssignee}}active{{/if}}")
|
||||
a.name.js-select-assignee(href="#")
|
||||
+userAvatar(userId=currentUser._id)
|
||||
span.full-name
|
||||
= currentUser.profile.fullname
|
||||
| (<span class="username">{{ currentUser.username }}</span>)
|
||||
if currentUser.isCardAssignee
|
||||
i.fa.fa-check
|
||||
li.item(class="{{#if currentUser.isCardAssignee}}active{{/if}}")
|
||||
a.name.js-select-assignee(href="#")
|
||||
+userAvatar(userId=currentUser._id)
|
||||
span.full-name
|
||||
= currentUser.profile.fullname
|
||||
| (<span class="username">{{ currentUser.username }}</span>)
|
||||
if currentUser.isCardAssignee
|
||||
i.fa.fa-check
|
||||
|
||||
template(name="userAvatarAssignee")
|
||||
a.assignee.js-assignee(title="{{userData.profile.fullname}} ({{userData.username}})")
|
||||
@@ -519,7 +531,7 @@ template(name="cardMorePopup")
|
||||
= ' '
|
||||
i.fa.colorful(class="{{#if board.isPublic}}fa-globe{{else}}fa-lock{{/if}}")
|
||||
input.inline-input(type="text" id="cardURL" readonly value="{{ absoluteUrl }}" autofocus="autofocus")
|
||||
button.js-copy-card-link-to-clipboard(class="btn") {{_ 'copy-card-link-to-clipboard'}}
|
||||
button.js-copy-card-link-to-clipboard(class="btn" id="clipboard") {{_ 'copy-card-link-to-clipboard'}}
|
||||
span.clearfix
|
||||
br
|
||||
h2 {{_ 'change-card-parent'}}
|
||||
@@ -564,20 +576,39 @@ template(name="setCardColorPopup")
|
||||
template(name="cardDeletePopup")
|
||||
p {{_ "card-delete-pop"}}
|
||||
unless archived
|
||||
p {{_ "card-delete-suggest-archive"}}
|
||||
p {{_ "card-delete-suggest-archive"}}
|
||||
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
|
||||
|
||||
template(name="deleteVotePopup")
|
||||
p {{_ "vote-delete-pop"}}
|
||||
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
|
||||
|
||||
template(name="cardStartVotingPopup")
|
||||
form.edit-vote-question
|
||||
.fields
|
||||
label(for="vote") {{_ 'vote-question'}}
|
||||
input.js-vote-field#vote(type="text" name="vote" value="{{card.getVoteQuestion}}" autofocus)
|
||||
label(for="vote-public") {{_ 'vote-public'}}
|
||||
a.js-toggle-vote-public
|
||||
.materialCheckBox#vote-public(name="vote-public")
|
||||
input.js-vote-field#vote(type="text" name="vote" value="{{getVoteQuestion}}" autofocus disabled="{{#if getVoteQuestion}}disabled{{/if}}")
|
||||
.check-div
|
||||
a.flex(class="{{#if getVoteQuestion}}is-disabled{{else}}js-toggle-vote-allow-non-members{{/if}}")
|
||||
.materialCheckBox#vote-allow-non-members(name="vote-allow-non-members" class="{{#if voteAllowNonBoardMembers}}is-checked{{/if}}")
|
||||
span {{_ 'allowNonBoardMembers'}}
|
||||
.check-div
|
||||
a.flex(class="{{#if getVoteQuestion}}is-disabled{{else}}js-toggle-vote-public{{/if}}")
|
||||
.materialCheckBox#vote-public(name="vote-public" class="{{#if votePublic}}is-checked{{/if}}")
|
||||
span {{_ 'vote-public'}}
|
||||
.check-div.flex
|
||||
i.fa.fa-hourglass-end
|
||||
a.js-end-date
|
||||
span
|
||||
| {{_ 'card-end'}}
|
||||
unless getVoteEnd
|
||||
i.fa.fa-plus
|
||||
if getVoteEnd
|
||||
+voteEndDate
|
||||
|
||||
button.primary.confirm.js-submit {{_ 'save'}}
|
||||
//- button.js-remove-color.negate.wide.right {{_ 'delete'}}
|
||||
button.primary.js-submit {{_ 'save'}}
|
||||
if getVoteQuestion
|
||||
button.js-remove-vote.negate.wide.right {{_ 'delete'}}
|
||||
|
||||
template(name="positiveVoteMembersPopup")
|
||||
ul.pop-over-list.js-card-member-list
|
||||
|
||||
@@ -8,7 +8,7 @@ Meteor.startup(() => {
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
mixins() {
|
||||
return [Mixins.InfiniteScrolling, Mixins.PerfectScrollbar];
|
||||
return [Mixins.InfiniteScrolling];
|
||||
},
|
||||
|
||||
calculateNextPeak() {
|
||||
@@ -38,37 +38,6 @@ BlazeComponent.extendComponent({
|
||||
Meteor.subscribe('unsaved-edits');
|
||||
},
|
||||
|
||||
voteState() {
|
||||
const card = this.currentData();
|
||||
const userId = Meteor.userId();
|
||||
let state;
|
||||
if (card.vote) {
|
||||
if (card.vote.positive) {
|
||||
state = _.contains(card.vote.positive, userId);
|
||||
if (state === true) return true;
|
||||
}
|
||||
if (card.vote.negative) {
|
||||
state = _.contains(card.vote.negative, userId);
|
||||
if (state === true) return false;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
},
|
||||
votePublic() {
|
||||
const card = this.currentData();
|
||||
if (card.vote) return card.vote.public;
|
||||
return null;
|
||||
},
|
||||
voteCountPositive() {
|
||||
const card = this.currentData();
|
||||
if (card.vote && card.vote.positive) return card.vote.positive.length;
|
||||
return null;
|
||||
},
|
||||
voteCountNegative() {
|
||||
const card = this.currentData();
|
||||
if (card.vote && card.vote.negative) return card.vote.negative.length;
|
||||
return null;
|
||||
},
|
||||
isWatching() {
|
||||
const card = this.currentData();
|
||||
return card.findWatcher(Meteor.userId());
|
||||
@@ -88,12 +57,19 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
|
||||
scrollParentContainer() {
|
||||
const cardPanelWidth = 510;
|
||||
const bodyBoardComponent = this.parentComponent().parentComponent();
|
||||
const cardPanelWidth = 600;
|
||||
const parentComponent = this.parentComponent();
|
||||
// TODO sometimes parentComponent is not available, maybe because it's not
|
||||
// yet created?!
|
||||
if (!parentComponent) return;
|
||||
const bodyBoardComponent = parentComponent.parentComponent();
|
||||
//On Mobile View Parent is Board, Not Board Body. I cant see how this funciton should work then.
|
||||
if (bodyBoardComponent === null) return;
|
||||
const $cardView = this.$(this.firstNode());
|
||||
const $cardContainer = bodyBoardComponent.$('.js-swimlanes');
|
||||
// TODO sometimes cardContainer is not available, maybe because it's not yet
|
||||
// created?!
|
||||
if (!$cardContainer) return;
|
||||
const cardContainerScroll = $cardContainer.scrollLeft();
|
||||
const cardContainerWidth = $cardContainer.width();
|
||||
|
||||
@@ -148,6 +124,15 @@ BlazeComponent.extendComponent({
|
||||
return result;
|
||||
},
|
||||
|
||||
showVotingButtons() {
|
||||
const card = this.currentData();
|
||||
return (
|
||||
(currentUser.isBoardMember() ||
|
||||
(currentUser && card.voteAllowNonBoardMembers())) &&
|
||||
!card.expiredVote()
|
||||
);
|
||||
},
|
||||
|
||||
onRendered() {
|
||||
if (Meteor.settings.public.CARD_OPENED_WEBHOOK_ENABLED) {
|
||||
// Send Webhook but not create Activities records ---
|
||||
@@ -186,13 +171,6 @@ BlazeComponent.extendComponent({
|
||||
|
||||
if (!Utils.isMiniScreen()) {
|
||||
Meteor.setTimeout(() => {
|
||||
$('.card-details').mCustomScrollbar({
|
||||
theme: 'minimal-dark',
|
||||
setWidth: false,
|
||||
setLeft: 0,
|
||||
scrollbarPosition: 'outside',
|
||||
mouseWheel: true,
|
||||
});
|
||||
this.scrollParentContainer();
|
||||
}, 500);
|
||||
}
|
||||
@@ -273,7 +251,10 @@ BlazeComponent.extendComponent({
|
||||
// Disable sorting if the current user is not a board member
|
||||
this.autorun(() => {
|
||||
const disabled = !userIsMember() || Utils.isMiniScreen();
|
||||
if ($checklistsDom.data('uiSortable') || $checklistsDom.data('sortable')) {
|
||||
if (
|
||||
$checklistsDom.data('uiSortable') ||
|
||||
$checklistsDom.data('sortable')
|
||||
) {
|
||||
$checklistsDom.sortable('option', 'disabled', disabled);
|
||||
}
|
||||
if ($subtasksDom.data('uiSortable') || $subtasksDom.data('sortable')) {
|
||||
@@ -408,9 +389,9 @@ BlazeComponent.extendComponent({
|
||||
const forIt = $(e.target).hasClass('js-vote-positive');
|
||||
let newState = null;
|
||||
if (
|
||||
this.voteState() === null ||
|
||||
(this.voteState() === false && forIt) ||
|
||||
(this.voteState() === true && !forIt)
|
||||
this.data().voteState() === null ||
|
||||
(this.data().voteState() === false && forIt) ||
|
||||
(this.data().voteState() === true && !forIt)
|
||||
) {
|
||||
newState = forIt;
|
||||
}
|
||||
@@ -608,11 +589,6 @@ Template.cardDetailsActionsPopup.events({
|
||||
'click .js-copy-card': Popup.open('copyCard'),
|
||||
'click .js-copy-checklist-cards': Popup.open('copyChecklistToManyCards'),
|
||||
'click .js-set-card-color': Popup.open('setCardColor'),
|
||||
'click .js-cancel-voting'(event) {
|
||||
event.preventDefault();
|
||||
this.unsetVote();
|
||||
Popup.close();
|
||||
},
|
||||
'click .js-move-card-to-top'(event) {
|
||||
event.preventDefault();
|
||||
const minOrder = _.min(
|
||||
@@ -964,7 +940,23 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
'click .js-delete': Popup.afterConfirm('cardDelete', function() {
|
||||
Popup.close();
|
||||
Cards.remove(this._id);
|
||||
// verify that there are no linked cards
|
||||
if (Cards.find({ linkedId: this._id }).count() === 0) {
|
||||
Cards.remove(this._id);
|
||||
} else {
|
||||
// TODO: Maybe later we can list where the linked cards are.
|
||||
// Now here is popup with a hint that the card cannot be deleted
|
||||
// as there are linked cards.
|
||||
// Related:
|
||||
// client/components/lists/listHeader.js about line 248
|
||||
// https://github.com/wekan/wekan/issues/2785
|
||||
const message = `${TAPi18n.__(
|
||||
'delete-linked-card-before-this-card',
|
||||
)} linkedId: ${
|
||||
this._id
|
||||
} at client/components/cards/cardDetails.js and https://github.com/wekan/wekan/issues/2785`;
|
||||
alert(message);
|
||||
}
|
||||
Utils.goBoardId(this.boardId);
|
||||
}),
|
||||
'change .js-field-parent-board'(event) {
|
||||
@@ -997,22 +989,93 @@ BlazeComponent.extendComponent({
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'click .js-end-date': Popup.open('editVoteEndDate'),
|
||||
'submit .edit-vote-question'(evt) {
|
||||
evt.preventDefault();
|
||||
const voteQuestion = evt.target.vote.value;
|
||||
const publicVote = $('#vote-public').hasClass('is-checked');
|
||||
this.currentCard.setVoteQuestion(voteQuestion, publicVote);
|
||||
const allowNonBoardMembers = $('#vote-allow-non-members').hasClass(
|
||||
'is-checked',
|
||||
);
|
||||
const endString = this.currentCard.getVoteEnd();
|
||||
|
||||
this.currentCard.setVoteQuestion(
|
||||
voteQuestion,
|
||||
publicVote,
|
||||
allowNonBoardMembers,
|
||||
);
|
||||
if (endString) {
|
||||
this.currentCard.setVoteEnd(endString);
|
||||
}
|
||||
Popup.close();
|
||||
},
|
||||
'click .js-remove-vote': Popup.afterConfirm('deleteVote', () => {
|
||||
event.preventDefault();
|
||||
this.currentCard.unsetVote();
|
||||
Popup.close();
|
||||
}),
|
||||
'click a.js-toggle-vote-public'(event) {
|
||||
event.preventDefault();
|
||||
$('#vote-public').toggleClass('is-checked');
|
||||
},
|
||||
'click a.js-toggle-vote-allow-non-members'(event) {
|
||||
event.preventDefault();
|
||||
$('#vote-allow-non-members').toggleClass('is-checked');
|
||||
},
|
||||
},
|
||||
];
|
||||
},
|
||||
}).register('cardStartVotingPopup');
|
||||
|
||||
// editVoteEndDatePopup
|
||||
(class extends DatePicker {
|
||||
onCreated() {
|
||||
super.onCreated(moment().format('YYYY-MM-DD HH:mm'));
|
||||
this.data().getVoteEnd() && this.date.set(moment(this.data().getVoteEnd()));
|
||||
}
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
'submit .edit-date'(evt) {
|
||||
evt.preventDefault();
|
||||
|
||||
// if no time was given, init with 12:00
|
||||
const time =
|
||||
evt.target.time.value ||
|
||||
moment(new Date().setHours(12, 0, 0)).format('LT');
|
||||
|
||||
const dateString = `${evt.target.date.value} ${time}`;
|
||||
const newDate = moment(dateString, 'L LT', true);
|
||||
if (newDate.isValid()) {
|
||||
// if active vote - store it
|
||||
if (this.currentData().getVoteQuestion()) {
|
||||
this._storeDate(newDate.toDate());
|
||||
Popup.close();
|
||||
} else {
|
||||
this.currentData().vote = { end: newDate.toDate() }; // set vote end temp
|
||||
Popup.back();
|
||||
}
|
||||
} else {
|
||||
this.error.set('invalid-date');
|
||||
evt.target.date.focus();
|
||||
}
|
||||
},
|
||||
'click .js-delete-date'(evt) {
|
||||
evt.preventDefault();
|
||||
this._deleteDate();
|
||||
Popup.close();
|
||||
},
|
||||
},
|
||||
];
|
||||
}
|
||||
_storeDate(newDate) {
|
||||
this.card.setVoteEnd(newDate);
|
||||
}
|
||||
_deleteDate() {
|
||||
this.card.unsetVoteEnd();
|
||||
}
|
||||
}.register('editVoteEndDatePopup'));
|
||||
|
||||
// Close the card details pane by pressing escape
|
||||
EscapeActions.register(
|
||||
'detailsPane',
|
||||
|
||||
@@ -10,6 +10,9 @@ avatar-radius = 50%
|
||||
left: -2000px
|
||||
top: 0px
|
||||
|
||||
#clipboard
|
||||
white-space: normal
|
||||
|
||||
.assignee
|
||||
border-radius: 3px
|
||||
display: block
|
||||
@@ -37,6 +40,8 @@ avatar-radius = 50%
|
||||
position: absolute
|
||||
|
||||
&.avatar-image
|
||||
object-fit: cover;
|
||||
object-position: center;
|
||||
height: 100%
|
||||
width: @height
|
||||
|
||||
@@ -84,7 +89,7 @@ avatar-radius = 50%
|
||||
.card-details
|
||||
padding: 0
|
||||
flex-shrink: 0
|
||||
flex-basis: 510px
|
||||
flex-basis: 600px
|
||||
will-change: flex-basis
|
||||
overflow-y: scroll
|
||||
overflow-x: hidden
|
||||
@@ -99,17 +104,13 @@ avatar-radius = 50%
|
||||
.mCustomScrollBox
|
||||
padding-left: 0
|
||||
|
||||
.ps-scrollbar-y-rail
|
||||
pointer-event: all
|
||||
position: absolute
|
||||
|
||||
.card-details-canvas
|
||||
width: 470px
|
||||
padding-left: 20px
|
||||
width: auto
|
||||
padding: 0 20px
|
||||
|
||||
.card-details-header
|
||||
margin: 0 -20px 5px
|
||||
padding 7px 16px
|
||||
padding 7px 20px
|
||||
background: darken(white, 7%)
|
||||
border-bottom: 1px solid darken(white, 14%)
|
||||
|
||||
@@ -197,23 +198,32 @@ avatar-radius = 50%
|
||||
margin-right: 0.5em
|
||||
&:last-child
|
||||
margin-right: 0
|
||||
&.card-details-item-labels,
|
||||
&.card-details-item-labels
|
||||
display: block
|
||||
word-wrap: break-word
|
||||
max-width: 95%
|
||||
flex-grow: 1
|
||||
&.card-details-item-members,
|
||||
&.card-details-item-assignees,
|
||||
&.card-details-item-received,
|
||||
&.card-details-item-start,
|
||||
&.card-details-item-due,
|
||||
&.card-details-item-end,
|
||||
&.card-details-item-customfield,
|
||||
&.card-details-item-name
|
||||
display: block
|
||||
word-wrap: break-word
|
||||
max-width: 48%
|
||||
max-width: 36%
|
||||
flex-grow: 1
|
||||
&.card-details-item-received,
|
||||
&.card-details-item-start,
|
||||
&.card-details-item-due,
|
||||
&.card-details-item-end
|
||||
display: block
|
||||
word-wrap: break-word
|
||||
max-width: 28%
|
||||
flex-grow: 1
|
||||
|
||||
.card-details-item-title
|
||||
font-size: 16px
|
||||
color: #000
|
||||
font-weight: bold
|
||||
color: #4d4d4d
|
||||
|
||||
.card-label
|
||||
padding-top: 5px
|
||||
@@ -337,6 +347,11 @@ card-details-color(background, color...)
|
||||
.vote-title
|
||||
display: flex
|
||||
justify-content: space-between
|
||||
|
||||
.js-edit-date
|
||||
align-self: baseline
|
||||
margin-left: 5px
|
||||
|
||||
.vote-result
|
||||
display: flex
|
||||
.js-show-positive-votes
|
||||
|
||||
@@ -1,7 +1,17 @@
|
||||
template(name="checklists")
|
||||
h3
|
||||
i.fa.fa-check
|
||||
| {{_ 'checklists'}}
|
||||
.checklists-title
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-check
|
||||
| {{_ 'checklists'}}
|
||||
if currentUser.isBoardMember
|
||||
.material-toggle-switch
|
||||
span.toggle-switch-title {{_ 'hide-checked-items'}}
|
||||
if hideCheckedItems
|
||||
input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton" checked="checked")
|
||||
else
|
||||
input.toggle-switch(type="checkbox" id="toggleHideCheckedItemsButton")
|
||||
label.toggle-label(for="toggleHideCheckedItemsButton")
|
||||
|
||||
if toggleDeleteDialog.get
|
||||
.board-overlay#card-details-overlay
|
||||
+checklistDeleteDialog(checklist = checklistToDelete)
|
||||
@@ -86,7 +96,7 @@ template(name="checklistItems")
|
||||
| {{_ 'add-checklist-item'}}...
|
||||
|
||||
template(name='checklistItemDetail')
|
||||
.js-checklist-item.checklist-item
|
||||
.js-checklist-item.checklist-item(class="{{#if item.isFinished }}is-checked{{#if hideCheckedItems}} invisible{{/if}}{{/if}}")
|
||||
if canModifyCard
|
||||
.check-box-container
|
||||
.check-box.materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}")
|
||||
|
||||
@@ -193,6 +193,9 @@ BlazeComponent.extendComponent({
|
||||
}
|
||||
this.toggleDeleteDialog.set(!this.toggleDeleteDialog.get());
|
||||
},
|
||||
'click #toggleHideCheckedItemsButton'() {
|
||||
Meteor.call('toggleHideCheckedItems');
|
||||
},
|
||||
};
|
||||
|
||||
return [
|
||||
@@ -211,6 +214,14 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
}).register('checklists');
|
||||
|
||||
Template.checklists.helpers({
|
||||
hideCheckedItems() {
|
||||
const currentUser = Meteor.user();
|
||||
if (currentUser) return currentUser.hasHideCheckedItems();
|
||||
return false;
|
||||
},
|
||||
});
|
||||
|
||||
Template.checklistDeleteDialog.onCreated(() => {
|
||||
const $cardDetails = this.$('.card-details');
|
||||
this.scrollState = {
|
||||
@@ -246,6 +257,11 @@ Template.checklistItemDetail.helpers({
|
||||
!Meteor.user().isWorker()
|
||||
);
|
||||
},
|
||||
hideCheckedItems() {
|
||||
const user = Meteor.user();
|
||||
if (user) return user.hasHideCheckedItems();
|
||||
return false;
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
|
||||
@@ -16,6 +16,10 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item
|
||||
&:hover
|
||||
color: inherit
|
||||
|
||||
.checklists-title
|
||||
display: flex
|
||||
justify-content: space-between
|
||||
|
||||
.checklist-title
|
||||
.checkbox
|
||||
float: left
|
||||
@@ -99,6 +103,17 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item
|
||||
margin-top: 3px
|
||||
display: flex
|
||||
background: darken(white, 3%)
|
||||
opacity: 1
|
||||
transition: height 0ms 400ms, opacity 400ms 0ms
|
||||
height: auto
|
||||
overflow: hidden
|
||||
|
||||
&.is-checked.invisible
|
||||
opacity: 0
|
||||
height: 0
|
||||
transition: height 0ms 0ms, opacity 600ms 0ms
|
||||
margin-top: 0
|
||||
margin-bottom: 0
|
||||
|
||||
&.placeholder
|
||||
background: darken(white, 20%)
|
||||
@@ -128,6 +143,7 @@ textarea.js-add-checklist-item, textarea.js-edit-checklist-item
|
||||
&.is-checked
|
||||
color: #8c8c8c
|
||||
font-style: italic
|
||||
text-decoration: line-through
|
||||
& .viewer
|
||||
p
|
||||
margin-bottom: 2px
|
||||
|
||||
@@ -74,8 +74,12 @@ template(name="minicard")
|
||||
+viewer
|
||||
= definition.name
|
||||
.minicard-custom-field-item
|
||||
+viewer
|
||||
= trueValue
|
||||
if $eq definition.type "currency"
|
||||
+viewer
|
||||
= formattedCurrencyCustomFieldValue(definition)
|
||||
else
|
||||
+viewer
|
||||
= trueValue
|
||||
|
||||
if getAssignees
|
||||
.minicard-assignees.js-minicard-assignees
|
||||
@@ -102,8 +106,10 @@ template(name="minicard")
|
||||
span.badge-icon.fa.fa-align-left
|
||||
if getVoteQuestion
|
||||
.badge.badge-state-image-only(title=getVoteQuestion)
|
||||
span.badge-icon.fa.fa-thumbs-up
|
||||
span.badge-icon.fa.fa-thumbs-down
|
||||
span.badge-icon.fa.fa-thumbs-up(class="{{#if voteState}}text-green{{/if}}")
|
||||
span.badge-text {{ voteCountPositive }}
|
||||
span.badge-icon.fa.fa-thumbs-down(class="{{#if $eq voteState false}}text-red{{/if}}")
|
||||
span.badge-text {{ voteCountNegative }}
|
||||
if attachments.count
|
||||
.badge
|
||||
span.badge-icon.fa.fa-paperclip
|
||||
|
||||
@@ -9,6 +9,20 @@ BlazeComponent.extendComponent({
|
||||
return 'minicard';
|
||||
},
|
||||
|
||||
formattedCurrencyCustomFieldValue(definition) {
|
||||
const customField = this.data()
|
||||
.customFieldsWD()
|
||||
.find(f => f._id === definition._id);
|
||||
const customFieldTrueValue =
|
||||
customField && customField.trueValue ? customField.trueValue : '';
|
||||
|
||||
const locale = TAPi18n.getLanguage();
|
||||
return new Intl.NumberFormat(locale, {
|
||||
style: 'currency',
|
||||
currency: definition.settings.currencyCode,
|
||||
}).format(customFieldTrueValue);
|
||||
},
|
||||
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
|
||||
@@ -87,7 +87,9 @@
|
||||
width: 11px
|
||||
height: @width
|
||||
border-radius: 2px
|
||||
margin-left: 3px
|
||||
margin-right: 3px
|
||||
margin-bottom: 3px
|
||||
|
||||
.minicard-custom-fields
|
||||
display:block;
|
||||
.minicard-custom-field
|
||||
@@ -299,3 +301,8 @@ minicard-color(background, color...)
|
||||
|
||||
.minicard-indigo
|
||||
minicard-color(#4b0082, #ffffff) //White text for better visibility
|
||||
|
||||
.text-red
|
||||
color:red
|
||||
.text-green
|
||||
color:green
|
||||
@@ -1,5 +1,5 @@
|
||||
template(name="subtasks")
|
||||
h3
|
||||
h3.card-details-item-title
|
||||
i.fa.fa-sitemap
|
||||
| {{_ 'subtasks'}}
|
||||
if toggleDeleteDialog.get
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
export function getMembersToMap(data) {
|
||||
// we will work on the list itself (an ordered array of objects) when a
|
||||
// mapping is done, we add a 'wekan' field to the object representing the
|
||||
// imported member
|
||||
|
||||
const membersToMap = [];
|
||||
const importedMembers = [];
|
||||
let membersIndex;
|
||||
|
||||
for (let i = 0; i < data[0].length; i++) {
|
||||
if (data[0][i].toLowerCase() === 'members') {
|
||||
membersIndex = i;
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 1; i < data.length; i++) {
|
||||
if (data[i][membersIndex]) {
|
||||
for (const importedMember of data[i][membersIndex].split(' ')) {
|
||||
if (importedMember && importedMembers.indexOf(importedMember) === -1) {
|
||||
importedMembers.push(importedMember);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (let importedMember of importedMembers) {
|
||||
importedMember = {
|
||||
username: importedMember,
|
||||
id: importedMember,
|
||||
};
|
||||
const wekanUser = Users.findOne({ username: importedMember.username });
|
||||
if (wekanUser) importedMember.wekanId = wekanUser._id;
|
||||
membersToMap.push(importedMember);
|
||||
}
|
||||
|
||||
return membersToMap;
|
||||
}
|
||||
@@ -13,7 +13,7 @@ template(name="import")
|
||||
template(name="importTextarea")
|
||||
form
|
||||
p: label(for='import-textarea') {{_ instruction}} {{_ 'import-board-instruction-about-errors'}}
|
||||
textarea.js-import-json(placeholder="{{_ 'import-json-placeholder'}}" autofocus)
|
||||
textarea.js-import-json(placeholder="{{_ importPlaceHolder}}" autofocus)
|
||||
| {{jsonText}}
|
||||
input.primary.wide(type="submit" value="{{_ 'import'}}")
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
import trelloMembersMapper from './trelloMembersMapper';
|
||||
import wekanMembersMapper from './wekanMembersMapper';
|
||||
import csvMembersMapper from './csvMembersMapper';
|
||||
|
||||
const Papa = require('papaparse');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
title() {
|
||||
@@ -30,20 +33,30 @@ BlazeComponent.extendComponent({
|
||||
}
|
||||
},
|
||||
|
||||
importData(evt) {
|
||||
importData(evt, dataSource) {
|
||||
evt.preventDefault();
|
||||
const dataJson = this.find('.js-import-json').value;
|
||||
try {
|
||||
const dataObject = JSON.parse(dataJson);
|
||||
this.setError('');
|
||||
this.importedData.set(dataObject);
|
||||
const membersToMap = this._prepareAdditionalData(dataObject);
|
||||
// store members data and mapping in Session
|
||||
// (we go deep and 2-way, so storing in data context is not a viable option)
|
||||
const input = this.find('.js-import-json').value;
|
||||
if (dataSource === 'csv') {
|
||||
const csv = input.indexOf('\t') > 0 ? input.replace(/(\t)/g, ',') : input;
|
||||
const ret = Papa.parse(csv);
|
||||
if (ret && ret.data && ret.data.length) this.importedData.set(ret.data);
|
||||
else throw new Meteor.Error('error-csv-schema');
|
||||
const membersToMap = this._prepareAdditionalData(ret.data);
|
||||
this.membersToMap.set(membersToMap);
|
||||
this.nextStep();
|
||||
} catch (e) {
|
||||
this.setError('error-json-malformed');
|
||||
} else {
|
||||
try {
|
||||
const dataObject = JSON.parse(input);
|
||||
this.setError('');
|
||||
this.importedData.set(dataObject);
|
||||
const membersToMap = this._prepareAdditionalData(dataObject);
|
||||
// store members data and mapping in Session
|
||||
// (we go deep and 2-way, so storing in data context is not a viable option)
|
||||
this.membersToMap.set(membersToMap);
|
||||
this.nextStep();
|
||||
} catch (e) {
|
||||
this.setError('error-json-malformed');
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -91,6 +104,9 @@ BlazeComponent.extendComponent({
|
||||
case 'wekan':
|
||||
membersToMap = wekanMembersMapper.getMembersToMap(dataObject);
|
||||
break;
|
||||
case 'csv':
|
||||
membersToMap = csvMembersMapper.getMembersToMap(dataObject);
|
||||
break;
|
||||
}
|
||||
return membersToMap;
|
||||
},
|
||||
@@ -109,11 +125,23 @@ BlazeComponent.extendComponent({
|
||||
return `import-board-instruction-${Session.get('importSource')}`;
|
||||
},
|
||||
|
||||
importPlaceHolder() {
|
||||
const importSource = Session.get('importSource');
|
||||
if (importSource === 'csv') {
|
||||
return 'import-csv-placeholder';
|
||||
} else {
|
||||
return 'import-json-placeholder';
|
||||
}
|
||||
},
|
||||
|
||||
events() {
|
||||
return [
|
||||
{
|
||||
submit(evt) {
|
||||
return this.parentComponent().importData(evt);
|
||||
return this.parentComponent().importData(
|
||||
evt,
|
||||
Session.get('importSource'),
|
||||
);
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
@@ -74,18 +74,16 @@ BlazeComponent.extendComponent({
|
||||
const sortIndex = calculateIndex(prevCardDom, nextCardDom, nCards);
|
||||
const listId = Blaze.getData(ui.item.parents('.list').get(0))._id;
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
let swimlaneId = '';
|
||||
const defaultSwimlaneId = currentBoard.getDefaultSwimline()._id;
|
||||
let targetSwimlaneId = null;
|
||||
|
||||
// only set a new swimelane ID if the swimlanes view is active
|
||||
if (
|
||||
Utils.boardView() === 'board-view-swimlanes' ||
|
||||
currentBoard.isTemplatesBoard()
|
||||
)
|
||||
swimlaneId = Blaze.getData(ui.item.parents('.swimlane').get(0))._id;
|
||||
else if (
|
||||
Utils.boardView() === 'board-view-lists' ||
|
||||
Utils.boardView() === 'board-view-cal' ||
|
||||
!Utils.boardView
|
||||
)
|
||||
swimlaneId = currentBoard.getDefaultSwimline()._id;
|
||||
targetSwimlaneId = Blaze.getData(ui.item.parents('.swimlane').get(0))
|
||||
._id;
|
||||
|
||||
// Normally the jquery-ui sortable library moves the dragged DOM element
|
||||
// to its new position, which disrupts Blaze reactive updates mechanism
|
||||
@@ -98,9 +96,12 @@ BlazeComponent.extendComponent({
|
||||
|
||||
if (MultiSelection.isActive()) {
|
||||
Cards.find(MultiSelection.getMongoSelector()).forEach((card, i) => {
|
||||
const newSwimlaneId = targetSwimlaneId
|
||||
? targetSwimlaneId
|
||||
: card.swimlaneId || defaultSwimlaneId;
|
||||
card.move(
|
||||
currentBoard._id,
|
||||
swimlaneId,
|
||||
newSwimlaneId,
|
||||
listId,
|
||||
sortIndex.base + i * sortIndex.increment,
|
||||
);
|
||||
@@ -108,7 +109,10 @@ BlazeComponent.extendComponent({
|
||||
} else {
|
||||
const cardDomElement = ui.item.get(0);
|
||||
const card = Blaze.getData(cardDomElement);
|
||||
card.move(currentBoard._id, swimlaneId, listId, sortIndex.base);
|
||||
const newSwimlaneId = targetSwimlaneId
|
||||
? targetSwimlaneId
|
||||
: card.swimlaneId || defaultSwimlaneId;
|
||||
card.move(currentBoard._id, newSwimlaneId, listId, sortIndex.base);
|
||||
}
|
||||
boardComponent.setIsDragging(false);
|
||||
},
|
||||
|
||||
@@ -43,9 +43,6 @@
|
||||
background: white
|
||||
margin: -3px 0 8px
|
||||
|
||||
.list-header-card-count
|
||||
height: 35px
|
||||
|
||||
.list-header-add
|
||||
flex: 0 0 auto
|
||||
padding: 20px 12px 4px
|
||||
@@ -60,6 +57,9 @@
|
||||
background-color: #e4e4e4;
|
||||
border-bottom: 6px solid #e4e4e4;
|
||||
|
||||
&.list-header-card-count
|
||||
min-height: 35px
|
||||
height: auto
|
||||
|
||||
&.ui-sortable-handle
|
||||
cursor: grab
|
||||
@@ -120,9 +120,6 @@
|
||||
form
|
||||
margin-bottom: 9px
|
||||
|
||||
.ps-scrollbar-y-rail
|
||||
transform: translateX(2px)
|
||||
|
||||
.open-minicard-composer
|
||||
border-radius: 2px
|
||||
color: #8c8c8c
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
template(name="listBody")
|
||||
.list-body.js-perfect-scrollbar
|
||||
.list-body
|
||||
.minicards.clearfix.js-minicards(class="{{#if reachedWipLimit}}js-list-full{{/if}}")
|
||||
if cards.count
|
||||
+inlinedForm(autoclose=false position="top")
|
||||
@@ -105,8 +105,10 @@ template(name="searchElementPopup")
|
||||
each boards
|
||||
option(value="{{_id}}") {{title}}
|
||||
form.js-search-term-form
|
||||
label
|
||||
| {{_ 'template'}}
|
||||
input(type="text" name="searchTerm" placeholder="{{_ 'search-example'}}" autofocus dir="auto")
|
||||
.list-body.js-perfect-scrollbar.search-card-results
|
||||
.list-body.search-card-results
|
||||
.minicards.clearfix.js-minicards
|
||||
if isBoardTemplateSearch
|
||||
each results
|
||||
|
||||
@@ -8,7 +8,7 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
|
||||
mixins() {
|
||||
return [Mixins.PerfectScrollbar];
|
||||
return [];
|
||||
},
|
||||
|
||||
openForm(options) {
|
||||
@@ -77,7 +77,7 @@ BlazeComponent.extendComponent({
|
||||
else if (
|
||||
Utils.boardView() === 'board-view-lists' ||
|
||||
Utils.boardView() === 'board-view-cal' ||
|
||||
!Utils.boardView
|
||||
!Utils.boardView()
|
||||
)
|
||||
swimlaneId = board.getDefaultSwimline()._id;
|
||||
|
||||
@@ -523,7 +523,7 @@ BlazeComponent.extendComponent({
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
mixins() {
|
||||
return [Mixins.PerfectScrollbar];
|
||||
return [];
|
||||
},
|
||||
|
||||
onCreated() {
|
||||
@@ -658,10 +658,7 @@ BlazeComponent.extendComponent({
|
||||
_id = element.copy(this.boardId, this.swimlaneId, this.listId);
|
||||
// 1.B Linked card
|
||||
} else {
|
||||
delete element._id;
|
||||
element.type = 'cardType-linkedCard';
|
||||
element.linkedId = element.linkedId || element._id;
|
||||
_id = Cards.insert(element);
|
||||
_id = element.link(this.boardId, this.swimlaneId, this.listId);
|
||||
}
|
||||
Filter.addException(_id);
|
||||
// List insertion
|
||||
@@ -675,7 +672,7 @@ BlazeComponent.extendComponent({
|
||||
element.sort = Boards.findOne(this.boardId)
|
||||
.swimlanes()
|
||||
.count();
|
||||
element.type = 'swimlalne';
|
||||
element.type = 'swimlane';
|
||||
_id = element.copy(this.boardId);
|
||||
} else if (this.isBoardTemplateSearch) {
|
||||
board = Boards.findOne(element.linkedId);
|
||||
@@ -724,7 +721,7 @@ BlazeComponent.extendComponent({
|
||||
|
||||
onRendered() {
|
||||
this.spinner = this.find('.sk-spinner-list');
|
||||
this.container = this.$(this.spinner).parents('.js-perfect-scrollbar')[0];
|
||||
this.container = this.$(this.spinner).parents('.list-body')[0];
|
||||
|
||||
$(this.container).on(
|
||||
`scroll.spinner_${this.swimlaneId}_${this.listId}`,
|
||||
|
||||
@@ -223,8 +223,35 @@ BlazeComponent.extendComponent({
|
||||
Template.listMorePopup.events({
|
||||
'click .js-delete': Popup.afterConfirm('listDelete', function() {
|
||||
Popup.close();
|
||||
this.allCards().map(card => Cards.remove(card._id));
|
||||
Lists.remove(this._id);
|
||||
// TODO how can we avoid the fetch call?
|
||||
const allCards = this.allCards().fetch();
|
||||
const allCardIds = _.pluck(allCards, '_id');
|
||||
// it's okay if the linked cards are on the same list
|
||||
if (
|
||||
Cards.find({
|
||||
$and: [
|
||||
{ listId: { $ne: this._id } },
|
||||
{ linkedId: { $in: allCardIds } },
|
||||
],
|
||||
}).count() === 0
|
||||
) {
|
||||
allCardIds.map(_id => Cards.remove(_id));
|
||||
Lists.remove(this._id);
|
||||
} else {
|
||||
// TODO: Figure out more informative message.
|
||||
// Popup with a hint that the list cannot be deleted as there are
|
||||
// linked cards. We can adapt the query above so we can list the linked
|
||||
// cards.
|
||||
// Related:
|
||||
// client/components/cards/cardDetails.js about line 969
|
||||
// https://github.com/wekan/wekan/issues/2785
|
||||
const message = `${TAPi18n.__(
|
||||
'delete-linked-cards-before-this-list',
|
||||
)} linkedId: ${
|
||||
this._id
|
||||
} at client/components/lists/listHeader.js and https://github.com/wekan/wekan/issues/2785`;
|
||||
alert(message);
|
||||
}
|
||||
Utils.goBoardId(this.boardId);
|
||||
}),
|
||||
});
|
||||
|
||||
@@ -330,7 +330,7 @@ Template.viewer.events({
|
||||
// the corresponding text). Clicking a link shouldn't fire these actions, stop
|
||||
// we stop these event at the viewer component level.
|
||||
'click a'(event, templateInstance) {
|
||||
let prevent = true;
|
||||
const prevent = true;
|
||||
const userId = event.currentTarget.dataset.userid;
|
||||
if (userId) {
|
||||
Popup.open('member').call({ userId }, event, templateInstance);
|
||||
|
||||
@@ -15,3 +15,27 @@
|
||||
local('Roboto-Bold'),
|
||||
url('/fonts/roboto-bold.woff2') format('woff2'),
|
||||
url('/fonts/roboto-bold.woff') format('woff')
|
||||
|
||||
@font-face
|
||||
font-family: 'Poppins'
|
||||
font-style: normal
|
||||
font-weight: 400
|
||||
src: local('Poppins'),
|
||||
local('Poppins-Regular'),
|
||||
url('/fonts/poppins-regular.woff') format('woff')
|
||||
|
||||
@font-face
|
||||
font-family: 'Poppins'
|
||||
font-style: normal
|
||||
font-weight: 500
|
||||
src: local('Poppins Medium'),
|
||||
local('Poppins-Medium'),
|
||||
url('/fonts/poppins-medium.woff') format('woff')
|
||||
|
||||
@font-face
|
||||
font-family: 'Poppins'
|
||||
font-style: normal
|
||||
font-weight: 700
|
||||
src: local('Poppins Bold'),
|
||||
local('Poppins-Bold'),
|
||||
url('/fonts/poppins-bold.woff') format('woff')
|
||||
@@ -175,7 +175,7 @@
|
||||
.board-header-btn
|
||||
height: 32px
|
||||
line-height: @height
|
||||
font-size: 16px
|
||||
font-size: 15px
|
||||
|
||||
i.fa
|
||||
line-height: 32px
|
||||
|
||||
@@ -6,10 +6,16 @@ head
|
||||
where the application is deployed with a path prefix, but it seems to be
|
||||
difficult to do that cleanly with Blaze -- at least without adding extra
|
||||
packages.
|
||||
link(rel="shortcut icon" href="/wekan-favicon.png")
|
||||
link(rel="apple-touch-icon" href="/wekan-favicon.png")
|
||||
link(rel="mask-icon" href="/wekan-logo-150.svg")
|
||||
link(rel="manifest" href="/wekan-manifest.json")
|
||||
link(rel="shortcut icon" type="image/x-icon" href="/favicon.ico")
|
||||
link(rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png")
|
||||
link(rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png")
|
||||
link(rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png")
|
||||
link(rel="manifest" href="/site.webmanifest")
|
||||
link(rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5")
|
||||
meta(name="apple-mobile-web-app-title" content="Wekan")
|
||||
meta(name="application-name" content="Wekan")
|
||||
meta(name="msapplication-TileColor" content="#00aba9")
|
||||
meta(name="theme-color" content="#ffffff")
|
||||
|
||||
template(name="userFormsLayout")
|
||||
section.auth-layout
|
||||
|
||||
@@ -74,10 +74,34 @@ Template.userFormsLayout.helpers({
|
||||
let name = lang.name;
|
||||
if (lang.name === 'br') {
|
||||
name = 'Brezhoneg';
|
||||
} else if (lang.name === 'Español') {
|
||||
name = 'español';
|
||||
} else if (lang.name === 'Español de Argentina') {
|
||||
name = 'español de Argentina';
|
||||
} else if (lang.name === 'Español de Chile') {
|
||||
name = 'español de Chile';
|
||||
} else if (lang.name === 'Español de Colombia') {
|
||||
name = 'español de Colombia';
|
||||
} else if (lang.name === 'Español de México') {
|
||||
name = 'español de México';
|
||||
} else if (lang.name === 'Español de Puerto Rico') {
|
||||
name = 'español de Puerto Rico';
|
||||
} else if (lang.name === 'fr-BE') {
|
||||
name = 'Français (Belgique)';
|
||||
} else if (lang.name === 'fr-CA') {
|
||||
name = 'Français (Canada)';
|
||||
} else if (lang.name === 'fr-CA') {
|
||||
name = 'Français (Canada)';
|
||||
} else if (lang.name === 'ig') {
|
||||
name = 'Igbo';
|
||||
} else if (lang.name === 'lv') {
|
||||
name = 'Latviešu';
|
||||
} else if (lang.name === 'latviešu valoda') {
|
||||
name = 'Latviešu';
|
||||
} else if (lang.name === 'oc') {
|
||||
name = 'Occitan';
|
||||
} else if (lang.name === 'st') {
|
||||
name = 'Sãotomense';
|
||||
} else if (lang.name === '繁体中文(台湾)') {
|
||||
name = '繁體中文(台灣)';
|
||||
}
|
||||
@@ -145,6 +169,19 @@ async function authentication(event, templateInstance) {
|
||||
});
|
||||
});
|
||||
|
||||
case 'saml':
|
||||
return new Promise(resolve => {
|
||||
const provider = Meteor.settings.public.SAML_PROVIDER;
|
||||
Meteor.loginWithSaml(
|
||||
{
|
||||
provider,
|
||||
},
|
||||
function() {
|
||||
resolve(FlowRouter.go('/'));
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
case 'cas':
|
||||
return new Promise(resolve => {
|
||||
Meteor.loginWithCas(match, password, function() {
|
||||
|
||||
@@ -32,7 +32,7 @@ a:hover,a:focus
|
||||
border-radius: unset
|
||||
|
||||
html, body, input, select, textarea, button
|
||||
font: 14px Roboto, "Helvetica Neue", Arial, Helvetica, sans-serif
|
||||
font: 14px Roboto, Poppins, "Helvetica Neue", Arial, Helvetica, sans-serif
|
||||
line-height: 18px
|
||||
color: #4d4d4d
|
||||
|
||||
|
||||
@@ -107,11 +107,6 @@ $popupWidth = 300px
|
||||
padding: 8px 4px 8px 10px
|
||||
margin-right: 8px
|
||||
|
||||
&::-webkit-scrollbar-button
|
||||
display: block
|
||||
height: 4px
|
||||
width: 4px
|
||||
|
||||
.at-form
|
||||
.at-error, .at-result
|
||||
padding: 8px 12px
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
const { isTouchDevice } = Utils;
|
||||
|
||||
Mixins.PerfectScrollbar = BlazeComponent.extendComponent({
|
||||
onRendered() {
|
||||
if (!isTouchDevice()) {
|
||||
const component = this.mixinParent();
|
||||
const domElement = component.find('.js-perfect-scrollbar');
|
||||
Ps.initialize(domElement);
|
||||
|
||||
// XXX We should create an event map to be consistent with other components
|
||||
// but since BlazeComponent doesn't merge Mixins events transparently I
|
||||
// prefered to use a jQuery event (which is what an event map ends up doing)
|
||||
component.$(domElement).on('mouseenter', () => Ps.update(domElement));
|
||||
}
|
||||
},
|
||||
});
|
||||
@@ -1,2 +0,0 @@
|
||||
.ps-container
|
||||
position: relative
|
||||
@@ -68,8 +68,8 @@ BlazeComponent.extendComponent({
|
||||
const ruleName = this.data().ruleName.get();
|
||||
const trigger = this.data().triggerVar.get();
|
||||
const actionSelected = this.find('#move-spec-action').value;
|
||||
const swimlaneName = this.find('#swimlaneName').value;
|
||||
const listName = this.find('#listName').value;
|
||||
const swimlaneName = this.find('#swimlaneName').value || '*';
|
||||
const listName = this.find('#listName').value || '*';
|
||||
const boardId = Session.get('currentBoard');
|
||||
const destBoardId = this.find('#board-id').value;
|
||||
const desc = Utils.getTriggerActionDesc(event, this);
|
||||
|
||||
@@ -75,7 +75,7 @@ template(name="cardActions")
|
||||
button.trigger-button.trigger-button-color.js-show-color-palette(
|
||||
id="color-action"
|
||||
class="card-details-{{cardColorButton}}")
|
||||
| {{{_ cardColorButtonText }}}
|
||||
| {{_ cardColorButtonText }}
|
||||
div.trigger-button.js-set-color-action.js-goto-rules
|
||||
i.fa.fa-plus
|
||||
|
||||
|
||||
@@ -164,6 +164,7 @@ BlazeComponent.extendComponent({
|
||||
const boardId = Session.get('currentBoard');
|
||||
const actionId = Actions.insert({
|
||||
actionType: 'removeMember',
|
||||
// deepcode ignore NoHardcodedCredentials: it's no credential
|
||||
username: '*',
|
||||
boardId,
|
||||
desc,
|
||||
|
||||
@@ -6,10 +6,14 @@ template(name="ruleDetails")
|
||||
.triggers-content
|
||||
.triggers-body
|
||||
.triggers-main-body
|
||||
h4
|
||||
| {{_ 'r-trigger'}}
|
||||
div.trigger-item
|
||||
div.trigger-content
|
||||
div.trigger-text
|
||||
= trigger
|
||||
= trigger
|
||||
h4
|
||||
| {{_ 'r-action'}}
|
||||
div.trigger-item
|
||||
div.trigger-content
|
||||
div.trigger-text
|
||||
|
||||
@@ -2,10 +2,12 @@
|
||||
overflow:hidden
|
||||
overflow-y:scroll
|
||||
max-height: 400px
|
||||
padding-right: 5px
|
||||
.rules-lists-item
|
||||
display: block
|
||||
position: relative
|
||||
overflow: auto
|
||||
border-bottom: 1px solid #bfbfbf
|
||||
p
|
||||
display: inline-block
|
||||
float: left
|
||||
|
||||
@@ -104,6 +104,8 @@ template(name="peopleRow")
|
||||
a.edit-user
|
||||
i.fa.fa-edit
|
||||
| {{_ 'edit'}}
|
||||
a.more-settings-user
|
||||
i.fa.fa-ellipsis-h
|
||||
|
||||
template(name="editUserPopup")
|
||||
form
|
||||
@@ -200,3 +202,10 @@ template(name="newUserPopup")
|
||||
input.js-profile-password(type="password")
|
||||
div.buttonsContainer
|
||||
input.primary.wide(type="submit" value="{{_ 'save'}}")
|
||||
|
||||
template(name="settingsUserPopup")
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.impersonate-user
|
||||
i.fa.fa-user
|
||||
| {{_ 'impersonate-user'}}
|
||||
@@ -194,6 +194,7 @@ BlazeComponent.extendComponent({
|
||||
return [
|
||||
{
|
||||
'click a.edit-user': Popup.open('editUser'),
|
||||
'click a.more-settings-user': Popup.open('settingsUser'),
|
||||
},
|
||||
];
|
||||
},
|
||||
@@ -343,3 +344,16 @@ Template.newUserPopup.events({
|
||||
Popup.close();
|
||||
},
|
||||
});
|
||||
|
||||
Template.settingsUserPopup.events({
|
||||
'click .impersonate-user'(event) {
|
||||
event.preventDefault();
|
||||
|
||||
Meteor.call('impersonate', this.userId, err => {
|
||||
if (!err) {
|
||||
FlowRouter.go('/');
|
||||
Meteor.connection.setUserId(this.userId);
|
||||
}
|
||||
});
|
||||
},
|
||||
});
|
||||
@@ -46,3 +46,6 @@ table
|
||||
|
||||
div
|
||||
margin: auto
|
||||
|
||||
.more-settings-user
|
||||
margin-left: 10px;
|
||||
@@ -9,7 +9,7 @@ template(name="sidebar")
|
||||
a.board-header-btn.js-shortcuts
|
||||
i.fa.fa-keyboard-o
|
||||
span {{_ 'keyboard-shortcuts' }}
|
||||
.sidebar-content.js-board-sidebar-content.js-perfect-scrollbar
|
||||
.sidebar-content.js-board-sidebar-content
|
||||
//a.hide-btn.js-hide-sidebar
|
||||
// i.fa.fa-navicon
|
||||
unless isDefaultView
|
||||
@@ -230,6 +230,8 @@ template(name="chooseBoardSource")
|
||||
a(href="{{pathFor '/import/trello'}}") {{_ 'from-trello'}}
|
||||
li
|
||||
a(href="{{pathFor '/import/wekan'}}") {{_ 'from-wekan'}}
|
||||
li
|
||||
a(href="{{pathFor '/import/csv'}}") {{_ 'from-csv'}}
|
||||
|
||||
template(name="archiveBoardPopup")
|
||||
p {{_ 'close-board-pop'}}
|
||||
@@ -300,7 +302,7 @@ template(name="boardMenuPopup")
|
||||
ul.pop-over-list
|
||||
if withApi
|
||||
li
|
||||
a(href="{{exportUrl}}", download="{{exportFilename}}")
|
||||
a.js-export-board
|
||||
i.fa.fa-share-alt
|
||||
| {{_ 'export-board'}}
|
||||
li
|
||||
@@ -327,12 +329,10 @@ template(name="boardMenuPopup")
|
||||
if isSandstorm
|
||||
hr
|
||||
ul.pop-over-list
|
||||
if withApi
|
||||
li
|
||||
a(href="{{exportUrl}}", download="{{exportFilename}}")
|
||||
i.fa.fa-share-alt
|
||||
i.fa.fa-sign-out
|
||||
| {{_ 'export-board'}}
|
||||
li
|
||||
a.js-export-board
|
||||
i.fa.fa-share-alt
|
||||
| {{_ 'export-board'}}
|
||||
li
|
||||
a.js-import-board
|
||||
i.fa.fa-share-alt
|
||||
@@ -360,6 +360,25 @@ template(name="boardMenuPopup")
|
||||
i.fa.fa-sitemap
|
||||
| {{_ 'subtask-settings'}}
|
||||
|
||||
template(name="exportBoard")
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.download-json-link(href="{{exportUrl}}", download="{{exportJsonFilename}}")
|
||||
i.fa.fa-share-alt
|
||||
| {{_ 'export-board-json'}}
|
||||
//li
|
||||
// a(href="{{exportCsvUrl}}", download="{{exportCsvFilename}}")
|
||||
// i.fa.fa-share-alt
|
||||
// | {{_ 'export-board-csv'}}
|
||||
//li
|
||||
// a(href="{{exportTsvUrl}}", download="{{exportTsvFilename}}")
|
||||
// i.fa.fa-share-alt
|
||||
// | {{_ 'export-board-tsv'}}
|
||||
li
|
||||
a.html-export-board
|
||||
i.fa.fa-archive
|
||||
| {{_ 'export-board-html'}}
|
||||
|
||||
template(name="labelsWidget")
|
||||
.board-widget.board-widget-labels
|
||||
h3
|
||||
|
||||
@@ -16,7 +16,7 @@ const viewTitles = {
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
mixins() {
|
||||
return [Mixins.InfiniteScrolling, Mixins.PerfectScrollbar];
|
||||
return [Mixins.InfiniteScrolling];
|
||||
},
|
||||
|
||||
onCreated() {
|
||||
@@ -213,6 +213,7 @@ Template.boardMenuPopup.events({
|
||||
'click .js-import-board': Popup.open('chooseBoardSource'),
|
||||
'click .js-subtask-settings': Popup.open('boardSubtaskSettings'),
|
||||
'click .js-card-settings': Popup.open('boardCardSettings'),
|
||||
'click .js-export-board': Popup.open('exportBoard'),
|
||||
});
|
||||
|
||||
Template.boardMenuPopup.onCreated(function() {
|
||||
@@ -405,6 +406,70 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
}).register('chooseBoardSourcePopup');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
template() {
|
||||
return 'exportBoard';
|
||||
},
|
||||
withApi() {
|
||||
return Template.instance().apiEnabled.get();
|
||||
},
|
||||
exportUrl() {
|
||||
const params = {
|
||||
boardId: Session.get('currentBoard'),
|
||||
};
|
||||
const queryParams = {
|
||||
authToken: Accounts._storedLoginToken(),
|
||||
};
|
||||
return FlowRouter.path('/api/boards/:boardId/export', params, queryParams);
|
||||
},
|
||||
exportCsvUrl() {
|
||||
const params = {
|
||||
boardId: Session.get('currentBoard'),
|
||||
};
|
||||
const queryParams = {
|
||||
authToken: Accounts._storedLoginToken(),
|
||||
};
|
||||
return FlowRouter.path(
|
||||
'/api/boards/:boardId/export/csv',
|
||||
params,
|
||||
queryParams,
|
||||
);
|
||||
},
|
||||
exportTsvUrl() {
|
||||
const params = {
|
||||
boardId: Session.get('currentBoard'),
|
||||
};
|
||||
const queryParams = {
|
||||
authToken: Accounts._storedLoginToken(),
|
||||
delimiter: '\t',
|
||||
};
|
||||
return FlowRouter.path(
|
||||
'/api/boards/:boardId/export/csv',
|
||||
params,
|
||||
queryParams,
|
||||
);
|
||||
},
|
||||
exportJsonFilename() {
|
||||
const boardId = Session.get('currentBoard');
|
||||
return `wekan-export-board-${boardId}.json`;
|
||||
},
|
||||
exportCsvFilename() {
|
||||
const boardId = Session.get('currentBoard');
|
||||
return `wekan-export-board-${boardId}.csv`;
|
||||
},
|
||||
exportTsvFilename() {
|
||||
const boardId = Session.get('currentBoard');
|
||||
return `wekan-export-board-${boardId}.tsv`;
|
||||
},
|
||||
}).register('exportBoardPopup');
|
||||
|
||||
Template.exportBoard.events({
|
||||
'click .html-export-board': async event => {
|
||||
event.preventDefault();
|
||||
await ExportHtml(Popup)();
|
||||
},
|
||||
});
|
||||
|
||||
Template.labelsWidget.events({
|
||||
'click .js-label': Popup.open('editLabel'),
|
||||
'click .js-add-label': Popup.open('createLabel'),
|
||||
|
||||
@@ -34,6 +34,7 @@
|
||||
color: darken(white, 50%)
|
||||
font-size: 1em
|
||||
margin-bottom: 10px
|
||||
font-weight: bold
|
||||
|
||||
i.fa
|
||||
margin-right: 3px
|
||||
@@ -167,8 +168,8 @@
|
||||
button
|
||||
float: right
|
||||
margin: 0
|
||||
margin-bottom: 5px
|
||||
padding: 0 2px 0 10px
|
||||
margin: 0 0 5px 5px
|
||||
padding: 0 10px 0 10px
|
||||
|
||||
@media screen and (max-width: 800px)
|
||||
.board-sidebar
|
||||
|
||||
@@ -33,6 +33,17 @@ template(name="createCustomFieldPopup")
|
||||
option(value=value selected="selected") {{name}}
|
||||
else
|
||||
option(value=value) {{name}}
|
||||
|
||||
div.js-field-settings.js-field-settings-currency(class="{{#if isTypeNotSelected 'currency'}}hide{{/if}}")
|
||||
label
|
||||
| {{_ 'custom-field-currency-option'}}
|
||||
select.js-field-currency
|
||||
each getCurrencyCodes
|
||||
if selected
|
||||
option(value=value selected="selected") {{name}}
|
||||
else
|
||||
option(value=value) {{name}}
|
||||
|
||||
div.js-field-settings.js-field-settings-dropdown(class="{{#if isTypeNotSelected 'dropdown'}}hide{{/if}}")
|
||||
label
|
||||
| {{_ 'custom-field-dropdown-options'}}
|
||||
|
||||
@@ -16,12 +16,62 @@ BlazeComponent.extendComponent({
|
||||
}).register('customFieldsSidebar');
|
||||
|
||||
const CreateCustomFieldPopup = BlazeComponent.extendComponent({
|
||||
_types: ['text', 'number', 'date', 'dropdown'],
|
||||
_types: ['text', 'number', 'date', 'dropdown', 'currency'],
|
||||
|
||||
_currencyList: [
|
||||
{
|
||||
name: 'US Dollar',
|
||||
code: 'USD',
|
||||
},
|
||||
{
|
||||
name: 'Euro',
|
||||
code: 'EUR',
|
||||
},
|
||||
{
|
||||
name: 'Yen',
|
||||
code: 'JPY',
|
||||
},
|
||||
{
|
||||
name: 'Pound Sterling',
|
||||
code: 'GBP',
|
||||
},
|
||||
{
|
||||
name: 'Australian Dollar',
|
||||
code: 'AUD',
|
||||
},
|
||||
{
|
||||
name: 'Canadian Dollar',
|
||||
code: 'CAD',
|
||||
},
|
||||
{
|
||||
name: 'Swiss Franc',
|
||||
code: 'CHF',
|
||||
},
|
||||
{
|
||||
name: 'Yuan Renminbi',
|
||||
code: 'CNY',
|
||||
},
|
||||
{
|
||||
name: 'Hong Kong Dollar',
|
||||
code: 'HKD',
|
||||
},
|
||||
{
|
||||
name: 'New Zealand Dollar',
|
||||
code: 'NZD',
|
||||
},
|
||||
],
|
||||
|
||||
onCreated() {
|
||||
this.type = new ReactiveVar(
|
||||
this.data().type ? this.data().type : this._types[0],
|
||||
);
|
||||
|
||||
this.currencyCode = new ReactiveVar(
|
||||
this.data().settings && this.data().settings.currencyCode
|
||||
? this.data().settings.currencyCode
|
||||
: this._currencyList[0].code,
|
||||
);
|
||||
|
||||
this.dropdownItems = new ReactiveVar(
|
||||
this.data().settings && this.data().settings.dropdownItems
|
||||
? this.data().settings.dropdownItems
|
||||
@@ -44,6 +94,18 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
|
||||
return this.type.get() !== type;
|
||||
},
|
||||
|
||||
getCurrencyCodes() {
|
||||
const currentCode = this.currencyCode.get();
|
||||
|
||||
return this._currencyList.map(({ name, code }) => {
|
||||
return {
|
||||
name: `${code} - ${name}`,
|
||||
value: code,
|
||||
selected: code === currentCode,
|
||||
};
|
||||
});
|
||||
},
|
||||
|
||||
getDropdownItems() {
|
||||
const items = this.dropdownItems.get();
|
||||
Array.from(this.findAll('.js-field-settings-dropdown input')).forEach(
|
||||
@@ -62,6 +124,11 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
|
||||
getSettings() {
|
||||
const settings = {};
|
||||
switch (this.type.get()) {
|
||||
case 'currency': {
|
||||
const currencyCode = this.currencyCode.get();
|
||||
settings.currencyCode = currencyCode;
|
||||
break;
|
||||
}
|
||||
case 'dropdown': {
|
||||
const dropdownItems = this.getDropdownItems().filter(
|
||||
item => !!item.name.trim(),
|
||||
@@ -80,6 +147,10 @@ const CreateCustomFieldPopup = BlazeComponent.extendComponent({
|
||||
const value = evt.target.value;
|
||||
this.type.set(value);
|
||||
},
|
||||
'change .js-field-currency'(evt) {
|
||||
const value = evt.target.value;
|
||||
this.currencyCode.set(value);
|
||||
},
|
||||
'keydown .js-dropdown-item.last'(evt) {
|
||||
if (evt.target.value.trim() && evt.keyCode === 13) {
|
||||
const items = this.getDropdownItems();
|
||||
|
||||
@@ -4,10 +4,14 @@
|
||||
and #each x in y constructors to fix this.
|
||||
|
||||
template(name="filterSidebar")
|
||||
h3 {{_ 'list-filter-label'}}
|
||||
ul.sidebar-list
|
||||
span {{_ 'list-filter-label'}}
|
||||
form.js-list-filter
|
||||
input(type="text")
|
||||
hr
|
||||
h3
|
||||
i.fa.fa-tags
|
||||
| {{_ 'filter-labels-label'}}
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.labelIds.isSelected undefined}}active{{/if}}")
|
||||
a.name.js-toggle-label-filter
|
||||
@@ -27,6 +31,9 @@ template(name="filterSidebar")
|
||||
if Filter.labelIds.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
h3
|
||||
i.fa.fa-users
|
||||
| {{_ 'filter-member-label'}}
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.members.isSelected undefined}}active{{/if}}")
|
||||
a.name.js-toggle-member-filter
|
||||
@@ -45,6 +52,9 @@ template(name="filterSidebar")
|
||||
if Filter.members.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
h3
|
||||
i.fa.fa-user
|
||||
| {{_ 'filter-assignee-label'}}
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.assignees.isSelected undefined}}active{{/if}}")
|
||||
a.name.js-toggle-assignee-filter
|
||||
@@ -63,6 +73,9 @@ template(name="filterSidebar")
|
||||
if Filter.assignees.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
h3
|
||||
i.fa.fa-list-alt
|
||||
| {{_ 'filter-custom-fields-label'}}
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.customFields.isSelected undefined}}active{{/if}}")
|
||||
a.name.js-toggle-custom-fields-filter
|
||||
@@ -78,6 +91,8 @@ template(name="filterSidebar")
|
||||
if Filter.customFields.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
h3
|
||||
| {{_ 'other-filters-label'}}
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.archive.isSelected _id}}active{{/if}}")
|
||||
a.name.js-toggle-archive-filter
|
||||
@@ -85,7 +100,6 @@ template(name="filterSidebar")
|
||||
| {{_ 'filter-show-archive'}}
|
||||
if Filter.archive.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
ul.sidebar-list
|
||||
li(class="{{#if Filter.hideEmpty.isSelected _id}}active{{/if}}")
|
||||
a.name.js-toggle-hideEmpty-filter
|
||||
@@ -94,7 +108,7 @@ template(name="filterSidebar")
|
||||
if Filter.hideEmpty.isSelected _id
|
||||
i.fa.fa-check
|
||||
hr
|
||||
span {{_ 'advanced-filter-label'}}
|
||||
h3 {{_ 'advanced-filter-label'}}
|
||||
input.js-field-advanced-filter(type="text")
|
||||
span {{_ 'advanced-filter-description'}}
|
||||
if Filter.isActive
|
||||
@@ -107,6 +121,9 @@ template(name="filterSidebar")
|
||||
span {{_ 'filter-to-selection'}}
|
||||
|
||||
template(name="multiselectionSidebar")
|
||||
h3
|
||||
i.fa.fa-tags
|
||||
| {{_ 'multi-selection-label'}}
|
||||
ul.sidebar-list
|
||||
each currentBoard.labels
|
||||
li
|
||||
@@ -122,6 +139,9 @@ template(name="multiselectionSidebar")
|
||||
else if someSelectedElementHave 'label' _id
|
||||
i.fa.fa-ellipsis-h
|
||||
hr
|
||||
h3
|
||||
i.fa.fa-users
|
||||
| {{_ 'multi-selection-member'}}
|
||||
ul.sidebar-list
|
||||
each currentBoard.activeMembers
|
||||
with getUser userId
|
||||
|
||||
@@ -157,8 +157,9 @@ Template.disambiguateMultiMemberPopup.events({
|
||||
});
|
||||
|
||||
Template.moveSelectionPopup.events({
|
||||
'click .js-select-list'() {
|
||||
mutateSelectedCards('move', this._id);
|
||||
'click .js-select-list'(event) {
|
||||
// Move the minicard to the end of the target list
|
||||
mutateSelectedCards('moveToEndOfList', { listId: this._id });
|
||||
EscapeActions.executeUpTo('multiselection');
|
||||
},
|
||||
});
|
||||
@@ -1,7 +1,7 @@
|
||||
template(name="searchSidebar")
|
||||
form.js-search-term-form
|
||||
input(type="text" name="searchTerm" placeholder="{{_ 'search-example'}}" autofocus dir="auto")
|
||||
.list-body.js-perfect-scrollbar
|
||||
.list-body
|
||||
.minilists.clearfix.js-minilists
|
||||
each (lists)
|
||||
a.minilist-wrapper.js-minilist(href=absoluteUrl)
|
||||
|
||||
@@ -11,7 +11,8 @@ template(name="swimlaneHeader")
|
||||
template(name="swimlaneFixedHeader")
|
||||
.swimlane-header(
|
||||
class="{{#if currentUser.isBoardMember}}js-open-inlined-form is-editable{{/if}}")
|
||||
= title
|
||||
+viewer
|
||||
= title
|
||||
.swimlane-header-menu
|
||||
unless currentUser.isCommentOnly
|
||||
a.fa.fa-plus.js-open-add-swimlane-menu.swimlane-header-plus-icon
|
||||
|
||||
@@ -2,7 +2,7 @@ template(name="swimlane")
|
||||
.swimlane
|
||||
+swimlaneHeader
|
||||
unless collapseSwimlane
|
||||
.swimlane.js-lists.js-swimlane
|
||||
.swimlane.js-lists.js-swimlane(id="swimlane-{{_id}}")
|
||||
if isMiniScreen
|
||||
if currentListIsInThisSwimlane _id
|
||||
+list(currentList)
|
||||
|
||||
@@ -23,8 +23,8 @@ function currentCardIsInThisList(listId, swimlaneId) {
|
||||
currentCard.listId === listId &&
|
||||
currentCard.swimlaneId === swimlaneId
|
||||
);
|
||||
// Default view: board-view-lists
|
||||
else return currentCard && currentCard.listId === listId;
|
||||
|
||||
// https://github.com/wekan/wekan/issues/1623
|
||||
// https://github.com/ChronikEwok/wekan/commit/cad9b20451bb6149bfb527a99b5001873b06c3de
|
||||
// TODO: In public board, if you would like to switch between List/Swimlane view, you could
|
||||
|
||||
@@ -29,6 +29,8 @@ avatar-radius = 50%
|
||||
position: absolute
|
||||
|
||||
&.avatar-image
|
||||
object-fit: cover;
|
||||
object-position: center;
|
||||
height: 100%
|
||||
width: @height
|
||||
|
||||
|
||||
@@ -39,8 +39,8 @@
|
||||
};
|
||||
return this.each(function() {
|
||||
const element = this;
|
||||
$(element).bind('dragenter dragover dragleave', stopFn);
|
||||
return $(element).bind('drop', function(event) {
|
||||
$(element).on('dragenter dragover dragleave', stopFn);
|
||||
return $(element).on('drop', function(event) {
|
||||
stopFn(event);
|
||||
const files = event.dataTransfer.files;
|
||||
for (let i = 0; i < files.length; i++) {
|
||||
|
||||
@@ -0,0 +1,204 @@
|
||||
const JSZip = require('jszip');
|
||||
|
||||
window.ExportHtml = Popup => {
|
||||
const saveAs = function(blob, filename) {
|
||||
const dl = document.createElement('a');
|
||||
dl.href = window.URL.createObjectURL(blob);
|
||||
dl.onclick = event => document.body.removeChild(event.target);
|
||||
dl.style.display = 'none';
|
||||
dl.target = '_blank';
|
||||
dl.download = filename;
|
||||
document.body.appendChild(dl);
|
||||
dl.click();
|
||||
};
|
||||
|
||||
const asyncForEach = async function(array, callback) {
|
||||
for (let index = 0; index < array.length; index++) {
|
||||
await callback(array[index], index, array);
|
||||
}
|
||||
};
|
||||
|
||||
const getPageHtmlString = () => {
|
||||
return `<!doctype html>${window.document.querySelector('html').outerHTML}`;
|
||||
};
|
||||
|
||||
const removeAnchors = htmlString => {
|
||||
const replaceOpenAnchor = htmlString.replace(
|
||||
new RegExp('<a ', 'gim'),
|
||||
'<span ',
|
||||
);
|
||||
return replaceOpenAnchor.replace(new RegExp('</a', 'gim'), '</span');
|
||||
};
|
||||
|
||||
const ensureSidebarRemoved = () => {
|
||||
document.querySelector('.board-sidebar.sidebar').remove();
|
||||
};
|
||||
|
||||
const addJsonExportToZip = async (zip, boardSlug) => {
|
||||
const downloadJSONLink = document.querySelector('.download-json-link');
|
||||
const downloadJSONURL = downloadJSONLink.href;
|
||||
const response = await fetch(downloadJSONURL);
|
||||
const responseBody = await response.text();
|
||||
zip.file(`data/${boardSlug}.json`, responseBody);
|
||||
};
|
||||
|
||||
const closeSidebar = () => {
|
||||
document.querySelector('.board-header-btn.js-toggle-sidebar').click();
|
||||
};
|
||||
|
||||
const cleanBoardHtml = () => {
|
||||
Array.from(document.querySelectorAll('script')).forEach(elem =>
|
||||
elem.remove(),
|
||||
);
|
||||
Array.from(
|
||||
document.querySelectorAll('link:not([rel="stylesheet"])'),
|
||||
).forEach(elem => elem.remove());
|
||||
document.querySelector('#header-quick-access').remove();
|
||||
Array.from(
|
||||
document.querySelectorAll('#header-main-bar .board-header-btns'),
|
||||
).forEach(elem => elem.remove());
|
||||
Array.from(document.querySelectorAll('.list-composer')).forEach(elem =>
|
||||
elem.remove(),
|
||||
);
|
||||
Array.from(
|
||||
document.querySelectorAll(
|
||||
'.list-composer,.js-card-composer, .js-add-card',
|
||||
),
|
||||
).forEach(elem => elem.remove());
|
||||
Array.from(document.querySelectorAll('[href]:not(link)')).forEach(elem =>
|
||||
elem.attributes.removeNamedItem('href'),
|
||||
);
|
||||
Array.from(document.querySelectorAll('[href]')).forEach(elem => {
|
||||
// eslint-disable-next-line no-self-assign
|
||||
elem.href = elem.href;
|
||||
// eslint-disable-next-line no-self-assign
|
||||
elem.src = elem.src;
|
||||
});
|
||||
Array.from(document.querySelectorAll('.is-editable')).forEach(elem => {
|
||||
elem.classList.remove('is-editable');
|
||||
});
|
||||
};
|
||||
|
||||
const getBoardSlug = () => {
|
||||
return window.location.href.split('/').pop();
|
||||
};
|
||||
|
||||
const getStylesheetList = () => {
|
||||
return Array.from(
|
||||
document.querySelectorAll('link[href][rel="stylesheet"]'),
|
||||
);
|
||||
};
|
||||
|
||||
const downloadStylesheets = async (stylesheets, zip) => {
|
||||
await asyncForEach(stylesheets, async elem => {
|
||||
const response = await fetch(elem.href);
|
||||
const responseBody = await response.text();
|
||||
|
||||
const finalResponse = responseBody.replace(
|
||||
new RegExp('packages/[^/]+/upstream/', 'gim'),
|
||||
'../',
|
||||
);
|
||||
|
||||
const filename = elem.href
|
||||
.split('/')
|
||||
.pop()
|
||||
.split('?')
|
||||
.shift();
|
||||
const fileFullPath = `style/${filename}`;
|
||||
zip.file(fileFullPath, finalResponse);
|
||||
elem.href = `../${fileFullPath}`;
|
||||
});
|
||||
};
|
||||
|
||||
const getSrcAttached = () => {
|
||||
return Array.from(document.querySelectorAll('[src]'));
|
||||
};
|
||||
|
||||
const downloadSrcAttached = async (elements, zip, boardSlug) => {
|
||||
await asyncForEach(elements, async elem => {
|
||||
const response = await fetch(elem.src);
|
||||
const responseBody = await response.blob();
|
||||
const filename = elem.src
|
||||
.split('/')
|
||||
.pop()
|
||||
.split('?')
|
||||
.shift();
|
||||
const fileFullPath = `${boardSlug}/${elem.tagName.toLowerCase()}/${filename}`;
|
||||
zip.file(fileFullPath, responseBody);
|
||||
elem.src = `./${elem.tagName.toLowerCase()}/${filename}`;
|
||||
});
|
||||
};
|
||||
|
||||
const removeCssUrlSurround = url => {
|
||||
const working = url || '';
|
||||
return working
|
||||
.split('url(')
|
||||
.join('')
|
||||
.split('")')
|
||||
.join('')
|
||||
.split('"')
|
||||
.join('')
|
||||
.split("')")
|
||||
.join('')
|
||||
.split("'")
|
||||
.join('')
|
||||
.split(')')
|
||||
.join('');
|
||||
};
|
||||
|
||||
const getCardCovers = () => {
|
||||
return Array.from(document.querySelectorAll('.minicard-cover')).filter(
|
||||
elem => elem.style['background-image'],
|
||||
);
|
||||
};
|
||||
|
||||
const downloadCardCovers = async (elements, zip, boardSlug) => {
|
||||
await asyncForEach(elements, async elem => {
|
||||
const response = await fetch(
|
||||
removeCssUrlSurround(elem.style['background-image']),
|
||||
);
|
||||
const responseBody = await response.blob();
|
||||
const filename = removeCssUrlSurround(elem.style['background-image'])
|
||||
.split('/')
|
||||
.pop()
|
||||
.split('?')
|
||||
.shift()
|
||||
.split('#')
|
||||
.shift();
|
||||
const fileFullPath = `${boardSlug}/covers/${filename}`;
|
||||
zip.file(fileFullPath, responseBody);
|
||||
elem.style = "background-image: url('" + `covers/${filename}` + "')";
|
||||
});
|
||||
};
|
||||
|
||||
const addBoardHTMLToZip = (boardSlug, zip) => {
|
||||
ensureSidebarRemoved();
|
||||
const htmlOutputPath = `${boardSlug}/index.html`;
|
||||
zip.file(
|
||||
htmlOutputPath,
|
||||
new Blob([removeAnchors(getPageHtmlString())], {
|
||||
type: 'application/html',
|
||||
}),
|
||||
);
|
||||
};
|
||||
|
||||
return async () => {
|
||||
const zip = new JSZip();
|
||||
const boardSlug = getBoardSlug();
|
||||
|
||||
await addJsonExportToZip(zip, boardSlug);
|
||||
Popup.close();
|
||||
closeSidebar();
|
||||
cleanBoardHtml();
|
||||
|
||||
await downloadStylesheets(getStylesheetList(), zip);
|
||||
await downloadSrcAttached(getSrcAttached(), zip, boardSlug);
|
||||
await downloadCardCovers(getCardCovers(), zip, boardSlug);
|
||||
|
||||
addBoardHTMLToZip(boardSlug, zip);
|
||||
|
||||
const content = await zip.generateAsync({ type: 'blob' });
|
||||
saveAs(content, `${boardSlug}.zip`);
|
||||
window.location.reload();
|
||||
};
|
||||
};
|
||||
+21
-11
@@ -1,6 +1,16 @@
|
||||
// XXX There is no reason to define these shortcuts globally, they should be
|
||||
// attached to a template (most of them will go in the `board` template).
|
||||
|
||||
function getHoveredCardId() {
|
||||
const card = $('.js-minicard:hover').get(0);
|
||||
if (!card) return null;
|
||||
return Blaze.getData(card)._id;
|
||||
}
|
||||
|
||||
function getSelectedCardId() {
|
||||
return Session.get('selectedCard') || getHoveredCardId();
|
||||
}
|
||||
|
||||
Mousetrap.bind('?', () => {
|
||||
FlowRouter.go('shortcuts');
|
||||
});
|
||||
@@ -50,9 +60,9 @@ Mousetrap.bind(['down', 'up'], (evt, key) => {
|
||||
}
|
||||
});
|
||||
|
||||
// XXX This shortcut should also work when hovering over a card in board view
|
||||
Mousetrap.bind('space', evt => {
|
||||
if (!Session.get('currentCard')) {
|
||||
const cardId = getSelectedCardId();
|
||||
if (!cardId) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -62,7 +72,7 @@ Mousetrap.bind('space', evt => {
|
||||
}
|
||||
|
||||
if (Meteor.user().isBoardMember()) {
|
||||
const card = Cards.findOne(Session.get('currentCard'));
|
||||
const card = Cards.findOne(cardId);
|
||||
card.toggleMember(currentUserId);
|
||||
// We should prevent scrolling in card when spacebar is clicked
|
||||
// This should do it according to Mousetrap docs, but it doesn't
|
||||
@@ -70,9 +80,9 @@ Mousetrap.bind('space', evt => {
|
||||
}
|
||||
});
|
||||
|
||||
// XXX This shortcut should also work when hovering over a card in board view
|
||||
Mousetrap.bind('c', evt => {
|
||||
if (!Session.get('currentCard')) {
|
||||
const cardId = getSelectedCardId();
|
||||
if (!cardId) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -86,7 +96,7 @@ Mousetrap.bind('c', evt => {
|
||||
!Meteor.user().isCommentOnly() &&
|
||||
!Meteor.user().isWorker()
|
||||
) {
|
||||
const card = Cards.findOne(Session.get('currentCard'));
|
||||
const card = Cards.findOne(cardId);
|
||||
card.archive();
|
||||
// We should prevent scrolling in card when spacebar is clicked
|
||||
// This should do it according to Mousetrap docs, but it doesn't
|
||||
@@ -97,19 +107,19 @@ Mousetrap.bind('c', evt => {
|
||||
Template.keyboardShortcuts.helpers({
|
||||
mapping: [
|
||||
{
|
||||
keys: ['W'],
|
||||
keys: ['w'],
|
||||
action: 'shortcut-toggle-sidebar',
|
||||
},
|
||||
{
|
||||
keys: ['Q'],
|
||||
keys: ['q'],
|
||||
action: 'shortcut-filter-my-cards',
|
||||
},
|
||||
{
|
||||
keys: ['F'],
|
||||
keys: ['f'],
|
||||
action: 'shortcut-toggle-filterbar',
|
||||
},
|
||||
{
|
||||
keys: ['X'],
|
||||
keys: ['x'],
|
||||
action: 'shortcut-clear-filters',
|
||||
},
|
||||
{
|
||||
@@ -129,7 +139,7 @@ Template.keyboardShortcuts.helpers({
|
||||
action: 'shortcut-assign-self',
|
||||
},
|
||||
{
|
||||
keys: ['C'],
|
||||
keys: ['c'],
|
||||
action: 'archive-card',
|
||||
},
|
||||
],
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
options = $.extend({}, defaults, options);
|
||||
return this.each(function() {
|
||||
const element = this;
|
||||
return $(element).bind('paste', function(event) {
|
||||
return $(element).on('paste', function(event) {
|
||||
const types = event.clipboardData.types;
|
||||
const items = event.clipboardData.items;
|
||||
for (let i = 0; i < types.length; i++) {
|
||||
|
||||
+1
-1
@@ -49,7 +49,7 @@ window.Popup = new (class {
|
||||
// has one. This allows us to position a sub-popup exactly at the same
|
||||
// position than its parent.
|
||||
let openerElement;
|
||||
if (clickFromPopup(evt)) {
|
||||
if (clickFromPopup(evt) && self._getTopStack()) {
|
||||
openerElement = self._getTopStack().openerElement;
|
||||
} else {
|
||||
self._stack = [];
|
||||
|
||||
+13
-5
@@ -6,12 +6,18 @@ Utils = {
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
Meteor.user().setBoardView(view);
|
||||
} else if (view === 'board-view-lists') {
|
||||
cookies.set('boardView', 'board-view-lists'); //true
|
||||
} else if (view === 'board-view-swimlanes') {
|
||||
cookies.set('boardView', 'board-view-swimlanes'); //true
|
||||
location.reload();
|
||||
} else if (view === 'board-view-lists') {
|
||||
cookies.set('boardView', 'board-view-lists'); //true
|
||||
location.reload();
|
||||
} else if (view === 'board-view-cal') {
|
||||
cookies.set('boardView', 'board-view-cal'); //true
|
||||
location.reload();
|
||||
} else {
|
||||
cookies.set('boardView', 'board-view-swimlanes'); //true
|
||||
location.reload();
|
||||
}
|
||||
},
|
||||
|
||||
@@ -24,14 +30,16 @@ Utils = {
|
||||
currentUser = Meteor.user();
|
||||
if (currentUser) {
|
||||
return (currentUser.profile || {}).boardView;
|
||||
} else if (cookies.get('boardView') === 'board-view-lists') {
|
||||
return 'board-view-lists';
|
||||
} else if (cookies.get('boardView') === 'board-view-swimlanes') {
|
||||
return 'board-view-swimlanes';
|
||||
} else if (cookies.get('boardView') === 'board-view-lists') {
|
||||
return 'board-view-lists';
|
||||
} else if (cookies.get('boardView') === 'board-view-cal') {
|
||||
return 'board-view-cal';
|
||||
} else {
|
||||
return false;
|
||||
cookies.set('boardView', 'board-view-swimlanes'); //true
|
||||
location.reload();
|
||||
return 'board-view-swimlanes';
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
+28
-11
@@ -93,7 +93,9 @@ services:
|
||||
#-------------------------------------------------------------------------------------
|
||||
# ==== MONGODB AND METEOR VERSION ====
|
||||
# a) For Wekan Meteor 1.8.x version at master branch, use mongo 4.x
|
||||
image: mongo:latest
|
||||
# DOES NOT WORK: mongo 4.4, see https://github.com/wekan/wekan/issues/3247
|
||||
# WORKS: mongo 3.x and 4.2
|
||||
image: mongo:4.2
|
||||
# b) For Wekan Meteor 1.6.x version at devel branch.
|
||||
# Only for Snap and Sandstorm while they are not upgraded yet to Meteor 1.8.x
|
||||
#image: mongo:3.2.21
|
||||
@@ -115,11 +117,11 @@ services:
|
||||
# NOTE: Quay is currently not updated, use Docker Hub image below c)
|
||||
# a) For Wekan Meteor 1.8.x version at master branch,
|
||||
# using https://quay.io/wekan/wekan automatic builds
|
||||
image: quay.io/wekan/wekan
|
||||
#image: quay.io/wekan/wekan
|
||||
# b) Using specific Meteor 1.6.x version tag:
|
||||
# image: quay.io/wekan/wekan:v1.95
|
||||
# c) Using Docker Hub automatic builds https://hub.docker.com/r/wekanteam/wekan
|
||||
#image: wekanteam/wekan
|
||||
image: wekanteam/wekan
|
||||
# image: wekanteam/wekan:v2.99
|
||||
#-------------------------------------------------------------------------------------
|
||||
container_name: wekan-app
|
||||
@@ -180,7 +182,7 @@ services:
|
||||
# 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 pull-and-diff
|
||||
# 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
|
||||
@@ -240,11 +242,6 @@ services:
|
||||
# https://github.com/wekan/wekan/pull/2560
|
||||
- RICHER_CARD_COMMENT_EDITOR=false
|
||||
#---------------------------------------------------------------
|
||||
# ==== MOUSE SCROLL ====
|
||||
# https://github.com/wekan/wekan/issues/2949
|
||||
- SCROLLINERTIA=0
|
||||
- SCROLLAMOUNT=auto
|
||||
#---------------------------------------------------------------
|
||||
# ==== CARD OPENED, SEND WEBHOOK MESSAGE ====
|
||||
# https://github.com/wekan/wekan/issues/2518
|
||||
- CARD_OPENED_WEBHOOK_ENABLED=false
|
||||
@@ -333,6 +330,8 @@ services:
|
||||
# 2) Configure the environment variables. This differs slightly
|
||||
# by installation type, but make sure you have the following:
|
||||
#- OAUTH2_ENABLED=true
|
||||
# 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:
|
||||
@@ -353,8 +352,9 @@ services:
|
||||
#- OAUTH2_EMAIL_MAP=email
|
||||
#-----------------------------------------------------------------
|
||||
# ==== OAUTH2 Nextcloud ====
|
||||
# 1) Register the application with Nextcloud: https://your.nextcloud/settings/admin/security
|
||||
# 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
|
||||
@@ -598,9 +598,26 @@ services:
|
||||
# example : LOGOUT_ON_MINUTES=55
|
||||
#- LOGOUT_ON_MINUTES=
|
||||
#-------------------------------------------------------------------
|
||||
# Hide password login form
|
||||
# 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=
|
||||
#---------------------------------------------------------------------
|
||||
depends_on:
|
||||
- wekandb
|
||||
|
||||
|
||||
Executable
+5
@@ -0,0 +1,5 @@
|
||||
|
||||
# Recursive find/replace.
|
||||
# Syntax: ./find-replace.sh searchtext replacetext
|
||||
|
||||
egrep -lRZ '$1' . | xargs -0 -l sed -i -e 's/$1/$2/g'
|
||||
+45
-7
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"accept": "قبول",
|
||||
"act-activity-notify": "اشعارات النشاط",
|
||||
"act-activity-notify": "اشعار النشاط",
|
||||
"act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
@@ -152,8 +152,6 @@
|
||||
"card-spent": "امضى وقتا",
|
||||
"card-edit-attachments": "تعديل المرفقات",
|
||||
"card-edit-custom-fields": "تعديل الحقل المعدل",
|
||||
"card-start-voting": "ابدأ التصويت",
|
||||
"card-cancel-voting": "حذف التصويت وجميع الأصوات",
|
||||
"card-edit-labels": "تعديل العلامات",
|
||||
"card-edit-members": "تعديل الأعضاء",
|
||||
"card-labels-title": "تعديل علامات البطاقة.",
|
||||
@@ -166,10 +164,15 @@
|
||||
"cardStartVotingPopup-title": "ابدأ تصويت",
|
||||
"positiveVoteMembersPopup-title": "Proponents",
|
||||
"negativeVoteMembersPopup-title": "Opponents",
|
||||
"card-edit-voting": "Edit voting",
|
||||
"editVoteEndDatePopup-title": "Change vote end date",
|
||||
"allowNonBoardMembers": "Allow all logged in users",
|
||||
"vote-question": "Voting question",
|
||||
"vote-public": "Public vote",
|
||||
"vote-public": "Show who voted what",
|
||||
"vote-for-it": "مع",
|
||||
"vote-against": "ضد",
|
||||
"deleteVotePopup-title": "Delete vote?",
|
||||
"vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
|
||||
"cardDeletePopup-title": "حذف البطاقة ?",
|
||||
"cardDetailsActionsPopup-title": "إجراءات على البطاقة",
|
||||
"cardLabelsPopup-title": "علامات",
|
||||
@@ -253,6 +256,8 @@
|
||||
"current": "الحالي",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
"custom-field-currency-option": "Currency Code",
|
||||
"custom-field-date": "تاريخ",
|
||||
"custom-field-dropdown": "Dropdown List",
|
||||
"custom-field-dropdown-none": "(none)",
|
||||
@@ -306,6 +311,7 @@
|
||||
"error-board-notAMember": "You need to be a member of this board to do that",
|
||||
"error-json-malformed": "Your text is not valid JSON",
|
||||
"error-json-schema": "Your JSON data does not include the proper information in the correct format",
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "لا يمكنك دعوة نفسك",
|
||||
@@ -313,6 +319,11 @@
|
||||
"error-username-taken": "إسم المستخدم مأخوذ مسبقا",
|
||||
"error-email-taken": "البريد الإلكتروني مأخوذ بالفعل",
|
||||
"export-board": "Export board",
|
||||
"export-board-json": "Export board to JSON",
|
||||
"export-board-csv": "Export board to CSV",
|
||||
"export-board-tsv": "Export board to TSV",
|
||||
"export-board-html": "Export board to HTML",
|
||||
"exportBoardPopup-title": "Export board",
|
||||
"sort": "Sort",
|
||||
"sort-desc": "Click to Sort List",
|
||||
"list-sort-by": "Sort the List By:",
|
||||
@@ -326,15 +337,20 @@
|
||||
"filter-cards": "Filter Cards or Lists",
|
||||
"list-filter-label": "Filter List by Title",
|
||||
"filter-clear": "مسح التصفية",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "لا يوجد ملصق",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "ليس هناك أي عضو",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "No assignee",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "التصفية تشتغل",
|
||||
"filter-on-desc": "أنت بصدد تصفية بطاقات هذه اللوحة. اضغط هنا لتعديل التصفية.",
|
||||
"filter-to-selection": "تصفية بالتحديد",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Advanced Filter",
|
||||
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
|
||||
"fullname": "الإسم الكامل",
|
||||
@@ -343,17 +359,22 @@
|
||||
"headerBarCreateBoardPopup-title": "إنشاء لوحة",
|
||||
"home": "الرئيسية",
|
||||
"import": "Import",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "رابط",
|
||||
"import-board": "استيراد لوحة",
|
||||
"import-board-c": "استيراد لوحة",
|
||||
"import-board-title-trello": "Import board from Trello",
|
||||
"import-board-title-wekan": "Import board from previous export",
|
||||
"import-board-title-csv": "Import board from CSV/TSV",
|
||||
"from-trello": "من تريلو",
|
||||
"from-wekan": "From previous export",
|
||||
"from-csv": "From CSV/TSV",
|
||||
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
|
||||
"import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
|
||||
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
|
||||
"import-json-placeholder": "Paste your valid JSON data here",
|
||||
"import-csv-placeholder": "Paste your valid CSV/TSV data here",
|
||||
"import-map-members": "رسم خريطة الأعضاء",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
|
||||
"import-show-user-mapping": "Review members mapping",
|
||||
@@ -383,9 +404,11 @@
|
||||
"list-select-cards": "تحديد بطاقات هذه القائمة",
|
||||
"set-color-list": "Set Color",
|
||||
"listActionPopup-title": "قائمة الإجراءات",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
"listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
|
||||
"listMorePopup-title": "المزيد",
|
||||
"link-list": "رابط إلى هذه القائمة",
|
||||
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
|
||||
@@ -404,6 +427,8 @@
|
||||
"moveCardToTop-title": "التحرك إلى الأعلى",
|
||||
"moveSelectionPopup-title": "Move selection",
|
||||
"multi-selection": "تحديد أكثر من واحدة",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Multi-Selection is on",
|
||||
"muted": "مكتوم",
|
||||
"muted-info": "You will never be notified of any changes in this board",
|
||||
@@ -449,7 +474,7 @@
|
||||
"search": "بحث",
|
||||
"rules": "Rules",
|
||||
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "اختيار اللون",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
@@ -622,10 +647,12 @@
|
||||
"r-delete-rule": "Delete rule",
|
||||
"r-new-rule-name": "New rule title",
|
||||
"r-no-rules": "No rules",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
"r-is": "is",
|
||||
"r-is-moved": "is moved",
|
||||
"r-added-to": "added to",
|
||||
"r-added-to": "Added to",
|
||||
"r-removed-from": "Removed from",
|
||||
"r-the-board": "the board",
|
||||
"r-list": "list",
|
||||
@@ -673,6 +700,7 @@
|
||||
"r-of-checklist": "of checklist",
|
||||
"r-send-email": "Send an email",
|
||||
"r-to": "to",
|
||||
"r-of": "of",
|
||||
"r-subject": "subject",
|
||||
"r-rule-details": "Rule details",
|
||||
"r-d-move-to-top-gen": "Move card to top of its list",
|
||||
@@ -782,5 +810,15 @@
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday"
|
||||
"sunday": "Sunday",
|
||||
"status": "Status",
|
||||
"swimlane": "Swimlane",
|
||||
"owner": "Owner",
|
||||
"last-modified-at": "Last modified at",
|
||||
"last-activity": "Last activity",
|
||||
"voting": "Voting",
|
||||
"archived": "Archived",
|
||||
"delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
|
||||
"delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
|
||||
"hide-checked-items": "Hide checked items"
|
||||
}
|
||||
+44
-6
@@ -152,8 +152,6 @@
|
||||
"card-spent": "Изработено време",
|
||||
"card-edit-attachments": "Промени прикачените файлове",
|
||||
"card-edit-custom-fields": "Промени собствените полета",
|
||||
"card-start-voting": "Start voting",
|
||||
"card-cancel-voting": "Delete voting and all votes",
|
||||
"card-edit-labels": "Промени етикетите",
|
||||
"card-edit-members": "Промени членовете",
|
||||
"card-labels-title": "Промени етикетите за картата.",
|
||||
@@ -166,10 +164,15 @@
|
||||
"cardStartVotingPopup-title": "Start a vote",
|
||||
"positiveVoteMembersPopup-title": "Proponents",
|
||||
"negativeVoteMembersPopup-title": "Opponents",
|
||||
"card-edit-voting": "Edit voting",
|
||||
"editVoteEndDatePopup-title": "Change vote end date",
|
||||
"allowNonBoardMembers": "Allow all logged in users",
|
||||
"vote-question": "Voting question",
|
||||
"vote-public": "Public vote",
|
||||
"vote-public": "Show who voted what",
|
||||
"vote-for-it": "for it",
|
||||
"vote-against": "against",
|
||||
"deleteVotePopup-title": "Delete vote?",
|
||||
"vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
|
||||
"cardDeletePopup-title": "Желаете да изтриете картата?",
|
||||
"cardDetailsActionsPopup-title": "Опции",
|
||||
"cardLabelsPopup-title": "Етикети",
|
||||
@@ -253,6 +256,8 @@
|
||||
"current": "сегашен",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Чекбокс",
|
||||
"custom-field-currency": "Currency",
|
||||
"custom-field-currency-option": "Currency Code",
|
||||
"custom-field-date": "Дата",
|
||||
"custom-field-dropdown": "Падащо меню",
|
||||
"custom-field-dropdown-none": "(няма)",
|
||||
@@ -306,6 +311,7 @@
|
||||
"error-board-notAMember": "За да направите това трябва да сте член на това табло",
|
||||
"error-json-malformed": "Текстът Ви не е валиден JSON",
|
||||
"error-json-schema": "JSON информацията Ви не съдържа информация във валиден формат",
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format",
|
||||
"error-list-doesNotExist": "Този списък не съществува",
|
||||
"error-user-doesNotExist": "Този потребител не съществува",
|
||||
"error-user-notAllowSelf": "Не можете да поканите себе си",
|
||||
@@ -313,6 +319,11 @@
|
||||
"error-username-taken": "Това потребителско име е вече заето",
|
||||
"error-email-taken": "Имейлът е вече зает",
|
||||
"export-board": "Експортиране на Табло",
|
||||
"export-board-json": "Export board to JSON",
|
||||
"export-board-csv": "Export board to CSV",
|
||||
"export-board-tsv": "Export board to TSV",
|
||||
"export-board-html": "Export board to HTML",
|
||||
"exportBoardPopup-title": "Експортиране на Табло",
|
||||
"sort": "Sort",
|
||||
"sort-desc": "Click to Sort List",
|
||||
"list-sort-by": "Sort the List By:",
|
||||
@@ -326,15 +337,20 @@
|
||||
"filter-cards": "Filter Cards or Lists",
|
||||
"list-filter-label": "Filter List by Title",
|
||||
"filter-clear": "Премахване на филтрите",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "без етикет",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "без член",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "No assignee",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "Няма Собствени полета",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Има приложени филтри",
|
||||
"filter-on-desc": "В момента филтрирате картите в това табло. Моля, натиснете тук, за да промените филтъра.",
|
||||
"filter-to-selection": "Филтрирай избраните",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Advanced Filter",
|
||||
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
|
||||
"fullname": "Име",
|
||||
@@ -343,17 +359,22 @@
|
||||
"headerBarCreateBoardPopup-title": "Създай Табло",
|
||||
"home": "Начало",
|
||||
"import": "Импорт",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Връзка",
|
||||
"import-board": "Импортирай Табло",
|
||||
"import-board-c": "Импортирай Табло",
|
||||
"import-board-title-trello": "Импорт на табло от Trello",
|
||||
"import-board-title-wekan": "Import board from previous export",
|
||||
"import-board-title-csv": "Import board from CSV/TSV",
|
||||
"from-trello": "От Trello",
|
||||
"from-wekan": "From previous export",
|
||||
"from-csv": "From CSV/TSV",
|
||||
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
|
||||
"import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
|
||||
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
|
||||
"import-json-placeholder": "Копирайте валидната Ви JSON информация тук",
|
||||
"import-csv-placeholder": "Paste your valid CSV/TSV data here",
|
||||
"import-map-members": "Map members",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
|
||||
"import-show-user-mapping": "Review members mapping",
|
||||
@@ -383,9 +404,11 @@
|
||||
"list-select-cards": "Избери всички карти в този списък",
|
||||
"set-color-list": "Set Color",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"listImportCardPopup-title": "Импорт на карта от Trello",
|
||||
"listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
|
||||
"listMorePopup-title": "Още",
|
||||
"link-list": "Връзка към този списък",
|
||||
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
|
||||
@@ -404,6 +427,8 @@
|
||||
"moveCardToTop-title": "Премести в началото",
|
||||
"moveSelectionPopup-title": "Move selection",
|
||||
"multi-selection": "Множествен избор",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Множественият избор е приложен",
|
||||
"muted": "Muted",
|
||||
"muted-info": "You will never be notified of any changes in this board",
|
||||
@@ -449,7 +474,7 @@
|
||||
"search": "Търсене",
|
||||
"rules": "Правила",
|
||||
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Избери цвят",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Въведи WIP лимит",
|
||||
@@ -622,10 +647,12 @@
|
||||
"r-delete-rule": "Изтрий правилото",
|
||||
"r-new-rule-name": "Заглавие за новото правило",
|
||||
"r-no-rules": "Няма правила",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "Когато карта",
|
||||
"r-is": "е",
|
||||
"r-is-moved": "преместена",
|
||||
"r-added-to": "добавена в",
|
||||
"r-added-to": "Added to",
|
||||
"r-removed-from": "премахната от",
|
||||
"r-the-board": "таблото",
|
||||
"r-list": "списък",
|
||||
@@ -673,6 +700,7 @@
|
||||
"r-of-checklist": "of checklist",
|
||||
"r-send-email": "Send an email",
|
||||
"r-to": "to",
|
||||
"r-of": "of",
|
||||
"r-subject": "subject",
|
||||
"r-rule-details": "Детайли за правилото",
|
||||
"r-d-move-to-top-gen": "Move card to top of its list",
|
||||
@@ -782,5 +810,15 @@
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday"
|
||||
"sunday": "Sunday",
|
||||
"status": "Status",
|
||||
"swimlane": "Swimlane",
|
||||
"owner": "Owner",
|
||||
"last-modified-at": "Last modified at",
|
||||
"last-activity": "Last activity",
|
||||
"voting": "Voting",
|
||||
"archived": "Archived",
|
||||
"delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
|
||||
"delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
|
||||
"hide-checked-items": "Hide checked items"
|
||||
}
|
||||
+44
-6
@@ -152,8 +152,6 @@
|
||||
"card-spent": "Spent Time",
|
||||
"card-edit-attachments": "Edit attachments",
|
||||
"card-edit-custom-fields": "Edit custom fields",
|
||||
"card-start-voting": "Start voting",
|
||||
"card-cancel-voting": "Delete voting and all votes",
|
||||
"card-edit-labels": "Edit labels",
|
||||
"card-edit-members": "Edit members",
|
||||
"card-labels-title": "Change the labels for the card.",
|
||||
@@ -166,10 +164,15 @@
|
||||
"cardStartVotingPopup-title": "Start a vote",
|
||||
"positiveVoteMembersPopup-title": "Proponents",
|
||||
"negativeVoteMembersPopup-title": "Opponents",
|
||||
"card-edit-voting": "Edit voting",
|
||||
"editVoteEndDatePopup-title": "Change vote end date",
|
||||
"allowNonBoardMembers": "Allow all logged in users",
|
||||
"vote-question": "Voting question",
|
||||
"vote-public": "Public vote",
|
||||
"vote-public": "Show who voted what",
|
||||
"vote-for-it": "for it",
|
||||
"vote-against": "against",
|
||||
"deleteVotePopup-title": "Delete vote?",
|
||||
"vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
|
||||
"cardDeletePopup-title": "Diverkañ ar gartenn ?",
|
||||
"cardDetailsActionsPopup-title": "Card Actions",
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
@@ -253,6 +256,8 @@
|
||||
"current": "current",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
"custom-field-currency-option": "Currency Code",
|
||||
"custom-field-date": "Date",
|
||||
"custom-field-dropdown": "Dropdown List",
|
||||
"custom-field-dropdown-none": "(none)",
|
||||
@@ -306,6 +311,7 @@
|
||||
"error-board-notAMember": "You need to be a member of this board to do that",
|
||||
"error-json-malformed": "Your text is not valid JSON",
|
||||
"error-json-schema": "Your JSON data does not include the proper information in the correct format",
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
@@ -313,6 +319,11 @@
|
||||
"error-username-taken": "This username is already taken",
|
||||
"error-email-taken": "Email has already been taken",
|
||||
"export-board": "Export board",
|
||||
"export-board-json": "Export board to JSON",
|
||||
"export-board-csv": "Export board to CSV",
|
||||
"export-board-tsv": "Export board to TSV",
|
||||
"export-board-html": "Export board to HTML",
|
||||
"exportBoardPopup-title": "Export board",
|
||||
"sort": "Sort",
|
||||
"sort-desc": "Click to Sort List",
|
||||
"list-sort-by": "Sort the List By:",
|
||||
@@ -326,15 +337,20 @@
|
||||
"filter-cards": "Filter Cards or Lists",
|
||||
"list-filter-label": "Filter List by Title",
|
||||
"filter-clear": "Clear filter",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "No label",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "No member",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "No assignee",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Advanced Filter",
|
||||
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
|
||||
"fullname": "Full Name",
|
||||
@@ -343,17 +359,22 @@
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Link",
|
||||
"import-board": "import board",
|
||||
"import-board-c": "Import board",
|
||||
"import-board-title-trello": "Import board from Trello",
|
||||
"import-board-title-wekan": "Import board from previous export",
|
||||
"import-board-title-csv": "Import board from CSV/TSV",
|
||||
"from-trello": "From Trello",
|
||||
"from-wekan": "From previous export",
|
||||
"from-csv": "From CSV/TSV",
|
||||
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text",
|
||||
"import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
|
||||
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
|
||||
"import-json-placeholder": "Paste your valid JSON data here",
|
||||
"import-csv-placeholder": "Paste your valid CSV/TSV data here",
|
||||
"import-map-members": "Map members",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
|
||||
"import-show-user-mapping": "Review members mapping",
|
||||
@@ -383,9 +404,11 @@
|
||||
"list-select-cards": "Select all cards in this list",
|
||||
"set-color-list": "Set Color",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
"listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
|
||||
"listMorePopup-title": "Muioc’h",
|
||||
"link-list": "Link to this list",
|
||||
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
|
||||
@@ -404,6 +427,8 @@
|
||||
"moveCardToTop-title": "Move to Top",
|
||||
"moveSelectionPopup-title": "Move selection",
|
||||
"multi-selection": "Multi-Selection",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Multi-Selection is on",
|
||||
"muted": "Muted",
|
||||
"muted-info": "You will never be notified of any changes in this board",
|
||||
@@ -449,7 +474,7 @@
|
||||
"search": "Search",
|
||||
"rules": "Rules",
|
||||
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
@@ -622,10 +647,12 @@
|
||||
"r-delete-rule": "Delete rule",
|
||||
"r-new-rule-name": "New rule title",
|
||||
"r-no-rules": "No rules",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
"r-is": "is",
|
||||
"r-is-moved": "is moved",
|
||||
"r-added-to": "added to",
|
||||
"r-added-to": "Added to",
|
||||
"r-removed-from": "Removed from",
|
||||
"r-the-board": "the board",
|
||||
"r-list": "list",
|
||||
@@ -673,6 +700,7 @@
|
||||
"r-of-checklist": "of checklist",
|
||||
"r-send-email": "Send an email",
|
||||
"r-to": "to",
|
||||
"r-of": "of",
|
||||
"r-subject": "subject",
|
||||
"r-rule-details": "Rule details",
|
||||
"r-d-move-to-top-gen": "Move card to top of its list",
|
||||
@@ -782,5 +810,15 @@
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday"
|
||||
"sunday": "Sunday",
|
||||
"status": "Status",
|
||||
"swimlane": "Swimlane",
|
||||
"owner": "Owner",
|
||||
"last-modified-at": "Last modified at",
|
||||
"last-activity": "Last activity",
|
||||
"voting": "Voting",
|
||||
"archived": "Archived",
|
||||
"delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
|
||||
"delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
|
||||
"hide-checked-items": "Hide checked items"
|
||||
}
|
||||
+44
-6
@@ -152,8 +152,6 @@
|
||||
"card-spent": "Temps Dedicat",
|
||||
"card-edit-attachments": "Edita arxius adjunts",
|
||||
"card-edit-custom-fields": "Editar camps personalitzats",
|
||||
"card-start-voting": "Start voting",
|
||||
"card-cancel-voting": "Delete voting and all votes",
|
||||
"card-edit-labels": "Edita etiquetes",
|
||||
"card-edit-members": "Edita membres",
|
||||
"card-labels-title": "Canvia les etiquetes de la fitxa",
|
||||
@@ -166,10 +164,15 @@
|
||||
"cardStartVotingPopup-title": "Start a vote",
|
||||
"positiveVoteMembersPopup-title": "Proponents",
|
||||
"negativeVoteMembersPopup-title": "Opponents",
|
||||
"card-edit-voting": "Edit voting",
|
||||
"editVoteEndDatePopup-title": "Change vote end date",
|
||||
"allowNonBoardMembers": "Allow all logged in users",
|
||||
"vote-question": "Voting question",
|
||||
"vote-public": "Public vote",
|
||||
"vote-public": "Show who voted what",
|
||||
"vote-for-it": "for it",
|
||||
"vote-against": "against",
|
||||
"deleteVotePopup-title": "Delete vote?",
|
||||
"vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
|
||||
"cardDeletePopup-title": "Esborrar fitxa?",
|
||||
"cardDetailsActionsPopup-title": "Accions de fitxes",
|
||||
"cardLabelsPopup-title": "Etiquetes",
|
||||
@@ -253,6 +256,8 @@
|
||||
"current": "Actual",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
"custom-field-currency-option": "Currency Code",
|
||||
"custom-field-date": "Data",
|
||||
"custom-field-dropdown": "Dropdown List",
|
||||
"custom-field-dropdown-none": "(none)",
|
||||
@@ -306,6 +311,7 @@
|
||||
"error-board-notAMember": "Necessites ser membre d'aquest tauler per dur a terme aquesta acció",
|
||||
"error-json-malformed": "El text no és JSON vàlid",
|
||||
"error-json-schema": "La dades JSON no contenen la informació en el format correcte",
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format",
|
||||
"error-list-doesNotExist": "La llista no existeix",
|
||||
"error-user-doesNotExist": "L'usuari no existeix",
|
||||
"error-user-notAllowSelf": "No et pots convidar a tu mateix",
|
||||
@@ -313,6 +319,11 @@
|
||||
"error-username-taken": "Aquest usuari ja existeix",
|
||||
"error-email-taken": "L'adreça de correu electrònic ja és en ús",
|
||||
"export-board": "Exporta tauler",
|
||||
"export-board-json": "Export board to JSON",
|
||||
"export-board-csv": "Export board to CSV",
|
||||
"export-board-tsv": "Export board to TSV",
|
||||
"export-board-html": "Export board to HTML",
|
||||
"exportBoardPopup-title": "Exporta tauler",
|
||||
"sort": "Sort",
|
||||
"sort-desc": "Click to Sort List",
|
||||
"list-sort-by": "Sort the List By:",
|
||||
@@ -326,15 +337,20 @@
|
||||
"filter-cards": "Filter Cards or Lists",
|
||||
"list-filter-label": "Filter List by Title",
|
||||
"filter-clear": "Elimina filtre",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "Sense etiqueta",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "Sense membres",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "No assignee",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filtra per",
|
||||
"filter-on-desc": "Estau filtrant fitxes en aquest tauler. Feu clic aquí per editar el filtre.",
|
||||
"filter-to-selection": "Filtra selecció",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Filtre avançat",
|
||||
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
|
||||
"fullname": "Nom complet",
|
||||
@@ -343,17 +359,22 @@
|
||||
"headerBarCreateBoardPopup-title": "Crea tauler",
|
||||
"home": "Inici",
|
||||
"import": "importa",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Enllaç",
|
||||
"import-board": "Importa tauler",
|
||||
"import-board-c": "Importa tauler",
|
||||
"import-board-title-trello": "Importa tauler des de Trello",
|
||||
"import-board-title-wekan": "Import board from previous export",
|
||||
"import-board-title-csv": "Import board from CSV/TSV",
|
||||
"from-trello": "Des de Trello",
|
||||
"from-wekan": "From previous export",
|
||||
"from-csv": "From CSV/TSV",
|
||||
"import-board-instruction-trello": "En el teu tauler Trello, ves a 'Menú', 'Més'.' Imprimir i Exportar', 'Exportar JSON', i copia el text resultant.",
|
||||
"import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
|
||||
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
|
||||
"import-json-placeholder": "Aferra codi JSON vàlid aquí",
|
||||
"import-csv-placeholder": "Paste your valid CSV/TSV data here",
|
||||
"import-map-members": "Mapeja el membres",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
|
||||
"import-show-user-mapping": "Revisa l'assignació de membres",
|
||||
@@ -383,9 +404,11 @@
|
||||
"list-select-cards": "Selecciona totes les fitxes d'aquesta llista",
|
||||
"set-color-list": "Set Color",
|
||||
"listActionPopup-title": "Accions de la llista",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Accions de Carril de Natació",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"listImportCardPopup-title": "importa una fitxa de Trello",
|
||||
"listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
|
||||
"listMorePopup-title": "Més",
|
||||
"link-list": "Enllaça a aquesta llista",
|
||||
"list-delete-pop": "Totes les accions seran esborrades de la llista d'activitats i no serà possible recuperar la llista",
|
||||
@@ -404,6 +427,8 @@
|
||||
"moveCardToTop-title": "Mou a la part superior",
|
||||
"moveSelectionPopup-title": "Move selection",
|
||||
"multi-selection": "Multi-Selecció",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Multi-Selecció està activada",
|
||||
"muted": "En silenci",
|
||||
"muted-info": "No seràs notificat dels canvis en aquest tauler",
|
||||
@@ -449,7 +474,7 @@
|
||||
"search": "Cerca",
|
||||
"rules": "Regles",
|
||||
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
|
||||
"search-example": "Text que cercar?",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Selecciona color",
|
||||
"set-wip-limit-value": "Limita el màxim nombre de tasques en aquesta llista",
|
||||
"setWipLimitPopup-title": "Configura el Límit de Treball en Progrès",
|
||||
@@ -622,10 +647,12 @@
|
||||
"r-delete-rule": "Delete rule",
|
||||
"r-new-rule-name": "New rule title",
|
||||
"r-no-rules": "No hi han regles",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
"r-is": "is",
|
||||
"r-is-moved": "is moved",
|
||||
"r-added-to": "added to",
|
||||
"r-added-to": "Added to",
|
||||
"r-removed-from": "Removed from",
|
||||
"r-the-board": "the board",
|
||||
"r-list": "list",
|
||||
@@ -673,6 +700,7 @@
|
||||
"r-of-checklist": "of checklist",
|
||||
"r-send-email": "Send an email",
|
||||
"r-to": "to",
|
||||
"r-of": "of",
|
||||
"r-subject": "subject",
|
||||
"r-rule-details": "Rule details",
|
||||
"r-d-move-to-top-gen": "Move card to top of its list",
|
||||
@@ -782,5 +810,15 @@
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday"
|
||||
"sunday": "Sunday",
|
||||
"status": "Status",
|
||||
"swimlane": "Swimlane",
|
||||
"owner": "Owner",
|
||||
"last-modified-at": "Last modified at",
|
||||
"last-activity": "Last activity",
|
||||
"voting": "Voting",
|
||||
"archived": "Archived",
|
||||
"delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
|
||||
"delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
|
||||
"hide-checked-items": "Hide checked items"
|
||||
}
|
||||
+80
-42
@@ -73,7 +73,7 @@
|
||||
"activity-unchecked-item-card": "nedokončen %s v seznamu %s",
|
||||
"activity-checklist-completed-card": "dokončil(a) zaškrtávací seznam __checklist__ na kartě __card__ ve sloupci __list__ ve swimlane __swimlane__ na tablu __board__",
|
||||
"activity-checklist-uncompleted-card": "nedokončený seznam %s",
|
||||
"activity-editComment": "edited comment %s",
|
||||
"activity-editComment": "upravit komentář %s",
|
||||
"activity-deleteComment": "smazat komentář %s",
|
||||
"add-attachment": "Přidat přílohu",
|
||||
"add-board": "Přidat tablo",
|
||||
@@ -152,8 +152,6 @@
|
||||
"card-spent": "Strávený čas",
|
||||
"card-edit-attachments": "Upravit přílohy",
|
||||
"card-edit-custom-fields": "Upravit vlastní pole",
|
||||
"card-start-voting": "Start voting",
|
||||
"card-cancel-voting": "Delete voting and all votes",
|
||||
"card-edit-labels": "Upravit štítky",
|
||||
"card-edit-members": "Upravit členy",
|
||||
"card-labels-title": "Změnit štítky karty.",
|
||||
@@ -163,13 +161,18 @@
|
||||
"cardAttachmentsPopup-title": "Přiložit formulář",
|
||||
"cardCustomField-datePopup-title": "Změnit datum",
|
||||
"cardCustomFieldsPopup-title": "Upravit vlastní pole",
|
||||
"cardStartVotingPopup-title": "Start a vote",
|
||||
"positiveVoteMembersPopup-title": "Proponents",
|
||||
"negativeVoteMembersPopup-title": "Opponents",
|
||||
"vote-question": "Voting question",
|
||||
"vote-public": "Public vote",
|
||||
"vote-for-it": "for it",
|
||||
"vote-against": "against",
|
||||
"cardStartVotingPopup-title": "Začít hlasování",
|
||||
"positiveVoteMembersPopup-title": "Navrhovatelé",
|
||||
"negativeVoteMembersPopup-title": "Oponenti",
|
||||
"card-edit-voting": "Úprava hlasování",
|
||||
"editVoteEndDatePopup-title": "Změnit datum konce hlasování",
|
||||
"allowNonBoardMembers": "Povolit všechny přihlášené uživatele",
|
||||
"vote-question": "Otázka hlasování",
|
||||
"vote-public": "Ukázat kdo jak hlasoval",
|
||||
"vote-for-it": "pro",
|
||||
"vote-against": "proti",
|
||||
"deleteVotePopup-title": "Smazat hlas?",
|
||||
"vote-delete-pop": "Smazání je nevratné. Ztratíte vše spojené s tímto hlasováním.",
|
||||
"cardDeletePopup-title": "Smazat kartu?",
|
||||
"cardDetailsActionsPopup-title": "Akce karty",
|
||||
"cardLabelsPopup-title": "Štítky",
|
||||
@@ -232,7 +235,7 @@
|
||||
"comment-only-desc": "Může přidávat komentáře pouze do karet.",
|
||||
"no-comments": "Žádné komentáře",
|
||||
"no-comments-desc": "Nemůže vidět komentáře a aktivity",
|
||||
"worker": "Worker",
|
||||
"worker": "Pracovník",
|
||||
"worker-desc": "Can only move cards, assign itself to card and comment.",
|
||||
"computer": "Počítač",
|
||||
"confirm-subtask-delete-dialog": "Opravdu chcete smazat tento podúkol?",
|
||||
@@ -253,6 +256,8 @@
|
||||
"current": "Aktuální",
|
||||
"custom-field-delete-pop": "Nelze vrátit zpět. Toto odebere toto vlastní pole ze všech karet a zničí jeho historii.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Měna",
|
||||
"custom-field-currency-option": "Kód měny",
|
||||
"custom-field-date": "Datum",
|
||||
"custom-field-dropdown": "Rozbalovací seznam",
|
||||
"custom-field-dropdown-none": "(prázdné)",
|
||||
@@ -306,6 +311,7 @@
|
||||
"error-board-notAMember": "K provedení změny musíš být členem tohoto tabla",
|
||||
"error-json-malformed": "Tvůj text není validní JSON",
|
||||
"error-json-schema": "Tato JSON data neobsahují správné informace v platném formátu",
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format",
|
||||
"error-list-doesNotExist": "Tento sloupec ;neexistuje",
|
||||
"error-user-doesNotExist": "Tento uživatel neexistuje",
|
||||
"error-user-notAllowSelf": "Nemůžeš pozvat sám sebe",
|
||||
@@ -313,28 +319,38 @@
|
||||
"error-username-taken": "Toto uživatelské jméno již existuje",
|
||||
"error-email-taken": "Tento email byl již použit",
|
||||
"export-board": "Exportovat tablo",
|
||||
"export-board-json": "Exportovat tablo do JSON",
|
||||
"export-board-csv": "Exportovat tablo do CSV",
|
||||
"export-board-tsv": "Exportovat tablo do TSV",
|
||||
"export-board-html": "Exportovat tablo do HTML",
|
||||
"exportBoardPopup-title": "Exportovat tablo",
|
||||
"sort": "řadit",
|
||||
"sort-desc": "Click to Sort List",
|
||||
"sort-desc": "Kliknout pro třídění seznamu",
|
||||
"list-sort-by": "řadit seznam podle",
|
||||
"list-label-modifiedAt": "Last Access Time",
|
||||
"list-label-title": "Name of the List",
|
||||
"list-label-sort": "Your Manual Order",
|
||||
"list-label-modifiedAt": "Čas posledního přístupu",
|
||||
"list-label-title": "Název seznamu",
|
||||
"list-label-sort": "Vaše ruční uspořádání",
|
||||
"list-label-short-modifiedAt": "(L)",
|
||||
"list-label-short-title": "(N)",
|
||||
"list-label-short-sort": "(M)",
|
||||
"filter": "Filtr",
|
||||
"filter-cards": "Filter Cards or Lists",
|
||||
"list-filter-label": "Filter List by Title",
|
||||
"filter-cards": "Filtrovat karty nebo seznamy",
|
||||
"list-filter-label": "Filtrovat seznam podle názvu",
|
||||
"filter-clear": "Vyčistit filtr",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "Žádný štítek",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "Žádný člen",
|
||||
"filter-no-assignee": "No assignee",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "Bez řešitele",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "Žádné vlastní pole",
|
||||
"filter-show-archive": "Zobrazit archivované listy",
|
||||
"filter-hide-empty": "Skrýt prázdné listy",
|
||||
"filter-on": "Filtr je zapnut",
|
||||
"filter-on-desc": "Filtrujete karty tohoto tabla. Pro úpravu filtru klikni sem.",
|
||||
"filter-to-selection": "Filtrovat výběr",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Pokročilý filtr",
|
||||
"advanced-filter-description": "Pokročilý filtr dovoluje zapsat řetězec následujících operátorů: == != <= >= && || () Operátory jsou odděleny mezerou. Můžete filtrovat všechny vlastní pole zadáním jejich názvů nebo hodnot. Například: Pole1 == Hodnota1. Poznámka: Pokud pole nebo hodnoty obsahují mezery, je potřeba je obalit v jednoduchých uvozovkách. Například: 'Pole 1' == 'Hodnota 1'. Pro ignorovaní kontrolních znaků (' \\ /) je možné použít \\. Například Pole1 == I\\'m. Můžete také kombinovat více podmínek. Například P1 == H1 || P1 == H2. Obvykle jsou operátory interpretovány zleva doprava. Jejich pořadí můžete měnit pomocí závorek. Například: P1 == H1 && ( P2 == H2 || P2 == H3 )",
|
||||
"fullname": "Celé jméno",
|
||||
@@ -343,17 +359,22 @@
|
||||
"headerBarCreateBoardPopup-title": "Vytvořit tablo",
|
||||
"home": "Domů",
|
||||
"import": "Import",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Propojit",
|
||||
"import-board": "Importovat tablo",
|
||||
"import-board-c": "Importovat tablo",
|
||||
"import-board-title-trello": "Import board from Trello",
|
||||
"import-board-title-wekan": "Importovat tablo z předchozího exportu",
|
||||
"import-board-title-csv": "Importovat tablo z CSV/TSV",
|
||||
"from-trello": "Z Trella",
|
||||
"from-wekan": "Z předchozího exportu",
|
||||
"from-csv": "Z CSV/TSV",
|
||||
"import-board-instruction-trello": "Na svém Trello tablu, otevři 'Menu', pak 'More', 'Print and Export', 'Export JSON', a zkopíruj výsledný text",
|
||||
"import-board-instruction-csv": "Vložit do vašeho Comma Separated Values (CSV)/ Tab Separated Values (TSV).",
|
||||
"import-board-instruction-wekan": "Ve vašem tablu jděte do 'Menu', klikněte na 'Exportovat tablo' a zkopírujte text ze staženého souboru.",
|
||||
"import-board-instruction-about-errors": "Někdy import funguje i přestože dostáváte chyby při importování tabla, které se zobrazí na stránce Všechna tabla.",
|
||||
"import-json-placeholder": "Sem vlož validní JSON data",
|
||||
"import-csv-placeholder": "Zde vložte vaše platné CSV/TSV data",
|
||||
"import-map-members": "Mapovat členy",
|
||||
"import-members-map": "Toto importované tablo obsahuje několik osob. Prosím namapujte osoby z importu na místní uživatelské účty.",
|
||||
"import-show-user-mapping": "Zkontrolovat namapování členů",
|
||||
@@ -383,9 +404,11 @@
|
||||
"list-select-cards": "Vybrat všechny karty v tomto sloupci",
|
||||
"set-color-list": "Nastavit barvu",
|
||||
"listActionPopup-title": "Vypsat akce",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Akce swimlane",
|
||||
"swimlaneAddPopup-title": "Přidat swimlane dolů",
|
||||
"listImportCardPopup-title": "Importovat Trello kartu",
|
||||
"listImportCardsTsvPopup-title": "Importovat Excel CSV/TSV",
|
||||
"listMorePopup-title": "Více",
|
||||
"link-list": "Odkaz na tento sloupec",
|
||||
"list-delete-pop": "Všechny akce budou odstraněny z kanálu aktivity a nebude možné sloupec obnovit. Toto nelze vrátit zpět.",
|
||||
@@ -404,6 +427,8 @@
|
||||
"moveCardToTop-title": "Přesunout nahoru",
|
||||
"moveSelectionPopup-title": "Přesunout výběr",
|
||||
"multi-selection": "Multi-výběr",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Multi-výběr je zapnut",
|
||||
"muted": "Umlčeno",
|
||||
"muted-info": "Nikdy nedostanete oznámení o změně v tomto tablu.",
|
||||
@@ -448,8 +473,8 @@
|
||||
"save": "Uložit",
|
||||
"search": "Hledat",
|
||||
"rules": "Pravidla",
|
||||
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
|
||||
"search-example": "Hledaný text",
|
||||
"search-cards": "Hledání napříč názvy karet/seznamů, popisy a vlasními poli tohoto tabla",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Vybrat barvu",
|
||||
"set-wip-limit-value": "Nastaví limit pro maximální počet úkolů ve sloupci.",
|
||||
"setWipLimitPopup-title": "Nastavit WIP Limit",
|
||||
@@ -533,7 +558,7 @@
|
||||
"error-invitation-code-not-exist": "Kód pozvánky neexistuje.",
|
||||
"error-notAuthorized": "Nejste autorizován k prohlížení této stránky.",
|
||||
"webhook-title": "Webhook Name",
|
||||
"webhook-token": "Token (Optional for Authentication)",
|
||||
"webhook-token": "Token (Volitelné pro autentizaci)",
|
||||
"outgoing-webhooks": "Odchozí Webhooky",
|
||||
"bidirectional-webhooks": "Two-Way Webhooks",
|
||||
"outgoingWebhooksPopup-title": "Odchozí Webhooky",
|
||||
@@ -591,9 +616,9 @@
|
||||
"default": "Výchozí",
|
||||
"queue": "Fronta",
|
||||
"subtask-settings": "Nastavení podúkolů",
|
||||
"card-settings": "Card Settings",
|
||||
"card-settings": "Nastavení karet",
|
||||
"boardSubtaskSettingsPopup-title": "Nastavení podúkolů tabla",
|
||||
"boardCardSettingsPopup-title": "Card Settings",
|
||||
"boardCardSettingsPopup-title": "Nastavení karet",
|
||||
"deposit-subtasks-board": "Vložit podúkoly do tohoto tabla",
|
||||
"deposit-subtasks-list": "Landing list for subtasks deposited here:",
|
||||
"show-parent-in-minicard": "Ukázat předka na minikartě",
|
||||
@@ -622,10 +647,12 @@
|
||||
"r-delete-rule": "Smazat pravidlo",
|
||||
"r-new-rule-name": "Nový název pravidla",
|
||||
"r-no-rules": "Žádná pravidla",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "Pokud karta",
|
||||
"r-is": "je",
|
||||
"r-is-moved": "je přesunuto",
|
||||
"r-added-to": "přidáno do",
|
||||
"r-added-to": "Added to",
|
||||
"r-removed-from": "Odstraněno z",
|
||||
"r-the-board": "tablo",
|
||||
"r-list": "sloupce",
|
||||
@@ -673,6 +700,7 @@
|
||||
"r-of-checklist": "ze zaškrtávacího seznamu",
|
||||
"r-send-email": "Odeslat e-mail",
|
||||
"r-to": "komu",
|
||||
"r-of": "of",
|
||||
"r-subject": "předmět",
|
||||
"r-rule-details": "Podrobnosti pravidla",
|
||||
"r-d-move-to-top-gen": "Přesunout kartu na začátek toho sloupce",
|
||||
@@ -710,14 +738,14 @@
|
||||
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
|
||||
"r-when-a-card-is-moved": "Když je karta přesunuta do jiného sloupce",
|
||||
"r-set": "Set",
|
||||
"r-update": "Update",
|
||||
"r-datefield": "date field",
|
||||
"r-update": "Aktualizovat",
|
||||
"r-datefield": "pole datum",
|
||||
"r-df-start-at": "začátek",
|
||||
"r-df-due-at": "due",
|
||||
"r-df-due-at": "do",
|
||||
"r-df-end-at": "konec",
|
||||
"r-df-received-at": "received",
|
||||
"r-df-received-at": "přijato",
|
||||
"r-to-current-datetime": "to current date/time",
|
||||
"r-remove-value-from": "Remove value from",
|
||||
"r-remove-value-from": "Odstranit hodnotu z",
|
||||
"ldap": "LDAP",
|
||||
"oauth2": "OAuth2",
|
||||
"cas": "CAS",
|
||||
@@ -739,7 +767,7 @@
|
||||
"restore-all": "Restore all",
|
||||
"delete-all": "Delete all",
|
||||
"loading": "Loading, please wait.",
|
||||
"previous_as": "last time was",
|
||||
"previous_as": "naposledy bylo",
|
||||
"act-a-dueAt": "modified due time to \nWhen: __timeValue__\nWhere: __card__\n previous due was __timeOldValue__",
|
||||
"act-a-endAt": "modified ending time to __timeValue__ from (__timeOldValue__)",
|
||||
"act-a-startAt": "modified starting time to __timeValue__ from (__timeOldValue__)",
|
||||
@@ -761,8 +789,8 @@
|
||||
"accounts-allowUserDelete": "Dovolit uživatelům smazat vlastní účet",
|
||||
"hide-minicard-label-text": "Hide minicard label text",
|
||||
"show-desktop-drag-handles": "Show desktop drag handles",
|
||||
"assignee": "Assignee",
|
||||
"cardAssigneesPopup-title": "Assignee",
|
||||
"assignee": "Řešitel",
|
||||
"cardAssigneesPopup-title": "Řešitel",
|
||||
"addmore-detail": "Přidat detailnější popis",
|
||||
"show-on-card": "Zobrazit na kartě",
|
||||
"new": "Nový",
|
||||
@@ -770,17 +798,27 @@
|
||||
"newUserPopup-title": "Nový uživatel",
|
||||
"notifications": "Upozornění",
|
||||
"view-all": "Zobrazit vše",
|
||||
"filter-by-unread": "Filter by Unread",
|
||||
"filter-by-unread": "Zobrazit nepřečtené",
|
||||
"mark-all-as-read": "Označit vše jako přečtené",
|
||||
"remove-all-read": "Remove all read",
|
||||
"remove-all-read": "Odstranit přečtené",
|
||||
"allow-rename": "Povolit přejmenování",
|
||||
"allowRenamePopup-title": "Povolit přejmenování",
|
||||
"start-day-of-week": "Set day of the week start",
|
||||
"monday": "Monday",
|
||||
"tuesday": "Tuesday",
|
||||
"wednesday": "Wednesday",
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday"
|
||||
"start-day-of-week": "Nastavit první den týdne",
|
||||
"monday": "Pondělí",
|
||||
"tuesday": "Úterý",
|
||||
"wednesday": "Středa",
|
||||
"thursday": "Čtvrtek",
|
||||
"friday": "Pátek",
|
||||
"saturday": "Sobota",
|
||||
"sunday": "Neděle",
|
||||
"status": "Stav",
|
||||
"swimlane": "Dráha",
|
||||
"owner": "Vlastník",
|
||||
"last-modified-at": "Naposledy změněno",
|
||||
"last-activity": "Poslední aktivita",
|
||||
"voting": "Hlasování",
|
||||
"archived": "Archivováno",
|
||||
"delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
|
||||
"delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
|
||||
"hide-checked-items": "Skrýt zvolené položky"
|
||||
}
|
||||
+44
-6
@@ -152,8 +152,6 @@
|
||||
"card-spent": "Anvendt tid",
|
||||
"card-edit-attachments": "Redigér vedhæftninger",
|
||||
"card-edit-custom-fields": "Redigér brugerdefinerede felter",
|
||||
"card-start-voting": "Start stemmegivning",
|
||||
"card-cancel-voting": "Slet stemmegivning og alle stemmer",
|
||||
"card-edit-labels": "Redigér etiketter",
|
||||
"card-edit-members": "Redigér medlemmer",
|
||||
"card-labels-title": "Ændr etiketter for kortet.",
|
||||
@@ -166,10 +164,15 @@
|
||||
"cardStartVotingPopup-title": "Start en stemmeafgivning",
|
||||
"positiveVoteMembersPopup-title": "Tilhængere",
|
||||
"negativeVoteMembersPopup-title": "Modstandere",
|
||||
"card-edit-voting": "Redigér stemmeafgivelse",
|
||||
"editVoteEndDatePopup-title": "Skift slutdato for afstemning",
|
||||
"allowNonBoardMembers": "Tillad alle brugere som er logget ind",
|
||||
"vote-question": "Spørgsmål til afstemning",
|
||||
"vote-public": "Offentlig stemmegivning",
|
||||
"vote-public": "Vis hvem som stemte hvad",
|
||||
"vote-for-it": "går ind for",
|
||||
"vote-against": "går imod",
|
||||
"deleteVotePopup-title": "Slet afstemning?",
|
||||
"vote-delete-pop": "Sletning er permanent. Du mister alle handlinger knyttet til denne afstemning.",
|
||||
"cardDeletePopup-title": "Slet kort?",
|
||||
"cardDetailsActionsPopup-title": "Handlinger for kort",
|
||||
"cardLabelsPopup-title": "Etiketter",
|
||||
@@ -253,6 +256,8 @@
|
||||
"current": "nuværende",
|
||||
"custom-field-delete-pop": "Du kan ikke fortryde handlingen. Dette vil fjerne dette brugerdefinerede felt fra alle kort og tilintetgøre dens historik.",
|
||||
"custom-field-checkbox": "Afkrydsningsfelt",
|
||||
"custom-field-currency": "Currency",
|
||||
"custom-field-currency-option": "Currency Code",
|
||||
"custom-field-date": "Dato",
|
||||
"custom-field-dropdown": "Rullegardinliste",
|
||||
"custom-field-dropdown-none": "(ingen)",
|
||||
@@ -306,6 +311,7 @@
|
||||
"error-board-notAMember": "Du skal være medlem af denne tavle for at gøre dette",
|
||||
"error-json-malformed": "Din tekst er ikke gyldig JSON",
|
||||
"error-json-schema": "Dine JSON-data indeholder ikke den rette information i det rette format",
|
||||
"error-csv-schema": "Din CSV (kommaseparerede værdier)/TSV (Tabulatorseparerede værdier) indeholder ikke den rette information i det korrekte format",
|
||||
"error-list-doesNotExist": "Listen findes ikke",
|
||||
"error-user-doesNotExist": "Brugeren findes ikke",
|
||||
"error-user-notAllowSelf": "Du kan ikke invitere dig selv",
|
||||
@@ -313,6 +319,11 @@
|
||||
"error-username-taken": "Brugernavnet er optaget",
|
||||
"error-email-taken": "E-mailadressen er allerede optaget",
|
||||
"export-board": "Eksportér tavle",
|
||||
"export-board-json": "Eksportér tavle til JSON",
|
||||
"export-board-csv": "Eksportér tavle til CSV",
|
||||
"export-board-tsv": "Eksportér tavle til TSV",
|
||||
"export-board-html": "Eksportér tavle til HTML",
|
||||
"exportBoardPopup-title": "Eksportér tavle",
|
||||
"sort": "Sortér",
|
||||
"sort-desc": "Klik for at sortere listen",
|
||||
"list-sort-by": "Sortér listen efter:",
|
||||
@@ -326,15 +337,20 @@
|
||||
"filter-cards": "Filtrér kort eller lister",
|
||||
"list-filter-label": "Filtrér lister efter titel",
|
||||
"filter-clear": "Ryd filter",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "Ingen etikette",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "Ingen medlemmer",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "Utildelt",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "Ingen brugerdefinerede felter",
|
||||
"filter-show-archive": "Vis arkiverede lister",
|
||||
"filter-hide-empty": "Skjul tomme lister",
|
||||
"filter-on": "Filter er slået til",
|
||||
"filter-on-desc": "Du filtrerer kort på denne tavle. Klik her for at redigere filteret.",
|
||||
"filter-to-selection": "Filtrér til valgte",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Avanceret filter",
|
||||
"advanced-filter-description": "Avanceret filter gør det muligt at skrive en tekststreng indeholdende følgende operatører: == != <= >= && || ( ) Mellemrum anvendes som adskillelsestegn mellem operatørerne. Du kan filtrere alle Brugerdefinerede felter ved at taste deres navne og værdier. Som eksempel: Felt1 == Værdi1. Bemærk: Hvis felter eller værdier indeholder mellemrum, så skal du indkapsle dem i enkeltcitationstegn. Som eksempel: 'Felt 1' == 'Værdi1'. For at springe over enkelte kontroltegn (' \\/), så kan \\ benyttes. Som eksempel: Felt1 == Så\\'n. Du kan også kombinere flere betingelser. Som eksempel: F1 == V1 || F1 == V2. Normalt vil alle operatører blive fortolket fra venstre mod højre. Du kan ændre rækkefølgen ved brug af parenteser. Som eksempel: F1 == V1 && (F2 == V2 || F2 == V3). Du kan også søge i tekstfelter med brug af regulære udtryk: F1 == /Tes.*/i",
|
||||
"fullname": "Fuldt navn",
|
||||
@@ -343,17 +359,22 @@
|
||||
"headerBarCreateBoardPopup-title": "Opret tavle",
|
||||
"home": "Hjem",
|
||||
"import": "Importér",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Link",
|
||||
"import-board": "importér tavle",
|
||||
"import-board-c": "Importér tavle",
|
||||
"import-board-title-trello": "Importér tavle fra Trello",
|
||||
"import-board-title-wekan": "Importér tavler fra tidligere eksport",
|
||||
"import-board-title-csv": "Importér tavle fra CSV/TSV",
|
||||
"from-trello": "Fra Trello",
|
||||
"from-wekan": "Fra forrige eksport",
|
||||
"from-csv": "Fra CSV/TSV",
|
||||
"import-board-instruction-trello": "I din Trello-tavle, gå til 'Menu', dernæst 'More', 'Print and Export', 'Export JSON', og kopiér den tekst som vises.",
|
||||
"import-board-instruction-csv": "Indsæt dine kommaseparerede værdier (CSV)/ Tabulatorseparerede værdier (TSV).",
|
||||
"import-board-instruction-wekan": "På din tavle, gå til 'Menu', dernæst 'Eksportér tavle', og kopiér teksten i den hentede fil.",
|
||||
"import-board-instruction-about-errors": "Hvis du får fejl når der importeres en tavle, så vil importen undertiden stadig fungere, og tavlen vil være under side Alle tavler.",
|
||||
"import-json-placeholder": "Indsæt dine gyldige JSON-data her",
|
||||
"import-csv-placeholder": "Indsæt din valide CSV/TSV-data her",
|
||||
"import-map-members": "Kortlæg medlemmer",
|
||||
"import-members-map": "Dine importerede tavler rummer medlemmer. Kortlæg venligst de medlemmer du ønsker at importere til dine brugere.",
|
||||
"import-show-user-mapping": "Gennemse kortlægning af medlemmer",
|
||||
@@ -383,9 +404,11 @@
|
||||
"list-select-cards": "Vælg alle kort i denne liste",
|
||||
"set-color-list": "Angiv farve",
|
||||
"listActionPopup-title": "Handlinger for liste",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Handlinger for svømmebane",
|
||||
"swimlaneAddPopup-title": "Tilføj en svømmebane nedenfor",
|
||||
"listImportCardPopup-title": "Importér et Trello-kort",
|
||||
"listImportCardsTsvPopup-title": "Importér Excel CSV/TSV",
|
||||
"listMorePopup-title": "Mere",
|
||||
"link-list": "Link til denne liste",
|
||||
"list-delete-pop": "Alle handlinger vil blive fjernet fra aktivitetsfeedet og du vil ikke have mulighed for at genskabe listen. Der er ingen måder at fortryde. ",
|
||||
@@ -404,6 +427,8 @@
|
||||
"moveCardToTop-title": "Flyt til toppen",
|
||||
"moveSelectionPopup-title": "Flyt valgte",
|
||||
"multi-selection": "Multivalg",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Multivalg er slået til",
|
||||
"muted": "Slukket",
|
||||
"muted-info": "Du vil aldrig få notifikationer om ændringer i denne tavle",
|
||||
@@ -449,7 +474,7 @@
|
||||
"search": "Søg",
|
||||
"rules": "Regler",
|
||||
"search-cards": "Søg ud fra titler i kort/lister, beskrivelser og brugerdefinerede felter på denne tavle. ",
|
||||
"search-example": "Tekst som der søges efter?",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Vælg farve",
|
||||
"set-wip-limit-value": "Angiv en grænse for det maksimale antal opgaver i denne liste",
|
||||
"setWipLimitPopup-title": "Angiv WIP-begrænsning",
|
||||
@@ -622,10 +647,12 @@
|
||||
"r-delete-rule": "Slet regel",
|
||||
"r-new-rule-name": "Ny titel for regel",
|
||||
"r-no-rules": "Ingen regler",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "Når et kort",
|
||||
"r-is": "er",
|
||||
"r-is-moved": "flyttes",
|
||||
"r-added-to": "tilføjes til",
|
||||
"r-added-to": "Tilføjet til",
|
||||
"r-removed-from": "Fjernes fra",
|
||||
"r-the-board": "tavlen",
|
||||
"r-list": "liste",
|
||||
@@ -673,6 +700,7 @@
|
||||
"r-of-checklist": "fra tjekliste",
|
||||
"r-send-email": "Send en e-mail",
|
||||
"r-to": "til",
|
||||
"r-of": "af",
|
||||
"r-subject": "emne",
|
||||
"r-rule-details": "Detaljer for regel",
|
||||
"r-d-move-to-top-gen": "Flyt kortet til toppen af dens liste",
|
||||
@@ -782,5 +810,15 @@
|
||||
"thursday": "Torsdag",
|
||||
"friday": "Fredag",
|
||||
"saturday": "Lørdag",
|
||||
"sunday": "Søndag"
|
||||
"sunday": "Søndag",
|
||||
"status": "Status",
|
||||
"swimlane": "Svømmebaner",
|
||||
"owner": "Ejer",
|
||||
"last-modified-at": "Senest ændret per",
|
||||
"last-activity": "Seneste aktivitet",
|
||||
"voting": "Afstemning",
|
||||
"archived": "Arkiveret",
|
||||
"delete-linked-card-before-this-card": "Du kan ikke slette dette kort før der slettes sammenkædede kort som har",
|
||||
"delete-linked-cards-before-this-list": "Du kan ikke slette denne liste før der slettes sammenkædede kort, der peger til kort i denne liste",
|
||||
"hide-checked-items": "Hide checked items"
|
||||
}
|
||||
+51
-13
@@ -152,8 +152,6 @@
|
||||
"card-spent": "Aufgewendete Zeit",
|
||||
"card-edit-attachments": "Anhänge ändern",
|
||||
"card-edit-custom-fields": "Benutzerdefinierte Felder editieren",
|
||||
"card-start-voting": "Abstimmung starten",
|
||||
"card-cancel-voting": "Abstimmung mit allen Stimmen löschen ",
|
||||
"card-edit-labels": "Labels ändern",
|
||||
"card-edit-members": "Mitglieder ändern",
|
||||
"card-labels-title": "Labels für diese Karte ändern.",
|
||||
@@ -166,10 +164,15 @@
|
||||
"cardStartVotingPopup-title": "Abstimmung starten",
|
||||
"positiveVoteMembersPopup-title": "Befürworter",
|
||||
"negativeVoteMembersPopup-title": "Gegner",
|
||||
"card-edit-voting": "Abstimmung editieren",
|
||||
"editVoteEndDatePopup-title": "Enddatum der Abstimmung ändern",
|
||||
"allowNonBoardMembers": "Alle eingeloggte Nutzer erlauben",
|
||||
"vote-question": "Abstimmen über",
|
||||
"vote-public": "Öffentliche Abstimmung",
|
||||
"vote-public": "Zeigen, wer was gewählt hat",
|
||||
"vote-for-it": "Dafür",
|
||||
"vote-against": "Dagegen",
|
||||
"deleteVotePopup-title": "Wahl löschen?",
|
||||
"vote-delete-pop": "Löschen ist unwiderruflich. Alle Aktionen die dieser Karte zugeordnet sind werden ebenfalls gelöscht.",
|
||||
"cardDeletePopup-title": "Karte löschen?",
|
||||
"cardDetailsActionsPopup-title": "Kartenaktionen",
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
@@ -253,6 +256,8 @@
|
||||
"current": "aktuell",
|
||||
"custom-field-delete-pop": "Dies wird das Feld aus allen Karten entfernen und den dazugehörigen Verlauf löschen. Die Aktion kann nicht rückgängig gemacht werden.",
|
||||
"custom-field-checkbox": "Kontrollkästchen",
|
||||
"custom-field-currency": "Währung",
|
||||
"custom-field-currency-option": "Währungszeichen",
|
||||
"custom-field-date": "Datum",
|
||||
"custom-field-dropdown": "Dropdownliste",
|
||||
"custom-field-dropdown-none": "(keiner)",
|
||||
@@ -306,6 +311,7 @@
|
||||
"error-board-notAMember": "Um das zu tun, müssen Sie Mitglied dieses Boards sein",
|
||||
"error-json-malformed": "Ihre Eingabe ist kein gültiges JSON",
|
||||
"error-json-schema": "Ihre JSON-Daten enthalten nicht die gewünschten Informationen im richtigen Format",
|
||||
"error-csv-schema": "hre CSV (Comma Separated Values)/TSV (Tab Separated Values) enthalten nicht die gewünschten Informationen im richtigen Format",
|
||||
"error-list-doesNotExist": "Diese Liste existiert nicht",
|
||||
"error-user-doesNotExist": "Dieser Nutzer existiert nicht",
|
||||
"error-user-notAllowSelf": "Sie können sich nicht selbst einladen.",
|
||||
@@ -313,6 +319,11 @@
|
||||
"error-username-taken": "Dieser Benutzername ist bereits vergeben",
|
||||
"error-email-taken": "E-Mail wird schon verwendet",
|
||||
"export-board": "Board exportieren",
|
||||
"export-board-json": "Board als JSON exportieren",
|
||||
"export-board-csv": "Board als CSV exportieren",
|
||||
"export-board-tsv": "Board als TSV exportieren",
|
||||
"export-board-html": "Board als HTML exportieren",
|
||||
"exportBoardPopup-title": "Board exportieren",
|
||||
"sort": "Sortieren",
|
||||
"sort-desc": "Zum Sortieren der Liste klicken",
|
||||
"list-sort-by": "Sortieren der Liste nach:",
|
||||
@@ -326,15 +337,20 @@
|
||||
"filter-cards": "Karten oder Listen filtern",
|
||||
"list-filter-label": "Liste nach Titel filtern",
|
||||
"filter-clear": "Filter entfernen",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "Kein Label",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "Kein Mitglied",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "Nicht zugewiesen",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "Keine benutzerdefinierten Felder",
|
||||
"filter-show-archive": "Archivierte Listen anzeigen",
|
||||
"filter-hide-empty": "Leere Listen verstecken",
|
||||
"filter-on": "Filter ist aktiv",
|
||||
"filter-on-desc": "Sie filtern die Karten in diesem Board. Klicken Sie, um den Filter zu bearbeiten.",
|
||||
"filter-to-selection": "Ergebnisse auswählen",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Erweiterter Filter",
|
||||
"advanced-filter-description": "Der erweiterte Filter erlaubt die Eingabe von Zeichenfolgen, die folgende Operatoren enthalten: == != <= >= && || ( ). Ein Leerzeichen wird als Trennzeichen zwischen den Operatoren verwendet. Sie können nach allen benutzerdefinierten Feldern filtern, indem Sie deren Namen und Werte eingeben. Zum Beispiel: Feld1 == Wert1. Hinweis: Wenn Felder oder Werte Leerzeichen enthalten, müssen Sie sie in einfache Anführungszeichen setzen. Zum Beispiel: 'Feld 1' == 'Wert 1'. Um einzelne Steuerzeichen (' \\/) zu überspringen, können Sie \\ verwenden. Zum Beispiel: Feld1 == Ich bin\\'s. Sie können außerdem mehrere Bedingungen kombinieren. Zum Beispiel: F1 == W1 || F1 == W2. Normalerweise werden alle Operatoren von links nach rechts interpretiert. Sie können die Reihenfolge ändern, indem Sie Klammern setzen. Zum Beispiel: F1 == W1 && ( F2 == W2 || F2 == W3 ). Sie können Textfelder auch mithilfe regulärer Ausdrücke durchsuchen: F1 == /Tes.*/i",
|
||||
"fullname": "Vollständiger Name",
|
||||
@@ -343,17 +359,22 @@
|
||||
"headerBarCreateBoardPopup-title": "Board erstellen",
|
||||
"home": "Home",
|
||||
"import": "Importieren",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Verknüpfung",
|
||||
"import-board": "Board importieren",
|
||||
"import-board-c": "Board importieren",
|
||||
"import-board-title-trello": "Board von Trello importieren",
|
||||
"import-board-title-wekan": "Board aus vorherigem Export importieren",
|
||||
"import-board-title-csv": "Board von CSV/TSV importieren",
|
||||
"from-trello": "Von Trello",
|
||||
"from-wekan": "Aus vorherigem Export",
|
||||
"from-csv": "Aus CSV/TSV",
|
||||
"import-board-instruction-trello": "Gehen Sie in ihrem Trello-Board auf 'Menü', dann 'Mehr', 'Drucken und Exportieren', 'JSON-Export' und kopieren Sie den dort angezeigten Text",
|
||||
"import-board-instruction-csv": "Fügen Sie die Ihre Comma-Separated- (CSV) / bzw. Tab-Separated-Values (TSV) ein.",
|
||||
"import-board-instruction-wekan": "Gehen Sie in Ihrem Board auf 'Menü', danach auf 'Board exportieren' und kopieren Sie den Text aus der heruntergeladenen Datei.",
|
||||
"import-board-instruction-about-errors": "Treten beim importieren eines Board Fehler auf, so kann der Import dennoch erfolgreich abgeschlossen sein und das Board ist auf der Seite \"Alle Boards\" zusehen.",
|
||||
"import-json-placeholder": "Fügen Sie die korrekten JSON-Daten hier ein",
|
||||
"import-csv-placeholder": "Fügen Sie die korrekten CSV/TSV-Daten hier ein ",
|
||||
"import-map-members": "Mitglieder zuordnen",
|
||||
"import-members-map": "Das importierte Board hat einige Mitglieder. Bitte ordnen sie die Mitglieder, die Sie importieren wollen, Ihren Benutzern zu.",
|
||||
"import-show-user-mapping": "Mitgliederzuordnung überprüfen",
|
||||
@@ -383,9 +404,11 @@
|
||||
"list-select-cards": "Alle Karten in dieser Liste auswählen",
|
||||
"set-color-list": "Lege Farbe fest",
|
||||
"listActionPopup-title": "Listenaktionen",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Swimlaneaktionen",
|
||||
"swimlaneAddPopup-title": "Swimlane unterhalb einfügen",
|
||||
"listImportCardPopup-title": "Eine Trello-Karte importieren",
|
||||
"listImportCardsTsvPopup-title": "CSV/TSV importieren",
|
||||
"listMorePopup-title": "Mehr",
|
||||
"link-list": "Link zu dieser Liste",
|
||||
"list-delete-pop": "Alle Aktionen werden aus dem Verlauf gelöscht und die Liste kann nicht wiederhergestellt werden.",
|
||||
@@ -404,6 +427,8 @@
|
||||
"moveCardToTop-title": "Zum Anfang verschieben",
|
||||
"moveSelectionPopup-title": "Auswahl verschieben",
|
||||
"multi-selection": "Mehrfachauswahl",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Mehrfachauswahl ist aktiv",
|
||||
"muted": "Stumm",
|
||||
"muted-info": "Sie werden nicht über Änderungen auf diesem Board benachrichtigt",
|
||||
@@ -449,7 +474,7 @@
|
||||
"search": "Suchen",
|
||||
"rules": "Regeln",
|
||||
"search-cards": "Suche nach Karten-/Listentiteln, Beschreibungen und personalisierten Feldern auf diesem Brett ",
|
||||
"search-example": "Suchbegriff",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Farbe auswählen",
|
||||
"set-wip-limit-value": "Setzen Sie ein Limit für die maximale Anzahl von Aufgaben in dieser Liste",
|
||||
"setWipLimitPopup-title": "WIP-Limit setzen",
|
||||
@@ -622,10 +647,12 @@
|
||||
"r-delete-rule": "Regel löschen",
|
||||
"r-new-rule-name": "Neuer Regeltitel",
|
||||
"r-no-rules": "Keine Regeln",
|
||||
"r-trigger": "Auslöser",
|
||||
"r-action": "Aktion",
|
||||
"r-when-a-card": "Wenn Karte",
|
||||
"r-is": "wird",
|
||||
"r-is-moved": "verschoben wird",
|
||||
"r-added-to": "hinzugefügt zu",
|
||||
"r-added-to": "Hinzugefügt zu",
|
||||
"r-removed-from": "entfernt von",
|
||||
"r-the-board": "das Board",
|
||||
"r-list": "Liste",
|
||||
@@ -673,6 +700,7 @@
|
||||
"r-of-checklist": "der Checkliste",
|
||||
"r-send-email": "Eine E-Mail senden",
|
||||
"r-to": "an",
|
||||
"r-of": "von",
|
||||
"r-subject": "Betreff",
|
||||
"r-rule-details": "Regeldetails",
|
||||
"r-d-move-to-top-gen": "Karte nach oben in die Liste verschieben",
|
||||
@@ -775,12 +803,22 @@
|
||||
"remove-all-read": "Alle gelesenen entfernen",
|
||||
"allow-rename": "Umbenennen erlauben",
|
||||
"allowRenamePopup-title": "Umbenennen erlauben",
|
||||
"start-day-of-week": "Set day of the week start",
|
||||
"monday": "Monday",
|
||||
"tuesday": "Tuesday",
|
||||
"wednesday": "Wednesday",
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday"
|
||||
"start-day-of-week": "Wochentagbeginn festlegen",
|
||||
"monday": "Montag",
|
||||
"tuesday": "Dienstag",
|
||||
"wednesday": "Mittwoch",
|
||||
"thursday": "Donnerstag",
|
||||
"friday": "Freitag",
|
||||
"saturday": "Samstag",
|
||||
"sunday": "Sonntag",
|
||||
"status": "Status",
|
||||
"swimlane": "Swimlane",
|
||||
"owner": "Eigentümer",
|
||||
"last-modified-at": "Zuletzt geändert um",
|
||||
"last-activity": "Letzte Aktivität",
|
||||
"voting": "Abstimunng",
|
||||
"archived": "Archiviert",
|
||||
"delete-linked-card-before-this-card": "Sie können diese Karte erst löschen, wenn Sie alle verbundenen Karten gelöscht haben.",
|
||||
"delete-linked-cards-before-this-list": "Sie können diese Liste erst löschen, wenn Sie alle Karten gelöscht haben, die auf Karten in dieser Liste verweisen.",
|
||||
"hide-checked-items": "Erledigte ausblenden"
|
||||
}
|
||||
+50
-12
@@ -43,7 +43,7 @@
|
||||
"act-withBoardTitle": "__board__",
|
||||
"act-withCardTitle": "[__board__] __card__",
|
||||
"actions": "Ενέργειες",
|
||||
"activities": "Activities",
|
||||
"activities": "Δραστηριότητες",
|
||||
"activity": "Δραστηριότητα",
|
||||
"activity-added": "added %s to %s",
|
||||
"activity-archived": "%s μετακινήθηκε στο Αρχείο",
|
||||
@@ -55,7 +55,7 @@
|
||||
"activity-imported-board": "imported %s from %s",
|
||||
"activity-joined": "joined %s",
|
||||
"activity-moved": "moved %s from %s to %s",
|
||||
"activity-on": "on %s",
|
||||
"activity-on": "στό %s",
|
||||
"activity-removed": "removed %s from %s",
|
||||
"activity-sent": "sent %s to %s",
|
||||
"activity-unjoined": "unjoined %s",
|
||||
@@ -76,18 +76,18 @@
|
||||
"activity-editComment": "edited comment %s",
|
||||
"activity-deleteComment": "deleted comment %s",
|
||||
"add-attachment": "Add Attachment",
|
||||
"add-board": "Add Board",
|
||||
"add-board": "Προσθήκη Πίνακα",
|
||||
"add-card": "Προσθήκη Κάρτας",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"add-subtask": "Add Subtask",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist": "Προσθήκη Λίστας ελέγχου",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"add-cover": "Add Cover",
|
||||
"add-label": "Προσθήκη Ετικέτας",
|
||||
"add-list": "Προσθήκη Λίστας",
|
||||
"add-members": "Προσθήκη Μελών",
|
||||
"added": "Προστέθηκε",
|
||||
"addMemberPopup-title": "Μέλοι",
|
||||
"addMemberPopup-title": "Μέλη",
|
||||
"admin": "Διαχειριστής",
|
||||
"admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
|
||||
"admin-announcement": "Announcement",
|
||||
@@ -152,8 +152,6 @@
|
||||
"card-spent": "Spent Time",
|
||||
"card-edit-attachments": "Edit attachments",
|
||||
"card-edit-custom-fields": "Edit custom fields",
|
||||
"card-start-voting": "Start voting",
|
||||
"card-cancel-voting": "Delete voting and all votes",
|
||||
"card-edit-labels": "Edit labels",
|
||||
"card-edit-members": "Edit members",
|
||||
"card-labels-title": "Change the labels for the card.",
|
||||
@@ -166,10 +164,15 @@
|
||||
"cardStartVotingPopup-title": "Start a vote",
|
||||
"positiveVoteMembersPopup-title": "Proponents",
|
||||
"negativeVoteMembersPopup-title": "Opponents",
|
||||
"vote-question": "Voting question",
|
||||
"vote-public": "Public vote",
|
||||
"card-edit-voting": "Edit voting",
|
||||
"editVoteEndDatePopup-title": "Change vote end date",
|
||||
"allowNonBoardMembers": "Allow all logged in users",
|
||||
"vote-question": "Ερώτηση ψηφοφορίας",
|
||||
"vote-public": "Show who voted what",
|
||||
"vote-for-it": "for it",
|
||||
"vote-against": "against",
|
||||
"deleteVotePopup-title": "Delete vote?",
|
||||
"vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
|
||||
"cardDeletePopup-title": "Διαγραφή Κάρτας;",
|
||||
"cardDetailsActionsPopup-title": "Card Actions",
|
||||
"cardLabelsPopup-title": "Ετικέτες",
|
||||
@@ -253,6 +256,8 @@
|
||||
"current": "current",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
"custom-field-currency-option": "Currency Code",
|
||||
"custom-field-date": "Ημερομηνία",
|
||||
"custom-field-dropdown": "Dropdown List",
|
||||
"custom-field-dropdown-none": "(none)",
|
||||
@@ -306,6 +311,7 @@
|
||||
"error-board-notAMember": "You need to be a member of this board to do that",
|
||||
"error-json-malformed": "Το κείμενο δεν είναι έγκυρο JSON",
|
||||
"error-json-schema": "Your JSON data does not include the proper information in the correct format",
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format",
|
||||
"error-list-doesNotExist": "Η λίστα δεν υπάρχει",
|
||||
"error-user-doesNotExist": "Ο χρήστης δεν υπάρχει",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
@@ -313,6 +319,11 @@
|
||||
"error-username-taken": "This username is already taken",
|
||||
"error-email-taken": "Email has already been taken",
|
||||
"export-board": "Εξαγωγή πίνακα",
|
||||
"export-board-json": "Export board to JSON",
|
||||
"export-board-csv": "Export board to CSV",
|
||||
"export-board-tsv": "Export board to TSV",
|
||||
"export-board-html": "Export board to HTML",
|
||||
"exportBoardPopup-title": "Εξαγωγή πίνακα",
|
||||
"sort": "Sort",
|
||||
"sort-desc": "Click to Sort List",
|
||||
"list-sort-by": "Sort the List By:",
|
||||
@@ -326,15 +337,20 @@
|
||||
"filter-cards": "Filter Cards or Lists",
|
||||
"list-filter-label": "Filter List by Title",
|
||||
"filter-clear": "Clear filter",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "No label",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "Κανένα μέλος",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "No assignee",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Advanced Filter",
|
||||
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
|
||||
"fullname": "Πλήρες Όνομα",
|
||||
@@ -343,17 +359,22 @@
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Εισαγωγή",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Link",
|
||||
"import-board": "import board",
|
||||
"import-board-c": "Εισαγωγή πίνακα",
|
||||
"import-board-title-trello": "Import board from Trello",
|
||||
"import-board-title-wekan": "Import board from previous export",
|
||||
"import-board-title-csv": "Import board from CSV/TSV",
|
||||
"from-trello": "Από το Trello",
|
||||
"from-wekan": "From previous export",
|
||||
"from-csv": "From CSV/TSV",
|
||||
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
|
||||
"import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
|
||||
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
|
||||
"import-json-placeholder": "Paste your valid JSON data here",
|
||||
"import-csv-placeholder": "Paste your valid CSV/TSV data here",
|
||||
"import-map-members": "Map members",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
|
||||
"import-show-user-mapping": "Review members mapping",
|
||||
@@ -383,9 +404,11 @@
|
||||
"list-select-cards": "Select all cards in this list",
|
||||
"set-color-list": "Set Color",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"listImportCardPopup-title": "Εισαγωγή μιας κάρτας Trello",
|
||||
"listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
|
||||
"listMorePopup-title": "Περισσότερα",
|
||||
"link-list": "Link to this list",
|
||||
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
|
||||
@@ -404,6 +427,8 @@
|
||||
"moveCardToTop-title": "Move to Top",
|
||||
"moveSelectionPopup-title": "Move selection",
|
||||
"multi-selection": "Multi-Selection",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Multi-Selection is on",
|
||||
"muted": "Muted",
|
||||
"muted-info": "You will never be notified of any changes in this board",
|
||||
@@ -449,7 +474,7 @@
|
||||
"search": "Αναζήτηση",
|
||||
"rules": "Rules",
|
||||
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Επιλέξτε Χρώμα",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
@@ -622,10 +647,12 @@
|
||||
"r-delete-rule": "Διαγραφή κανόνα",
|
||||
"r-new-rule-name": "New rule title",
|
||||
"r-no-rules": "No rules",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "Όταν μία κάρτα",
|
||||
"r-is": "is",
|
||||
"r-is-moved": "is moved",
|
||||
"r-added-to": "added to",
|
||||
"r-added-to": "Added to",
|
||||
"r-removed-from": "Removed from",
|
||||
"r-the-board": "the board",
|
||||
"r-list": "list",
|
||||
@@ -673,6 +700,7 @@
|
||||
"r-of-checklist": "of checklist",
|
||||
"r-send-email": "Send an email",
|
||||
"r-to": "to",
|
||||
"r-of": "of",
|
||||
"r-subject": "subject",
|
||||
"r-rule-details": "Rule details",
|
||||
"r-d-move-to-top-gen": "Μετακίνηση κάρτας στην αρχή της λίστας της",
|
||||
@@ -782,5 +810,15 @@
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday"
|
||||
"sunday": "Sunday",
|
||||
"status": "Status",
|
||||
"swimlane": "Swimlane",
|
||||
"owner": "Owner",
|
||||
"last-modified-at": "Last modified at",
|
||||
"last-activity": "Last activity",
|
||||
"voting": "Voting",
|
||||
"archived": "Archived",
|
||||
"delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
|
||||
"delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
|
||||
"hide-checked-items": "Hide checked items"
|
||||
}
|
||||
+44
-6
@@ -152,8 +152,6 @@
|
||||
"card-spent": "Spent Time",
|
||||
"card-edit-attachments": "Edit attachments",
|
||||
"card-edit-custom-fields": "Edit custom fields",
|
||||
"card-start-voting": "Start voting",
|
||||
"card-cancel-voting": "Delete voting and all votes",
|
||||
"card-edit-labels": "Edit labels",
|
||||
"card-edit-members": "Edit members",
|
||||
"card-labels-title": "Change the labels for the card.",
|
||||
@@ -166,10 +164,15 @@
|
||||
"cardStartVotingPopup-title": "Start a vote",
|
||||
"positiveVoteMembersPopup-title": "Proponents",
|
||||
"negativeVoteMembersPopup-title": "Opponents",
|
||||
"card-edit-voting": "Edit voting",
|
||||
"editVoteEndDatePopup-title": "Change vote end date",
|
||||
"allowNonBoardMembers": "Allow all logged in users",
|
||||
"vote-question": "Voting question",
|
||||
"vote-public": "Public vote",
|
||||
"vote-public": "Show who voted what",
|
||||
"vote-for-it": "for it",
|
||||
"vote-against": "against",
|
||||
"deleteVotePopup-title": "Delete vote?",
|
||||
"vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
|
||||
"cardDeletePopup-title": "Delete Card?",
|
||||
"cardDetailsActionsPopup-title": "Card Actions",
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
@@ -253,6 +256,8 @@
|
||||
"current": "current",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
"custom-field-currency-option": "Currency Code",
|
||||
"custom-field-date": "Date",
|
||||
"custom-field-dropdown": "Dropdown List",
|
||||
"custom-field-dropdown-none": "(none)",
|
||||
@@ -306,6 +311,7 @@
|
||||
"error-board-notAMember": "You need to be a member of this board to do that",
|
||||
"error-json-malformed": "Your text is not valid JSON",
|
||||
"error-json-schema": "Your JSON data does not include the proper information in the correct format",
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
@@ -313,6 +319,11 @@
|
||||
"error-username-taken": "This username is already taken",
|
||||
"error-email-taken": "Email has already been taken",
|
||||
"export-board": "Export board",
|
||||
"export-board-json": "Export board to JSON",
|
||||
"export-board-csv": "Export board to CSV",
|
||||
"export-board-tsv": "Export board to TSV",
|
||||
"export-board-html": "Export board to HTML",
|
||||
"exportBoardPopup-title": "Export board",
|
||||
"sort": "Sort",
|
||||
"sort-desc": "Click to Sort List",
|
||||
"list-sort-by": "Sort the List By:",
|
||||
@@ -326,15 +337,20 @@
|
||||
"filter-cards": "Filter Cards or Lists",
|
||||
"list-filter-label": "Filter List by Title",
|
||||
"filter-clear": "Clear filter",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "No label",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "No member",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "No assignee",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Advanced Filter",
|
||||
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
|
||||
"fullname": "Full Name",
|
||||
@@ -343,17 +359,22 @@
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Link",
|
||||
"import-board": "import board",
|
||||
"import-board-c": "Import board",
|
||||
"import-board-title-trello": "Import board from Trello",
|
||||
"import-board-title-wekan": "Import board from previous export",
|
||||
"import-board-title-csv": "Import board from CSV/TSV",
|
||||
"from-trello": "From Trello",
|
||||
"from-wekan": "From previous export",
|
||||
"from-csv": "From CSV/TSV",
|
||||
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
|
||||
"import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
|
||||
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
|
||||
"import-json-placeholder": "Paste your valid JSON data here",
|
||||
"import-csv-placeholder": "Paste your valid CSV/TSV data here",
|
||||
"import-map-members": "Map members",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
|
||||
"import-show-user-mapping": "Review members mapping",
|
||||
@@ -383,9 +404,11 @@
|
||||
"list-select-cards": "Select all cards in this list",
|
||||
"set-color-list": "Set Color",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
"listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
|
||||
"listMorePopup-title": "More",
|
||||
"link-list": "Link to this list",
|
||||
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
|
||||
@@ -404,6 +427,8 @@
|
||||
"moveCardToTop-title": "Move to Top",
|
||||
"moveSelectionPopup-title": "Move selection",
|
||||
"multi-selection": "Multi-Selection",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Multi-Selection is on",
|
||||
"muted": "Muted",
|
||||
"muted-info": "You will never be notified of any changes in this board",
|
||||
@@ -449,7 +474,7 @@
|
||||
"search": "Search",
|
||||
"rules": "Rules",
|
||||
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Select Colour",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
@@ -622,10 +647,12 @@
|
||||
"r-delete-rule": "Delete rule",
|
||||
"r-new-rule-name": "New rule title",
|
||||
"r-no-rules": "No rules",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
"r-is": "is",
|
||||
"r-is-moved": "is moved",
|
||||
"r-added-to": "added to",
|
||||
"r-added-to": "Added to",
|
||||
"r-removed-from": "Removed from",
|
||||
"r-the-board": "the board",
|
||||
"r-list": "list",
|
||||
@@ -673,6 +700,7 @@
|
||||
"r-of-checklist": "of checklist",
|
||||
"r-send-email": "Send an email",
|
||||
"r-to": "to",
|
||||
"r-of": "of",
|
||||
"r-subject": "subject",
|
||||
"r-rule-details": "Rule details",
|
||||
"r-d-move-to-top-gen": "Move card to top of its list",
|
||||
@@ -782,5 +810,15 @@
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday"
|
||||
"sunday": "Sunday",
|
||||
"status": "Status",
|
||||
"swimlane": "Swimlane",
|
||||
"owner": "Owner",
|
||||
"last-modified-at": "Last modified at",
|
||||
"last-activity": "Last activity",
|
||||
"voting": "Voting",
|
||||
"archived": "Archived",
|
||||
"delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
|
||||
"delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
|
||||
"hide-checked-items": "Hide checked items"
|
||||
}
|
||||
+43
-8
@@ -152,8 +152,6 @@
|
||||
"card-spent": "Spent Time",
|
||||
"card-edit-attachments": "Edit attachments",
|
||||
"card-edit-custom-fields": "Edit custom fields",
|
||||
"card-start-voting": "Start voting",
|
||||
"card-cancel-voting": "Delete voting and all votes",
|
||||
"card-edit-labels": "Edit labels",
|
||||
"card-edit-members": "Edit members",
|
||||
"card-labels-title": "Change the labels for the card.",
|
||||
@@ -166,10 +164,15 @@
|
||||
"cardStartVotingPopup-title": "Start a vote",
|
||||
"positiveVoteMembersPopup-title": "Proponents",
|
||||
"negativeVoteMembersPopup-title": "Opponents",
|
||||
"card-edit-voting": "Edit voting",
|
||||
"editVoteEndDatePopup-title": "Change vote end date",
|
||||
"allowNonBoardMembers": "Allow all logged in users",
|
||||
"vote-question": "Voting question",
|
||||
"vote-public": "Public vote",
|
||||
"vote-public": "Show who voted what",
|
||||
"vote-for-it": "for it",
|
||||
"vote-against": "against",
|
||||
"deleteVotePopup-title": "Delete vote?",
|
||||
"vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
|
||||
"cardDeletePopup-title": "Delete Card?",
|
||||
"cardDetailsActionsPopup-title": "Card Actions",
|
||||
"cardLabelsPopup-title": "Labels",
|
||||
@@ -253,6 +256,8 @@
|
||||
"current": "current",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
"custom-field-currency-option": "Currency Code",
|
||||
"custom-field-date": "Date",
|
||||
"custom-field-dropdown": "Dropdown List",
|
||||
"custom-field-dropdown-none": "(none)",
|
||||
@@ -306,6 +311,7 @@
|
||||
"error-board-notAMember": "You need to be a member of this board to do that",
|
||||
"error-json-malformed": "Your text is not valid JSON",
|
||||
"error-json-schema": "Your JSON data does not include the proper information in the correct format",
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format ",
|
||||
"error-list-doesNotExist": "This list does not exist",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
@@ -313,6 +319,11 @@
|
||||
"error-username-taken": "This username is already taken",
|
||||
"error-email-taken": "Email has already been taken",
|
||||
"export-board": "Export board",
|
||||
"export-board-json": "Export board to JSON",
|
||||
"export-board-csv": "Export board to CSV",
|
||||
"export-board-tsv": "Export board to TSV",
|
||||
"export-board-html": "Export board to HTML",
|
||||
"exportBoardPopup-title": "Export board",
|
||||
"sort": "Sort",
|
||||
"sort-desc": "Click to Sort List",
|
||||
"list-sort-by": "Sort the List By:",
|
||||
@@ -326,15 +337,20 @@
|
||||
"filter-cards": "Filter Cards or Lists",
|
||||
"list-filter-label": "Filter List by Title",
|
||||
"filter-clear": "Clear filter",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "No label",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "No member",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "No assignee",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Advanced Filter",
|
||||
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
|
||||
"fullname": "Full Name",
|
||||
@@ -343,17 +359,22 @@
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Import",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Link",
|
||||
"import-board": "import board",
|
||||
"import-board-c": "Import board",
|
||||
"import-board-title-trello": "Import board from Trello",
|
||||
"import-board-title-wekan": "Import board from previous export",
|
||||
"import-board-title-csv": "Import board from CSV/TSV",
|
||||
"from-trello": "From Trello",
|
||||
"from-wekan": "From previous export",
|
||||
"from-csv": "From CSV/TSV",
|
||||
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
|
||||
"import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
|
||||
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
|
||||
"import-json-placeholder": "Paste your valid JSON data here",
|
||||
"import-csv-placeholder": "Paste your valid CSV/TSV data here",
|
||||
"import-map-members": "Map members",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
|
||||
"import-show-user-mapping": "Review members mapping",
|
||||
@@ -383,9 +404,11 @@
|
||||
"list-select-cards": "Select all cards in this list",
|
||||
"set-color-list": "Set Color",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
"listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
|
||||
"listMorePopup-title": "More",
|
||||
"link-list": "Link to this list",
|
||||
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
|
||||
@@ -404,6 +427,8 @@
|
||||
"moveCardToTop-title": "Move to Top",
|
||||
"moveSelectionPopup-title": "Move selection",
|
||||
"multi-selection": "Multi-Selection",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Multi-Selection is on",
|
||||
"muted": "Muted",
|
||||
"muted-info": "You will never be notified of any changes in this board",
|
||||
@@ -449,7 +474,7 @@
|
||||
"search": "Search",
|
||||
"rules": "Rules",
|
||||
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
@@ -622,6 +647,8 @@
|
||||
"r-delete-rule": "Delete rule",
|
||||
"r-new-rule-name": "New rule title",
|
||||
"r-no-rules": "No rules",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
"r-is": "is",
|
||||
"r-is-moved": "is moved",
|
||||
@@ -641,7 +668,6 @@
|
||||
"r-when-a-member": "When a member is",
|
||||
"r-when-the-member": "When the member",
|
||||
"r-name": "name",
|
||||
"r-is": "is",
|
||||
"r-when-a-attach": "When an attachment",
|
||||
"r-when-a-checklist": "When a checklist is",
|
||||
"r-when-the-checklist": "When the checklist",
|
||||
@@ -655,7 +681,6 @@
|
||||
"r-top-of": "Top of",
|
||||
"r-bottom-of": "Bottom of",
|
||||
"r-its-list": "its list",
|
||||
"r-list": "list",
|
||||
"r-archive": "Move to Archive",
|
||||
"r-unarchive": "Restore from Archive",
|
||||
"r-card": "card",
|
||||
@@ -675,6 +700,7 @@
|
||||
"r-of-checklist": "of checklist",
|
||||
"r-send-email": "Send an email",
|
||||
"r-to": "to",
|
||||
"r-of": "of",
|
||||
"r-subject": "subject",
|
||||
"r-rule-details": "Rule details",
|
||||
"r-d-move-to-top-gen": "Move card to top of its list",
|
||||
@@ -710,7 +736,6 @@
|
||||
"r-swimlane-name": "swimlane name",
|
||||
"r-board-note": "Note: leave a field empty to match every possible value. ",
|
||||
"r-checklist-note": "Note: checklist's items have to be written as comma separated values.",
|
||||
"r-added-to": "added to",
|
||||
"r-when-a-card-is-moved": "When a card is moved to another list",
|
||||
"r-set": "Set",
|
||||
"r-update": "Update",
|
||||
@@ -785,5 +810,15 @@
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday"
|
||||
"sunday": "Sunday",
|
||||
"status": "Status",
|
||||
"swimlane": "Swimlane",
|
||||
"owner": "Owner",
|
||||
"last-modified-at": "Last modified at",
|
||||
"last-activity": "Last activity",
|
||||
"voting": "Voting",
|
||||
"archived": "Archived",
|
||||
"delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
|
||||
"delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
|
||||
"hide-checked-items": "Hide checked items"
|
||||
}
|
||||
+54
-16
@@ -1,15 +1,15 @@
|
||||
{
|
||||
"accept": "Akcepti",
|
||||
"act-activity-notify": "Activity Notification",
|
||||
"act-addAttachment": "added attachment __attachment__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-deleteAttachment": "deleted attachment __attachment__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"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__",
|
||||
"act-addLabel": "Aldonita etikedo __label__ al karto __card__ en la listo __list__ en la naĝotubo __swimlane en la tabulo __board__",
|
||||
"act-addedLabel": "Aldonita etikedo __label__ al karto __card__ en la listo __list__ en la naĝotubo __swimlane en la tabulo __board__",
|
||||
"act-removeLabel": "Forigita etikedo __label__ de karto __card__ en la listo __list__ en la naĝotubo __swimlane__ en la tabulo __board__",
|
||||
"act-removedLabel": "Forigita etikedo __label__ de karto __card__ en la listo __list__ en la naĝotubo __swimlane__ en la tabulo __board__",
|
||||
"act-addChecklist": "aldonita kontrololiston __checklist__ al karto __card__ en la listo __list__ en la naĝotubo __swimlane__ en la tabulo __board__",
|
||||
"act-addChecklistItem": "aldonita kontrolliston __checklistItem__ al kontrololisto __checklist__ en la karto __card__ en la listo __list__ en la naĝotubo __swimlane__ en la tabulo __board__",
|
||||
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
@@ -93,7 +93,7 @@
|
||||
"admin-announcement": "Announcement",
|
||||
"admin-announcement-active": "Active System-Wide Announcement",
|
||||
"admin-announcement-title": "Announcement from Administrator",
|
||||
"all-boards": "All boards",
|
||||
"all-boards": "Ĉiuj tabuloj",
|
||||
"and-n-other-card": "And __count__ other card",
|
||||
"and-n-other-card_plural": "And __count__ other cards",
|
||||
"apply": "Apliki",
|
||||
@@ -152,8 +152,6 @@
|
||||
"card-spent": "Spent Time",
|
||||
"card-edit-attachments": "Edit attachments",
|
||||
"card-edit-custom-fields": "Edit custom fields",
|
||||
"card-start-voting": "Start voting",
|
||||
"card-cancel-voting": "Delete voting and all votes",
|
||||
"card-edit-labels": "Redakti etikedojn",
|
||||
"card-edit-members": "Redakti membrojn",
|
||||
"card-labels-title": "Change the labels for the card.",
|
||||
@@ -166,10 +164,15 @@
|
||||
"cardStartVotingPopup-title": "Start a vote",
|
||||
"positiveVoteMembersPopup-title": "Proponents",
|
||||
"negativeVoteMembersPopup-title": "Opponents",
|
||||
"card-edit-voting": "Edit voting",
|
||||
"editVoteEndDatePopup-title": "Change vote end date",
|
||||
"allowNonBoardMembers": "Allow all logged in users",
|
||||
"vote-question": "Voting question",
|
||||
"vote-public": "Public vote",
|
||||
"vote-public": "Show who voted what",
|
||||
"vote-for-it": "for it",
|
||||
"vote-against": "against",
|
||||
"deleteVotePopup-title": "Delete vote?",
|
||||
"vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
|
||||
"cardDeletePopup-title": "Delete Card?",
|
||||
"cardDetailsActionsPopup-title": "Card Actions",
|
||||
"cardLabelsPopup-title": "Etikedoj",
|
||||
@@ -253,6 +256,8 @@
|
||||
"current": "current",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
"custom-field-currency-option": "Currency Code",
|
||||
"custom-field-date": "Dato",
|
||||
"custom-field-dropdown": "Dropdown List",
|
||||
"custom-field-dropdown-none": "(none)",
|
||||
@@ -306,6 +311,7 @@
|
||||
"error-board-notAMember": "You need to be a member of this board to do that",
|
||||
"error-json-malformed": "Via teksto estas nevalida JSON",
|
||||
"error-json-schema": "Via JSON ne enhavas la ĝustajn informojn en ĝusta formato",
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format",
|
||||
"error-list-doesNotExist": "Tio listo ne ekzistas",
|
||||
"error-user-doesNotExist": "Tio uzanto ne ekzistas",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
@@ -313,6 +319,11 @@
|
||||
"error-username-taken": "Uzantnomo jam prenita",
|
||||
"error-email-taken": "Email has already been taken",
|
||||
"export-board": "Export board",
|
||||
"export-board-json": "Export board to JSON",
|
||||
"export-board-csv": "Export board to CSV",
|
||||
"export-board-tsv": "Export board to TSV",
|
||||
"export-board-html": "Export board to HTML",
|
||||
"exportBoardPopup-title": "Export board",
|
||||
"sort": "Sort",
|
||||
"sort-desc": "Click to Sort List",
|
||||
"list-sort-by": "Sort the List By:",
|
||||
@@ -326,15 +337,20 @@
|
||||
"filter-cards": "Filter Cards or Lists",
|
||||
"list-filter-label": "Filter List by Title",
|
||||
"filter-clear": "Clear filter",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "Nenia etikedo",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "Nenia membro",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "No assignee",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Filter is on",
|
||||
"filter-on-desc": "You are filtering cards on this board. Click here to edit filter.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Advanced Filter",
|
||||
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
|
||||
"fullname": "Plena nomo",
|
||||
@@ -343,17 +359,22 @@
|
||||
"headerBarCreateBoardPopup-title": "Krei tavolon",
|
||||
"home": "Hejmo",
|
||||
"import": "Importi",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Ligilo",
|
||||
"import-board": "import board",
|
||||
"import-board-c": "Import board",
|
||||
"import-board-title-trello": "Import board from Trello",
|
||||
"import-board-title-wekan": "Import board from previous export",
|
||||
"import-board-title-csv": "Import board from CSV/TSV",
|
||||
"from-trello": "From Trello",
|
||||
"from-wekan": "From previous export",
|
||||
"from-csv": "From CSV/TSV",
|
||||
"import-board-instruction-trello": "In your Trello board, go to 'Menu', then 'More', 'Print and Export', 'Export JSON', and copy the resulting text.",
|
||||
"import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
|
||||
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
|
||||
"import-json-placeholder": "Paste your valid JSON data here",
|
||||
"import-csv-placeholder": "Paste your valid CSV/TSV data here",
|
||||
"import-map-members": "Map members",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
|
||||
"import-show-user-mapping": "Review members mapping",
|
||||
@@ -383,9 +404,11 @@
|
||||
"list-select-cards": "Elektu ĉiujn kartojn en tiu listo.",
|
||||
"set-color-list": "Set Color",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
"listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
|
||||
"listMorePopup-title": "Pli",
|
||||
"link-list": "Link to this list",
|
||||
"list-delete-pop": "All actions will be removed from the activity feed and you won't be able to recover the list. There is no undo.",
|
||||
@@ -404,6 +427,8 @@
|
||||
"moveCardToTop-title": "Movi supren",
|
||||
"moveSelectionPopup-title": "Movi elekton",
|
||||
"multi-selection": "Multi-Selection",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Multi-Selection is on",
|
||||
"muted": "Muted",
|
||||
"muted-info": "You will never be notified of any changes in this board",
|
||||
@@ -449,7 +474,7 @@
|
||||
"search": "Serĉi",
|
||||
"rules": "Reguloj",
|
||||
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Select Color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
@@ -622,10 +647,12 @@
|
||||
"r-delete-rule": "Forigi regulon",
|
||||
"r-new-rule-name": "New rule title",
|
||||
"r-no-rules": "No rules",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
"r-is": "is",
|
||||
"r-is-moved": "is moved",
|
||||
"r-added-to": "added to",
|
||||
"r-added-to": "Added to",
|
||||
"r-removed-from": "Removed from",
|
||||
"r-the-board": "the board",
|
||||
"r-list": "listo",
|
||||
@@ -673,6 +700,7 @@
|
||||
"r-of-checklist": "of checklist",
|
||||
"r-send-email": "Send an email",
|
||||
"r-to": "to",
|
||||
"r-of": "of",
|
||||
"r-subject": "temo",
|
||||
"r-rule-details": "Rule details",
|
||||
"r-d-move-to-top-gen": "Move card to top of its list",
|
||||
@@ -782,5 +810,15 @@
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday"
|
||||
"sunday": "Sunday",
|
||||
"status": "Status",
|
||||
"swimlane": "Swimlane",
|
||||
"owner": "Owner",
|
||||
"last-modified-at": "Last modified at",
|
||||
"last-activity": "Last activity",
|
||||
"voting": "Voting",
|
||||
"archived": "Archived",
|
||||
"delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
|
||||
"delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
|
||||
"hide-checked-items": "Hide checked items"
|
||||
}
|
||||
+57
-19
@@ -3,18 +3,18 @@
|
||||
"act-activity-notify": "Notificación de Actividad",
|
||||
"act-addAttachment": "agregado archivo adjunto __attachment__ a tarjeta __card__ en la lista __list__ en el swimlane __swimlane__ en el tablero __board__",
|
||||
"act-deleteAttachment": "eliminado archivo adjunto __attachment__ de la tarjeta __card__ en la lista __list__ en el swimlane __swimlane__ en el tablero __board__",
|
||||
"act-addSubtask": "added subtask __subtask__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-addLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-addedLabel": "Added label __label__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removedLabel": "Removed label __label__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-addChecklist": "added checklist __checklist__ to card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-addChecklistItem": "added checklist item __checklistItem__ to checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeChecklist": "removed checklist __checklist__ from card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-removeChecklistItem": "removed checklist item __checklistItem__ from checklist __checkList__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-checkedItem": "checked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-uncheckedItem": "unchecked __checklistItem__ of checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-completeChecklist": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-addSubtask": "agregada subtarea __subtask__ a tarjeta __card__ en la lista __list__ en el swimlane __swimlane__ en el tablero __board__",
|
||||
"act-addLabel": "Agregada etiqueta __label__ a tarjeta __card__ en la lista __list__ en el swimlane __swimlane__ en el tablero __board__",
|
||||
"act-addedLabel": "Agregada etiqueta __label__ a tarjeta __card__ en la lista __list__ en el swimlane __swimlane__ en el tablero __board__",
|
||||
"act-removeLabel": "Eliminada etiqueta __label__ de tarjeta __card__ en la lista __list__ en el swimlane __swimlane__ en el tablero __board__",
|
||||
"act-removedLabel": "Eliminada etiqueta __label__ de tarjeta __card__ en la lista __list__ en el swimlane __swimlane__ en el tablero __board__",
|
||||
"act-addChecklist": "agregada checklist __checklist__ a tarjeta __card__ en la lista __list__ en el swimlane __swimlane__ en el tablero __board__",
|
||||
"act-addChecklistItem": "agregado ítem __checklistItem__ a checklist __checklist__ en la tarjeta __card__ en la lista __list__ en el swimlane __swimlane__ en el tablero __board__",
|
||||
"act-removeChecklist": "eliminada checklist __checklist__ de tarjeta __card__ en la lista __list__ en el swimlane __swimlane__ en el tablero __board__",
|
||||
"act-removeChecklistItem": "eliminado ítem __checklistItem__ de checklist __checklist__ en la tarjeta __card__ en la lista __list__ en el swimlane __swimlane__ en el tablero __board__",
|
||||
"act-checkedItem": "marcado ítem __checklistItem__ de checklist __checklist__ en la tarjeta __card__ en la lista __list__ en el swimlane __swimlane__ en el tablero __board__",
|
||||
"act-uncheckedItem": "desmarcado ítem __checklistItem__ de checklist __checklist__ en la tarjeta __card__ en la lista __list__ en el swimlane __swimlane__ en el tablero __board__",
|
||||
"act-completeChecklist": "completada checklist __checklist__ en la tarjeta __card__ en la lista __list__ en el swimlane __swimlane__ en el tablero __board__",
|
||||
"act-uncompleteChecklist": "uncompleted checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-addComment": "commented on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"act-editComment": "edited comment on card __card__: __comment__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
@@ -71,7 +71,7 @@
|
||||
"add": "Agregar",
|
||||
"activity-checked-item-card": "checked %s in checklist %s",
|
||||
"activity-unchecked-item-card": "unchecked %s in checklist %s",
|
||||
"activity-checklist-completed-card": "completed checklist __checklist__ at card __card__ at list __list__ at swimlane __swimlane__ at board __board__",
|
||||
"activity-checklist-completed-card": "completada checklist __checklist__ en la tarjeta __card__ en la lista __list__ en el swimlane __swimlane__ en el tablero __board__",
|
||||
"activity-checklist-uncompleted-card": "uncompleted the checklist %s",
|
||||
"activity-editComment": "comentario %s editado",
|
||||
"activity-deleteComment": "comentario %s eliminado",
|
||||
@@ -152,8 +152,6 @@
|
||||
"card-spent": "Tiempo Empleado",
|
||||
"card-edit-attachments": "Editar adjuntos",
|
||||
"card-edit-custom-fields": "Editar campos personalizados",
|
||||
"card-start-voting": "Start voting",
|
||||
"card-cancel-voting": "Delete voting and all votes",
|
||||
"card-edit-labels": "Editar etiquetas",
|
||||
"card-edit-members": "Editar miembros",
|
||||
"card-labels-title": "Cambiar las etiquetas de la tarjeta.",
|
||||
@@ -166,10 +164,15 @@
|
||||
"cardStartVotingPopup-title": "Start a vote",
|
||||
"positiveVoteMembersPopup-title": "Proponents",
|
||||
"negativeVoteMembersPopup-title": "Opponents",
|
||||
"card-edit-voting": "Edit voting",
|
||||
"editVoteEndDatePopup-title": "Change vote end date",
|
||||
"allowNonBoardMembers": "Allow all logged in users",
|
||||
"vote-question": "Voting question",
|
||||
"vote-public": "Public vote",
|
||||
"vote-public": "Show who voted what",
|
||||
"vote-for-it": "for it",
|
||||
"vote-against": "against",
|
||||
"deleteVotePopup-title": "Delete vote?",
|
||||
"vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
|
||||
"cardDeletePopup-title": "¿Borrar Tarjeta?",
|
||||
"cardDetailsActionsPopup-title": "Acciones de la Tarjeta",
|
||||
"cardLabelsPopup-title": "Etiquetas",
|
||||
@@ -253,6 +256,8 @@
|
||||
"current": "actual",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
"custom-field-currency-option": "Currency Code",
|
||||
"custom-field-date": "Fecha",
|
||||
"custom-field-dropdown": "Dropdown List",
|
||||
"custom-field-dropdown-none": "(ninguno)",
|
||||
@@ -306,6 +311,7 @@
|
||||
"error-board-notAMember": "Necesitás ser miembro de este tablero para hacer eso",
|
||||
"error-json-malformed": "Tu texto no es JSON válido",
|
||||
"error-json-schema": "Tus datos JSON no incluyen la información correcta en el formato adecuado",
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format",
|
||||
"error-list-doesNotExist": "Esta lista no existe",
|
||||
"error-user-doesNotExist": "Este usuario no existe",
|
||||
"error-user-notAllowSelf": "No podés invitarte a vos mismo",
|
||||
@@ -313,6 +319,11 @@
|
||||
"error-username-taken": "El nombre de usuario ya existe",
|
||||
"error-email-taken": "El email ya existe",
|
||||
"export-board": "Exportar tablero",
|
||||
"export-board-json": "Export board to JSON",
|
||||
"export-board-csv": "Export board to CSV",
|
||||
"export-board-tsv": "Export board to TSV",
|
||||
"export-board-html": "Export board to HTML",
|
||||
"exportBoardPopup-title": "Exportar tablero",
|
||||
"sort": "Sort",
|
||||
"sort-desc": "Click to Sort List",
|
||||
"list-sort-by": "Sort the List By:",
|
||||
@@ -326,15 +337,20 @@
|
||||
"filter-cards": "Filter Cards or Lists",
|
||||
"list-filter-label": "Filter List by Title",
|
||||
"filter-clear": "Sacar filtro",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "Sin etiqueta",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "No es miembro",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "No assignee",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "El filtro está activado",
|
||||
"filter-on-desc": "Estás filtrando cartas en este tablero. Clickeá acá para editar el filtro.",
|
||||
"filter-to-selection": "Filtrar en la selección",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Advanced Filter",
|
||||
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
|
||||
"fullname": "Nombre Completo",
|
||||
@@ -343,17 +359,22 @@
|
||||
"headerBarCreateBoardPopup-title": "Crear Tablero",
|
||||
"home": "Inicio",
|
||||
"import": "Importar",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Link",
|
||||
"import-board": "importar tablero",
|
||||
"import-board-c": "Importar tablero",
|
||||
"import-board-title-trello": "Importar tablero de Trello",
|
||||
"import-board-title-wekan": "Import board from previous export",
|
||||
"import-board-title-csv": "Import board from CSV/TSV",
|
||||
"from-trello": "De Trello",
|
||||
"from-wekan": "From previous export",
|
||||
"from-csv": "From CSV/TSV",
|
||||
"import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego a 'Más', 'Imprimir y Exportar', 'Exportar JSON', y copia el texto resultante.",
|
||||
"import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
|
||||
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
|
||||
"import-json-placeholder": "Pegá tus datos JSON válidos acá",
|
||||
"import-csv-placeholder": "Paste your valid CSV/TSV data here",
|
||||
"import-map-members": "Mapear Miembros",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
|
||||
"import-show-user-mapping": "Revisar mapeo de miembros",
|
||||
@@ -383,9 +404,11 @@
|
||||
"list-select-cards": "Selecciona todas las tarjetas en esta lista",
|
||||
"set-color-list": "Set Color",
|
||||
"listActionPopup-title": "Listar Acciones",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Acciones de la Calle",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"listImportCardPopup-title": "Importar una tarjeta Trello",
|
||||
"listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
|
||||
"listMorePopup-title": "Mas",
|
||||
"link-list": "Enlace a esta lista",
|
||||
"list-delete-pop": "Todas las acciones van a ser eliminadas del agregador de actividad y no podás recuperar la lista. No se puede deshacer.",
|
||||
@@ -404,6 +427,8 @@
|
||||
"moveCardToTop-title": "Mover al Tope",
|
||||
"moveSelectionPopup-title": "Mover selección",
|
||||
"multi-selection": "Multi-Selección",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Multi-selección está activo",
|
||||
"muted": "Silenciado",
|
||||
"muted-info": "No serás notificado de ningún cambio en este tablero",
|
||||
@@ -449,7 +474,7 @@
|
||||
"search": "Buscar",
|
||||
"rules": "Rules",
|
||||
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
|
||||
"search-example": "¿Texto a buscar?",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Seleccionar Color",
|
||||
"set-wip-limit-value": "Fijar un límite para el número máximo de tareas en esta lista",
|
||||
"setWipLimitPopup-title": "Establecer Límite TEP",
|
||||
@@ -622,10 +647,12 @@
|
||||
"r-delete-rule": "Delete rule",
|
||||
"r-new-rule-name": "New rule title",
|
||||
"r-no-rules": "No rules",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
"r-is": "is",
|
||||
"r-is-moved": "is moved",
|
||||
"r-added-to": "added to",
|
||||
"r-added-to": "Added to",
|
||||
"r-removed-from": "Removed from",
|
||||
"r-the-board": "the board",
|
||||
"r-list": "list",
|
||||
@@ -673,6 +700,7 @@
|
||||
"r-of-checklist": "of checklist",
|
||||
"r-send-email": "Send an email",
|
||||
"r-to": "to",
|
||||
"r-of": "of",
|
||||
"r-subject": "subject",
|
||||
"r-rule-details": "Rule details",
|
||||
"r-d-move-to-top-gen": "Move card to top of its list",
|
||||
@@ -782,5 +810,15 @@
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday"
|
||||
"sunday": "Sunday",
|
||||
"status": "Status",
|
||||
"swimlane": "Swimlane",
|
||||
"owner": "Owner",
|
||||
"last-modified-at": "Last modified at",
|
||||
"last-activity": "Last activity",
|
||||
"voting": "Voting",
|
||||
"archived": "Archived",
|
||||
"delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
|
||||
"delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
|
||||
"hide-checked-items": "Hide checked items"
|
||||
}
|
||||
@@ -0,0 +1,824 @@
|
||||
{
|
||||
"accept": "Aceptar",
|
||||
"act-activity-notify": "Notificación de actividad",
|
||||
"act-addAttachment": "añadido el adjunto __attachment__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-deleteAttachment": "eliminado el adjunto __attachment__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-addSubtask": "añadida la subtarea __subtask__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-addLabel": "añadida la etiqueta __label__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-addedLabel": "añadida la etiqueta __label__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-removeLabel": "eliminada la etiqueta __label__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-removedLabel": "eliminada la etiqueta __label__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-addChecklist": "añadida la lista de verificación __checklist__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-addChecklistItem": "añadido el elemento __checklistItem__ a la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-removeChecklist": "eliminada la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-removeChecklistItem": "eliminado el elemento __checklistItem__ de la lista de verificación __checkList__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-checkedItem": "marcado el elemento __checklistItem__ de la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-uncheckedItem": "desmarcado el elemento __checklistItem__ de la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-completeChecklist": "completada la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-uncompleteChecklist": "no completada la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-addComment": "comentario en la tarjeta__card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-editComment": "comentario editado en la tarjeta __card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-deleteComment": "comentario eliminado en la tarjeta __card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-createBoard": "creó el tablero __board__",
|
||||
"act-createSwimlane": "creó el carril de flujo __swimlane__ en el tablero __board__",
|
||||
"act-createCard": "creada la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-createCustomField": "creado el campo personalizado __customField__ en el tablero __board__",
|
||||
"act-deleteCustomField": "eliminado el campo personalizado __customField__ del tablero __board__",
|
||||
"act-setCustomField": "editado el campo personalizado __customField__: __customFieldValue__ en la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-createList": "añadida la lista __list__ al tablero __board__",
|
||||
"act-addBoardMember": "añadido el mimbro __member__ al tablero __board__",
|
||||
"act-archivedBoard": "El tablero __board__ se ha archivado",
|
||||
"act-archivedCard": "La tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__ se ha archivado",
|
||||
"act-archivedList": "La lista __list__ del carril __swimlane__ del tablero __board__ se ha archivado",
|
||||
"act-archivedSwimlane": "El carril __swimlane__ del tablero __board__ se ha archivado",
|
||||
"act-importBoard": "importado el tablero __board__",
|
||||
"act-importCard": "importada la tarjeta __card__ a la lista __list__ del carrril __swimlane__ del tablero __board__",
|
||||
"act-importList": "importada la lista __list__ al carril __swimlane__ del tablero __board__",
|
||||
"act-joinMember": "añadido el miembro __member__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-moveCard": "movida la tarjeta __card__ del tablero __board__ de la lista __oldList__ del carril __oldSwimlane__ a la lista __list__ del carril __swimlane__",
|
||||
"act-moveCardToOtherBoard": "movida la tarjeta __card__ de la lista __oldList__ del carril __oldSwimlane__ del tablero __oldBoard__ a la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-removeBoardMember": "eliminado el miembro __member__ del tablero __board__",
|
||||
"act-restoredCard": "restaurada la tarjeta __card__ a la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-unjoinMember": "eliminado el miembro __member__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-withBoardTitle": "__board__",
|
||||
"act-withCardTitle": "[__board__] __card__",
|
||||
"actions": "Acciones",
|
||||
"activities": "Actividades",
|
||||
"activity": "Actividad",
|
||||
"activity-added": "ha añadido %s a %s",
|
||||
"activity-archived": "%s se ha archivado",
|
||||
"activity-attached": "ha adjuntado %s a %s",
|
||||
"activity-created": "ha creado %s",
|
||||
"activity-customfield-created": "creó el campo personalizado %s",
|
||||
"activity-excluded": "ha excluido %s de %s",
|
||||
"activity-imported": "ha importado %s a %s desde %s",
|
||||
"activity-imported-board": "ha importado %s desde %s",
|
||||
"activity-joined": "se ha unido a %s",
|
||||
"activity-moved": "ha movido %s de %s a %s",
|
||||
"activity-on": "en %s",
|
||||
"activity-removed": "ha eliminado %s de %s",
|
||||
"activity-sent": "ha enviado %s a %s",
|
||||
"activity-unjoined": "se ha desvinculado de %s",
|
||||
"activity-subtask-added": "ha añadido la subtarea a %s",
|
||||
"activity-checked-item": "marcado %s en la lista de verificación %s de %s",
|
||||
"activity-unchecked-item": "desmarcado %s en lista %s de %s",
|
||||
"activity-checklist-added": "ha añadido una lista de verificación a %s",
|
||||
"activity-checklist-removed": "eliminada una lista de verificación desde %s",
|
||||
"activity-checklist-completed": "lista de verificación completada %s de %s",
|
||||
"activity-checklist-uncompleted": "no completado la lista %s de %s",
|
||||
"activity-checklist-item-added": "ha añadido el elemento de la lista de verificación a '%s' en %s",
|
||||
"activity-checklist-item-removed": "eliminado un elemento de la lista de verificación desde '%s' en %s",
|
||||
"add": "Añadir",
|
||||
"activity-checked-item-card": "marcado %s en la lista de verificación %s",
|
||||
"activity-unchecked-item-card": "desmarcado %s en la lista de verificación %s",
|
||||
"activity-checklist-completed-card": "completada la lista de verificación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"activity-checklist-uncompleted-card": "no completó la lista de verificación %s",
|
||||
"activity-editComment": "comentario editado",
|
||||
"activity-deleteComment": "comentario eliminado",
|
||||
"add-attachment": "Añadir adjunto",
|
||||
"add-board": "Añadir tablero",
|
||||
"add-card": "Añadir una tarjeta",
|
||||
"add-swimlane": "Añadir un carril de flujo",
|
||||
"add-subtask": "Añadir subtarea",
|
||||
"add-checklist": "Añadir una lista de verificación",
|
||||
"add-checklist-item": "Añadir un elemento a la lista de verificación",
|
||||
"add-cover": "Añadir portada",
|
||||
"add-label": "Añadir una etiqueta",
|
||||
"add-list": "Añadir una lista",
|
||||
"add-members": "Añadir miembros",
|
||||
"added": "Añadida el",
|
||||
"addMemberPopup-title": "Miembros",
|
||||
"admin": "Administrador",
|
||||
"admin-desc": "Puedes ver y editar tarjetas, eliminar miembros, y cambiar las preferencias del tablero",
|
||||
"admin-announcement": "Aviso",
|
||||
"admin-announcement-active": "Activar el aviso para todo el sistema",
|
||||
"admin-announcement-title": "Aviso del administrador",
|
||||
"all-boards": "Tableros",
|
||||
"and-n-other-card": "y __count__ tarjeta más",
|
||||
"and-n-other-card_plural": "y otras __count__ tarjetas",
|
||||
"apply": "Aplicar",
|
||||
"app-is-offline": "Cargando, espera por favor. Refrescar esta página causará pérdida de datos. Si la carga no funciona, por favor comprueba que el servidor no se ha parado.",
|
||||
"archive": "Archivar",
|
||||
"archive-all": "Archivar todo",
|
||||
"archive-board": "Archivar este tablero",
|
||||
"archive-card": "Archivar esta tarjeta",
|
||||
"archive-list": "Archivar esta lista",
|
||||
"archive-swimlane": "Archivar este carril",
|
||||
"archive-selection": "Archivar esta selección",
|
||||
"archiveBoardPopup-title": "¿Archivar este tablero?",
|
||||
"archived-items": "Archivo",
|
||||
"archived-boards": "Tableros en el Archivo",
|
||||
"restore-board": "Restaurar el tablero",
|
||||
"no-archived-boards": "No hay Tableros en el Archivo",
|
||||
"archives": "Archivo",
|
||||
"template": "Plantilla",
|
||||
"templates": "Plantillas",
|
||||
"assign-member": "Asignar miembros",
|
||||
"attached": "adjuntado",
|
||||
"attachment": "Adjunto",
|
||||
"attachment-delete-pop": "La eliminación de un fichero adjunto es permanente. Esta acción no puede deshacerse.",
|
||||
"attachmentDeletePopup-title": "¿Eliminar el adjunto?",
|
||||
"attachments": "Adjuntos",
|
||||
"auto-watch": "Suscribirse automáticamente a los tableros cuando son creados",
|
||||
"avatar-too-big": "El avatar es muy grande (70KB máx.)",
|
||||
"back": "Atrás",
|
||||
"board-change-color": "Cambiar el color",
|
||||
"board-nb-stars": "%s destacados",
|
||||
"board-not-found": "Tablero no encontrado",
|
||||
"board-private-info": "Este tablero será <strong>privado</strong>.",
|
||||
"board-public-info": "Este tablero será <strong>público</strong>.",
|
||||
"boardChangeColorPopup-title": "Cambiar el fondo del tablero",
|
||||
"boardChangeTitlePopup-title": "Renombrar el tablero",
|
||||
"boardChangeVisibilityPopup-title": "Cambiar visibilidad",
|
||||
"boardChangeWatchPopup-title": "Cambiar vigilancia",
|
||||
"boardMenuPopup-title": "Preferencias del tablero",
|
||||
"boardChangeViewPopup-title": "Vista del tablero",
|
||||
"boards": "Tableros",
|
||||
"board-view": "Vista del tablero",
|
||||
"board-view-cal": "Calendario",
|
||||
"board-view-swimlanes": "Carriles",
|
||||
"board-view-collapse": "Contraer",
|
||||
"board-view-lists": "Listas",
|
||||
"bucket-example": "Como “Cosas por hacer” por ejemplo",
|
||||
"cancel": "Cancelar",
|
||||
"card-archived": "Se archivó esta tarjeta",
|
||||
"board-archived": "Se archivó este tablero",
|
||||
"card-comments-title": "Esta tarjeta tiene %s comentarios.",
|
||||
"card-delete-notice": "la eliminación es permanente. Perderás todas las acciones asociadas a esta tarjeta.",
|
||||
"card-delete-pop": "Se eliminarán todas las acciones del historial de actividades y no se podrá volver a abrir la tarjeta. Esta acción no puede deshacerse.",
|
||||
"card-delete-suggest-archive": "Puedes mover una tarjeta al Archivo para quitarla del tablero y preservar la actividad.",
|
||||
"card-due": "Vence",
|
||||
"card-due-on": "Vence el",
|
||||
"card-spent": "Tiempo consumido",
|
||||
"card-edit-attachments": "Editar los adjuntos",
|
||||
"card-edit-custom-fields": "Editar los campos personalizados",
|
||||
"card-edit-labels": "Editar las etiquetas",
|
||||
"card-edit-members": "Editar los miembros",
|
||||
"card-labels-title": "Cambia las etiquetas de la tarjeta",
|
||||
"card-members-title": "Añadir o eliminar miembros del tablero desde la tarjeta.",
|
||||
"card-start": "Comienza",
|
||||
"card-start-on": "Comienza el",
|
||||
"cardAttachmentsPopup-title": "Adjuntar desde",
|
||||
"cardCustomField-datePopup-title": "Cambiar la fecha",
|
||||
"cardCustomFieldsPopup-title": "Editar los campos personalizados",
|
||||
"cardStartVotingPopup-title": "Comience a votar",
|
||||
"positiveVoteMembersPopup-title": "Favorables",
|
||||
"negativeVoteMembersPopup-title": "Contrarios",
|
||||
"card-edit-voting": "Editar votación",
|
||||
"editVoteEndDatePopup-title": "Cambie fecha de termino del voto",
|
||||
"allowNonBoardMembers": "Permitir todos los usuarios autentificados",
|
||||
"vote-question": "Pregunta de votación",
|
||||
"vote-public": "Mostrar quien voto que",
|
||||
"vote-for-it": "por esto",
|
||||
"vote-against": "contrarios",
|
||||
"deleteVotePopup-title": "¿Borrar voto?",
|
||||
"vote-delete-pop": "El Borrado es permanente. Perderá todas las acciones asociadas con este voto.",
|
||||
"cardDeletePopup-title": "¿Eliminar la tarjeta?",
|
||||
"cardDetailsActionsPopup-title": "Acciones de la tarjeta",
|
||||
"cardLabelsPopup-title": "Etiquetas",
|
||||
"cardMembersPopup-title": "Miembros",
|
||||
"cardMorePopup-title": "Más",
|
||||
"cardTemplatePopup-title": "Crear plantilla",
|
||||
"cards": "Tarjetas",
|
||||
"cards-count": "Tarjetas",
|
||||
"casSignIn": "Iniciar sesión con CAS",
|
||||
"cardType-card": "Tarjeta",
|
||||
"cardType-linkedCard": "Tarjeta enlazada",
|
||||
"cardType-linkedBoard": "Tablero enlazado",
|
||||
"change": "Cambiar",
|
||||
"change-avatar": "Cambiar el avatar",
|
||||
"change-password": "Cambiar la contraseña",
|
||||
"change-permissions": "Cambiar los permisos",
|
||||
"change-settings": "Cambiar las preferencias",
|
||||
"changeAvatarPopup-title": "Cambiar el avatar",
|
||||
"changeLanguagePopup-title": "Cambiar el idioma",
|
||||
"changePasswordPopup-title": "Cambiar la contraseña",
|
||||
"changePermissionsPopup-title": "Cambiar los permisos",
|
||||
"changeSettingsPopup-title": "Cambiar las preferencias",
|
||||
"subtasks": "Subtareas",
|
||||
"checklists": "Lista de verificación",
|
||||
"click-to-star": "Haz clic para destacar este tablero.",
|
||||
"click-to-unstar": "Haz clic para dejar de destacar este tablero.",
|
||||
"clipboard": "el portapapeles o con arrastrar y soltar",
|
||||
"close": "Cerrar",
|
||||
"close-board": "Cerrar el tablero",
|
||||
"close-board-pop": "Podrás restaurar el tablero haciendo clic en el botón \"Archivo\" del encabezado de la pantalla inicial.",
|
||||
"color-black": "negra",
|
||||
"color-blue": "azul",
|
||||
"color-crimson": "carmesí",
|
||||
"color-darkgreen": "verde oscuro",
|
||||
"color-gold": "oro",
|
||||
"color-gray": "gris",
|
||||
"color-green": "verde",
|
||||
"color-indigo": "añil",
|
||||
"color-lime": "lima",
|
||||
"color-magenta": "magenta",
|
||||
"color-mistyrose": "rosa claro",
|
||||
"color-navy": "azul marino",
|
||||
"color-orange": "naranja",
|
||||
"color-paleturquoise": "turquesa",
|
||||
"color-peachpuff": "melocotón",
|
||||
"color-pink": "rosa",
|
||||
"color-plum": "púrpura",
|
||||
"color-purple": "violeta",
|
||||
"color-red": "roja",
|
||||
"color-saddlebrown": "marrón",
|
||||
"color-silver": "plata",
|
||||
"color-sky": "celeste",
|
||||
"color-slateblue": "azul",
|
||||
"color-white": "blanco",
|
||||
"color-yellow": "amarilla",
|
||||
"unset-color": "Desmarcar",
|
||||
"comment": "Comentar",
|
||||
"comment-placeholder": "Escribir comentario",
|
||||
"comment-only": "Sólo comentarios",
|
||||
"comment-only-desc": "Solo puedes comentar en las tarjetas.",
|
||||
"no-comments": "No hay comentarios",
|
||||
"no-comments-desc": "No se pueden mostrar comentarios ni actividades.",
|
||||
"worker": "Trabajador",
|
||||
"worker-desc": "Solo puede mover tarjetas, asignarse a la tarjeta y comentar.",
|
||||
"computer": "el ordenador",
|
||||
"confirm-subtask-delete-dialog": "¿Seguro que quieres eliminar la subtarea?",
|
||||
"confirm-checklist-delete-dialog": "¿Seguro que quieres eliminar la lista de verificación?",
|
||||
"copy-card-link-to-clipboard": "Copiar el enlace de la tarjeta al portapapeles",
|
||||
"linkCardPopup-title": "Enlazar tarjeta",
|
||||
"searchElementPopup-title": "Buscar",
|
||||
"copyCardPopup-title": "Copiar la tarjeta",
|
||||
"copyChecklistToManyCardsPopup-title": "Copiar la plantilla de la lista de verificación en varias tarjetas",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Títulos y descripciones de las tarjetas de destino en formato JSON",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Título de la primera tarjeta\", \"description\":\"Descripción de la primera tarjeta\"}, {\"title\":\"Título de la segunda tarjeta\",\"description\":\"Descripción de la segunda tarjeta\"},{\"title\":\"Título de la última tarjeta\",\"description\":\"Descripción de la última tarjeta\"} ]",
|
||||
"create": "Crear",
|
||||
"createBoardPopup-title": "Crear tablero",
|
||||
"chooseBoardSourcePopup-title": "Importar un tablero",
|
||||
"createLabelPopup-title": "Crear etiqueta",
|
||||
"createCustomField": "Crear un campo",
|
||||
"createCustomFieldPopup-title": "Crear un campo",
|
||||
"current": "actual",
|
||||
"custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"custom-field-checkbox": "Casilla de verificación",
|
||||
"custom-field-currency": "Currency",
|
||||
"custom-field-currency-option": "Currency Code",
|
||||
"custom-field-date": "Fecha",
|
||||
"custom-field-dropdown": "Lista desplegable",
|
||||
"custom-field-dropdown-none": "(nada)",
|
||||
"custom-field-dropdown-options": "Opciones de la lista",
|
||||
"custom-field-dropdown-options-placeholder": "Pulsa Intro para añadir más opciones",
|
||||
"custom-field-dropdown-unknown": "(desconocido)",
|
||||
"custom-field-number": "Número",
|
||||
"custom-field-text": "Texto",
|
||||
"custom-fields": "Campos personalizados",
|
||||
"date": "Fecha",
|
||||
"decline": "Declinar",
|
||||
"default-avatar": "Avatar por defecto",
|
||||
"delete": "Eliminar",
|
||||
"deleteCustomFieldPopup-title": "¿Eliminar el campo personalizado?",
|
||||
"deleteLabelPopup-title": "¿Eliminar la etiqueta?",
|
||||
"description": "Descripción",
|
||||
"disambiguateMultiLabelPopup-title": "Desambiguar la acción de etiqueta",
|
||||
"disambiguateMultiMemberPopup-title": "Desambiguar la acción de miembro",
|
||||
"discard": "Descartarla",
|
||||
"done": "Hecho",
|
||||
"download": "Descargar",
|
||||
"edit": "Editar",
|
||||
"edit-avatar": "Cambiar el avatar",
|
||||
"edit-profile": "Editar el perfil",
|
||||
"edit-wip-limit": "Cambiar el límite del trabajo en proceso",
|
||||
"soft-wip-limit": "Límite del trabajo en proceso flexible",
|
||||
"editCardStartDatePopup-title": "Cambiar la fecha de comienzo",
|
||||
"editCardDueDatePopup-title": "Cambiar la fecha de vencimiento",
|
||||
"editCustomFieldPopup-title": "Editar el campo",
|
||||
"editCardSpentTimePopup-title": "Cambiar el tiempo consumido",
|
||||
"editLabelPopup-title": "Cambiar la etiqueta",
|
||||
"editNotificationPopup-title": "Editar las notificaciones",
|
||||
"editProfilePopup-title": "Editar el perfil",
|
||||
"email": "Correo electrónico",
|
||||
"email-enrollAccount-subject": "Cuenta creada en __siteName__",
|
||||
"email-enrollAccount-text": "Hola __user__,\n\nPara empezar a utilizar el servicio, simplemente haz clic en el siguiente enlace.\n\n__url__\n\nGracias.",
|
||||
"email-fail": "Error al enviar el correo",
|
||||
"email-fail-text": "Error al intentar enviar el correo",
|
||||
"email-invalid": "Correo no válido",
|
||||
"email-invite": "Invitar vía correo electrónico",
|
||||
"email-invite-subject": "__inviter__ ha enviado una invitación",
|
||||
"email-invite-text": "Estimado __user__,\n\n__inviter__ te invita a unirte al tablero '__board__' para colaborar.\n\nPor favor, haz clic en el siguiente enlace:\n\n__url__\n\nGracias.",
|
||||
"email-resetPassword-subject": "Restablecer tu contraseña en __siteName__",
|
||||
"email-resetPassword-text": "Hola __user__,\n\nPara restablecer tu contraseña, haz clic en el siguiente enlace.\n\n__url__\n\nGracias.",
|
||||
"email-sent": "Correo enviado",
|
||||
"email-verifyEmail-subject": "Verifica tu dirección de correo en __siteName__",
|
||||
"email-verifyEmail-text": "Hola __user__,\n\nPara verificar tu cuenta de correo electrónico, haz clic en el siguiente enlace.\n\n__url__\n\nGracias.",
|
||||
"enable-wip-limit": "Habilitar el límite del trabajo en proceso",
|
||||
"error-board-doesNotExist": "El tablero no existe",
|
||||
"error-board-notAdmin": "Es necesario ser administrador de este tablero para hacer eso",
|
||||
"error-board-notAMember": "Es necesario ser miembro de este tablero para hacer eso",
|
||||
"error-json-malformed": "El texto no es un JSON válido",
|
||||
"error-json-schema": "Sus datos JSON no incluyen la información apropiada en el formato correcto",
|
||||
"error-csv-schema": "Su CSV(Valores separados por coma)/TSV(Valores separados por tab) no incluyen la información apropiada en el formato correcto",
|
||||
"error-list-doesNotExist": "La lista no existe",
|
||||
"error-user-doesNotExist": "El usuario no existe",
|
||||
"error-user-notAllowSelf": "No puedes invitarte a ti mismo",
|
||||
"error-user-notCreated": "El usuario no ha sido creado",
|
||||
"error-username-taken": "Este nombre de usuario ya está en uso",
|
||||
"error-email-taken": "Esta dirección de correo ya está en uso",
|
||||
"export-board": "Exportar el tablero",
|
||||
"export-board-json": "Exportar tablero a JSON",
|
||||
"export-board-csv": "Exportar tablero a CSV",
|
||||
"export-board-tsv": "Exportar tablero a TSV",
|
||||
"export-board-html": "Export board to HTML",
|
||||
"exportBoardPopup-title": "Exportar el tablero",
|
||||
"sort": "Ordenar",
|
||||
"sort-desc": "Click para ordenar la lista",
|
||||
"list-sort-by": "Ordenar la lista por:",
|
||||
"list-label-modifiedAt": "Hora de último acceso",
|
||||
"list-label-title": "Nombre de la lista",
|
||||
"list-label-sort": "Tu orden manual",
|
||||
"list-label-short-modifiedAt": "(L)",
|
||||
"list-label-short-title": "(N)",
|
||||
"list-label-short-sort": "(M)",
|
||||
"filter": "Filtrar",
|
||||
"filter-cards": "Filtrar tarjetas o listas",
|
||||
"list-filter-label": "Filtrar listas por título",
|
||||
"filter-clear": "Limpiar el filtro",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "Sin etiqueta",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "Sin miembro",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "No asignado",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "Sin campos personalizados",
|
||||
"filter-show-archive": "Mostrar las listas archivadas",
|
||||
"filter-hide-empty": "Ocultar las listas vacías",
|
||||
"filter-on": "Filtrado activado",
|
||||
"filter-on-desc": "Estás filtrando tarjetas en este tablero. Haz clic aquí para editar el filtro.",
|
||||
"filter-to-selection": "Filtrar la selección",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Filtrado avanzado",
|
||||
"advanced-filter-description": "El filtrado avanzado permite escribir una cadena que contiene los siguientes operadores: == != <= >= && || ( ) Se utiliza un espacio como separador entre los operadores. Se pueden filtrar todos los campos personalizados escribiendo sus nombres y valores. Por ejemplo: Campo1 == Valor1. Nota: Si los campos o valores contienen espacios, deben encapsularse entre comillas simples. Por ejemplo: 'Campo 1' == 'Valor 1'. Para omitir los caracteres de control único (' \\/), se usa \\. Por ejemplo: Campo1 = I\\'m. También se pueden combinar múltiples condiciones. Por ejemplo: C1 == V1 || C1 == V2. Normalmente todos los operadores se interpretan de izquierda a derecha. Se puede cambiar el orden colocando paréntesis. Por ejemplo: C1 == V1 && ( C2 == V2 || C2 == V3 ). También se puede buscar en campos de texto usando expresiones regulares: C1 == /Tes.*/i",
|
||||
"fullname": "Nombre completo",
|
||||
"header-logo-title": "Volver a tu página de tableros",
|
||||
"hide-system-messages": "Ocultar las notificaciones de actividad",
|
||||
"headerBarCreateBoardPopup-title": "Crear tablero",
|
||||
"home": "Inicio",
|
||||
"import": "Importar",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Enlace",
|
||||
"import-board": "importar un tablero",
|
||||
"import-board-c": "Importar un tablero",
|
||||
"import-board-title-trello": "Importar un tablero desde Trello",
|
||||
"import-board-title-wekan": "Importar tablero desde una exportación previa",
|
||||
"import-board-title-csv": "Importar tablero desde CSV/TSV",
|
||||
"from-trello": "Desde Trello",
|
||||
"from-wekan": "Desde exportación previa",
|
||||
"from-csv": "Desde CSV/TSV",
|
||||
"import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego 'Más' > 'Imprimir y exportar' > 'Exportar JSON', y copia el texto resultante.",
|
||||
"import-board-instruction-csv": "Pegue en sus Valores separados por coma(CSV)/Valores separados por tab(TSV).",
|
||||
"import-board-instruction-wekan": "En tu tablero, vete a 'Menú', luego 'Exportar tablero', y copia el texto en el archivo descargado.",
|
||||
"import-board-instruction-about-errors": "Aunque obtengas errores cuando importes el tablero, a veces la importación funciona igualmente, y el tablero se encontrará en la página de tableros.",
|
||||
"import-json-placeholder": "Pega tus datos JSON válidos aquí",
|
||||
"import-csv-placeholder": "Paste your valid CSV/TSV data here",
|
||||
"import-map-members": "Mapa de miembros",
|
||||
"import-members-map": "Tu tablero importado tiene algunos miembros. Por favor, mapea los miembros que quieres importar con tus usuarios.",
|
||||
"import-show-user-mapping": "Revisión de la asignación de miembros",
|
||||
"import-user-select": "Selecciona el miembro existe que quieres usar como este miembro.",
|
||||
"importMapMembersAddPopup-title": "Seleccionar miembro",
|
||||
"info": "Versión",
|
||||
"initials": "Iniciales",
|
||||
"invalid-date": "Fecha no válida",
|
||||
"invalid-time": "Tiempo no válido",
|
||||
"invalid-user": "Usuario no válido",
|
||||
"joined": "se ha unido",
|
||||
"just-invited": "Has sido invitado a este tablero",
|
||||
"keyboard-shortcuts": "Atajos de teclado",
|
||||
"label-create": "Crear una etiqueta",
|
||||
"label-default": "etiqueta %s (por defecto)",
|
||||
"label-delete-pop": "Se eliminará esta etiqueta de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"labels": "Etiquetas",
|
||||
"language": "Cambiar el idioma",
|
||||
"last-admin-desc": "No puedes cambiar roles porque debe haber al menos un administrador.",
|
||||
"leave-board": "Abandonar el tablero",
|
||||
"leave-board-pop": "¿Seguro que quieres abandonar __boardTitle__? Serás desvinculado de todas las tarjetas en este tablero.",
|
||||
"leaveBoardPopup-title": "¿Abandonar el tablero?",
|
||||
"link-card": "Enlazar a esta tarjeta",
|
||||
"list-archive-cards": "Archivar todas las tarjetas de esta lista",
|
||||
"list-archive-cards-pop": "Esto eliminará del tablero todas las tarjetas en esta lista. Para ver las tarjetas en el Archivo y recuperarlas al tablero haga click en \"Menu\" > \"Archivo\"",
|
||||
"list-move-cards": "Mover todas las tarjetas de esta lista",
|
||||
"list-select-cards": "Seleccionar todas las tarjetas de esta lista",
|
||||
"set-color-list": "Cambiar el color",
|
||||
"listActionPopup-title": "Acciones de la lista",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Acciones del carril de flujo",
|
||||
"swimlaneAddPopup-title": "Añadir un carril de flujo debajo",
|
||||
"listImportCardPopup-title": "Importar una tarjeta de Trello",
|
||||
"listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
|
||||
"listMorePopup-title": "Más",
|
||||
"link-list": "Enlazar a esta lista",
|
||||
"list-delete-pop": "Todas las acciones serán eliminadas del historial de actividades y no se podrá recuperar la lista. Esta acción no puede deshacerse.",
|
||||
"list-delete-suggest-archive": "Puedes mover una lista al Archivo para quitarla del tablero y preservar la actividad.",
|
||||
"lists": "Listas",
|
||||
"swimlanes": "Carriles",
|
||||
"log-out": "Finalizar la sesión",
|
||||
"log-in": "Iniciar sesión",
|
||||
"loginPopup-title": "Iniciar sesión",
|
||||
"memberMenuPopup-title": "Preferencias de miembro",
|
||||
"members": "Miembros",
|
||||
"menu": "Menú",
|
||||
"move-selection": "Mover la selección",
|
||||
"moveCardPopup-title": "Mover la tarjeta",
|
||||
"moveCardToBottom-title": "Mover al final",
|
||||
"moveCardToTop-title": "Mover al principio",
|
||||
"moveSelectionPopup-title": "Mover la selección",
|
||||
"multi-selection": "Selección múltiple",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Selección múltiple activada",
|
||||
"muted": "Silenciado",
|
||||
"muted-info": "No serás notificado de ningún cambio en este tablero",
|
||||
"my-boards": "Mis tableros",
|
||||
"name": "Nombre",
|
||||
"no-archived-cards": "No hay tarjetas archivadas.",
|
||||
"no-archived-lists": "No hay listas archivadas.",
|
||||
"no-archived-swimlanes": "No hay carriles archivados.",
|
||||
"no-results": "Sin resultados",
|
||||
"normal": "Normal",
|
||||
"normal-desc": "Puedes ver y editar tarjetas. No puedes cambiar la configuración.",
|
||||
"not-accepted-yet": "La invitación no ha sido aceptada aún",
|
||||
"notify-participate": "Recibir actualizaciones de cualquier tarjeta en la que participas como creador o miembro",
|
||||
"notify-watch": "Recibir actuaizaciones de cualquier tablero, lista o tarjeta que estés vigilando",
|
||||
"optional": "opcional",
|
||||
"or": "o",
|
||||
"page-maybe-private": "Esta página puede ser privada. Es posible que puedas verla al <a href='%s'>iniciar sesión</a>.",
|
||||
"page-not-found": "Página no encontrada.",
|
||||
"password": "Contraseña",
|
||||
"paste-or-dragdrop": "pegar o arrastrar y soltar un fichero de imagen (sólo imagen)",
|
||||
"participating": "Participando",
|
||||
"preview": "Previsualizar",
|
||||
"previewAttachedImagePopup-title": "Previsualizar",
|
||||
"previewClipboardImagePopup-title": "Previsualizar",
|
||||
"private": "Privado",
|
||||
"private-desc": "Este tablero es privado. Sólo las personas añadidas al tablero pueden verlo y editarlo.",
|
||||
"profile": "Perfil",
|
||||
"public": "Público",
|
||||
"public-desc": "Este tablero es público. Es visible para cualquiera a través del enlace, y se mostrará en los buscadores como Google. Sólo las personas añadidas al tablero pueden editarlo.",
|
||||
"quick-access-description": "Destaca un tablero para añadir un acceso directo en esta barra.",
|
||||
"remove-cover": "Eliminar portada",
|
||||
"remove-from-board": "Desvincular del tablero",
|
||||
"remove-label": "Eliminar la etiqueta",
|
||||
"listDeletePopup-title": "¿Eliminar la lista?",
|
||||
"remove-member": "Eliminar miembro",
|
||||
"remove-member-from-card": "Eliminar de la tarjeta",
|
||||
"remove-member-pop": "¿Eliminar __name__ (__username__) de __boardTitle__? El miembro será eliminado de todas las tarjetas de este tablero. En ellas se mostrará una notificación.",
|
||||
"removeMemberPopup-title": "¿Eliminar miembro?",
|
||||
"rename": "Renombrar",
|
||||
"rename-board": "Renombrar el tablero",
|
||||
"restore": "Restaurar",
|
||||
"save": "Añadir",
|
||||
"search": "Buscar",
|
||||
"rules": "Reglas",
|
||||
"search-cards": "Buscar entre los títulos, las descripciones de las tarjetas/listas y los campos personalizados en este tablero.",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Seleccionar el color",
|
||||
"set-wip-limit-value": "Cambiar el límite para el número máximo de tareas en esta lista.",
|
||||
"setWipLimitPopup-title": "Cambiar el límite del trabajo en proceso",
|
||||
"shortcut-assign-self": "Asignarte a ti mismo a la tarjeta actual",
|
||||
"shortcut-autocomplete-emoji": "Autocompletar emoji",
|
||||
"shortcut-autocomplete-members": "Autocompletar miembros",
|
||||
"shortcut-clear-filters": "Limpiar todos los filtros",
|
||||
"shortcut-close-dialog": "Cerrar el cuadro de diálogo",
|
||||
"shortcut-filter-my-cards": "Filtrar mis tarjetas",
|
||||
"shortcut-show-shortcuts": "Mostrar esta lista de atajos",
|
||||
"shortcut-toggle-filterbar": "Conmutar la barra lateral del filtro",
|
||||
"shortcut-toggle-sidebar": "Conmutar la barra lateral del tablero",
|
||||
"show-cards-minimum-count": "Mostrar recuento de tarjetas si la lista contiene más de",
|
||||
"sidebar-open": "Abrir la barra lateral",
|
||||
"sidebar-close": "Cerrar la barra lateral",
|
||||
"signupPopup-title": "Crear una cuenta",
|
||||
"star-board-title": "Haz clic para destacar este tablero. Se mostrará en la parte superior de tu lista de tableros.",
|
||||
"starred-boards": "Tableros destacados",
|
||||
"starred-boards-description": "Los tableros destacados se mostrarán en la parte superior de tu lista de tableros.",
|
||||
"subscribe": "Suscribirse",
|
||||
"team": "Equipo",
|
||||
"this-board": "este tablero",
|
||||
"this-card": "esta tarjeta",
|
||||
"spent-time-hours": "Tiempo consumido (horas)",
|
||||
"overtime-hours": "Tiempo excesivo (horas)",
|
||||
"overtime": "Tiempo excesivo",
|
||||
"has-overtime-cards": "Hay tarjetas con el tiempo excedido",
|
||||
"has-spenttime-cards": "Se ha excedido el tiempo de las tarjetas",
|
||||
"time": "Hora",
|
||||
"title": "Título",
|
||||
"tracking": "Siguiendo",
|
||||
"tracking-info": "Serás notificado de cualquier cambio en las tarjetas en las que participas como creador o miembro.",
|
||||
"type": "Tipo",
|
||||
"unassign-member": "Desvincular al miembro",
|
||||
"unsaved-description": "Tienes una descripción por añadir.",
|
||||
"unwatch": "Dejar de vigilar",
|
||||
"upload": "Cargar",
|
||||
"upload-avatar": "Cargar un avatar",
|
||||
"uploaded-avatar": "Avatar cargado",
|
||||
"username": "Nombre de usuario",
|
||||
"view-it": "Verla",
|
||||
"warn-list-archived": "advertencia: esta tarjeta está en una lista en el Archivo",
|
||||
"watch": "Vigilar",
|
||||
"watching": "Vigilando",
|
||||
"watching-info": "Serás notificado de cualquier cambio en este tablero",
|
||||
"welcome-board": "Tablero de bienvenida",
|
||||
"welcome-swimlane": "Hito 1",
|
||||
"welcome-list1": "Básicos",
|
||||
"welcome-list2": "Avanzados",
|
||||
"card-templates-swimlane": "Plantilla de tarjeta",
|
||||
"list-templates-swimlane": "Listar plantillas",
|
||||
"board-templates-swimlane": "Plantilla de tablero",
|
||||
"what-to-do": "¿Qué quieres hacer?",
|
||||
"wipLimitErrorPopup-title": "El límite del trabajo en proceso no es válido.",
|
||||
"wipLimitErrorPopup-dialog-pt1": "El número de tareas en esta lista es mayor que el límite del trabajo en proceso que has definido.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Por favor, mueve algunas tareas fuera de esta lista, o fija un límite del trabajo en proceso más alto.",
|
||||
"admin-panel": "Panel del administrador",
|
||||
"settings": "Preferencias",
|
||||
"people": "Personas",
|
||||
"registration": "Registro",
|
||||
"disable-self-registration": "Deshabilitar autoregistro",
|
||||
"invite": "Invitar",
|
||||
"invite-people": "Invitar a personas",
|
||||
"to-boards": "A el(los) tablero(s)",
|
||||
"email-addresses": "Direcciones de correo electrónico",
|
||||
"smtp-host-description": "Dirección del servidor SMTP para gestionar tus correos",
|
||||
"smtp-port-description": "Puerto usado por el servidor SMTP para mandar correos",
|
||||
"smtp-tls-description": "Habilitar el soporte TLS para el servidor SMTP",
|
||||
"smtp-host": "Servidor SMTP",
|
||||
"smtp-port": "Puerto SMTP",
|
||||
"smtp-username": "Nombre de usuario",
|
||||
"smtp-password": "Contraseña",
|
||||
"smtp-tls": "Soporte TLS",
|
||||
"send-from": "Desde",
|
||||
"send-smtp-test": "Enviarte un correo de prueba a ti mismo",
|
||||
"invitation-code": "Código de Invitación",
|
||||
"email-invite-register-subject": "__inviter__ te ha enviado una invitación",
|
||||
"email-invite-register-text": "Querido __user__,\n__inviter__ le invita al tablero kanban para colaborar.\n\nPor favor, siga el siguiente enlace:\n__url__\n\nY tu código de invitación es: __icode__\n\nGracias.",
|
||||
"email-smtp-test-subject": "Prueba de email SMTP",
|
||||
"email-smtp-test-text": "El correo se ha enviado correctamente",
|
||||
"error-invitation-code-not-exist": "El código de invitación no existe",
|
||||
"error-notAuthorized": "No estás autorizado a ver esta página.",
|
||||
"webhook-title": "Nombre del Webhook",
|
||||
"webhook-token": "Token (opcional para la autenticación)",
|
||||
"outgoing-webhooks": "Webhooks salientes",
|
||||
"bidirectional-webhooks": "Webhooks de doble sentido",
|
||||
"outgoingWebhooksPopup-title": "Webhooks salientes",
|
||||
"boardCardTitlePopup-title": "Filtro de títulos de tarjeta",
|
||||
"disable-webhook": "Deshabilitar este Webhook",
|
||||
"global-webhook": "Webhooks globales",
|
||||
"new-outgoing-webhook": "Nuevo webhook saliente",
|
||||
"no-name": "(Desconocido)",
|
||||
"Node_version": "Versión de Node",
|
||||
"Meteor_version": "Versión de Meteor",
|
||||
"MongoDB_version": "Versión de MongoDB",
|
||||
"MongoDB_storage_engine": "Motor de almacenamiento de MongoDB",
|
||||
"MongoDB_Oplog_enabled": "Oplog de MongoDB habilitado",
|
||||
"OS_Arch": "Arquitectura del sistema",
|
||||
"OS_Cpus": "Número de CPUs del sistema",
|
||||
"OS_Freemem": "Memoria libre del sistema",
|
||||
"OS_Loadavg": "Carga media del sistema",
|
||||
"OS_Platform": "Plataforma del sistema",
|
||||
"OS_Release": "Publicación del sistema",
|
||||
"OS_Totalmem": "Memoria total del sistema",
|
||||
"OS_Type": "Tipo de sistema",
|
||||
"OS_Uptime": "Tiempo activo del sistema",
|
||||
"days": "días",
|
||||
"hours": "horas",
|
||||
"minutes": "minutos",
|
||||
"seconds": "segundos",
|
||||
"show-field-on-card": "Mostrar este campo en la tarjeta",
|
||||
"automatically-field-on-card": "Crear campos automáticamente para todas las tarjetas.",
|
||||
"showLabel-field-on-card": "Mostrar etiquetas de campos en la minitarjeta.",
|
||||
"yes": "Sí",
|
||||
"no": "No",
|
||||
"accounts": "Cuentas",
|
||||
"accounts-allowEmailChange": "Permitir cambiar el correo electrónico",
|
||||
"accounts-allowUserNameChange": "Permitir cambiar el nombre de usuario",
|
||||
"createdAt": "Fecha de alta",
|
||||
"verified": "Verificado",
|
||||
"active": "Activo",
|
||||
"card-received": "Recibido",
|
||||
"card-received-on": "Recibido el",
|
||||
"card-end": "Finalizado",
|
||||
"card-end-on": "Finalizado el",
|
||||
"editCardReceivedDatePopup-title": "Cambiar la fecha de recepción",
|
||||
"editCardEndDatePopup-title": "Cambiar la fecha de finalización",
|
||||
"setCardColorPopup-title": "Cambiar el color",
|
||||
"setCardActionsColorPopup-title": "Elegir un color",
|
||||
"setSwimlaneColorPopup-title": "Elegir un color",
|
||||
"setListColorPopup-title": "Elegir un color",
|
||||
"assigned-by": "Asignado por",
|
||||
"requested-by": "Solicitado por",
|
||||
"board-delete-notice": "Se eliminarán todas las listas, tarjetas y acciones asociadas a este tablero. Esta acción no puede deshacerse.",
|
||||
"delete-board-confirm-popup": "Se eliminarán todas las listas, tarjetas, etiquetas y actividades, y no podrás recuperar los contenidos del tablero. Esta acción no puede deshacerse.",
|
||||
"boardDeletePopup-title": "¿Eliminar el tablero?",
|
||||
"delete-board": "Eliminar el tablero",
|
||||
"default-subtasks-board": "Subtareas para el tablero __board__",
|
||||
"default": "Por defecto",
|
||||
"queue": "Cola",
|
||||
"subtask-settings": "Preferencias de las subtareas",
|
||||
"card-settings": "Preferencias de la tarjeta",
|
||||
"boardSubtaskSettingsPopup-title": "Preferencias de las subtareas del tablero",
|
||||
"boardCardSettingsPopup-title": "Preferencias de la tarjeta",
|
||||
"deposit-subtasks-board": "Depositar subtareas en este tablero:",
|
||||
"deposit-subtasks-list": "Lista de destino para subtareas depositadas aquí:",
|
||||
"show-parent-in-minicard": "Mostrar el padre en una minitarjeta:",
|
||||
"prefix-with-full-path": "Prefijo con ruta completa",
|
||||
"prefix-with-parent": "Prefijo con el padre",
|
||||
"subtext-with-full-path": "Subtexto con ruta completa",
|
||||
"subtext-with-parent": "Subtexto con el padre",
|
||||
"change-card-parent": "Cambiar la tarjeta padre",
|
||||
"parent-card": "Tarjeta padre",
|
||||
"source-board": "Tablero de origen",
|
||||
"no-parent": "No mostrar la tarjeta padre",
|
||||
"activity-added-label": "añadida etiqueta %s a %s",
|
||||
"activity-removed-label": "eliminada etiqueta '%s' desde %s",
|
||||
"activity-delete-attach": "eliminado un adjunto desde %s",
|
||||
"activity-added-label-card": "añadida etiqueta '%s'",
|
||||
"activity-removed-label-card": "eliminada etiqueta '%s'",
|
||||
"activity-delete-attach-card": "eliminado un adjunto",
|
||||
"activity-set-customfield": "Cambiar el campo personalizado '%s' a '%s' en %s",
|
||||
"activity-unset-customfield": "Desmarcar el campo personalizado '%s' en %s",
|
||||
"r-rule": "Regla",
|
||||
"r-add-trigger": "Añadir disparador",
|
||||
"r-add-action": "Añadir acción",
|
||||
"r-board-rules": "Reglas del tablero",
|
||||
"r-add-rule": "Añadir regla",
|
||||
"r-view-rule": "Ver regla",
|
||||
"r-delete-rule": "Eliminar regla",
|
||||
"r-new-rule-name": "Nueva título de regla",
|
||||
"r-no-rules": "No hay reglas",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "Cuando una tarjeta",
|
||||
"r-is": "es",
|
||||
"r-is-moved": "es movida",
|
||||
"r-added-to": "Added to",
|
||||
"r-removed-from": "eliminado de",
|
||||
"r-the-board": "el tablero",
|
||||
"r-list": "la lista",
|
||||
"set-filter": "Filtrar",
|
||||
"r-moved-to": "Movido a",
|
||||
"r-moved-from": "Movido desde",
|
||||
"r-archived": "Se archivó",
|
||||
"r-unarchived": "Restaurado del archivo",
|
||||
"r-a-card": "una tarjeta",
|
||||
"r-when-a-label-is": "Cuando una etiqueta es",
|
||||
"r-when-the-label": "Cuando la etiqueta es",
|
||||
"r-list-name": "Nombre de lista",
|
||||
"r-when-a-member": "Cuando un miembro es",
|
||||
"r-when-the-member": "Cuando el miembro",
|
||||
"r-name": "nombre",
|
||||
"r-when-a-attach": "Cuando un adjunto",
|
||||
"r-when-a-checklist": "Cuando una lista de verificación es",
|
||||
"r-when-the-checklist": "Cuando la lista de verificación",
|
||||
"r-completed": "Completada",
|
||||
"r-made-incomplete": "Hecha incompleta",
|
||||
"r-when-a-item": "Cuando un elemento de la lista de verificación es",
|
||||
"r-when-the-item": "Cuando el elemento de la lista de verificación es",
|
||||
"r-checked": "Marcado",
|
||||
"r-unchecked": "Desmarcado",
|
||||
"r-move-card-to": "Mover la tarjeta",
|
||||
"r-top-of": "Arriba de",
|
||||
"r-bottom-of": "Abajo de",
|
||||
"r-its-list": "su lista",
|
||||
"r-archive": "Archivar",
|
||||
"r-unarchive": "Restaurar del Archivo",
|
||||
"r-card": "la tarjeta",
|
||||
"r-add": "Añadir",
|
||||
"r-remove": "Eliminar",
|
||||
"r-label": "etiqueta",
|
||||
"r-member": "miembro",
|
||||
"r-remove-all": "Eliminar todos los miembros de la tarjeta",
|
||||
"r-set-color": "Cambiar el color a",
|
||||
"r-checklist": "lista de verificación",
|
||||
"r-check-all": "Marcar todo",
|
||||
"r-uncheck-all": "Desmarcar todo",
|
||||
"r-items-check": "elementos de la lista de verificación",
|
||||
"r-check": "Marcar",
|
||||
"r-uncheck": "Desmarcar",
|
||||
"r-item": "elemento",
|
||||
"r-of-checklist": "de la lista de verificación",
|
||||
"r-send-email": "Enviar un email",
|
||||
"r-to": "a",
|
||||
"r-of": "of",
|
||||
"r-subject": "asunto",
|
||||
"r-rule-details": "Detalle de la regla",
|
||||
"r-d-move-to-top-gen": "Mover la tarjeta al inicio de su lista",
|
||||
"r-d-move-to-top-spec": "Mover la tarjeta al inicio de la lista",
|
||||
"r-d-move-to-bottom-gen": "Mover la tarjeta al final de su lista",
|
||||
"r-d-move-to-bottom-spec": "Mover la tarjeta al final de la lista",
|
||||
"r-d-send-email": "Enviar email",
|
||||
"r-d-send-email-to": "a",
|
||||
"r-d-send-email-subject": "asunto",
|
||||
"r-d-send-email-message": "mensaje",
|
||||
"r-d-archive": "Archivar la tarjeta",
|
||||
"r-d-unarchive": "Restaurar tarjeta del Archivo",
|
||||
"r-d-add-label": "Añadir etiqueta",
|
||||
"r-d-remove-label": "Eliminar etiqueta",
|
||||
"r-create-card": "Crear una nueva tarjeta",
|
||||
"r-in-list": "en la lista",
|
||||
"r-in-swimlane": "en el carril",
|
||||
"r-d-add-member": "Añadir miembro",
|
||||
"r-d-remove-member": "Eliminar miembro",
|
||||
"r-d-remove-all-member": "Eliminar todos los miembros",
|
||||
"r-d-check-all": "Marcar todos los elementos de una lista",
|
||||
"r-d-uncheck-all": "Desmarcar todos los elementos de una lista",
|
||||
"r-d-check-one": "Marcar elemento",
|
||||
"r-d-uncheck-one": "Desmarcar elemento",
|
||||
"r-d-check-of-list": "de la lista de verificación",
|
||||
"r-d-add-checklist": "Añadir una lista de verificación",
|
||||
"r-d-remove-checklist": "Eliminar lista de verificación",
|
||||
"r-by": "por",
|
||||
"r-add-checklist": "Añadir una lista de verificación",
|
||||
"r-with-items": "con items",
|
||||
"r-items-list": "item1,item2,item3",
|
||||
"r-add-swimlane": "Agregar el carril",
|
||||
"r-swimlane-name": "nombre del carril",
|
||||
"r-board-note": "Nota: deje un campo vacío para que coincida con todos los valores posibles",
|
||||
"r-checklist-note": "Nota: los ítems de la lista tienen que escribirse como valores separados por coma.",
|
||||
"r-when-a-card-is-moved": "Cuando una tarjeta es movida a otra lista",
|
||||
"r-set": "Cambiar",
|
||||
"r-update": "Actualizar",
|
||||
"r-datefield": "campo de fecha",
|
||||
"r-df-start-at": "comienza",
|
||||
"r-df-due-at": "vencimiento",
|
||||
"r-df-end-at": "finalizado",
|
||||
"r-df-received-at": "recibido",
|
||||
"r-to-current-datetime": "a la fecha/hora actual",
|
||||
"r-remove-value-from": "Eliminar el valor de",
|
||||
"ldap": "LDAP",
|
||||
"oauth2": "OAuth2",
|
||||
"cas": "CAS",
|
||||
"authentication-method": "Método de autenticación",
|
||||
"authentication-type": "Tipo de autenticación",
|
||||
"custom-product-name": "Nombre de producto personalizado",
|
||||
"layout": "Diseño",
|
||||
"hide-logo": "Ocultar el logo",
|
||||
"add-custom-html-after-body-start": "Añade HTML personalizado después de <body>",
|
||||
"add-custom-html-before-body-end": "Añade HTML personalizado después de </body>",
|
||||
"error-undefined": "Algo no está bien",
|
||||
"error-ldap-login": "Ocurrió un error al intentar acceder",
|
||||
"display-authentication-method": "Mostrar el método de autenticación",
|
||||
"default-authentication-method": "Método de autenticación por defecto",
|
||||
"duplicate-board": "Duplicar tablero",
|
||||
"people-number": "El número de personas es:",
|
||||
"swimlaneDeletePopup-title": "¿Eliminar el carril de flujo?",
|
||||
"swimlane-delete-pop": "Todas las acciones serán eliminadas del historial de actividades y no se podrá recuperar el carril de flujo. Esta acción no puede deshacerse.",
|
||||
"restore-all": "Restaurar todas",
|
||||
"delete-all": "Borrar todas",
|
||||
"loading": "Cargando. Por favor, espere.",
|
||||
"previous_as": "el último tiempo fue",
|
||||
"act-a-dueAt": "cambiada la hora de vencimiento a \nCuándo: __timeValue__\nDónde: __card__\n el vencimiento anterior fue __timeOldValue__",
|
||||
"act-a-endAt": "cambiada la hora de finalización a __timeValue__ Fecha anterior: (__timeOldValue__)",
|
||||
"act-a-startAt": "cambiada la hora de comienzo a __timeValue__ Fecha anterior: (__timeOldValue__)",
|
||||
"act-a-receivedAt": "cambiada la fecha de recepción a __timeValue__ Fecha anterior: (__timeOldValue__)",
|
||||
"a-dueAt": "cambiada la hora de vencimiento a",
|
||||
"a-endAt": "cambiada la hora de finalización a",
|
||||
"a-startAt": "cambiada la hora de comienzo a",
|
||||
"a-receivedAt": "cambiada la hora de recepción a",
|
||||
"almostdue": "está próxima la hora de vencimiento actual %s",
|
||||
"pastdue": "se sobrepasó la hora de vencimiento actual%s",
|
||||
"duenow": "la hora de vencimiento actual %s es hoy",
|
||||
"act-newDue": "__list__/__card__ tiene una 1ra notificación de vencimiento [__board__]",
|
||||
"act-withDue": "__list__/__card__ notificaciones de vencimiento [__board__]",
|
||||
"act-almostdue": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ está próximo",
|
||||
"act-pastdue": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ se sobrepasó",
|
||||
"act-duenow": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ es ahora",
|
||||
"act-atUserComment": "Se te mencionó en [__board__] __list__/__card__",
|
||||
"delete-user-confirm-popup": "¿Seguro que quieres eliminar esta cuenta? Esta acción no puede deshacerse.",
|
||||
"accounts-allowUserDelete": "Permitir a los usuarios eliminar su cuenta",
|
||||
"hide-minicard-label-text": "Ocultar el texto de la etiqueta de la minitarjeta",
|
||||
"show-desktop-drag-handles": "Mostrar los controles de arrastre del escritorio",
|
||||
"assignee": "Asignado",
|
||||
"cardAssigneesPopup-title": "Asignado",
|
||||
"addmore-detail": "Añadir una descripción detallada",
|
||||
"show-on-card": "Mostrar en la tarjeta",
|
||||
"new": "Nuevo",
|
||||
"editUserPopup-title": "Editar el usuario",
|
||||
"newUserPopup-title": "Nuevo usuario",
|
||||
"notifications": "Notificaciones",
|
||||
"view-all": "Ver todo",
|
||||
"filter-by-unread": "Filtrar por no leído",
|
||||
"mark-all-as-read": "Marcar todo como leido",
|
||||
"remove-all-read": "Remove all read",
|
||||
"allow-rename": "Permitir renombrar",
|
||||
"allowRenamePopup-title": "Permitir renombrar",
|
||||
"start-day-of-week": "Set day of the week start",
|
||||
"monday": "Lunes",
|
||||
"tuesday": "Martes",
|
||||
"wednesday": "Miércoles",
|
||||
"thursday": "Jueves",
|
||||
"friday": "Viernes",
|
||||
"saturday": "Sábado",
|
||||
"sunday": "Domingo",
|
||||
"status": "Status",
|
||||
"swimlane": "Swimlane",
|
||||
"owner": "Owner",
|
||||
"last-modified-at": "Last modified at",
|
||||
"last-activity": "Last activity",
|
||||
"voting": "Voting",
|
||||
"archived": "Archived",
|
||||
"delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
|
||||
"delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
|
||||
"hide-checked-items": "Hide checked items"
|
||||
}
|
||||
@@ -0,0 +1,824 @@
|
||||
{
|
||||
"accept": "Aceptar",
|
||||
"act-activity-notify": "Notificación de actividad",
|
||||
"act-addAttachment": "agregado el adjunto __attachment__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-deleteAttachment": "eliminado el adjunto __attachment__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-addSubtask": "agregada la subtarea __subtask__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-addLabel": "agregada la etiqueta __label__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-addedLabel": "agregada la etiqueta __label__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-removeLabel": "eliminada la etiqueta __label__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-removedLabel": "eliminada la etiqueta __label__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-addChecklist": "agregada la lista de comprobación __checklist__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-addChecklistItem": "agregado el elemento __checklistItem__ a la lista de comprobación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-removeChecklist": "eliminada la lista de comprobación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-removeChecklistItem": "eliminado el elemento __checklistItem__ de la lista de comprobación __checkList__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-checkedItem": "marcado el elemento __checklistItem__ de la lista de comprobación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-uncheckedItem": "desmarcado el elemento __checklistItem__ de la lista de comprobación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-completeChecklist": "completada la lista de comprobación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-uncompleteChecklist": "no completada la lista de comprobación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-addComment": "comentario en la tarjeta__card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-editComment": "comentario editado en la tarjeta __card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-deleteComment": "comentario eliminado en la tarjeta __card__: __comment__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-createBoard": "creó el tablero __board__",
|
||||
"act-createSwimlane": "creó el carril «swimlane» __swimlane__ en el tablero __board__",
|
||||
"act-createCard": "creada la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-createCustomField": "creado el campo personalizado __customField__ en el tablero __board__",
|
||||
"act-deleteCustomField": "eliminado el campo personalizado __customField__ del tablero __board__",
|
||||
"act-setCustomField": "editado el campo personalizado __customField__: __customFieldValue__ en la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-createList": "agregada la lista __list__ al tablero __board__",
|
||||
"act-addBoardMember": "agregado el mimbro __member__ al tablero __board__",
|
||||
"act-archivedBoard": "El tablero __board__ se ha archivado",
|
||||
"act-archivedCard": "La tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__ se ha archivado",
|
||||
"act-archivedList": "La lista __list__ del carril __swimlane__ del tablero __board__ se ha archivado",
|
||||
"act-archivedSwimlane": "El carril __swimlane__ del tablero __board__ se ha archivado",
|
||||
"act-importBoard": "importado el tablero __board__",
|
||||
"act-importCard": "importada la tarjeta __card__ a la lista __list__ del carrril __swimlane__ del tablero __board__",
|
||||
"act-importList": "importada la lista __list__ al carril __swimlane__ del tablero __board__",
|
||||
"act-joinMember": "agregado el miembro __member__ a la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-moveCard": "movida la tarjeta __card__ del tablero __board__ de la lista __oldList__ del carril __oldSwimlane__ a la lista __list__ del carril __swimlane__",
|
||||
"act-moveCardToOtherBoard": "movida la tarjeta __card__ de la lista __oldList__ del carril __oldSwimlane__ del tablero __oldBoard__ a la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-removeBoardMember": "eliminado el miembro __member__ del tablero __board__",
|
||||
"act-restoredCard": "restaurada la tarjeta __card__ a la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-unjoinMember": "eliminado el miembro __member__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"act-withBoardTitle": "__board__",
|
||||
"act-withCardTitle": "[__board__] __card__",
|
||||
"actions": "Acciones",
|
||||
"activities": "Actividades",
|
||||
"activity": "Actividad",
|
||||
"activity-added": "ha agregado %s a %s",
|
||||
"activity-archived": "%s se ha archivado",
|
||||
"activity-attached": "ha adjuntado %s a %s",
|
||||
"activity-created": "ha creado %s",
|
||||
"activity-customfield-created": "creó el campo personalizado %s",
|
||||
"activity-excluded": "ha excluido %s de %s",
|
||||
"activity-imported": "ha importado %s a %s desde %s",
|
||||
"activity-imported-board": "ha importado %s desde %s",
|
||||
"activity-joined": "se ha unido a %s",
|
||||
"activity-moved": "ha movido %s de %s a %s",
|
||||
"activity-on": "en %s",
|
||||
"activity-removed": "ha eliminado %s de %s",
|
||||
"activity-sent": "ha enviado %s a %s",
|
||||
"activity-unjoined": "se ha desvinculado de %s",
|
||||
"activity-subtask-added": "ha agregado la subtarea a %s",
|
||||
"activity-checked-item": "marcado %s en la lista de comprobación %s de %s",
|
||||
"activity-unchecked-item": "desmarcado %s en la lista de comprobación %s de %s",
|
||||
"activity-checklist-added": "ha agregado una lista de comprobación a %s",
|
||||
"activity-checklist-removed": "eliminada una lista de comprobación desde %s",
|
||||
"activity-checklist-completed": "lista de comprobación completada %s de %s",
|
||||
"activity-checklist-uncompleted": "no completado la lista de comprobación %s de %s",
|
||||
"activity-checklist-item-added": "ha agregado el elemento de la lista de comprobación a «%s» en %s",
|
||||
"activity-checklist-item-removed": "eliminado un elemento de la lista de comprobación desde «%s» en %s",
|
||||
"add": "Agregar",
|
||||
"activity-checked-item-card": "marcado %s en la lista de comprobación %s",
|
||||
"activity-unchecked-item-card": "desmarcado %s en la lista de comprobación %s",
|
||||
"activity-checklist-completed-card": "completada la lista de comprobación __checklist__ de la tarjeta __card__ de la lista __list__ del carril __swimlane__ del tablero __board__",
|
||||
"activity-checklist-uncompleted-card": "no completó la lista de comprobación %s",
|
||||
"activity-editComment": "comentario editado",
|
||||
"activity-deleteComment": "comentario eliminado",
|
||||
"add-attachment": "Agregar adjunto",
|
||||
"add-board": "Agregar tablero",
|
||||
"add-card": "Agregar una tarjeta",
|
||||
"add-swimlane": "Agregar un carril «swimlane»",
|
||||
"add-subtask": "Agregar subtarea",
|
||||
"add-checklist": "Agregar lista de comprobación",
|
||||
"add-checklist-item": "Agregar un elemento a la lista de comprobación",
|
||||
"add-cover": "Agregar portada",
|
||||
"add-label": "Agregar una etiqueta",
|
||||
"add-list": "Agregar una lista",
|
||||
"add-members": "Agregar miembros",
|
||||
"added": "Agregada el",
|
||||
"addMemberPopup-title": "Miembros",
|
||||
"admin": "Administrador",
|
||||
"admin-desc": "Puede ver y editar tarjetas, eliminar miembros y cambiar la configuración del tablero.",
|
||||
"admin-announcement": "Anuncio",
|
||||
"admin-announcement-active": "Habilitar los anuncios en todo el sistema",
|
||||
"admin-announcement-title": "Anuncio del administrador",
|
||||
"all-boards": "Todos los tableros",
|
||||
"and-n-other-card": "y __count__ tarjeta más",
|
||||
"and-n-other-card_plural": "y otras __count__ tarjetas",
|
||||
"apply": "Aplicar",
|
||||
"app-is-offline": "Cargando, por favor espere. Actualizar la página causará pérdida de datos. Si la carga no funciona, por favor compruebe que el servidor no se ha detenido.",
|
||||
"archive": "Archivar",
|
||||
"archive-all": "Archivar todo",
|
||||
"archive-board": "Archivar este tablero",
|
||||
"archive-card": "Archivar esta tarjeta",
|
||||
"archive-list": "Archivar esta lista",
|
||||
"archive-swimlane": "Archivar este carril",
|
||||
"archive-selection": "Archivar esta selección",
|
||||
"archiveBoardPopup-title": "¿Archivar este tablero?",
|
||||
"archived-items": "Archivo",
|
||||
"archived-boards": "Tableros en el archivo",
|
||||
"restore-board": "Restaurar el tablero",
|
||||
"no-archived-boards": "No hay tableros en el archivo",
|
||||
"archives": "Archivo",
|
||||
"template": "Plantilla",
|
||||
"templates": "Plantillas",
|
||||
"assign-member": "Asignar miembros",
|
||||
"attached": "adjuntado",
|
||||
"attachment": "Adjunto",
|
||||
"attachment-delete-pop": "La eliminación de un fichero adjunto es permanente. Esta acción no puede deshacerse.",
|
||||
"attachmentDeletePopup-title": "¿Eliminar el adjunto?",
|
||||
"attachments": "Adjuntos",
|
||||
"auto-watch": "Suscribirse automáticamente a los tableros cuando son creados",
|
||||
"avatar-too-big": "El avatar es muy grande (70 KB máx.)",
|
||||
"back": "Atrás",
|
||||
"board-change-color": "Cambiar el color",
|
||||
"board-nb-stars": "%s destacados",
|
||||
"board-not-found": "Tablero no encontrado",
|
||||
"board-private-info": "Este tablero será <strong>privado</strong>.",
|
||||
"board-public-info": "Este tablero será <strong>público</strong>.",
|
||||
"boardChangeColorPopup-title": "Cambiar el fondo del tablero",
|
||||
"boardChangeTitlePopup-title": "Renombrar el tablero",
|
||||
"boardChangeVisibilityPopup-title": "Cambiar visibilidad",
|
||||
"boardChangeWatchPopup-title": "Cambiar vigilancia",
|
||||
"boardMenuPopup-title": "Configuración del tablero",
|
||||
"boardChangeViewPopup-title": "Vista del tablero",
|
||||
"boards": "Tableros",
|
||||
"board-view": "Vista del tablero",
|
||||
"board-view-cal": "Calendario",
|
||||
"board-view-swimlanes": "Carriles",
|
||||
"board-view-collapse": "Contraer",
|
||||
"board-view-lists": "Listas",
|
||||
"bucket-example": "Como «Cosas por hacer» por ejemplo",
|
||||
"cancel": "Cancelar",
|
||||
"card-archived": "Se archivó esta tarjeta",
|
||||
"board-archived": "Se archivó este tablero",
|
||||
"card-comments-title": "Esta tarjeta tiene %s comentarios.",
|
||||
"card-delete-notice": "la eliminación es permanente. Perderá todas las acciones asociadas a esta tarjeta.",
|
||||
"card-delete-pop": "Se eliminarán todas las acciones de la fuente de actividades y no se podrá volver a abrir la tarjeta. Esta acción no puede deshacerse.",
|
||||
"card-delete-suggest-archive": "Puede mover una tarjeta al archivo para quitarla del tablero y preservar la actividad.",
|
||||
"card-due": "Vence",
|
||||
"card-due-on": "Vence el",
|
||||
"card-spent": "Tiempo consumido",
|
||||
"card-edit-attachments": "Editar los adjuntos",
|
||||
"card-edit-custom-fields": "Editar los campos personalizados",
|
||||
"card-edit-labels": "Editar las etiquetas",
|
||||
"card-edit-members": "Editar los miembros",
|
||||
"card-labels-title": "Cambia las etiquetas de la tarjeta.",
|
||||
"card-members-title": "Agregar o eliminar miembros del tablero desde la tarjeta.",
|
||||
"card-start": "Comienza",
|
||||
"card-start-on": "Comienza el",
|
||||
"cardAttachmentsPopup-title": "Adjuntar desde",
|
||||
"cardCustomField-datePopup-title": "Cambiar la fecha",
|
||||
"cardCustomFieldsPopup-title": "Editar los campos personalizados",
|
||||
"cardStartVotingPopup-title": "Comience a votar",
|
||||
"positiveVoteMembersPopup-title": "Favorables",
|
||||
"negativeVoteMembersPopup-title": "Contrarios",
|
||||
"card-edit-voting": "Editar votación",
|
||||
"editVoteEndDatePopup-title": "Cambie fecha de termino del voto",
|
||||
"allowNonBoardMembers": "Permitir todos los usuarios autentificados",
|
||||
"vote-question": "Pregunta de votación",
|
||||
"vote-public": "Mostrar quien voto que",
|
||||
"vote-for-it": "por esto",
|
||||
"vote-against": "contrarios",
|
||||
"deleteVotePopup-title": "¿Borrar voto?",
|
||||
"vote-delete-pop": "El borrado es permanente. Perderá todas las acciones asociadas con este voto.",
|
||||
"cardDeletePopup-title": "¿Eliminar la tarjeta?",
|
||||
"cardDetailsActionsPopup-title": "Acciones de la tarjeta",
|
||||
"cardLabelsPopup-title": "Etiquetas",
|
||||
"cardMembersPopup-title": "Miembros",
|
||||
"cardMorePopup-title": "Más",
|
||||
"cardTemplatePopup-title": "Crear plantilla",
|
||||
"cards": "Tarjetas",
|
||||
"cards-count": "Tarjetas",
|
||||
"casSignIn": "Iniciar sesión con CAS",
|
||||
"cardType-card": "Tarjeta",
|
||||
"cardType-linkedCard": "Tarjeta enlazada",
|
||||
"cardType-linkedBoard": "Tablero enlazado",
|
||||
"change": "Cambiar",
|
||||
"change-avatar": "Cambiar el avatar",
|
||||
"change-password": "Cambiar la contraseña",
|
||||
"change-permissions": "Cambiar los permisos",
|
||||
"change-settings": "Cambiar la configuración",
|
||||
"changeAvatarPopup-title": "Cambiar el avatar",
|
||||
"changeLanguagePopup-title": "Cambiar el idioma",
|
||||
"changePasswordPopup-title": "Cambiar la contraseña",
|
||||
"changePermissionsPopup-title": "Cambiar los permisos",
|
||||
"changeSettingsPopup-title": "Cambiar la configuración",
|
||||
"subtasks": "Subtareas",
|
||||
"checklists": "Listas de comprobación",
|
||||
"click-to-star": "Haga clic para destacar este tablero.",
|
||||
"click-to-unstar": "Haga clic para dejar de destacar este tablero.",
|
||||
"clipboard": "el portapapeles o con arrastrar y soltar",
|
||||
"close": "Cerrar",
|
||||
"close-board": "Cerrar el tablero",
|
||||
"close-board-pop": "Podrá restaurar el tablero haciendo clic en el botón «Archivo» de la cabecera de inicio.",
|
||||
"color-black": "negro",
|
||||
"color-blue": "azul",
|
||||
"color-crimson": "carmesí",
|
||||
"color-darkgreen": "verde oscuro",
|
||||
"color-gold": "oro",
|
||||
"color-gray": "gris",
|
||||
"color-green": "verde",
|
||||
"color-indigo": "añil",
|
||||
"color-lime": "lima",
|
||||
"color-magenta": "magenta",
|
||||
"color-mistyrose": "rosa claro",
|
||||
"color-navy": "azul marino",
|
||||
"color-orange": "naranja",
|
||||
"color-paleturquoise": "turquesa",
|
||||
"color-peachpuff": "melocotón",
|
||||
"color-pink": "rosa",
|
||||
"color-plum": "púrpura",
|
||||
"color-purple": "violeta",
|
||||
"color-red": "roja",
|
||||
"color-saddlebrown": "marrón",
|
||||
"color-silver": "plata",
|
||||
"color-sky": "celeste",
|
||||
"color-slateblue": "azul",
|
||||
"color-white": "blanco",
|
||||
"color-yellow": "amarillo",
|
||||
"unset-color": "Desmarcar",
|
||||
"comment": "Comentar",
|
||||
"comment-placeholder": "Escribir comentario",
|
||||
"comment-only": "Sólo comentarios",
|
||||
"comment-only-desc": "Sólo puede comentar en las tarjetas.",
|
||||
"no-comments": "No hay comentarios",
|
||||
"no-comments-desc": "No se pueden mostrar comentarios ni actividades.",
|
||||
"worker": "Trabajador",
|
||||
"worker-desc": "Sólo puede mover tarjetas, asignarse a la tarjeta y comentar.",
|
||||
"computer": "Computadora",
|
||||
"confirm-subtask-delete-dialog": "¿Seguro que desea eliminar la subtarea?",
|
||||
"confirm-checklist-delete-dialog": "¿Seguro que desea eliminar la lista de comprobación?",
|
||||
"copy-card-link-to-clipboard": "Copiar el enlace de la tarjeta al portapapeles",
|
||||
"linkCardPopup-title": "Enlazar tarjeta",
|
||||
"searchElementPopup-title": "Buscar",
|
||||
"copyCardPopup-title": "Copiar la tarjeta",
|
||||
"copyChecklistToManyCardsPopup-title": "Copiar la plantilla de la lista de comprobación en varias tarjetas",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Títulos y descripciones de las tarjetas de destino en formato JSON",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Título de la primera tarjeta\", \"description\":\"Descripción de la primera tarjeta\"}, {\"title\":\"Título de la segunda tarjeta\",\"description\":\"Descripción de la segunda tarjeta\"},{\"title\":\"Título de la última tarjeta\",\"description\":\"Descripción de la última tarjeta\"} ]",
|
||||
"create": "Crear",
|
||||
"createBoardPopup-title": "Crear tablero",
|
||||
"chooseBoardSourcePopup-title": "Importar un tablero",
|
||||
"createLabelPopup-title": "Crear etiqueta",
|
||||
"createCustomField": "Crear un campo",
|
||||
"createCustomFieldPopup-title": "Crear un campo",
|
||||
"current": "actual",
|
||||
"custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"custom-field-checkbox": "Casilla de verificación",
|
||||
"custom-field-currency": "Divisa",
|
||||
"custom-field-currency-option": "Código de divisa",
|
||||
"custom-field-date": "Fecha",
|
||||
"custom-field-dropdown": "Lista desplegable",
|
||||
"custom-field-dropdown-none": "(ninguno)",
|
||||
"custom-field-dropdown-options": "Opciones de la lista",
|
||||
"custom-field-dropdown-options-placeholder": "Presione Entrar para agregar más opciones",
|
||||
"custom-field-dropdown-unknown": "(desconocido)",
|
||||
"custom-field-number": "Número",
|
||||
"custom-field-text": "Texto",
|
||||
"custom-fields": "Campos personalizados",
|
||||
"date": "Fecha",
|
||||
"decline": "Declinar",
|
||||
"default-avatar": "Avatar por defecto",
|
||||
"delete": "Eliminar",
|
||||
"deleteCustomFieldPopup-title": "¿Eliminar el campo personalizado?",
|
||||
"deleteLabelPopup-title": "¿Eliminar la etiqueta?",
|
||||
"description": "Descripción",
|
||||
"disambiguateMultiLabelPopup-title": "Desambiguar la acción de etiqueta",
|
||||
"disambiguateMultiMemberPopup-title": "Desambiguar la acción de miembro",
|
||||
"discard": "Descartar",
|
||||
"done": "Hecho",
|
||||
"download": "Descargar",
|
||||
"edit": "Editar",
|
||||
"edit-avatar": "Cambiar el avatar",
|
||||
"edit-profile": "Editar el perfil",
|
||||
"edit-wip-limit": "Cambiar el límite del trabajo en proceso",
|
||||
"soft-wip-limit": "Límite del trabajo en proceso flexible",
|
||||
"editCardStartDatePopup-title": "Cambiar la fecha de comienzo",
|
||||
"editCardDueDatePopup-title": "Cambiar la fecha de vencimiento",
|
||||
"editCustomFieldPopup-title": "Editar el campo",
|
||||
"editCardSpentTimePopup-title": "Cambiar el tiempo consumido",
|
||||
"editLabelPopup-title": "Cambiar la etiqueta",
|
||||
"editNotificationPopup-title": "Editar las notificaciones",
|
||||
"editProfilePopup-title": "Editar el perfil",
|
||||
"email": "Correo electrónico",
|
||||
"email-enrollAccount-subject": "Cuenta creada en __siteName__",
|
||||
"email-enrollAccount-text": "Hola __user__,\n\nPara empezar a utilizar el servicio, simplemente haga clic en el siguiente enlace.\n\n__url__\n\nGracias.",
|
||||
"email-fail": "Error al enviar el correo",
|
||||
"email-fail-text": "Error al intentar enviar el correo",
|
||||
"email-invalid": "Correo no válido",
|
||||
"email-invite": "Invitar vía correo electrónico",
|
||||
"email-invite-subject": "__inviter__ ha enviado una invitación",
|
||||
"email-invite-text": "Estimado __user__,\n\n__inviter__ le invita a unirse al tablero «__board__» para colaborar.\n\nPor favor, haga clic en el siguiente enlace:\n\n__url__\n\nGracias.",
|
||||
"email-resetPassword-subject": "Restablezca su contraseña en __siteName__",
|
||||
"email-resetPassword-text": "Hola __user__,\n\nPara restablecer su contraseña, simplemente haga clic en el siguiente enlace.\n\n__url__\n\nGracias.",
|
||||
"email-sent": "Correo enviado",
|
||||
"email-verifyEmail-subject": "Verifique su dirección de correo electrónico en __siteName__",
|
||||
"email-verifyEmail-text": "Hola __user__,\n\nPara verificar el correo electrónico de su cuenta, simplemente haga clic en el siguiente enlace.\n\n__url__\n\nGracias.",
|
||||
"enable-wip-limit": "Habilitar el límite del trabajo en proceso",
|
||||
"error-board-doesNotExist": "El tablero no existe",
|
||||
"error-board-notAdmin": "Es necesario ser administrador de este tablero para hacer eso",
|
||||
"error-board-notAMember": "Es necesario ser miembro de este tablero para hacer eso",
|
||||
"error-json-malformed": "El texto no es un JSON válido",
|
||||
"error-json-schema": "Sus datos JSON no incluyen la información apropiada en el formato correcto",
|
||||
"error-csv-schema": "Su archivo CSV (valores separados por comas) o TSV (valores separados por tabulaciones) no incluye la información adecuada en el formato correcto",
|
||||
"error-list-doesNotExist": "La lista no existe",
|
||||
"error-user-doesNotExist": "El usuario no existe",
|
||||
"error-user-notAllowSelf": "No se puede invitar a sí mismo",
|
||||
"error-user-notCreated": "El usuario no ha sido creado",
|
||||
"error-username-taken": "Este nombre de usuario ya está en uso",
|
||||
"error-email-taken": "Esta dirección de correo ya está en uso",
|
||||
"export-board": "Exportar tablero",
|
||||
"export-board-json": "Exportar tablero a JSON",
|
||||
"export-board-csv": "Exportar tablero a CSV",
|
||||
"export-board-tsv": "Exportar tablero a TSV",
|
||||
"export-board-html": "Exportar tablero a HTML",
|
||||
"exportBoardPopup-title": "Exportar tablero",
|
||||
"sort": "Ordenar",
|
||||
"sort-desc": "Clic para ordenar lista",
|
||||
"list-sort-by": "Ordenar la lista por:",
|
||||
"list-label-modifiedAt": "Hora de último acceso",
|
||||
"list-label-title": "Nombre de la lista",
|
||||
"list-label-sort": "Su orden manual",
|
||||
"list-label-short-modifiedAt": "(L)",
|
||||
"list-label-short-title": "(N)",
|
||||
"list-label-short-sort": "(M)",
|
||||
"filter": "Filtrar",
|
||||
"filter-cards": "Filtrar tarjetas o listas",
|
||||
"list-filter-label": "Filtrar listas por título",
|
||||
"filter-clear": "Limpiar el filtro",
|
||||
"filter-labels-label": "Filtrar por etiqueta",
|
||||
"filter-no-label": "Sin etiqueta",
|
||||
"filter-member-label": "Filtrar por miembro",
|
||||
"filter-no-member": "Sin miembro",
|
||||
"filter-assignee-label": "Filtrar por asignado",
|
||||
"filter-no-assignee": "No asignado",
|
||||
"filter-custom-fields-label": "Filtrar por campos personalizados",
|
||||
"filter-no-custom-fields": "Sin campos personalizados",
|
||||
"filter-show-archive": "Mostrar las listas archivadas",
|
||||
"filter-hide-empty": "Ocultar las listas vacías",
|
||||
"filter-on": "Filtrado activado",
|
||||
"filter-on-desc": "Está filtrando las tarjetas en este tablero. Haga clic aquí para editar el filtro.",
|
||||
"filter-to-selection": "Filtrar la selección",
|
||||
"other-filters-label": "Otros filtros",
|
||||
"advanced-filter-label": "Filtro avanzado",
|
||||
"advanced-filter-description": "El filtrado avanzado permite escribir una cadena que contiene los siguientes operadores: == != <= >= && || ( ) Se utiliza un espacio como separador entre los operadores. Se pueden filtrar todos los campos personalizados escribiendo sus nombres y valores. Por ejemplo: Campo1 == Valor1. Nota: Si los campos o valores contienen espacios, deben encapsularse entre comillas simples. Por ejemplo: 'Campo 1' == 'Valor 1'. Para omitir los caracteres de control único (' \\/), se usa \\. Por ejemplo: Campo1 = I\\'m. También se pueden combinar múltiples condiciones. Por ejemplo: C1 == V1 || C1 == V2. Normalmente todos los operadores se interpretan de izquierda a derecha. Se puede cambiar el orden colocando paréntesis. Por ejemplo: C1 == V1 && ( C2 == V2 || C2 == V3 ). También se puede buscar en campos de texto usando expresiones regulares: C1 == /Tes.*/i",
|
||||
"fullname": "Nombre completo",
|
||||
"header-logo-title": "Volver a su página de tableros",
|
||||
"hide-system-messages": "Ocultar las notificaciones de actividad",
|
||||
"headerBarCreateBoardPopup-title": "Crear tablero",
|
||||
"home": "Inicio",
|
||||
"import": "Importar",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Enlace",
|
||||
"import-board": "importar un tablero",
|
||||
"import-board-c": "Importar un tablero",
|
||||
"import-board-title-trello": "Importar un tablero desde Trello",
|
||||
"import-board-title-wekan": "Importar tablero desde una exportación previa",
|
||||
"import-board-title-csv": "Importar tablero desde CSV/TSV",
|
||||
"from-trello": "Desde Trello",
|
||||
"from-wekan": "Desde exportación previa",
|
||||
"from-csv": "Desde CSV/TSV",
|
||||
"import-board-instruction-trello": "En su tablero de Trello, vaya a «Menú», luego «Más», «Imprimir y exportar», «Exportar en formato JSON», y copie el texto resultante.",
|
||||
"import-board-instruction-csv": "Pegue en sus Valores separados por comas (CSV)/Valores separados por tabulaciones (TSV).",
|
||||
"import-board-instruction-wekan": "En su tablero, vaya a «Menú», luego «Exportar tablero», y copie el texto en el archivo descargado.",
|
||||
"import-board-instruction-about-errors": "Si se obtienen errores al importar el tablero, a veces la importación sigue funcionando, y el tablero está en la página de todos los tableros.",
|
||||
"import-json-placeholder": "Pegue sus datos JSON válidos aquí",
|
||||
"import-csv-placeholder": "Pegue sus datos CSV/TSV válidos aquí",
|
||||
"import-map-members": "Asignar miembros",
|
||||
"import-members-map": "Su tablero importado tiene algunos miembros. Por favor, asigne los miembros que desea importar a sus usuarios",
|
||||
"import-show-user-mapping": "Revisión de la asignación de miembros",
|
||||
"import-user-select": "Elija su usuario existente que desea utilizar como este miembro",
|
||||
"importMapMembersAddPopup-title": "Seleccionar miembro",
|
||||
"info": "Versión",
|
||||
"initials": "Iniciales",
|
||||
"invalid-date": "Fecha no válida",
|
||||
"invalid-time": "Tiempo no válido",
|
||||
"invalid-user": "Usuario no válido",
|
||||
"joined": "se ha unido",
|
||||
"just-invited": "Ha sido invitado a este tablero",
|
||||
"keyboard-shortcuts": "Atajos de teclado",
|
||||
"label-create": "Crear una etiqueta",
|
||||
"label-default": "etiqueta %s (por defecto)",
|
||||
"label-delete-pop": "Se eliminará esta etiqueta de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"labels": "Etiquetas",
|
||||
"language": "Cambiar el idioma",
|
||||
"last-admin-desc": "No se pueden cambiar los roles porque debe haber al menos un administrador.",
|
||||
"leave-board": "Abandonar el tablero",
|
||||
"leave-board-pop": "¿Seguro que desea abandonar __boardTitle__? Será desvinculado de todas las tarjetas en este tablero.",
|
||||
"leaveBoardPopup-title": "¿Abandonar el tablero?",
|
||||
"link-card": "Enlazar a esta tarjeta",
|
||||
"list-archive-cards": "Archivar todas las tarjetas de esta lista",
|
||||
"list-archive-cards-pop": "Esto eliminará todas las tarjetas de esta lista del tablero. Para ver las tarjetas en el archivo y traerlas de vuelta al tablero, haga clic en «Menú» > «Archivo».",
|
||||
"list-move-cards": "Mover todas las tarjetas de esta lista",
|
||||
"list-select-cards": "Seleccionar todas las tarjetas de esta lista",
|
||||
"set-color-list": "Cambiar el color",
|
||||
"listActionPopup-title": "Acciones de la lista",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Acciones del carril «swimlane»",
|
||||
"swimlaneAddPopup-title": "Agregar un carril «swimlane» debajo",
|
||||
"listImportCardPopup-title": "Importar una tarjeta de Trello",
|
||||
"listImportCardsTsvPopup-title": "Importar CSV/TSV",
|
||||
"listMorePopup-title": "Más",
|
||||
"link-list": "Enlazar a esta lista",
|
||||
"list-delete-pop": "Todas las acciones serán eliminadas de la fuente de actividades y no se podrá recuperar la lista. Esta acción no puede deshacerse.",
|
||||
"list-delete-suggest-archive": "Puede mover una lista a archivo para eliminarla del tablero y preservar la actividad.",
|
||||
"lists": "Listas",
|
||||
"swimlanes": "Carriles",
|
||||
"log-out": "Finalizar la sesión",
|
||||
"log-in": "Iniciar sesión",
|
||||
"loginPopup-title": "Iniciar sesión",
|
||||
"memberMenuPopup-title": "Configuración de miembros",
|
||||
"members": "Miembros",
|
||||
"menu": "Menú",
|
||||
"move-selection": "Mover la selección",
|
||||
"moveCardPopup-title": "Mover la tarjeta",
|
||||
"moveCardToBottom-title": "Mover al final",
|
||||
"moveCardToTop-title": "Mover al principio",
|
||||
"moveSelectionPopup-title": "Mover la selección",
|
||||
"multi-selection": "Selección múltiple",
|
||||
"multi-selection-label": "Establecer etiqueta para la selección",
|
||||
"multi-selection-member": "Establecer miembro para la selección",
|
||||
"multi-selection-on": "Selección múltiple activada",
|
||||
"muted": "Silenciado",
|
||||
"muted-info": "Nunca se le notificará ningún cambio en este tablero",
|
||||
"my-boards": "Mis tableros",
|
||||
"name": "Nombre",
|
||||
"no-archived-cards": "No hay tarjetas archivadas.",
|
||||
"no-archived-lists": "No hay listas archivadas.",
|
||||
"no-archived-swimlanes": "No hay carriles archivados.",
|
||||
"no-results": "Sin resultados",
|
||||
"normal": "Normal",
|
||||
"normal-desc": "Puede ver y editar las tarjetas. No puede cambiar la configuración.",
|
||||
"not-accepted-yet": "La invitación no ha sido aceptada aún",
|
||||
"notify-participate": "Recibir actualizaciones de cualquier tarjeta en la que participas como creador o miembro",
|
||||
"notify-watch": "Recibir actualizaciones de cualquier tablero, lista o tarjeta que esté vigilando",
|
||||
"optional": "opcional",
|
||||
"or": "o",
|
||||
"page-maybe-private": "Esta página puede ser privada. Puede verla <a href='%s'>iniciando sesión</a>.",
|
||||
"page-not-found": "Página no encontrada.",
|
||||
"password": "Contraseña",
|
||||
"paste-or-dragdrop": "pegar o arrastrar y soltar un fichero de imagen (sólo imagen)",
|
||||
"participating": "Participando",
|
||||
"preview": "Previsualizar",
|
||||
"previewAttachedImagePopup-title": "Previsualizar",
|
||||
"previewClipboardImagePopup-title": "Previsualizar",
|
||||
"private": "Privado",
|
||||
"private-desc": "Este tablero es privado. Sólo las personas agregadas al tablero pueden verlo y editarlo.",
|
||||
"profile": "Perfil",
|
||||
"public": "Público",
|
||||
"public-desc": "Este tablero es público. Es visible para cualquiera a través del enlace, y se mostrará en los buscadores como Google. Sólo las personas agregadas al tablero pueden editarlo.",
|
||||
"quick-access-description": "Destaca un tablero para añadir un acceso directo en esta barra.",
|
||||
"remove-cover": "Eliminar portada",
|
||||
"remove-from-board": "Desvincular del tablero",
|
||||
"remove-label": "Eliminar la etiqueta",
|
||||
"listDeletePopup-title": "¿Eliminar la lista?",
|
||||
"remove-member": "Eliminar miembro",
|
||||
"remove-member-from-card": "Eliminar de la tarjeta",
|
||||
"remove-member-pop": "¿Eliminar a __name__ (__username__) de __boardTitle__? El miembro será eliminado de todas las tarjetas de este tablero y recibirá una notificación.",
|
||||
"removeMemberPopup-title": "¿Eliminar miembro?",
|
||||
"rename": "Renombrar",
|
||||
"rename-board": "Renombrar el tablero",
|
||||
"restore": "Restaurar",
|
||||
"save": "Guardar",
|
||||
"search": "Buscar",
|
||||
"rules": "Reglas",
|
||||
"search-cards": "Buscar entre los títulos, las descripciones de las tarjetas/listas y los campos personalizados en este tablero.",
|
||||
"search-example": "Escriba el texto que busca y presione Entrar",
|
||||
"select-color": "Seleccionar el color",
|
||||
"set-wip-limit-value": "Cambiar el límite para el número máximo de tareas en esta lista.",
|
||||
"setWipLimitPopup-title": "Cambiar el límite del trabajo en proceso",
|
||||
"shortcut-assign-self": "Asignarse a la tarjeta actual",
|
||||
"shortcut-autocomplete-emoji": "Autocompletar emoji",
|
||||
"shortcut-autocomplete-members": "Autocompletar miembros",
|
||||
"shortcut-clear-filters": "Limpiar todos los filtros",
|
||||
"shortcut-close-dialog": "Cerrar el cuadro de diálogo",
|
||||
"shortcut-filter-my-cards": "Filtrar mis tarjetas",
|
||||
"shortcut-show-shortcuts": "Mostrar esta lista de atajos",
|
||||
"shortcut-toggle-filterbar": "Alternar la barra lateral del filtro",
|
||||
"shortcut-toggle-sidebar": "Alternar la barra lateral del tablero",
|
||||
"show-cards-minimum-count": "Mostrar recuento de tarjetas si la lista contiene más de",
|
||||
"sidebar-open": "Abrir la barra lateral",
|
||||
"sidebar-close": "Cerrar la barra lateral",
|
||||
"signupPopup-title": "Crear una cuenta",
|
||||
"star-board-title": "Haga clic para destacar este tablero. Se mostrará en la parte superior de su lista de tableros.",
|
||||
"starred-boards": "Tableros destacados",
|
||||
"starred-boards-description": "Los tableros destacados se mostrarán en la parte superior de su lista de tableros.",
|
||||
"subscribe": "Suscribirse",
|
||||
"team": "Equipo",
|
||||
"this-board": "este tablero",
|
||||
"this-card": "esta tarjeta",
|
||||
"spent-time-hours": "Tiempo consumido (horas)",
|
||||
"overtime-hours": "Tiempo excesivo (horas)",
|
||||
"overtime": "Tiempo excesivo",
|
||||
"has-overtime-cards": "Hay tarjetas con el tiempo excedido",
|
||||
"has-spenttime-cards": "Se ha excedido el tiempo de las tarjetas",
|
||||
"time": "Hora",
|
||||
"title": "Título",
|
||||
"tracking": "Siguiendo",
|
||||
"tracking-info": "Será notificado de cualquier cambio en las tarjetas en las que participa como creador o miembro.",
|
||||
"type": "Tipo",
|
||||
"unassign-member": "Desasignar miembro",
|
||||
"unsaved-description": "Tiene una descripción sin guardar.",
|
||||
"unwatch": "Dejar de vigilar",
|
||||
"upload": "Cargar",
|
||||
"upload-avatar": "Cargar un avatar",
|
||||
"uploaded-avatar": "Avatar cargado",
|
||||
"username": "Nombre de usuario",
|
||||
"view-it": "Verla",
|
||||
"warn-list-archived": "advertencia: esta tarjeta está en una lista en el archivo",
|
||||
"watch": "Vigilar",
|
||||
"watching": "Vigilando",
|
||||
"watching-info": "Será notificado de cualquier cambio en este tablero",
|
||||
"welcome-board": "Tablero de bienvenida",
|
||||
"welcome-swimlane": "Hito 1",
|
||||
"welcome-list1": "Básicos",
|
||||
"welcome-list2": "Avanzados",
|
||||
"card-templates-swimlane": "Plantilla de tarjeta",
|
||||
"list-templates-swimlane": "Listar plantillas",
|
||||
"board-templates-swimlane": "Plantilla de tablero",
|
||||
"what-to-do": "¿Qué desea hacer?",
|
||||
"wipLimitErrorPopup-title": "El límite del trabajo en proceso no es válido.",
|
||||
"wipLimitErrorPopup-dialog-pt1": "El número de tareas en esta lista es mayor que el límite del trabajo en proceso que ha definido.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Por favor, mueva algunas tareas de esta lista, o establezca un límite de trabajo en proceso más alto.",
|
||||
"admin-panel": "Panel de administración",
|
||||
"settings": "Configuración",
|
||||
"people": "Personas",
|
||||
"registration": "Registro",
|
||||
"disable-self-registration": "Deshabilitar autoregistro",
|
||||
"invite": "Invitar",
|
||||
"invite-people": "Invitar a personas",
|
||||
"to-boards": "A el(los) tablero(s)",
|
||||
"email-addresses": "Direcciones de correo electrónico",
|
||||
"smtp-host-description": "La dirección del servidor SMTP que maneja sus correos electrónicos.",
|
||||
"smtp-port-description": "Puerto usado por el servidor SMTP para mandar correos",
|
||||
"smtp-tls-description": "Habilitar el soporte TLS para el servidor SMTP",
|
||||
"smtp-host": "Servidor SMTP",
|
||||
"smtp-port": "Puerto SMTP",
|
||||
"smtp-username": "Nombre de usuario",
|
||||
"smtp-password": "Contraseña",
|
||||
"smtp-tls": "Soporte TLS",
|
||||
"send-from": "Desde",
|
||||
"send-smtp-test": "Enviarte un correo de prueba a ti mismo",
|
||||
"invitation-code": "Código de Invitación",
|
||||
"email-invite-register-subject": "__inviter__ le envió una invitación",
|
||||
"email-invite-register-text": "Estimado __user__,\n\n__inviter__ le invita a participar en un tablero Kanban para colaborar.\n\nPor favor, siga el siguiente enlace:\n__url__\n\nY su código de invitación es: __icode__\n\nGracias.",
|
||||
"email-smtp-test-subject": "Prueba de email SMTP",
|
||||
"email-smtp-test-text": "El correo se ha enviado correctamente",
|
||||
"error-invitation-code-not-exist": "El código de invitación no existe",
|
||||
"error-notAuthorized": "No está autorizado a ver esta página.",
|
||||
"webhook-title": "Nombre del Webhook",
|
||||
"webhook-token": "Token (opcional para la autenticación)",
|
||||
"outgoing-webhooks": "Webhooks salientes",
|
||||
"bidirectional-webhooks": "Webhooks de doble sentido",
|
||||
"outgoingWebhooksPopup-title": "Webhooks salientes",
|
||||
"boardCardTitlePopup-title": "Filtro de títulos de tarjeta",
|
||||
"disable-webhook": "Deshabilitar este Webhook",
|
||||
"global-webhook": "Webhooks globales",
|
||||
"new-outgoing-webhook": "Nuevo webhook saliente",
|
||||
"no-name": "(Desconocido)",
|
||||
"Node_version": "Versión de Node",
|
||||
"Meteor_version": "Versión de Meteor",
|
||||
"MongoDB_version": "Versión de MongoDB",
|
||||
"MongoDB_storage_engine": "Motor de almacenamiento de MongoDB",
|
||||
"MongoDB_Oplog_enabled": "Oplog de MongoDB habilitado",
|
||||
"OS_Arch": "Arquitectura del sistema",
|
||||
"OS_Cpus": "Número de CPUs del sistema",
|
||||
"OS_Freemem": "Memoria libre del sistema",
|
||||
"OS_Loadavg": "Carga media del sistema",
|
||||
"OS_Platform": "Plataforma del sistema",
|
||||
"OS_Release": "Publicación del sistema",
|
||||
"OS_Totalmem": "Memoria total del sistema",
|
||||
"OS_Type": "Tipo de sistema",
|
||||
"OS_Uptime": "Tiempo activo del sistema",
|
||||
"days": "días",
|
||||
"hours": "horas",
|
||||
"minutes": "minutos",
|
||||
"seconds": "segundos",
|
||||
"show-field-on-card": "Mostrar este campo en la tarjeta",
|
||||
"automatically-field-on-card": "Crear campos automáticamente para todas las tarjetas.",
|
||||
"showLabel-field-on-card": "Mostrar etiquetas de campos en la minitarjeta.",
|
||||
"yes": "Sí",
|
||||
"no": "No",
|
||||
"accounts": "Cuentas",
|
||||
"accounts-allowEmailChange": "Permitir cambiar el correo electrónico",
|
||||
"accounts-allowUserNameChange": "Permitir cambiar el nombre de usuario",
|
||||
"createdAt": "Creado en",
|
||||
"verified": "Verificado",
|
||||
"active": "Activo",
|
||||
"card-received": "Recibido",
|
||||
"card-received-on": "Recibido el",
|
||||
"card-end": "Finalizado",
|
||||
"card-end-on": "Finalizado el",
|
||||
"editCardReceivedDatePopup-title": "Cambiar la fecha de recepción",
|
||||
"editCardEndDatePopup-title": "Cambiar la fecha de finalización",
|
||||
"setCardColorPopup-title": "Cambiar el color",
|
||||
"setCardActionsColorPopup-title": "Elegir un color",
|
||||
"setSwimlaneColorPopup-title": "Elegir un color",
|
||||
"setListColorPopup-title": "Elegir un color",
|
||||
"assigned-by": "Asignado por",
|
||||
"requested-by": "Solicitado por",
|
||||
"board-delete-notice": "Se eliminarán todas las listas, tarjetas y acciones asociadas a este tablero. Esta acción no puede deshacerse.",
|
||||
"delete-board-confirm-popup": "Se eliminarán todas las listas, tarjetas, etiquetas y actividades, y no podrás recuperar los contenidos del tablero. Esta acción no puede deshacerse.",
|
||||
"boardDeletePopup-title": "¿Eliminar el tablero?",
|
||||
"delete-board": "Eliminar el tablero",
|
||||
"default-subtasks-board": "Subtareas para el tablero __board__",
|
||||
"default": "Por defecto",
|
||||
"queue": "Cola",
|
||||
"subtask-settings": "Configuración de subtareas",
|
||||
"card-settings": "Configuración de tarjeta",
|
||||
"boardSubtaskSettingsPopup-title": "Configuración de subtareas del tablero",
|
||||
"boardCardSettingsPopup-title": "Configuración de tarjeta",
|
||||
"deposit-subtasks-board": "Depositar subtareas en este tablero:",
|
||||
"deposit-subtasks-list": "Lista de destino para subtareas depositadas aquí:",
|
||||
"show-parent-in-minicard": "Mostrar el padre en una minitarjeta:",
|
||||
"prefix-with-full-path": "Prefijo con ruta completa",
|
||||
"prefix-with-parent": "Prefijo con el padre",
|
||||
"subtext-with-full-path": "Subtexto con ruta completa",
|
||||
"subtext-with-parent": "Subtexto con el padre",
|
||||
"change-card-parent": "Cambiar la tarjeta padre",
|
||||
"parent-card": "Tarjeta padre",
|
||||
"source-board": "Tablero de origen",
|
||||
"no-parent": "No mostrar la tarjeta padre",
|
||||
"activity-added-label": "agregada etiqueta «%s» a %s",
|
||||
"activity-removed-label": "eliminada etiqueta '%s' desde %s",
|
||||
"activity-delete-attach": "eliminado un adjunto desde %s",
|
||||
"activity-added-label-card": "agregada etiqueta «%s»",
|
||||
"activity-removed-label-card": "eliminada etiqueta '%s'",
|
||||
"activity-delete-attach-card": "eliminado un adjunto",
|
||||
"activity-set-customfield": "Cambiar el campo personalizado '%s' a '%s' en %s",
|
||||
"activity-unset-customfield": "Desmarcar el campo personalizado '%s' en %s",
|
||||
"r-rule": "Regla",
|
||||
"r-add-trigger": "Agregar desencadenador",
|
||||
"r-add-action": "Agregar acción",
|
||||
"r-board-rules": "Reglas del tablero",
|
||||
"r-add-rule": "Agregar regla",
|
||||
"r-view-rule": "Ver regla",
|
||||
"r-delete-rule": "Eliminar regla",
|
||||
"r-new-rule-name": "Nuevo título de regla",
|
||||
"r-no-rules": "No hay reglas",
|
||||
"r-trigger": "Desencadenador",
|
||||
"r-action": "Acción",
|
||||
"r-when-a-card": "Cuando una tarjeta",
|
||||
"r-is": "es",
|
||||
"r-is-moved": "es movida",
|
||||
"r-added-to": "Agregado a",
|
||||
"r-removed-from": "eliminado de",
|
||||
"r-the-board": "el tablero",
|
||||
"r-list": "la lista",
|
||||
"set-filter": "Filtrar",
|
||||
"r-moved-to": "Movido a",
|
||||
"r-moved-from": "Movido desde",
|
||||
"r-archived": "Se archivó",
|
||||
"r-unarchived": "Restaurado del archivo",
|
||||
"r-a-card": "una tarjeta",
|
||||
"r-when-a-label-is": "Cuando una etiqueta es",
|
||||
"r-when-the-label": "Cuando la etiqueta es",
|
||||
"r-list-name": "Nombre de lista",
|
||||
"r-when-a-member": "Cuando un miembro es",
|
||||
"r-when-the-member": "Cuando el miembro",
|
||||
"r-name": "nombre",
|
||||
"r-when-a-attach": "Cuando un adjunto",
|
||||
"r-when-a-checklist": "Cuando una lista de comprobación es",
|
||||
"r-when-the-checklist": "Cuando la lista de comprobación",
|
||||
"r-completed": "Completada",
|
||||
"r-made-incomplete": "Hecha incompleta",
|
||||
"r-when-a-item": "Cuando un elemento de la lista de comprobación es",
|
||||
"r-when-the-item": "Cuando el elemento de la lista de comprobación es",
|
||||
"r-checked": "Marcado",
|
||||
"r-unchecked": "Desmarcado",
|
||||
"r-move-card-to": "Mover la tarjeta",
|
||||
"r-top-of": "Arriba de",
|
||||
"r-bottom-of": "Abajo de",
|
||||
"r-its-list": "su lista",
|
||||
"r-archive": "Archivar",
|
||||
"r-unarchive": "Restaurar del archivo",
|
||||
"r-card": "la tarjeta",
|
||||
"r-add": "Agregar",
|
||||
"r-remove": "Eliminar",
|
||||
"r-label": "etiqueta",
|
||||
"r-member": "miembro",
|
||||
"r-remove-all": "Eliminar todos los miembros de la tarjeta",
|
||||
"r-set-color": "Cambiar el color a",
|
||||
"r-checklist": "lista de comprobación",
|
||||
"r-check-all": "Marcar todo",
|
||||
"r-uncheck-all": "Desmarcar todo",
|
||||
"r-items-check": "elementos de la lista de comprobación",
|
||||
"r-check": "Marcar",
|
||||
"r-uncheck": "Desmarcar",
|
||||
"r-item": "elemento",
|
||||
"r-of-checklist": "de la lista de comprobación",
|
||||
"r-send-email": "Enviar un email",
|
||||
"r-to": "a",
|
||||
"r-of": "de",
|
||||
"r-subject": "asunto",
|
||||
"r-rule-details": "Detalle de la regla",
|
||||
"r-d-move-to-top-gen": "Mover la tarjeta al inicio de su lista",
|
||||
"r-d-move-to-top-spec": "Mover la tarjeta al inicio de la lista",
|
||||
"r-d-move-to-bottom-gen": "Mover la tarjeta al final de su lista",
|
||||
"r-d-move-to-bottom-spec": "Mover la tarjeta al final de la lista",
|
||||
"r-d-send-email": "Enviar email",
|
||||
"r-d-send-email-to": "a",
|
||||
"r-d-send-email-subject": "asunto",
|
||||
"r-d-send-email-message": "mensaje",
|
||||
"r-d-archive": "Archivar la tarjeta",
|
||||
"r-d-unarchive": "Restaurar tarjeta del archivo",
|
||||
"r-d-add-label": "Agregar etiqueta",
|
||||
"r-d-remove-label": "Eliminar etiqueta",
|
||||
"r-create-card": "Crear nueva tarjeta",
|
||||
"r-in-list": "en la lista",
|
||||
"r-in-swimlane": "en el carril",
|
||||
"r-d-add-member": "Agregar miembro",
|
||||
"r-d-remove-member": "Eliminar miembro",
|
||||
"r-d-remove-all-member": "Eliminar todos los miembros",
|
||||
"r-d-check-all": "Marcar todos los elementos de una lista",
|
||||
"r-d-uncheck-all": "Desmarcar todos los elementos de una lista",
|
||||
"r-d-check-one": "Marcar elemento",
|
||||
"r-d-uncheck-one": "Desmarcar elemento",
|
||||
"r-d-check-of-list": "de la lista de comprobación",
|
||||
"r-d-add-checklist": "Agregar lista de comprobación",
|
||||
"r-d-remove-checklist": "Eliminar lista de comprobación",
|
||||
"r-by": "por",
|
||||
"r-add-checklist": "Agregar lista de comprobación",
|
||||
"r-with-items": "con elementos",
|
||||
"r-items-list": "elemento1,elemento2,elemento3",
|
||||
"r-add-swimlane": "Agregar el carril",
|
||||
"r-swimlane-name": "nombre del carril",
|
||||
"r-board-note": "Nota: deje un campo vacío para que coincida con todos los valores posibles",
|
||||
"r-checklist-note": "Nota: los elementos de la lista de comprobación deben escribirse como valores separados por comas.",
|
||||
"r-when-a-card-is-moved": "Cuando una tarjeta es movida a otra lista",
|
||||
"r-set": "Cambiar",
|
||||
"r-update": "Actualizar",
|
||||
"r-datefield": "campo de fecha",
|
||||
"r-df-start-at": "comienza",
|
||||
"r-df-due-at": "vencimiento",
|
||||
"r-df-end-at": "finalizado",
|
||||
"r-df-received-at": "recibido",
|
||||
"r-to-current-datetime": "a la fecha/hora actual",
|
||||
"r-remove-value-from": "Eliminar el valor de",
|
||||
"ldap": "LDAP",
|
||||
"oauth2": "OAuth2",
|
||||
"cas": "CAS",
|
||||
"authentication-method": "Método de autenticación",
|
||||
"authentication-type": "Tipo de autenticación",
|
||||
"custom-product-name": "Nombre de producto personalizado",
|
||||
"layout": "Diseño",
|
||||
"hide-logo": "Ocultar el logo",
|
||||
"add-custom-html-after-body-start": "Agrega HTML personalizado después de <body>",
|
||||
"add-custom-html-before-body-end": "Agrega HTML personalizado después de </body>",
|
||||
"error-undefined": "Algo no está bien",
|
||||
"error-ldap-login": "Ocurrió un error al intentar acceder",
|
||||
"display-authentication-method": "Mostrar el método de autenticación",
|
||||
"default-authentication-method": "Método de autenticación por defecto",
|
||||
"duplicate-board": "Duplicar tablero",
|
||||
"people-number": "El número de personas es:",
|
||||
"swimlaneDeletePopup-title": "¿Eliminar el carril «swimlane»?",
|
||||
"swimlane-delete-pop": "Todas las acciones serán eliminadas de la fuente de actividades y no se podrá recuperar el carril «swimlane». Esta acción no puede deshacerse.",
|
||||
"restore-all": "Restaurar todas",
|
||||
"delete-all": "Borrar todas",
|
||||
"loading": "Cargando. Por favor, espere.",
|
||||
"previous_as": "el último tiempo fue",
|
||||
"act-a-dueAt": "cambiada la hora de vencimiento a \nCuándo: __timeValue__\nDónde: __card__\n el vencimiento anterior fue __timeOldValue__",
|
||||
"act-a-endAt": "cambiada la hora de finalización a __timeValue__ Fecha anterior: (__timeOldValue__)",
|
||||
"act-a-startAt": "cambiada la hora de comienzo a __timeValue__ Fecha anterior: (__timeOldValue__)",
|
||||
"act-a-receivedAt": "cambiada la fecha de recepción a __timeValue__ Fecha anterior: (__timeOldValue__)",
|
||||
"a-dueAt": "cambiada la hora de vencimiento a",
|
||||
"a-endAt": "cambiada la hora de finalización a",
|
||||
"a-startAt": "cambiada la hora de comienzo a",
|
||||
"a-receivedAt": "cambiada la hora de recepción a",
|
||||
"almostdue": "está próxima la hora de vencimiento actual %s",
|
||||
"pastdue": "se sobrepasó la hora de vencimiento actual %s",
|
||||
"duenow": "la hora de vencimiento actual %s es hoy",
|
||||
"act-newDue": "__list__/__card__ tiene una 1ra notificación de vencimiento [__board__]",
|
||||
"act-withDue": "__list__/__card__ notificaciones de vencimiento [__board__]",
|
||||
"act-almostdue": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ está próximo",
|
||||
"act-pastdue": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ se sobrepasó",
|
||||
"act-duenow": "se ha notificado que el vencimiento actual (__timeValue__) de __card__ es ahora",
|
||||
"act-atUserComment": "Se le mencionó en [__board__] __list__/__card__",
|
||||
"delete-user-confirm-popup": "¿Seguro que desea eliminar esta cuenta? Esta acción no puede deshacerse.",
|
||||
"accounts-allowUserDelete": "Permitir a los usuarios eliminar su cuenta",
|
||||
"hide-minicard-label-text": "Ocultar el texto de la etiqueta de la minitarjeta",
|
||||
"show-desktop-drag-handles": "Mostrar los controles de arrastre del escritorio",
|
||||
"assignee": "Asignado",
|
||||
"cardAssigneesPopup-title": "Asignado",
|
||||
"addmore-detail": "Agregar una descripción detallada",
|
||||
"show-on-card": "Mostrar en la tarjeta",
|
||||
"new": "Nuevo",
|
||||
"editUserPopup-title": "Editar el usuario",
|
||||
"newUserPopup-title": "Nuevo usuario",
|
||||
"notifications": "Notificaciones",
|
||||
"view-all": "Ver todo",
|
||||
"filter-by-unread": "Filtrar por no leído",
|
||||
"mark-all-as-read": "Marcar todo como leido",
|
||||
"remove-all-read": "Eliminar todos los leídos",
|
||||
"allow-rename": "Permitir renombrar",
|
||||
"allowRenamePopup-title": "Permitir renombrar",
|
||||
"start-day-of-week": "Establecer el día de inicio de la semana",
|
||||
"monday": "lunes",
|
||||
"tuesday": "martes",
|
||||
"wednesday": "miércoles",
|
||||
"thursday": "jueves",
|
||||
"friday": "viernes",
|
||||
"saturday": "sábado",
|
||||
"sunday": "domingo",
|
||||
"status": "Estado",
|
||||
"swimlane": "Carril",
|
||||
"owner": "Propietario",
|
||||
"last-modified-at": "Última modificación",
|
||||
"last-activity": "Última actividad",
|
||||
"voting": "Votar",
|
||||
"archived": "Archivado",
|
||||
"delete-linked-card-before-this-card": "No puede borrar esta tarjeta antes de borrar la tarjeta enlazada que tiene",
|
||||
"delete-linked-cards-before-this-list": "No puede borrar esta lista antes de borrar las tarjetas enlazadas que apuntan a tarjetas en esta lista",
|
||||
"hide-checked-items": "Ocultar elementos marcados"
|
||||
}
|
||||
+58
-20
@@ -152,8 +152,6 @@
|
||||
"card-spent": "Tiempo consumido",
|
||||
"card-edit-attachments": "Editar los adjuntos",
|
||||
"card-edit-custom-fields": "Editar los campos personalizados",
|
||||
"card-start-voting": "Start voting",
|
||||
"card-cancel-voting": "Delete voting and all votes",
|
||||
"card-edit-labels": "Editar las etiquetas",
|
||||
"card-edit-members": "Editar los miembros",
|
||||
"card-labels-title": "Cambia las etiquetas de la tarjeta",
|
||||
@@ -163,13 +161,18 @@
|
||||
"cardAttachmentsPopup-title": "Adjuntar desde",
|
||||
"cardCustomField-datePopup-title": "Cambiar la fecha",
|
||||
"cardCustomFieldsPopup-title": "Editar los campos personalizados",
|
||||
"cardStartVotingPopup-title": "Start a vote",
|
||||
"positiveVoteMembersPopup-title": "Proponents",
|
||||
"negativeVoteMembersPopup-title": "Opponents",
|
||||
"vote-question": "Voting question",
|
||||
"vote-public": "Public vote",
|
||||
"vote-for-it": "for it",
|
||||
"cardStartVotingPopup-title": "Comience a votar",
|
||||
"positiveVoteMembersPopup-title": "Favorables",
|
||||
"negativeVoteMembersPopup-title": "Contrarios",
|
||||
"card-edit-voting": "Editar votación",
|
||||
"editVoteEndDatePopup-title": "Cambie fecha de termino del voto",
|
||||
"allowNonBoardMembers": "Permitir todos los usuarios autentificados",
|
||||
"vote-question": "Pregunta de votación",
|
||||
"vote-public": "Mostrar quien voto que",
|
||||
"vote-for-it": "por esto",
|
||||
"vote-against": "contrarios",
|
||||
"deleteVotePopup-title": "¿Borrar voto?",
|
||||
"vote-delete-pop": "El Borrado es permanente. Perderá todas las acciones asociadas con este voto.",
|
||||
"cardDeletePopup-title": "¿Eliminar la tarjeta?",
|
||||
"cardDetailsActionsPopup-title": "Acciones de la tarjeta",
|
||||
"cardLabelsPopup-title": "Etiquetas",
|
||||
@@ -253,6 +256,8 @@
|
||||
"current": "actual",
|
||||
"custom-field-delete-pop": "Se eliminará este campo personalizado de todas las tarjetas y se destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"custom-field-checkbox": "Casilla de verificación",
|
||||
"custom-field-currency": "Moneda",
|
||||
"custom-field-currency-option": "Código de moneda",
|
||||
"custom-field-date": "Fecha",
|
||||
"custom-field-dropdown": "Lista desplegable",
|
||||
"custom-field-dropdown-none": "(nada)",
|
||||
@@ -306,6 +311,7 @@
|
||||
"error-board-notAMember": "Es necesario ser miembro de este tablero para hacer eso",
|
||||
"error-json-malformed": "El texto no es un JSON válido",
|
||||
"error-json-schema": "Sus datos JSON no incluyen la información apropiada en el formato correcto",
|
||||
"error-csv-schema": "Su CSV(Valores separados por coma)/TSV(Valores separados por tab) no incluyen la información apropiada en el formato correcto",
|
||||
"error-list-doesNotExist": "La lista no existe",
|
||||
"error-user-doesNotExist": "El usuario no existe",
|
||||
"error-user-notAllowSelf": "No puedes invitarte a ti mismo",
|
||||
@@ -313,6 +319,11 @@
|
||||
"error-username-taken": "Este nombre de usuario ya está en uso",
|
||||
"error-email-taken": "Esta dirección de correo ya está en uso",
|
||||
"export-board": "Exportar el tablero",
|
||||
"export-board-json": "Exportar tablero a JSON",
|
||||
"export-board-csv": "Exportar tablero a CSV",
|
||||
"export-board-tsv": "Exportar tablero a TSV",
|
||||
"export-board-html": "Exportar tablero a HTML",
|
||||
"exportBoardPopup-title": "Exportar el tablero",
|
||||
"sort": "Ordenar",
|
||||
"sort-desc": "Click para ordenar la lista",
|
||||
"list-sort-by": "Ordenar la lista por:",
|
||||
@@ -326,15 +337,20 @@
|
||||
"filter-cards": "Filtrar tarjetas o listas",
|
||||
"list-filter-label": "Filtrar listas por título",
|
||||
"filter-clear": "Limpiar el filtro",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "Sin etiqueta",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "Sin miembro",
|
||||
"filter-no-assignee": "No assignee",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "No asignado",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "Sin campos personalizados",
|
||||
"filter-show-archive": "Mostrar las listas archivadas",
|
||||
"filter-hide-empty": "Ocultar las listas vacías",
|
||||
"filter-on": "Filtrado activado",
|
||||
"filter-on-desc": "Estás filtrando tarjetas en este tablero. Haz clic aquí para editar el filtro.",
|
||||
"filter-to-selection": "Filtrar la selección",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Filtrado avanzado",
|
||||
"advanced-filter-description": "El filtrado avanzado permite escribir una cadena que contiene los siguientes operadores: == != <= >= && || ( ) Se utiliza un espacio como separador entre los operadores. Se pueden filtrar todos los campos personalizados escribiendo sus nombres y valores. Por ejemplo: Campo1 == Valor1. Nota: Si los campos o valores contienen espacios, deben encapsularse entre comillas simples. Por ejemplo: 'Campo 1' == 'Valor 1'. Para omitir los caracteres de control único (' \\/), se usa \\. Por ejemplo: Campo1 = I\\'m. También se pueden combinar múltiples condiciones. Por ejemplo: C1 == V1 || C1 == V2. Normalmente todos los operadores se interpretan de izquierda a derecha. Se puede cambiar el orden colocando paréntesis. Por ejemplo: C1 == V1 && ( C2 == V2 || C2 == V3 ). También se puede buscar en campos de texto usando expresiones regulares: C1 == /Tes.*/i",
|
||||
"fullname": "Nombre completo",
|
||||
@@ -343,17 +359,22 @@
|
||||
"headerBarCreateBoardPopup-title": "Crear tablero",
|
||||
"home": "Inicio",
|
||||
"import": "Importar",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Enlace",
|
||||
"import-board": "importar un tablero",
|
||||
"import-board-c": "Importar un tablero",
|
||||
"import-board-title-trello": "Importar un tablero desde Trello",
|
||||
"import-board-title-wekan": "Importar tablero desde una exportación previa",
|
||||
"import-board-title-csv": "Importar tablero desde CSV/TSV",
|
||||
"from-trello": "Desde Trello",
|
||||
"from-wekan": "Desde exportación previa",
|
||||
"from-csv": "Desde CSV/TSV",
|
||||
"import-board-instruction-trello": "En tu tablero de Trello, ve a 'Menú', luego 'Más' > 'Imprimir y exportar' > 'Exportar JSON', y copia el texto resultante.",
|
||||
"import-board-instruction-csv": "Pegue en sus Valores separados por coma(CSV)/Valores separados por tab(TSV).",
|
||||
"import-board-instruction-wekan": "En tu tablero, vete a 'Menú', luego 'Exportar tablero', y copia el texto en el archivo descargado.",
|
||||
"import-board-instruction-about-errors": "Aunque obtengas errores cuando importes el tablero, a veces la importación funciona igualmente, y el tablero se encontrará en la página de tableros.",
|
||||
"import-json-placeholder": "Pega tus datos JSON válidos aquí",
|
||||
"import-csv-placeholder": "Pega tus datos CSV/TSV válidos aquí",
|
||||
"import-map-members": "Mapa de miembros",
|
||||
"import-members-map": "Tu tablero importado tiene algunos miembros. Por favor, mapea los miembros que quieres importar con tus usuarios.",
|
||||
"import-show-user-mapping": "Revisión de la asignación de miembros",
|
||||
@@ -383,9 +404,11 @@
|
||||
"list-select-cards": "Seleccionar todas las tarjetas de esta lista",
|
||||
"set-color-list": "Cambiar el color",
|
||||
"listActionPopup-title": "Acciones de la lista",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Acciones del carril de flujo",
|
||||
"swimlaneAddPopup-title": "Añadir un carril de flujo debajo",
|
||||
"listImportCardPopup-title": "Importar una tarjeta de Trello",
|
||||
"listImportCardsTsvPopup-title": "Importar CSV/TSV",
|
||||
"listMorePopup-title": "Más",
|
||||
"link-list": "Enlazar a esta lista",
|
||||
"list-delete-pop": "Todas las acciones serán eliminadas del historial de actividades y no se podrá recuperar la lista. Esta acción no puede deshacerse.",
|
||||
@@ -404,6 +427,8 @@
|
||||
"moveCardToTop-title": "Mover al principio",
|
||||
"moveSelectionPopup-title": "Mover la selección",
|
||||
"multi-selection": "Selección múltiple",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Selección múltiple activada",
|
||||
"muted": "Silenciado",
|
||||
"muted-info": "No serás notificado de ningún cambio en este tablero",
|
||||
@@ -449,7 +474,7 @@
|
||||
"search": "Buscar",
|
||||
"rules": "Reglas",
|
||||
"search-cards": "Buscar entre los títulos, las descripciones de las tarjetas/listas y los campos personalizados en este tablero. ",
|
||||
"search-example": "¿Texto a buscar?",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Seleccionar el color",
|
||||
"set-wip-limit-value": "Cambiar el límite para el número máximo de tareas en esta lista.",
|
||||
"setWipLimitPopup-title": "Cambiar el límite del trabajo en proceso",
|
||||
@@ -622,10 +647,12 @@
|
||||
"r-delete-rule": "Eliminar regla",
|
||||
"r-new-rule-name": "Nueva título de regla",
|
||||
"r-no-rules": "No hay reglas",
|
||||
"r-trigger": "disparador",
|
||||
"r-action": "acción",
|
||||
"r-when-a-card": "Cuando una tarjeta",
|
||||
"r-is": "es",
|
||||
"r-is-moved": "es movida",
|
||||
"r-added-to": "agregada a",
|
||||
"r-added-to": "Añadido a",
|
||||
"r-removed-from": "eliminado de",
|
||||
"r-the-board": "el tablero",
|
||||
"r-list": "la lista",
|
||||
@@ -673,6 +700,7 @@
|
||||
"r-of-checklist": "de la lista de verificación",
|
||||
"r-send-email": "Enviar un email",
|
||||
"r-to": "a",
|
||||
"r-of": "de",
|
||||
"r-subject": "asunto",
|
||||
"r-rule-details": "Detalle de la regla",
|
||||
"r-d-move-to-top-gen": "Mover la tarjeta al inicio de su lista",
|
||||
@@ -772,15 +800,25 @@
|
||||
"view-all": "Ver todo",
|
||||
"filter-by-unread": "Filtrar por no leído",
|
||||
"mark-all-as-read": "Marcar todo como leido",
|
||||
"remove-all-read": "Remove all read",
|
||||
"remove-all-read": "Eliminar todos los leídos",
|
||||
"allow-rename": "Permitir renombrar",
|
||||
"allowRenamePopup-title": "Permitir renombrar",
|
||||
"start-day-of-week": "Set day of the week start",
|
||||
"monday": "Monday",
|
||||
"tuesday": "Tuesday",
|
||||
"wednesday": "Wednesday",
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday"
|
||||
"start-day-of-week": "Establecer el dia de comienzo de la semana",
|
||||
"monday": "Lunes",
|
||||
"tuesday": "Martes",
|
||||
"wednesday": "Miércoles",
|
||||
"thursday": "Jueves",
|
||||
"friday": "Viernes",
|
||||
"saturday": "Sábado",
|
||||
"sunday": "Domingo",
|
||||
"status": "Estado",
|
||||
"swimlane": "Carril",
|
||||
"owner": "Propietario",
|
||||
"last-modified-at": "Última modificación ",
|
||||
"last-activity": "Última actividad",
|
||||
"voting": "Votar",
|
||||
"archived": "Archivado",
|
||||
"delete-linked-card-before-this-card": "No puede borrar esta tarjeta antes de borrar la tarjeta enlazada que tiene",
|
||||
"delete-linked-cards-before-this-list": "No puede borrar esta lista antes de borrar las tarjetas enlazadas que apuntan a tarjetas en esta lista",
|
||||
"hide-checked-items": "Ocultar elementos marcados"
|
||||
}
|
||||
+44
-6
@@ -152,8 +152,6 @@
|
||||
"card-spent": "Erabilitako denbora",
|
||||
"card-edit-attachments": "Editatu eranskinak",
|
||||
"card-edit-custom-fields": "Edit custom fields",
|
||||
"card-start-voting": "Start voting",
|
||||
"card-cancel-voting": "Delete voting and all votes",
|
||||
"card-edit-labels": "Editatu etiketak",
|
||||
"card-edit-members": "Editatu kideak",
|
||||
"card-labels-title": "Aldatu txartelaren etiketak",
|
||||
@@ -166,10 +164,15 @@
|
||||
"cardStartVotingPopup-title": "Start a vote",
|
||||
"positiveVoteMembersPopup-title": "Proponents",
|
||||
"negativeVoteMembersPopup-title": "Opponents",
|
||||
"card-edit-voting": "Edit voting",
|
||||
"editVoteEndDatePopup-title": "Change vote end date",
|
||||
"allowNonBoardMembers": "Allow all logged in users",
|
||||
"vote-question": "Voting question",
|
||||
"vote-public": "Public vote",
|
||||
"vote-public": "Show who voted what",
|
||||
"vote-for-it": "for it",
|
||||
"vote-against": "against",
|
||||
"deleteVotePopup-title": "Delete vote?",
|
||||
"vote-delete-pop": "Deleting is permanent. You will lose all actions associated with this vote.",
|
||||
"cardDeletePopup-title": "Ezabatu txartela?",
|
||||
"cardDetailsActionsPopup-title": "Txartel-ekintzak",
|
||||
"cardLabelsPopup-title": "Etiketak",
|
||||
@@ -253,6 +256,8 @@
|
||||
"current": "unekoa",
|
||||
"custom-field-delete-pop": "There is no undo. This will remove this custom field from all cards and destroy its history.",
|
||||
"custom-field-checkbox": "Checkbox",
|
||||
"custom-field-currency": "Currency",
|
||||
"custom-field-currency-option": "Currency Code",
|
||||
"custom-field-date": "Data",
|
||||
"custom-field-dropdown": "Dropdown List",
|
||||
"custom-field-dropdown-none": "(none)",
|
||||
@@ -306,6 +311,7 @@
|
||||
"error-board-notAMember": "Arbel honetako kidea izan behar zara hori egin ahal izateko",
|
||||
"error-json-malformed": "Zure testua ez da baliozko JSON",
|
||||
"error-json-schema": "Zure JSON datuek ez dute formatu zuzenaren informazio egokia",
|
||||
"error-csv-schema": "Your CSV(Comma Separated Values)/TSV (Tab Separated Values) does not include the proper information in the correct format",
|
||||
"error-list-doesNotExist": "Zerrenda hau ez da existitzen",
|
||||
"error-user-doesNotExist": "Erabiltzaile hau ez da existitzen",
|
||||
"error-user-notAllowSelf": "Ezin duzu zure burua gonbidatu",
|
||||
@@ -313,6 +319,11 @@
|
||||
"error-username-taken": "Erabiltzaile-izen hori hartuta dago",
|
||||
"error-email-taken": "E-mail hori hartuta dago",
|
||||
"export-board": "Esportatu arbela",
|
||||
"export-board-json": "Export board to JSON",
|
||||
"export-board-csv": "Export board to CSV",
|
||||
"export-board-tsv": "Export board to TSV",
|
||||
"export-board-html": "Export board to HTML",
|
||||
"exportBoardPopup-title": "Esportatu arbela",
|
||||
"sort": "Sort",
|
||||
"sort-desc": "Click to Sort List",
|
||||
"list-sort-by": "Sort the List By:",
|
||||
@@ -326,15 +337,20 @@
|
||||
"filter-cards": "Filter Cards or Lists",
|
||||
"list-filter-label": "Filter List by Title",
|
||||
"filter-clear": "Garbitu iragazkia",
|
||||
"filter-labels-label": "Filter by label",
|
||||
"filter-no-label": "Etiketarik ez",
|
||||
"filter-member-label": "Filter by member",
|
||||
"filter-no-member": "Kiderik ez",
|
||||
"filter-assignee-label": "Filter by assignee",
|
||||
"filter-no-assignee": "No assignee",
|
||||
"filter-custom-fields-label": "Filter by Custom Fields",
|
||||
"filter-no-custom-fields": "No Custom Fields",
|
||||
"filter-show-archive": "Show archived lists",
|
||||
"filter-hide-empty": "Hide empty lists",
|
||||
"filter-on": "Iragazkia gaituta dago",
|
||||
"filter-on-desc": "Arbel honetako txartela iragazten ari zara. Egin klik hemen iragazkia editatzeko.",
|
||||
"filter-to-selection": "Iragazketa aukerara",
|
||||
"other-filters-label": "Other Filters",
|
||||
"advanced-filter-label": "Advanced Filter",
|
||||
"advanced-filter-description": "Advanced Filter allows to write a string containing following operators: == != <= >= && || ( ) A space is used as a separator between the Operators. You can filter for all Custom Fields by typing their names and values. For Example: Field1 == Value1. Note: If fields or values contains spaces, you need to encapsulate them into single quotes. For Example: 'Field 1' == 'Value 1'. For single control characters (' \\/) to be skipped, you can use \\. For example: Field1 == I\\'m. Also you can combine multiple conditions. For Example: F1 == V1 || F1 == V2. Normally all operators are interpreted from left to right. You can change the order by placing brackets. For Example: F1 == V1 && ( F2 == V2 || F2 == V3 ). Also you can search text fields using regex: F1 == /Tes.*/i",
|
||||
"fullname": "Izen abizenak",
|
||||
@@ -343,17 +359,22 @@
|
||||
"headerBarCreateBoardPopup-title": "Sortu arbela",
|
||||
"home": "Hasiera",
|
||||
"import": "Inportatu",
|
||||
"impersonate-user": "Impersonate user",
|
||||
"link": "Link",
|
||||
"import-board": "inportatu arbela",
|
||||
"import-board-c": "Inportatu arbela",
|
||||
"import-board-title-trello": "Inportatu arbela Trellotik",
|
||||
"import-board-title-wekan": "Import board from previous export",
|
||||
"import-board-title-csv": "Import board from CSV/TSV",
|
||||
"from-trello": "Trellotik",
|
||||
"from-wekan": "From previous export",
|
||||
"from-csv": "From CSV/TSV",
|
||||
"import-board-instruction-trello": "Zure Trello arbelean, aukeratu 'Menu\", 'More', 'Print and Export', 'Export JSON', eta kopiatu jasotako testua hemen.",
|
||||
"import-board-instruction-csv": "Paste in your Comma Separated Values(CSV)/ Tab Separated Values (TSV) .",
|
||||
"import-board-instruction-wekan": "In your board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-board-instruction-about-errors": "If you get errors when importing board, sometimes importing still works, and board is at All Boards page.",
|
||||
"import-json-placeholder": "Isatsi baliozko JSON datuak hemen",
|
||||
"import-csv-placeholder": "Paste your valid CSV/TSV data here",
|
||||
"import-map-members": "Kideen mapa",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to your users",
|
||||
"import-show-user-mapping": "Berrikusi kideen mapa",
|
||||
@@ -383,9 +404,11 @@
|
||||
"list-select-cards": "Aukeratu zerrenda honetako txartel guztiak",
|
||||
"set-color-list": "Set Color",
|
||||
"listActionPopup-title": "Zerrendaren ekintzak",
|
||||
"settingsUserPopup-title": "User Settings",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"swimlaneAddPopup-title": "Add a Swimlane below",
|
||||
"listImportCardPopup-title": "Inportatu Trello txartel bat",
|
||||
"listImportCardsTsvPopup-title": "Import Excel CSV/TSV",
|
||||
"listMorePopup-title": "Gehiago",
|
||||
"link-list": "Lotura zerrenda honetara",
|
||||
"list-delete-pop": "Ekintza guztiak ekintza jariotik kenduko dira eta ezin izango duzu zerrenda berreskuratu. Ez dago desegiterik.",
|
||||
@@ -404,6 +427,8 @@
|
||||
"moveCardToTop-title": "Eraman gora",
|
||||
"moveSelectionPopup-title": "Lekuz aldatu hautaketa",
|
||||
"multi-selection": "Hautaketa anitza",
|
||||
"multi-selection-label": "Set label for selection",
|
||||
"multi-selection-member": "Set member for selection",
|
||||
"multi-selection-on": "Hautaketa anitza gaituta dago",
|
||||
"muted": "Mututua",
|
||||
"muted-info": "Ez zaizkizu jakinaraziko arbel honi egindako aldaketak",
|
||||
@@ -449,7 +474,7 @@
|
||||
"search": "Bilatu",
|
||||
"rules": "Rules",
|
||||
"search-cards": "Search from card/list titles, descriptions and custom fields on this board",
|
||||
"search-example": "Text to search for?",
|
||||
"search-example": "Write text you search and press Enter",
|
||||
"select-color": "Aukeratu kolorea",
|
||||
"set-wip-limit-value": "Zerrenda honetako atazen muga maximoa ezarri",
|
||||
"setWipLimitPopup-title": "WIP muga ezarri",
|
||||
@@ -622,10 +647,12 @@
|
||||
"r-delete-rule": "Delete rule",
|
||||
"r-new-rule-name": "New rule title",
|
||||
"r-no-rules": "No rules",
|
||||
"r-trigger": "Trigger",
|
||||
"r-action": "Action",
|
||||
"r-when-a-card": "When a card",
|
||||
"r-is": "is",
|
||||
"r-is-moved": "is moved",
|
||||
"r-added-to": "added to",
|
||||
"r-added-to": "Added to",
|
||||
"r-removed-from": "Removed from",
|
||||
"r-the-board": "the board",
|
||||
"r-list": "list",
|
||||
@@ -673,6 +700,7 @@
|
||||
"r-of-checklist": "of checklist",
|
||||
"r-send-email": "Send an email",
|
||||
"r-to": "to",
|
||||
"r-of": "of",
|
||||
"r-subject": "subject",
|
||||
"r-rule-details": "Rule details",
|
||||
"r-d-move-to-top-gen": "Move card to top of its list",
|
||||
@@ -782,5 +810,15 @@
|
||||
"thursday": "Thursday",
|
||||
"friday": "Friday",
|
||||
"saturday": "Saturday",
|
||||
"sunday": "Sunday"
|
||||
"sunday": "Sunday",
|
||||
"status": "Status",
|
||||
"swimlane": "Swimlane",
|
||||
"owner": "Owner",
|
||||
"last-modified-at": "Last modified at",
|
||||
"last-activity": "Last activity",
|
||||
"voting": "Voting",
|
||||
"archived": "Archived",
|
||||
"delete-linked-card-before-this-card": "You can not delete this card before first deleting linked card that has",
|
||||
"delete-linked-cards-before-this-list": "You can not delete this list before first deleting linked cards that are pointing to cards in this list",
|
||||
"hide-checked-items": "Hide checked items"
|
||||
}
|
||||
Loaded 100 of 254 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user