mirror of
https://github.com/wekan/wekan.git
synced 2026-11-09 03:45:00 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
26f66f3cf0 | ||
|
|
2e449e9e78 | ||
|
|
e30f6515c6 | ||
|
|
11e9811f82 | ||
|
|
df5be82840 | ||
|
|
599c83e0da | ||
|
|
c0dbb79ac9 | ||
|
|
0375c551f3 | ||
|
|
ee0f42eeb1 | ||
|
|
7f4b382d2f | ||
|
|
96d81768bc | ||
|
|
cd012954e9 | ||
|
|
3b202c284a | ||
|
|
8da1dd524d | ||
|
|
cfaeb43f1f | ||
|
|
25e0c38ad8 | ||
|
|
756fbd0f4c | ||
|
|
55a53e2655 | ||
|
|
29461cb110 | ||
|
|
a30f61d72f | ||
|
|
056843d66c | ||
|
|
69e4ad48bf | ||
|
|
3588f4324c | ||
|
|
71decc370d | ||
|
|
3171af613a | ||
|
|
11b8e12ede | ||
|
|
69aeee536d | ||
|
|
ab6a7c2dd6 | ||
|
|
0a5af2b719 | ||
|
|
ecd77c8704 | ||
|
|
c5019e620a | ||
|
|
257ed56db3 | ||
|
|
edc2459ff8 | ||
|
|
36a2aa355e | ||
|
|
cea8101574 | ||
|
|
3cb356eb1d | ||
|
|
b3d3158863 | ||
|
|
f795edc640 | ||
|
|
c1ddaaa475 | ||
|
|
2dc71e97a7 | ||
|
|
92122f0fa2 | ||
|
|
ce1fd00517 | ||
|
|
5871a478e1 | ||
|
|
fcebb2a537 | ||
|
|
b267015d8c | ||
|
|
842c8b83d2 | ||
|
|
9705118ca2 | ||
|
|
326b4c5350 | ||
|
|
f3ed6ee6f6 | ||
|
|
60c6f4f5af | ||
|
|
3c1cd85f6f | ||
|
|
bb9d5cb694 | ||
|
|
669c2f3861 | ||
|
|
6a93a93d0b | ||
|
|
c3fe70e094 | ||
|
|
79ae90825e | ||
|
|
b0f0bf4a24 | ||
|
|
9dba6ff6fd | ||
|
|
d77afe3e2e | ||
|
|
ec0a8449ba | ||
|
|
9df3e3d26b | ||
|
|
73401a5d74 | ||
|
|
653f2b1ac8 | ||
|
|
2cd4caa76a | ||
|
|
000b267eaf | ||
|
|
5953fb8a44 | ||
|
|
3414cb84ad | ||
|
|
42bc905c16 | ||
|
|
d94f11c778 | ||
|
|
fcd5fda751 | ||
|
|
66bfb1cdc8 | ||
|
|
69dfa1033f | ||
|
|
94b8bba324 | ||
|
|
5dd8c9829d | ||
|
|
e0e6f06a83 | ||
|
|
8322500e47 | ||
|
|
ff9ca755f3 | ||
|
|
d3c110cd8f | ||
|
|
f6fb05d3f4 | ||
|
|
8102ee5b4f | ||
|
|
3c60df4fcd | ||
|
|
23cba8a43f | ||
|
|
65c081acc0 | ||
|
|
735907977d | ||
|
|
9d7ff75d3f | ||
|
|
1ef5b8efe1 | ||
|
|
f3d6aa9e09 | ||
|
|
fd430d3405 | ||
|
|
0ce4171d33 | ||
|
|
7df5679c0c | ||
|
|
1616dd1b74 | ||
|
|
081c1fdf83 | ||
|
|
9444624f19 | ||
|
|
abd1d322f2 | ||
|
|
d19083bb89 | ||
|
|
7ddaa12520 | ||
|
|
3b8c76a32e | ||
|
|
7f4401f3a2 | ||
|
|
188341cf50 | ||
|
|
af119ff7c0 | ||
|
|
7b04f14e3c | ||
|
|
a14f4ffee2 | ||
|
|
2d7d9b5d9f | ||
|
|
ecb8c88233 | ||
|
|
91e738bd32 | ||
|
|
ec0bbe9e14 | ||
|
|
6e25ef73b0 | ||
|
|
d2ce41694f | ||
|
|
b2c9d47b0f | ||
|
|
52aa22f36a | ||
|
|
bc6217854a | ||
|
|
d79bb1a81c | ||
|
|
fb220fe918 | ||
|
|
89ccef84be | ||
|
|
6622dbb56b | ||
|
|
7963171058 | ||
|
|
ee2a43dd5b | ||
|
|
690a5b9703 | ||
|
|
f33be3e243 | ||
|
|
4eaf92d17e | ||
|
|
1baa4b2fa4 | ||
|
|
6210c00f95 | ||
|
|
8b6a2eade3 | ||
|
|
f7ef629dba | ||
|
|
0f0a93cabf | ||
|
|
e5193870fc | ||
|
|
428465d361 | ||
|
|
37b2771a9d | ||
|
|
ccb14beb83 | ||
|
|
17bb464107 | ||
|
|
cd4062c9f1 | ||
|
|
22158b4941 | ||
|
|
bdf252b6e2 | ||
|
|
2347fbae17 | ||
|
|
9e3e63f494 | ||
|
|
ba2d9b89dc | ||
|
|
62d000cd67 | ||
|
|
0c15048bdd | ||
|
|
74877fd10d | ||
|
|
c3e67510c8 | ||
|
|
4fad48e7ac | ||
|
|
0f567a8e9c | ||
|
|
0d976aaf0f | ||
|
|
f115e33f66 | ||
|
|
6e8a84eaa7 | ||
|
|
eb9d417a27 | ||
|
|
8dd6255ebf | ||
|
|
7a943f99e3 | ||
|
|
415fafe7f6 | ||
|
|
462b8023eb | ||
|
|
8f2bebeeef | ||
|
|
e08f9686d8 | ||
|
|
bd127af916 | ||
|
|
d235a00b11 | ||
|
|
8dc9856ed8 | ||
|
|
ca1da1adc2 | ||
|
|
4c0b262c7b | ||
|
|
4ac9048d80 | ||
|
|
fb83a5164d | ||
|
|
a05292bd91 | ||
|
|
f4e0d92296 | ||
|
|
9e0142b885 | ||
|
|
5f30c6ecca | ||
|
|
7214e4bb2f | ||
|
|
fd7a140429 | ||
|
|
07954c0f6d | ||
|
|
a282a38ecd | ||
|
|
1f830cc5e3 | ||
|
|
96b560eb00 | ||
|
|
6ce5ea9ca5 | ||
|
|
9ed730284d | ||
|
|
10427a9beb | ||
|
|
ddcdcb6e08 | ||
|
|
7afea1809f | ||
|
|
1790b99fe0 | ||
|
|
d5d661b131 | ||
|
|
8a28e988e9 | ||
|
|
d1d8e0b935 | ||
|
|
84d60b5908 | ||
|
|
245d262705 | ||
|
|
c686cadfef | ||
|
|
26405c011f | ||
|
|
ba9e163dd5 | ||
|
|
7c403053e3 | ||
|
|
c52233cacf | ||
|
|
d6a5cb534d | ||
|
|
e2f768c6a0 | ||
|
|
4c5eda0ae5 | ||
|
|
670cc99b8f | ||
|
|
847843e51d | ||
|
|
9261371c51 | ||
|
|
233554a3d6 | ||
|
|
fa281e3f5f | ||
|
|
fcf7c02c69 | ||
|
|
3a391d5539 | ||
|
|
22e369804b | ||
|
|
3dc326db6a | ||
|
|
b3eab212ae | ||
|
|
6d9d183674 | ||
|
|
54036fd7a3 | ||
|
|
c72792e4ed | ||
|
|
c3e2ee1db8 | ||
|
|
5d8462ca11 | ||
|
|
7e4b42e9b3 | ||
|
|
c609096700 | ||
|
|
79fa5f89f3 | ||
|
|
f224934ae0 | ||
|
|
c31d7455f7 | ||
|
|
596dd87862 | ||
|
|
c048ce89f1 | ||
|
|
44559b52a6 | ||
|
|
162b15c0cd | ||
|
|
3756b7b0fc | ||
|
|
332f12ce28 | ||
|
|
d31d5fd47a | ||
|
|
83efd5b872 | ||
|
|
c2fd03e113 | ||
|
|
dffe3d5ade | ||
|
|
d7cefc0042 | ||
|
|
33b7622897 | ||
|
|
eb8083097f | ||
|
|
80c0c80a6a | ||
|
|
e28f3692ca | ||
|
|
6bcc1cfc62 | ||
|
|
990003ee0f | ||
|
|
60929fb200 | ||
|
|
45c78a05e2 | ||
|
|
cf045e3c34 | ||
|
|
6575312e74 | ||
|
|
ee22364354 | ||
|
|
a64dbc4a9b | ||
|
|
ebff813f99 | ||
|
|
674d45a81c | ||
|
|
b03c9b9879 | ||
|
|
7f8f6bf3db | ||
|
|
4ffe9438e0 | ||
|
|
fbf97d31a0 | ||
|
|
0c5d6c2ade | ||
|
|
00737fa015 | ||
|
|
0c9343ad88 | ||
|
|
f31d007177 | ||
|
|
932a273ba0 | ||
|
|
9ea35b7188 | ||
|
|
d76387aed2 | ||
|
|
77a4341621 | ||
|
|
e162fe3c0f | ||
|
|
f3e7646cfa | ||
|
|
552fa32b87 | ||
|
|
8a4f5ed6e3 | ||
|
|
c8cef7551f | ||
|
|
9c46c6c962 | ||
|
|
01818a99b9 | ||
|
|
70fb1c4650 | ||
|
|
5c743f12a1 | ||
|
|
5b9e8cce14 | ||
|
|
06afa1ae35 | ||
|
|
a84db59898 | ||
|
|
9441fb29c9 | ||
|
|
7dae37eeac | ||
|
|
90fd3286a8 | ||
|
|
996fdc2bda | ||
|
|
6dba4ccd4d | ||
|
|
b592e8ad14 | ||
|
|
d38071457c | ||
|
|
eec3c301bc | ||
|
|
dfd0b21947 | ||
|
|
6d93e9ffb0 | ||
|
|
99be745f02 | ||
|
|
62e43c0832 | ||
|
|
eceaac7998 | ||
|
|
c01335ee29 | ||
|
|
9353d785ea | ||
|
|
0ea96fca3f | ||
|
|
75c5eeb046 | ||
|
|
9f30eeae61 | ||
|
|
6fc992e6d7 | ||
|
|
622292e40e | ||
|
|
22e43e6591 | ||
|
|
13d8e75c05 | ||
|
|
8ae9cb97f7 | ||
|
|
b4c3e02b75 | ||
|
|
ffb8b72b69 | ||
|
|
309c1d08ff | ||
|
|
ce4f158976 | ||
|
|
5a37ba0d9f | ||
|
|
59f4daf91e | ||
|
|
fa1d8cd5ef | ||
|
|
e3b7f85cc3 | ||
|
|
3bead1bf78 | ||
|
|
1f6545e411 | ||
|
|
29d54f46aa | ||
|
|
2d12a4f404 | ||
|
|
ba3c3f8289 | ||
|
|
6eef4043ca | ||
|
|
999cdb2bb9 | ||
|
|
cc5435c780 | ||
|
|
e015e4245e | ||
|
|
c17f26f6ba | ||
|
|
fdd1aad80d | ||
|
|
8bf3f300ad | ||
|
|
99455b2728 | ||
|
|
1a232c7bbb | ||
|
|
d3d73e9cdd | ||
|
|
0c34cb97a7 | ||
|
|
0df3e7a3c0 | ||
|
|
29a08e5568 | ||
|
|
09808840cd | ||
|
|
c5e36d9160 | ||
|
|
aa1646ad45 | ||
|
|
c2173e073e | ||
|
|
81d00a9471 | ||
|
|
e8cfed1f7b | ||
|
|
28c78fdfef | ||
|
|
d48043c7ee | ||
|
|
dd1a8ade5e | ||
|
|
d9705a0ec4 | ||
|
|
58fbe8e6f2 | ||
|
|
5c1ace7293 | ||
|
|
0321d9770c | ||
|
|
6a2b6ef3c0 | ||
|
|
01507576b1 | ||
|
|
94a6d9ae2f | ||
|
|
64fe808a4a | ||
|
|
a493c314db | ||
|
|
d1670ee4c1 | ||
|
|
2edced5467 | ||
|
|
509b640588 | ||
|
|
624c5aa9b2 | ||
|
|
c5540ddcbd | ||
|
|
b105f0e2e7 | ||
|
|
99703035d7 | ||
|
|
b92cde23aa | ||
|
|
21f76bcacc | ||
|
|
0d7c1501ce | ||
|
|
97a23011da | ||
|
|
93d8a3f88a | ||
|
|
624719974e | ||
|
|
c290d63048 | ||
|
|
b55756216e | ||
|
|
77d23df87f | ||
|
|
3ab33ed826 | ||
|
|
8f1f7a1d56 | ||
|
|
4eccfb6c25 | ||
|
|
a5daf5dc29 | ||
|
|
6a89914873 | ||
|
|
5532a0071a | ||
|
|
46d7a33575 | ||
|
|
2f0609db64 | ||
|
|
f16687fa94 | ||
|
|
dc82582391 | ||
|
|
ff7b001b00 | ||
|
|
33cea11393 | ||
|
|
10cb2db94f | ||
|
|
c346743234 | ||
|
|
6ba1fc5ba1 | ||
|
|
de2acaec68 | ||
|
|
fb060ed2c5 | ||
|
|
c84187bdad | ||
|
|
ad607c1291 | ||
|
|
b9be17360f | ||
|
|
23ff08382a | ||
|
|
b34c62bbc7 | ||
|
|
e85d6d6c5e | ||
|
|
8daa5b4848 | ||
|
|
273784b9e4 | ||
|
|
f77da76c68 | ||
|
|
214fe6a61f | ||
|
|
38d1a424d0 | ||
|
|
e4c08f6933 | ||
|
|
3bee5ad7fe | ||
|
|
296520f9ac | ||
|
|
c865bfe497 | ||
|
|
089dbf0cf6 | ||
|
|
527c430307 | ||
|
|
de4ae2dc74 | ||
|
|
bab02bf8fa | ||
|
|
23a9ba0ef6 | ||
|
|
c3804dc0fa | ||
|
|
08bab70dbe | ||
|
|
ed4c749cea | ||
|
|
d6ef4a8266 | ||
|
|
1d3e2ffadd | ||
|
|
0074317bd3 | ||
|
|
26aa9a4ac4 | ||
|
|
e587964e82 | ||
|
|
61dce8e65d | ||
|
|
c18ded23a3 | ||
|
|
ff5e88fca3 | ||
|
|
8df9e681ed | ||
|
|
443c3a7ac6 | ||
|
|
c8cbb7697d | ||
|
|
d213d37dab | ||
|
|
a003161fa7 | ||
|
|
51fd053119 | ||
|
|
740c705748 | ||
|
|
a1d0672739 | ||
|
|
7d3fed56ae | ||
|
|
a0cccb736c | ||
|
|
6ec14ee52b | ||
|
|
4b995e88ba | ||
|
|
2ae0dc315f | ||
|
|
a88ac6113e | ||
|
|
42ca385a36 | ||
|
|
de1ca1d12a | ||
|
|
196f959f1d | ||
|
|
a918d36533 | ||
|
|
0e43a5561b | ||
|
|
c9c650664f | ||
|
|
aa1876f94c | ||
|
|
ee94735922 | ||
|
|
deef0855d5 | ||
|
|
61ee107c27 | ||
|
|
b503ba1144 | ||
|
|
860ae6f38d |
No files matched your search
+2
-3
@@ -52,7 +52,6 @@
|
||||
"prefer-const": 2,
|
||||
"prefer-spread": 2,
|
||||
"prefer-template": 2,
|
||||
"no-console": 0,
|
||||
"no-unused-vars" : "warn"
|
||||
},
|
||||
"globals": {
|
||||
@@ -125,11 +124,11 @@
|
||||
"Checklists": true,
|
||||
"Settings": true,
|
||||
"InvitationCodes": true,
|
||||
"Winston":true,
|
||||
"JsonRoutes": true,
|
||||
"Authentication": true,
|
||||
"Integrations": true,
|
||||
"HTTP": true,
|
||||
"AccountSettings": true
|
||||
"AccountSettings": true,
|
||||
"Announcements": true
|
||||
}
|
||||
}
|
||||
@@ -10,7 +10,7 @@
|
||||
* ROOT_URL environment variable (Is there a subfolder?):
|
||||
|
||||
**Problem description**:
|
||||
- *be as explicit has you can*
|
||||
- *be as explicit as you can*
|
||||
- *describe the problem and its symptoms*
|
||||
- *explain how to reproduce*
|
||||
- *attach whatever information that can help understanding the context (screen capture, log files)*
|
||||
@@ -5,6 +5,7 @@
|
||||
tmp/
|
||||
node_modules/
|
||||
.vscode/
|
||||
.idea/
|
||||
.build/*
|
||||
packages/kadira-flow-router/
|
||||
packages/meteor-useraccounts-core/
|
||||
|
||||
@@ -15,3 +15,4 @@ notices-for-facebook-graph-api-2
|
||||
1.4.0-remove-old-dev-bundle-link
|
||||
1.4.1-add-shell-server-package
|
||||
1.4.3-split-account-service-packages
|
||||
1.5-add-dynamic-import-package
|
||||
+18
-15
@@ -3,13 +3,13 @@
|
||||
# 'meteor add' and 'meteor remove' will edit this file for you,
|
||||
# but you can also edit it by hand.
|
||||
|
||||
meteor-base@1.0.4
|
||||
meteor-base@1.2.0
|
||||
|
||||
# Build system
|
||||
ecmascript@0.7.2
|
||||
stylus@2.513.9
|
||||
standard-minifier-css@1.3.4
|
||||
standard-minifier-js@2.0.0
|
||||
ecmascript@0.9.0
|
||||
stylus@2.513.13
|
||||
standard-minifier-css@1.3.5
|
||||
standard-minifier-js@2.2.0
|
||||
mquandalle:jade
|
||||
|
||||
# Polyfills
|
||||
@@ -17,18 +17,16 @@ es5-shim@4.6.15
|
||||
|
||||
# Collections
|
||||
aldeed:collection2
|
||||
cfs:gridfs
|
||||
cfs:standard-packages
|
||||
cottz:publish-relations
|
||||
dburles:collection-helpers
|
||||
idmontie:migrations
|
||||
matb33:collection-hooks
|
||||
matteodem:easy-search
|
||||
mongo@1.1.16
|
||||
mongo@1.3.1
|
||||
mquandalle:collection-mutations
|
||||
|
||||
# Account system
|
||||
accounts-password@1.3.5
|
||||
kenton:accounts-sandstorm
|
||||
service-configuration@1.0.11
|
||||
useraccounts:unstyled
|
||||
@@ -38,9 +36,9 @@ useraccounts:flow-routing
|
||||
check@1.2.5
|
||||
jquery@1.11.10
|
||||
random@1.0.10
|
||||
reactive-dict@1.1.8
|
||||
reactive-dict@1.2.0
|
||||
session@1.1.7
|
||||
tracker@1.1.2
|
||||
tracker@1.1.3
|
||||
underscore@1.0.10
|
||||
3stack:presence
|
||||
alethes:pages
|
||||
@@ -48,7 +46,6 @@ arillo:flow-router-helpers
|
||||
audit-argument-checks@1.0.7
|
||||
kadira:blaze-layout
|
||||
kadira:dochead
|
||||
meteorhacks:fast-render
|
||||
meteorhacks:picker
|
||||
meteorhacks:subs-manager
|
||||
mquandalle:autofocus
|
||||
@@ -56,7 +53,7 @@ mquandalle:moment
|
||||
ongoworks:speakingurl
|
||||
raix:handlebar-helpers
|
||||
tap:i18n
|
||||
http
|
||||
http@1.3.0
|
||||
|
||||
# UI components
|
||||
blaze
|
||||
@@ -69,13 +66,19 @@ mquandalle:mousetrap-bindglobal
|
||||
mquandalle:perfect-scrollbar
|
||||
peerlibrary:blaze-components@=0.15.1
|
||||
perak:markdown
|
||||
seriousm:emoji-continued
|
||||
templates:tabs
|
||||
verron:autosize
|
||||
simple:json-routes
|
||||
rajit:bootstrap3-datepicker
|
||||
kadira:flow-router
|
||||
shell-server@0.2.3
|
||||
shell-server@0.3.0
|
||||
simple:rest-accounts-password
|
||||
useraccounts:core
|
||||
email@1.2.3
|
||||
horka:swipebox
|
||||
dynamic-import@0.2.0
|
||||
staringatlights:fast-render
|
||||
staringatlights:flow-router
|
||||
|
||||
mixmax:smart-disconnect
|
||||
accounts-password@1.5.0
|
||||
cfs:gridfs
|
||||
+1
-1
@@ -1 +1 @@
|
||||
METEOR@1.4.4.1
|
||||
METEOR@1.6.0.1
|
||||
+53
-46
@@ -1,23 +1,23 @@
|
||||
3stack:presence@1.0.5
|
||||
accounts-base@1.2.16
|
||||
accounts-password@1.3.5
|
||||
3stack:presence@1.1.2
|
||||
accounts-base@1.4.0
|
||||
accounts-password@1.5.0
|
||||
aldeed:collection2@2.10.0
|
||||
aldeed:collection2-core@1.2.0
|
||||
aldeed:schema-deny@1.1.0
|
||||
aldeed:schema-index@1.1.1
|
||||
aldeed:simple-schema@1.5.3
|
||||
alethes:pages@1.8.6
|
||||
allow-deny@1.0.5
|
||||
allow-deny@1.1.0
|
||||
arillo:flow-router-helpers@0.5.2
|
||||
audit-argument-checks@1.0.7
|
||||
autoupdate@1.3.12
|
||||
babel-compiler@6.18.2
|
||||
babel-runtime@1.0.1
|
||||
babel-compiler@6.24.7
|
||||
babel-runtime@1.1.1
|
||||
base64@1.0.10
|
||||
binary-heap@1.0.10
|
||||
blaze@2.3.2
|
||||
blaze-tools@1.0.10
|
||||
boilerplate-generator@1.0.11
|
||||
boilerplate-generator@1.3.1
|
||||
caching-compiler@1.1.9
|
||||
caching-html-compiler@1.1.2
|
||||
callback-hook@1.0.10
|
||||
@@ -27,7 +27,7 @@ cfs:collection@0.5.5
|
||||
cfs:collection-filters@0.2.4
|
||||
cfs:data-man@0.0.6
|
||||
cfs:file@0.1.17
|
||||
cfs:gridfs@0.0.33
|
||||
cfs:gridfs@0.0.34
|
||||
cfs:http-methods@0.0.32
|
||||
cfs:http-publish@0.0.13
|
||||
cfs:power-queue@0.9.11
|
||||
@@ -40,61 +40,66 @@ cfs:upload-http@0.0.20
|
||||
cfs:worker@0.1.4
|
||||
check@1.2.5
|
||||
chuangbo:cookie@1.1.0
|
||||
coffeescript@1.12.3_1
|
||||
cottz:publish-relations@2.0.7
|
||||
coffeescript@1.12.7_3
|
||||
coffeescript-compiler@1.12.7_3
|
||||
cottz:publish-relations@2.0.8
|
||||
dburles:collection-helpers@1.1.0
|
||||
ddp@1.2.5
|
||||
ddp-client@1.3.4
|
||||
ddp-common@1.2.8
|
||||
ddp@1.4.0
|
||||
ddp-client@2.2.0
|
||||
ddp-common@1.3.0
|
||||
ddp-rate-limiter@1.0.7
|
||||
ddp-server@1.3.14
|
||||
ddp-server@2.1.1
|
||||
deps@1.0.12
|
||||
diff-sequence@1.0.7
|
||||
ecmascript@0.7.3
|
||||
ecmascript-runtime@0.3.15
|
||||
ejson@1.0.13
|
||||
dynamic-import@0.2.1
|
||||
ecmascript@0.9.0
|
||||
ecmascript-runtime@0.5.0
|
||||
ecmascript-runtime-client@0.5.0
|
||||
ecmascript-runtime-server@0.5.0
|
||||
ejson@1.1.0
|
||||
email@1.2.3
|
||||
es5-shim@4.6.15
|
||||
fastclick@1.0.13
|
||||
fortawesome:fontawesome@4.7.0
|
||||
geojson-utils@1.0.10
|
||||
horka:swipebox@1.0.2
|
||||
hot-code-push@1.0.4
|
||||
html-tools@1.0.11
|
||||
htmljs@1.0.11
|
||||
http@1.2.12
|
||||
http@1.3.0
|
||||
id-map@1.0.9
|
||||
idmontie:migrations@1.0.3
|
||||
jquery@1.11.10
|
||||
kadira:blaze-layout@2.3.0
|
||||
kadira:dochead@1.5.0
|
||||
kadira:flow-router@2.12.1
|
||||
kenton:accounts-sandstorm@0.6.0
|
||||
kenton:accounts-sandstorm@0.7.0
|
||||
launch-screen@1.1.1
|
||||
livedata@1.0.18
|
||||
localstorage@1.0.12
|
||||
logging@1.1.17
|
||||
localstorage@1.2.0
|
||||
logging@1.1.19
|
||||
matb33:collection-hooks@0.8.4
|
||||
matteodem:easy-search@1.6.4
|
||||
mdg:validation-error@0.5.1
|
||||
meteor@1.6.1
|
||||
meteor-base@1.0.4
|
||||
meteor@1.8.2
|
||||
meteor-base@1.2.0
|
||||
meteor-platform@1.2.6
|
||||
meteorhacks:aggregate@1.3.0
|
||||
meteorhacks:collection-utils@1.2.0
|
||||
meteorhacks:fast-render@2.16.0
|
||||
meteorhacks:inject-data@2.0.0
|
||||
meteorhacks:meteorx@1.4.1
|
||||
meteorhacks:picker@1.0.3
|
||||
meteorhacks:subs-manager@1.6.4
|
||||
meteorspark:util@0.2.0
|
||||
minifier-css@1.2.16
|
||||
minifier-js@2.0.0
|
||||
minifier-js@2.2.2
|
||||
minifiers@1.1.8-faster-rebuild.0
|
||||
minimongo@1.0.21
|
||||
minimongo@1.4.3
|
||||
mixmax:smart-disconnect@0.0.4
|
||||
mobile-status-bar@1.0.14
|
||||
modules@0.8.2
|
||||
modules-runtime@0.7.10
|
||||
mongo@1.1.16
|
||||
modules@0.11.0
|
||||
modules-runtime@0.9.1
|
||||
mongo@1.3.1
|
||||
mongo-dev-server@1.1.0
|
||||
mongo-id@1.0.6
|
||||
mongo-livedata@1.0.12
|
||||
mousetrap:mousetrap@1.4.6_1
|
||||
@@ -107,52 +112,54 @@ 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
|
||||
npm-bcrypt@0.9.2
|
||||
npm-mongo@2.2.24
|
||||
npm-bcrypt@0.9.3
|
||||
npm-mongo@2.2.33
|
||||
observe-sequence@1.0.16
|
||||
ongoworks:speakingurl@1.1.0
|
||||
ordered-dict@1.0.9
|
||||
peerlibrary:assert@0.2.5
|
||||
peerlibrary:base-component@0.16.0
|
||||
peerlibrary:blaze-components@0.15.1
|
||||
peerlibrary:computed-field@0.6.1
|
||||
peerlibrary:computed-field@0.7.0
|
||||
peerlibrary:reactive-field@0.3.0
|
||||
perak:markdown@1.0.5
|
||||
promise@0.8.8
|
||||
promise@0.10.0
|
||||
raix:eventemitter@0.1.3
|
||||
raix:handlebar-helpers@0.2.5
|
||||
rajit:bootstrap3-datepicker@1.6.4
|
||||
rajit:bootstrap3-datepicker@1.7.1
|
||||
random@1.0.10
|
||||
rate-limit@1.0.8
|
||||
reactive-dict@1.1.8
|
||||
reactive-dict@1.2.0
|
||||
reactive-var@1.0.11
|
||||
reload@1.1.11
|
||||
retry@1.0.9
|
||||
routepolicy@1.0.12
|
||||
seriousm:emoji-continued@1.4.0
|
||||
service-configuration@1.0.11
|
||||
session@1.1.7
|
||||
sha@1.0.9
|
||||
shell-server@0.2.3
|
||||
shell-server@0.3.1
|
||||
simple:authenticate-user-by-token@1.0.1
|
||||
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
|
||||
softwarerero:accounts-t9n@1.3.9
|
||||
softwarerero:accounts-t9n@1.3.11
|
||||
spacebars@1.0.15
|
||||
spacebars-compiler@1.1.2
|
||||
spacebars-compiler@1.1.3
|
||||
srp@1.0.10
|
||||
standard-minifier-css@1.3.4
|
||||
standard-minifier-js@2.0.0
|
||||
stylus@2.513.9
|
||||
standard-minifier-css@1.3.5
|
||||
standard-minifier-js@2.2.3
|
||||
staringatlights:fast-render@2.16.5
|
||||
staringatlights:flow-router@2.12.2
|
||||
staringatlights:inject-data@2.0.5
|
||||
stylus@2.513.13
|
||||
tap:i18n@1.8.2
|
||||
templates:tabs@2.3.0
|
||||
templating@1.3.2
|
||||
templating-compiler@1.3.2
|
||||
templating-compiler@1.3.3
|
||||
templating-runtime@1.3.2
|
||||
templating-tools@1.1.2
|
||||
tracker@1.1.2
|
||||
tracker@1.1.3
|
||||
ui@1.0.13
|
||||
underscore@1.0.10
|
||||
url@1.1.0
|
||||
@@ -160,6 +167,6 @@ useraccounts:core@1.14.2
|
||||
useraccounts:flow-routing@1.14.2
|
||||
useraccounts:unstyled@1.14.2
|
||||
verron:autosize@3.0.8
|
||||
webapp@1.3.15
|
||||
webapp@1.4.0
|
||||
webapp-hashing@1.0.9
|
||||
zimme:active-route@2.3.2
|
||||
+3
-3
@@ -2,9 +2,9 @@ dist: trusty
|
||||
sudo: required
|
||||
|
||||
env:
|
||||
TRAVIS_DOCKER_COMPOSE_VERSION: 1.12.0
|
||||
TRAVIS_NODE_VERSION: 4.8.4
|
||||
TRAVIS_NPM_VERSION: 4.6.1
|
||||
TRAVIS_DOCKER_COMPOSE_VERSION: 1.17.0
|
||||
TRAVIS_NODE_VERSION: 8.9.3
|
||||
TRAVIS_NPM_VERSION: 5.5.1
|
||||
|
||||
before_install:
|
||||
- sudo apt-get update -y
|
||||
|
||||
+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 = en_GB:en-GB, fa_IR:fa, fi_FI:fi, hu_HU:hu, id_ID:id, no:nb, pt_BR:pt-BR, ro_RO:ro, zh_CN:zh-CN, zh_TW:zh-TW
|
||||
lang_map = 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, zh_CN:zh-CN, zh_TW:zh-TW
|
||||
|
||||
[wekan.application]
|
||||
file_filter = i18n/<lang>.i18n.json
|
||||
|
||||
+363
-4
@@ -1,3 +1,362 @@
|
||||
# v0.76 2018-02-21 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Add swimlaneId to POST /api/boards/:boardId/lists/:listId/cards route](https://github.com/wekan/wekan/commit/ee0f42eeb1b10107bd8fc38cdefbdbc4f3fde108);
|
||||
- [Added path to capnp.js to make Wekan work on Sandstorm](https://github.com/wekan/wekan/commit/11e9811f82858a3d98036e142b0da69d867adebc).
|
||||
|
||||
Known bugs:
|
||||
|
||||
- [Disabled Import temporarily on Sandstorm because of data loss bug](https://github.com/wekan/wekan/commit/e30f6515c623de7a48f25e0b2fc75313ae5d187c);
|
||||
- [Swimlane not visible at Sandstorm](https://github.com/wekan/wekan/issues/1494).
|
||||
|
||||
Thanks to GitHub users couscous3 and xet7 for their contributions.
|
||||
|
||||
# v0.75 2018-02-16 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Checklist templates](https://github.com/wekan/wekan/pull/1470);
|
||||
- Added [Finnish language changelog](https://github.com/wekan/wekan/tree/devel/meta/t9n-changelog)
|
||||
and [more Finnish traslations](https://github.com/wekan/wekan/blob/devel/sandstorm-pkgdef.capnp)
|
||||
to Sandstorm.
|
||||
|
||||
Thanks to GitHub users erikturk and xet7 for their contributions.
|
||||
|
||||
# v0.74 2018-02-13 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Remove Emoji support, so MAC addresses etc show correctly](https://github.com/wekan/wekan/commit/056843d66c361594d5d4478cfe86e2e405333b91).
|
||||
NOTE: You can still add Unicode Emojis, this only removes broken autoconversion to Emojis.
|
||||
|
||||
Thanks to GitHub user xet7 for contributions.
|
||||
|
||||
# v0.73 2018-02-08 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fix Ubuntu snap build](https://github.com/wekan/wekan/pull/1469).
|
||||
|
||||
Thanks to GitHub user kubiko for contributions.
|
||||
|
||||
# v0.72 2018-02-07 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fix card sorting](https://github.com/wekan/wekan/pull/1465);
|
||||
- [Fix import Trello board without swimlanes](https://github.com/wekan/wekan/commit/5871a478e1280818f12fcb7250b7cbccf6907cf0);
|
||||
- [Fix swimlane move parameters](https://github.com/wekan/wekan/commit/fcebb2a5373d6dea41b98b530c176cbee31bee4b).
|
||||
|
||||
Thanks to GitHub users andresmanelli and ViViDboarder for their contributions.
|
||||
|
||||
# v0.71 2018-02-03 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fix Welcome board is not editable: Added default swimlane to Welcome board](https://github.com/wekan/wekan/commit/9df3e3d26bffb2268cdcc7fa768eda60e4f0975c);
|
||||
- [Fix Import Wekan board with swimlanes](https://github.com/wekan/wekan/commit/ec0a8449ba98aea708e484d386e5a209e2be8fff).
|
||||
|
||||
Thanks to GitHub user andresmanelli for contributions.
|
||||
|
||||
# v0.70 2018-02-02 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
- [Add ability to edit swimlane name](https://github.com/wekan/wekan/commit/3414cb84ad8ac800e23bbda6ce12822f40d1bd19);
|
||||
- [Add swimlane popup menu and archive icon](https://github.com/wekan/wekan/commit/5953fb8a44a3582ed0d8816ffb32a5b7f41f50a3).
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
- [Two empty columns in swimlane view](https://github.com/wekan/wekan/issues/1459).
|
||||
|
||||
Thanks to GitHub user andresmanelli for contributions.
|
||||
|
||||
# v0.69 2018-02-01 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
- [Fix swimlanes card details bug](https://github.com/wekan/wekan/commit/f6fb05d3f49c656e9890351f5d7c0827bf2605c1);
|
||||
- [Workaround to avoid swimlanes drag bug](https://github.com/wekan/wekan/commit/d3c110cd8f3ad16a4ced5520c27ab542cc79b548);
|
||||
- [Fix swimlanes details view in lists only mode](https://github.com/wekan/wekan/commit/ff9ca755f338e3c45a1bd726dfbce1c607f2ff4c).
|
||||
- [Fix typo in issue template](https://github.com/wekan/wekan/pull/1451).
|
||||
|
||||
Thanks to GitHub users andresmanelli and d-Rickyy-b for their contributions.
|
||||
|
||||
# v0.68 2018-01-30 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
* [Partial fix: Trello board import fails because of missing "Swimlane id"](https://github.com/wekan/wekan/issues/1442), still needs some work.
|
||||
|
||||
Thanks to GitHub user xet7 for contributions.
|
||||
|
||||
# v0.67 2018-01-28 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
* [Fix Igbo language name at menu](https://github.com/wekan/wekan/commit/9d7ff75d3fed1285273245fbe6f6a757b6180039).
|
||||
|
||||
Thanks to GitHub user xet7 for contributions.
|
||||
|
||||
# v0.66 2018-01-28 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
* [Fix Dockerfile for Debian](https://github.com/wekan/wekan/pull/1439).
|
||||
|
||||
Thanks to GitHub user soohwa for contributions.
|
||||
|
||||
# v0.65 2018-01-28 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [Swimlanes, part 1](https://github.com/wekan/wekan/issues/955);
|
||||
* Added new language: Igbo.
|
||||
|
||||
Thanks to GitHub user andresmanelli for contributions.
|
||||
|
||||
# v0.64 2018-01-22 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [Different icons for start and due date](https://github.com/wekan/wekan/pull/1420).
|
||||
* Added new languages: Mongolian and Portuguese;
|
||||
* Upgraded to Meteor 1.6.0.1, Node 8.9.3, NPM 5.5.1 and fibers 2.0.0.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
* [Fix for dragging into scrolled-down list](https://github.com/wekan/wekan/pull/1424).
|
||||
* [Fix double slash bug on snap](https://github.com/wekan/wekan/issues/962#issuecomment-357785748).
|
||||
|
||||
Thanks to GitHub users dpoznyak, mmarschall and xet7 for their contributions.
|
||||
|
||||
# v0.63 2017-12-20 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [Auto update card cover with new image uploaded via drag&drop](https://github.com/wekan/wekan/pull/1401);
|
||||
* Update to Node 4.8.7.
|
||||
|
||||
Thanks to GitHub users thuanpq and xet7 for their contributions.
|
||||
|
||||
# v0.62 2017-12-12 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
* Added missing packages to build script.
|
||||
|
||||
Thanks to GitHub user xet7 for contributions.
|
||||
|
||||
# v0.61 2017-12-12 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [Change password of any user in Standalone Wekan Admin Panel](https://github.com/wekan/wekan/pull/1372);
|
||||
* [Performance optimization: Move more global subscriptions to template subscription](https://github.com/wekan/wekan/pull/1373);
|
||||
* [Auto update card cover with latest uploaded image attachment](https://github.com/wekan/wekan/pull/1387);
|
||||
* [Always display attachment section for uploading file quickly](https://github.com/wekan/wekan/pull/1391);
|
||||
* [Make it easier to see the Add Card button at top of list](https://github.com/wekan/wekan/pull/1392);
|
||||
* [Add mixmax:smart-disconnect to lower CPU usage when browser tab is not selected](https://github.com/wekan/wekan-mongodb/issues/2);
|
||||
* Update tranlations. Add Latvian language;
|
||||
* Update to Node 4.8.6 and MongoDB 3.2.18.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
* [Bug on not being able to see Admin Panel if not having access to Board List](https://github.com/wekan/wekan/pull/1371);
|
||||
* [Bug on not able to see member avatar on sidebar activity](https://github.com/wekan/wekan/pull/1380);
|
||||
* [Don't open swipebox on update card cover / download file / delete file](https://github.com/wekan/wekan/pull/1386);
|
||||
* [Boards subscription should be placed at header for all other component can be used](https://github.com/wekan/wekan/pull/1381);
|
||||
* [Bug on long url of attachment in card activity log](https://github.com/wekan/wekan/pull/1388).
|
||||
|
||||
Thanks to GitHub users mfshiu, thuanpq and xet7 for their contributions.
|
||||
Thanks to translators for their translations.
|
||||
|
||||
# v0.60 2017-11-29 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [Add SMTP test email button to Standalone Wekan Admin Panel](https://github.com/wekan/wekan/pull/1359);
|
||||
* [Optimize for mobile web, show single list per page with navigate bar](https://github.com/wekan/wekan/pull/1365).
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
* [User with comment only permissions can remove another user from a card](https://github.com/wekan/wekan/pull/1352);
|
||||
* [Frequent Subscriptions problem that make Excessive CPU usage](https://github.com/wekan/wekan/pull/1363).
|
||||
|
||||
Thanks to GitHub users floatinghotpot, mfshiu and nztqa for their contributions.
|
||||
|
||||
# v0.59 2017-11-23 Wekan release.
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
* [Remove incomplete logger fix](https://github.com/wekan/wekan/pull/1352).
|
||||
|
||||
Thanks to GitHub user pierreozoux for contributions.
|
||||
|
||||
# v0.58 2017-11-23 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* Updated translations.
|
||||
|
||||
Thanks to all translators.
|
||||
|
||||
# v0.57 2017-11-23 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [Gogs Integration](https://github.com/wekan/wekan-gogs) as separate project. Please test and submit issues and pull requests to that project.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
* [Fix Winston logger](https://github.com/wekan/wekan/pull/1350).
|
||||
|
||||
Thanks to GitHub users andresmanelli and pierreozoux for their contributions.
|
||||
|
||||
# v0.56 2017-11-21 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [Copy/Move cards to other board in Standalone Wekan](https://github.com/wekan/wekan/pull/1330);
|
||||
* [Spent time/Overtime on card](https://github.com/wekan/wekan/pull/1344);
|
||||
* New translation: Greek.
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
* [Board list with long-description boards not visible](https://github.com/wekan/wekan/pull/1346);
|
||||
* [Remove erroneous minicard title whitespace](https://github.com/wekan/wekan/pull/1347);
|
||||
* [Fix title editing with shift key at card details](https://github.com/wekan/wekan/pull/1348).
|
||||
|
||||
Thanks to GitHub users couscous3, GhassenRjab, thuanpq and xet7 for their contributions.
|
||||
|
||||
# v0.55 2017-11-19 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [Markdown in card/minicard/checlist titles and checklist items. Next line: Shift+Enter. Submit: Enter.](https://github.com/wekan/wekan/pull/1334);
|
||||
* [User Admin to Admin Panel: List users. Change: is user admin, name, fullname, email address, is user active. Not changing password yet.](https://github.com/wekan/wekan/pull/1325);
|
||||
* [REST API better error output](https://github.com/wekan/wekan/pull/1323).
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
* [Emoji detection breaks MAC addresses](https://github.com/wekan/wekan/issues/1248); - this has not yet fixed all cases.
|
||||
* [Codeblocks should not be scanned for emoji](https://github.com/wekan/wekan/issues/643);
|
||||
* [Whitespace trimming breaks Markdown code block indentation](https://github.com/wekan/wekan/issues/1288):
|
||||
* [Helper to list boards for user](https://github.com/wekan/wekan/pull/1327);
|
||||
* [Error after sending invitation and joining board: Exception while invoking method 'login' TypeError: Cannot read property 'loginDisabled' of undefined](https://github.com/wekan/wekan/issues/1331);
|
||||
* [Invitation /sign-up page did not show input for invitation code](https://github.com/wekan/wekan/commit/99be745f0299b32a8a7b30204b43bff7fd5ba638).
|
||||
|
||||
Thanks to Github users brooksbecton, milesibastos, nztqa, soohwa, thuanpq and xet7 for their contributions.
|
||||
|
||||
# v0.54 2017-11-02 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [Soft WIP Limit](https://github.com/wekan/wekan/pull/1319).
|
||||
|
||||
Thanks to GitHub users amadilsons and xet7 for their contributions.
|
||||
|
||||
# v0.53 2017-11-02 Wekan release
|
||||
|
||||
(This was canceled, it had some missing version numbers).
|
||||
|
||||
# v0.52 2017-10-31 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [Permit editing WIP limit](https://github.com/wekan/wekan/pull/1312);
|
||||
* [Image attachment resize on smaller screens and swipebox](https://github.com/wekan/wekan/pull/1315);
|
||||
* [Add iPhone favicon for Wekan](https://github.com/wekan/wekan/issues/1317).
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
* [Members do not get included on board import from Wekan](https://github.com/wekan/wekan/pull/1316).
|
||||
|
||||
Thanks to GitHub users brooksbecton, guillaumebriday, nztqa, ocdtrekkie and Tentoe for their contributions.
|
||||
|
||||
# v0.51 2017-10-25 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [REST API: Disable and enable user login. Take ownership boards of a user. List boards of user.](https://github.com/wekan/wekan/pull/1296);
|
||||
* [Add translation: Spanish of Argentina](https://github.com/wekan/wekan/commit/b105f0e2e72c49a2f1ba3f6c87532a5418192386);
|
||||
* [Add more languages to Roboto font](https://github.com/wekan/wekan/issues/1299).
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
* [Segfault on Alpine Linux](https://github.com/wekan/wekan/issues/1303);
|
||||
* [Change invitation link from sign-in to sign-up](https://github.com/wekan/wekan/issues/1300);
|
||||
* [User with comment only permission can add cards](https://github.com/wekan/wekan/issues/1301).
|
||||
|
||||
Thanks to GitHub users chromas-cro, soohwa, wenerme and xet7 for their contributions.
|
||||
|
||||
# v0.50 2017-10-10 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
* [Fix and update translations](https://github.com/wekan/wekan/issues/1286).
|
||||
|
||||
Thanks to GitHub user xet7 for contributions.
|
||||
|
||||
# v0.49 2017-10-09 Wekan release
|
||||
|
||||
This release fixes the following bugs:
|
||||
|
||||
* [When WIP limit in use, hide also add card + button at top of list](https://github.com/wekan/wekan/commit/a5daf5dc29278b82e133fbe4db09a91ffc0c0d3b).
|
||||
|
||||
Thanks to GitHub user xet7 for contributions.
|
||||
|
||||
# v0.48 2017-10-09 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [WIP Limits](https://github.com/wekan/wekan/pull/1278);
|
||||
* [REST API: Create user despite disabling registration](https://github.com/wekan/wekan/issues/1232);
|
||||
* [User can leave board on Standalone Wekan](https://github.com/wekan/wekan/pull/1283).
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
* [Admin announcement can be viewed without signing in](https://github.com/wekan/wekan/issues/1281).
|
||||
|
||||
Thanks to GitHub users amadilsons, nztqa and soohwa for their contributions.
|
||||
|
||||
# v0.47 2017-10-04 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [Use theme color for Slider for Comments only](https://github.com/wekan/wekan/pull/1275).
|
||||
|
||||
Thanks to GitHub user nztqa for contributions.
|
||||
|
||||
# v0.46 2017-10-03 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [Webhook parameters and response order](https://github.com/wekan/wekan/pull/1263).
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
* SECURITY FIX: [Meteor allow/deny](https://blog.meteor.com/meteor-allow-deny-vulnerability-disclosure-baf398f47b25) fixed
|
||||
[here](https://github.com/wekan/wekan/commit/c3804dc0fad0817285460d86dc1b3bdc96361f49);
|
||||
* [Fix: Slider for Comments only does not work correctly with over 21 activities](https://github.com/wekan/wekan/pull/1247).
|
||||
|
||||
Thanks to GitHub users andresmanelli and nztqa for their contributions.
|
||||
|
||||
# v0.45 2017-10-01 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
|
||||
* [Slider for Comments only in activity feed](https://github.com/wekan/wekan/issues/1247);
|
||||
* [Site Wide Announcement](https://github.com/wekan/wekan/pull/1260).
|
||||
|
||||
and fixes the following bugs:
|
||||
|
||||
* [Data inconsistency when copying card](https://github.com/wekan/wekan/pull/1246). Note: There is no feature for copying card attachment yet;
|
||||
* [Hide create label from normal users, because only board admin can create labels](https://github.com/wekan/wekan/pull/1261).
|
||||
|
||||
Thanks to GitHub user nztqa for contributions.
|
||||
|
||||
# v0.44 2017-09-30 Wekan release
|
||||
|
||||
This release adds the following new features:
|
||||
@@ -378,12 +737,12 @@ and fixes the following bugs:
|
||||
exists valid admin panel data MAIL_URL is not set.
|
||||
MAIL_FROM was ignored. Same behaviour, env variable has bigger priority
|
||||
than database configuration.
|
||||
On both cases, althrought environment variable is set, updating admin-panel
|
||||
On both cases, althought environment variable is set, updating admin-panel
|
||||
mail settings will load new info and ignore the environment variable;
|
||||
* Dockerfile fix for local packages;
|
||||
* Don't send emails if missing smtp host;
|
||||
* Remove invitation code if email sending failed;
|
||||
* Show customized error msg while invitaion code is wrong during registration;
|
||||
* Show customized error msg while invitation code is wrong during registration;
|
||||
* Fix "internal error" while registration is done;
|
||||
* Fix "cannot access disableRegistration of undefined" error;
|
||||
* Add high available server for getting the gpg keys - suppose it should lead
|
||||
@@ -488,7 +847,7 @@ and adds the following new features:
|
||||
```
|
||||
1) Disable Self-Registration and invite users
|
||||
2) SMTP settings.
|
||||
|
||||
|
||||
Adding Admin user in mongo cli:
|
||||
1) Use database that has wekan data, for example:
|
||||
use admin;
|
||||
@@ -669,7 +1028,7 @@ performance and security. It also features the following improvements:
|
||||
password, to change the password, or to enable email confirmation (all of
|
||||
which were previously impossible);
|
||||
* Avatar customization, including the possibility to upload images and to choose
|
||||
one from Gravatar or the user initials (on Sandstrom we use the avatar exposed
|
||||
one from Gravatar or the user initials (on Sandstorm we use the avatar exposed
|
||||
by Sandstorm);
|
||||
* Cards multi-selection to facilitate batch actions such as moving all the cards
|
||||
of selection, or attaching a label or a member to them;
|
||||
|
||||
+20
-24
@@ -1,4 +1,4 @@
|
||||
FROM debian:8.9
|
||||
FROM debian:buster-slim
|
||||
MAINTAINER wekan
|
||||
|
||||
# Declare Arguments
|
||||
@@ -12,14 +12,14 @@ ARG ARCHITECTURE
|
||||
ARG SRC_PATH
|
||||
|
||||
# Set the environment variables (defaults where required)
|
||||
ENV BUILD_DEPS="wget curl bzip2 build-essential python git ca-certificates gcc-4.9"
|
||||
ENV GOSU_VERSION=1.10
|
||||
ENV NODE_VERSION ${NODE_VERSION:-v4.8.4}
|
||||
ENV METEOR_RELEASE ${METEOR_RELEASE:-1.4.4.1}
|
||||
# paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
|
||||
ENV BUILD_DEPS="apt-utils gnupg gosu wget curl bzip2 build-essential python git ca-certificates gcc-7 paxctl"
|
||||
ENV NODE_VERSION ${NODE_VERSION:-v8.9.3}
|
||||
ENV METEOR_RELEASE ${METEOR_RELEASE:-1.6.0.1}
|
||||
ENV USE_EDGE ${USE_EDGE:-false}
|
||||
ENV METEOR_EDGE ${METEOR_EDGE:-1.5-beta.17}
|
||||
ENV NPM_VERSION ${NPM_VERSION:-4.6.1}
|
||||
ENV FIBERS_VERSION ${FIBERS_VERSION:-1.0.15}
|
||||
ENV NPM_VERSION ${NPM_VERSION:-5.5.1}
|
||||
ENV FIBERS_VERSION ${FIBERS_VERSION:-2.0.0}
|
||||
ENV ARCHITECTURE ${ARCHITECTURE:-linux-x64}
|
||||
ENV SRC_PATH ${SRC_PATH:-./}
|
||||
|
||||
@@ -31,17 +31,7 @@ RUN \
|
||||
useradd --user-group --system --home-dir /home/wekan wekan && \
|
||||
\
|
||||
# OS dependencies
|
||||
apt-get update -y && apt-get dist-upgrade -y && apt-get install -y --no-install-recommends ${BUILD_DEPS} && \
|
||||
\
|
||||
# Gosu installation
|
||||
GOSU_ARCHITECTURE="$(dpkg --print-architecture | awk -F- '{ print $NF }')" && \
|
||||
wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${GOSU_ARCHITECTURE}" && \
|
||||
wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/${GOSU_VERSION}/gosu-${GOSU_ARCHITECTURE}.asc" && \
|
||||
export GNUPGHOME="$(mktemp -d)" && \
|
||||
gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 && \
|
||||
gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu && \
|
||||
rm -R "$GNUPGHOME" /usr/local/bin/gosu.asc && \
|
||||
chmod +x /usr/local/bin/gosu && \
|
||||
apt-get update -y && apt-get install -y --no-install-recommends ${BUILD_DEPS} && \
|
||||
\
|
||||
# Download nodejs
|
||||
wget https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
|
||||
@@ -50,7 +40,7 @@ RUN \
|
||||
# Verify nodejs authenticity
|
||||
grep ${NODE_VERSION}-${ARCHITECTURE}.tar.gz SHASUMS256.txt.asc | shasum -a 256 -c - && \
|
||||
export GNUPGHOME="$(mktemp -d)" && \
|
||||
|
||||
\
|
||||
# Try other key servers if ha.pool.sks-keyservers.net is unreachable
|
||||
# Code from https://github.com/chorrell/docker-node/commit/2b673e17547c34f17f24553db02beefbac98d23c
|
||||
# gpg keys listed at https://github.com/nodejs/node#release-team
|
||||
@@ -69,7 +59,10 @@ RUN \
|
||||
gpg --keyserver keyserver.pgp.com --recv-keys "$key" ; \
|
||||
done && \
|
||||
gpg --verify SHASUMS256.txt.asc && \
|
||||
rm -R "$GNUPGHOME" SHASUMS256.txt.asc && \
|
||||
# Ignore socket files then delete files then delete directories
|
||||
find "$GNUPGHOME" -type f | xargs rm -f && \
|
||||
find "$GNUPGHOME" -type d | xargs rm -fR && \
|
||||
rm -f SHASUMS256.txt.asc && \
|
||||
\
|
||||
# Install Node
|
||||
tar xvzf node-${NODE_VERSION}-${ARCHITECTURE}.tar.gz && \
|
||||
@@ -78,6 +71,9 @@ RUN \
|
||||
ln -s /opt/nodejs/bin/node /usr/bin/node && \
|
||||
ln -s /opt/nodejs/bin/npm /usr/bin/npm && \
|
||||
\
|
||||
# paxctl fix for alpine linux: https://github.com/wekan/wekan/issues/1303
|
||||
paxctl -mC `which node` && \
|
||||
\
|
||||
# Install Node dependencies
|
||||
npm install -g npm@${NPM_VERSION} && \
|
||||
npm install -g node-gyp && \
|
||||
@@ -86,14 +82,14 @@ RUN \
|
||||
# Change user to wekan and install meteor
|
||||
cd /home/wekan/ && \
|
||||
chown wekan:wekan --recursive /home/wekan && \
|
||||
curl https://install.meteor.com -o ./install_meteor.sh && \
|
||||
curl https://install.meteor.com -o /home/wekan/install_meteor.sh && \
|
||||
sed -i "s|RELEASE=.*|RELEASE=${METEOR_RELEASE}\"\"|g" ./install_meteor.sh && \
|
||||
echo "Starting meteor ${METEOR_RELEASE} installation... \n" && \
|
||||
chown wekan:wekan ./install_meteor.sh && \
|
||||
chown wekan:wekan /home/wekan/install_meteor.sh && \
|
||||
\
|
||||
# Check if opting for a release candidate instead of major release
|
||||
if [ "$USE_EDGE" = false ]; then \
|
||||
gosu wekan:wekan sh ./install_meteor.sh; \
|
||||
gosu wekan:wekan sh /home/wekan/install_meteor.sh; \
|
||||
else \
|
||||
gosu wekan:wekan git clone --recursive --depth 1 -b release/METEOR@${METEOR_EDGE} git://github.com/meteor/meteor.git /home/wekan/.meteor; \
|
||||
fi; \
|
||||
@@ -115,12 +111,12 @@ RUN \
|
||||
gosu wekan:wekan /home/wekan/.meteor/meteor build --directory /home/wekan/app_build && \
|
||||
cp /home/wekan/app/fix-download-unicode/cfs_access-point.txt /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \
|
||||
chown wekan:wekan /home/wekan/app_build/bundle/programs/server/packages/cfs_access-point.js && \
|
||||
gosu wekan:wekan sed -i "s|build\/Release\/bson|browser_build\/bson|g" /home/wekan/app_build/bundle/programs/server/npm/node_modules/meteor/cfs_gridfs/node_modules/mongodb/node_modules/bson/ext/index.js && \
|
||||
cd /home/wekan/app_build/bundle/programs/server/npm/node_modules/meteor/npm-bcrypt && \
|
||||
gosu wekan:wekan rm -rf node_modules/bcrypt && \
|
||||
gosu wekan:wekan npm install bcrypt && \
|
||||
cd /home/wekan/app_build/bundle/programs/server/ && \
|
||||
gosu wekan:wekan npm install && \
|
||||
gosu wekan:wekan npm install bcrypt && \
|
||||
mv /home/wekan/app_build/bundle /build && \
|
||||
\
|
||||
# Cleanup
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014-2017 The Wekan Team
|
||||
Copyright (c) 2014-2018 The Wekan Team
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
||||
@@ -1,6 +1,10 @@
|
||||
# Wekan
|
||||
|
||||
[](https://quay.io/repository/wekan/wekan)
|
||||
|
||||
<!--
|
||||
[![Wekan Build Status][travis_badge]][travis_status]
|
||||
-->
|
||||
|
||||
Freenode IRC #wekan
|
||||
|
||||
@@ -80,7 +84,7 @@ with [Meteor](https://www.meteor.com).
|
||||
[platforms]: https://github.com/wekan/wekan/wiki/Platforms
|
||||
[dev_docs]: https://github.com/wekan/wekan/wiki/Developer-Documentation
|
||||
[screenshot_wekan]: http://i.imgur.com/cI4jW2h.png
|
||||
[screenshot_wefork]: https://wekan.github.io/screenshot.png
|
||||
[screenshot_wefork]: https://wekan.github.io/wekan-markdown.png
|
||||
[features]: https://github.com/wekan/wekan/wiki/Features
|
||||
[integrations]: https://github.com/wekan/wekan/wiki/Integrations
|
||||
[roadmap_wekan]: http://try.wekan.io/b/MeSsFJaSqeuo9M6bs/wekan-roadmap
|
||||
|
||||
@@ -31,7 +31,7 @@ template(name="boardActivities")
|
||||
.activity-checklist(href="{{ card.absoluteUrl }}")
|
||||
+viewer
|
||||
= checklist.title
|
||||
|
||||
|
||||
if($eq activityType 'addChecklistItem')
|
||||
| {{{_ 'activity-checklist-item-added' checklist.title cardLink}}}.
|
||||
.activity-checklist(href="{{ card.absoluteUrl }}")
|
||||
@@ -44,6 +44,9 @@ template(name="boardActivities")
|
||||
if($eq activityType 'archivedList')
|
||||
| {{_ 'activity-archived' list.title}}.
|
||||
|
||||
if($eq activityType 'archivedSwimlane')
|
||||
| {{_ 'activity-archived' swimlane.title}}.
|
||||
|
||||
if($eq activityType 'createBoard')
|
||||
| {{_ 'activity-created' boardLabel}}.
|
||||
|
||||
@@ -53,6 +56,9 @@ template(name="boardActivities")
|
||||
if($eq activityType 'createList')
|
||||
| {{_ 'activity-added' list.title boardLabel}}.
|
||||
|
||||
if($eq activityType 'createSwimlane')
|
||||
| {{_ 'activity-added' swimlane.title boardLabel}}.
|
||||
|
||||
if($eq activityType 'removeList')
|
||||
| {{_ 'activity-removed' title boardLabel}}.
|
||||
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
@import 'nib'
|
||||
|
||||
.activity-title
|
||||
margin: 0 0.5em 0.8em
|
||||
display: flex
|
||||
justify-content:space-between
|
||||
|
||||
.activities
|
||||
clear: both
|
||||
|
||||
@@ -12,10 +17,14 @@
|
||||
height: @width
|
||||
|
||||
.activity-desc
|
||||
word-wrap: break-word
|
||||
overflow: hidden
|
||||
flex: 1
|
||||
align-self: center
|
||||
margin: 0
|
||||
margin-left: 3px
|
||||
overflow: hidden;
|
||||
word-break: break-word;
|
||||
|
||||
.activity-comment
|
||||
display: block
|
||||
|
||||
@@ -11,4 +11,4 @@ template(name="archivedBoards")
|
||||
| {{_ 'restore-board'}}
|
||||
= title
|
||||
else
|
||||
li.no-items-message {{_ 'no-archived-board'}}
|
||||
li.no-items-message {{_ 'no-archived-boards'}}
|
||||
@@ -20,24 +20,8 @@ template(name="boardBody")
|
||||
class="{{#if draggingActive.get}}is-dragging-active{{/if}}")
|
||||
if showOverlay.get
|
||||
.board-overlay
|
||||
.lists.js-lists
|
||||
each currentBoard.lists
|
||||
+list(this)
|
||||
if currentCardIsInThisList
|
||||
+cardDetails(currentCard)
|
||||
if canSeeAddList
|
||||
+addListForm
|
||||
|
||||
template(name="addListForm")
|
||||
.list.js-list.list-composer.js-list-composer
|
||||
.list-header
|
||||
+inlinedForm(autoclose=false)
|
||||
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
|
||||
autocomplete="off" autofocus)
|
||||
.edit-controls.clearfix
|
||||
button.primary.confirm(type="submit") {{_ 'save'}}
|
||||
a.fa.fa-times-thin.js-close-inlined-form
|
||||
else
|
||||
a.open-list-composer.js-open-inlined-form
|
||||
i.fa.fa-plus
|
||||
| {{_ 'add-list'}}
|
||||
if isViewSwimlanes
|
||||
each currentBoard.swimlanes
|
||||
+swimlane(this)
|
||||
if isViewLists
|
||||
+listsGroup
|
||||
@@ -29,10 +29,6 @@ BlazeComponent.extendComponent({
|
||||
this.mouseHasEnterCardDetails = false;
|
||||
},
|
||||
|
||||
openNewListForm() {
|
||||
this.childComponents('addListForm')[0].open();
|
||||
},
|
||||
|
||||
// XXX Flow components allow us to avoid creating these two setter methods by
|
||||
// exposing a public API to modify the component state. We need to investigate
|
||||
// best practices here.
|
||||
@@ -47,16 +43,22 @@ BlazeComponent.extendComponent({
|
||||
});
|
||||
},
|
||||
|
||||
currentCardIsInThisList() {
|
||||
const currentCard = Cards.findOne(Session.get('currentCard'));
|
||||
const listId = this.currentData()._id;
|
||||
return currentCard && currentCard.listId === listId;
|
||||
},
|
||||
|
||||
onlyShowCurrentCard() {
|
||||
return Utils.isMiniScreen() && Session.get('currentCard');
|
||||
},
|
||||
|
||||
isViewSwimlanes() {
|
||||
const currentBoardId = Session.get('currentBoard');
|
||||
const board = Boards.findOne(currentBoardId);
|
||||
return (board.view === 'board-view-swimlanes');
|
||||
},
|
||||
|
||||
isViewLists() {
|
||||
const currentBoardId = Session.get('currentBoard');
|
||||
const board = Boards.findOne(currentBoardId);
|
||||
return (board.view === 'board-view-lists');
|
||||
},
|
||||
|
||||
events() {
|
||||
return [{
|
||||
// XXX The board-overlay div should probably be moved to the parent
|
||||
@@ -66,147 +68,11 @@ BlazeComponent.extendComponent({
|
||||
this.showOverlay.set(false);
|
||||
}
|
||||
},
|
||||
|
||||
// Click-and-drag action
|
||||
'mousedown .board-canvas'(evt) {
|
||||
// Translating the board canvas using the click-and-drag action can
|
||||
// conflict with the build-in browser mechanism to select text. We
|
||||
// define a list of elements in which we disable the dragging because
|
||||
// the user will legitimately expect to be able to select some text with
|
||||
// his mouse.
|
||||
const noDragInside = ['a', 'input', 'textarea', 'p', '.js-list-header'];
|
||||
if ($(evt.target).closest(noDragInside.join(',')).length === 0 && $('.lists').prop('clientHeight') > evt.offsetY) {
|
||||
this._isDragging = true;
|
||||
this._lastDragPositionX = evt.clientX;
|
||||
}
|
||||
},
|
||||
'mouseup'() {
|
||||
if (this._isDragging) {
|
||||
this._isDragging = false;
|
||||
}
|
||||
},
|
||||
'mousemove'(evt) {
|
||||
if (this._isDragging) {
|
||||
// Update the canvas position
|
||||
this.listsDom.scrollLeft -= evt.clientX - this._lastDragPositionX;
|
||||
this._lastDragPositionX = evt.clientX;
|
||||
// Disable browser text selection while dragging
|
||||
evt.stopPropagation();
|
||||
evt.preventDefault();
|
||||
// Don't close opened card or inlined form at the end of the
|
||||
// click-and-drag.
|
||||
EscapeActions.executeUpTo('popup-close');
|
||||
EscapeActions.preventNextClick();
|
||||
}
|
||||
},
|
||||
}];
|
||||
},
|
||||
}).register('board');
|
||||
|
||||
Template.boardBody.onRendered(function() {
|
||||
const self = BlazeComponent.getComponentForElement(this.firstNode);
|
||||
|
||||
self.listsDom = this.find('.js-lists');
|
||||
|
||||
if (!Session.get('currentCard')) {
|
||||
self.scrollLeft();
|
||||
}
|
||||
|
||||
// We want to animate the card details window closing. We rely on CSS
|
||||
// transition for the actual animation.
|
||||
self.listsDom._uihooks = {
|
||||
removeElement(node) {
|
||||
const removeNode = _.once(() => {
|
||||
node.parentNode.removeChild(node);
|
||||
});
|
||||
if ($(node).hasClass('js-card-details')) {
|
||||
$(node).css({
|
||||
flexBasis: 0,
|
||||
padding: 0,
|
||||
});
|
||||
$(self.listsDom).one(CSSEvents.transitionend, removeNode);
|
||||
} else {
|
||||
removeNode();
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
$(self.listsDom).sortable({
|
||||
tolerance: 'pointer',
|
||||
helper: 'clone',
|
||||
handle: '.js-list-header',
|
||||
items: '.js-list:not(.js-list-composer)',
|
||||
placeholder: 'list placeholder',
|
||||
distance: 7,
|
||||
start(evt, ui) {
|
||||
ui.placeholder.height(ui.helper.height());
|
||||
Popup.close();
|
||||
},
|
||||
stop() {
|
||||
$(self.listsDom).find('.js-list:not(.js-list-composer)').each(
|
||||
(i, list) => {
|
||||
const data = Blaze.getData(list);
|
||||
Lists.update(data._id, {
|
||||
$set: {
|
||||
sort: i,
|
||||
},
|
||||
});
|
||||
}
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
function userIsMember() {
|
||||
return Meteor.user() && Meteor.user().isBoardMember();
|
||||
}
|
||||
|
||||
// Disable drag-dropping while in multi-selection mode, or if the current user
|
||||
// is not a board member
|
||||
self.autorun(() => {
|
||||
const $listDom = $(self.listsDom);
|
||||
if ($listDom.data('sortable')) {
|
||||
$(self.listsDom).sortable('option', 'disabled',
|
||||
MultiSelection.isActive() || !userIsMember());
|
||||
}
|
||||
});
|
||||
|
||||
// If there is no data in the board (ie, no lists) we autofocus the list
|
||||
// creation form by clicking on the corresponding element.
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
if (userIsMember() && currentBoard.lists().count() === 0) {
|
||||
self.openNewListForm();
|
||||
}
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
// Proxy
|
||||
open() {
|
||||
this.childComponents('inlinedForm')[0].open();
|
||||
},
|
||||
|
||||
events() {
|
||||
return [{
|
||||
submit(evt) {
|
||||
evt.preventDefault();
|
||||
const titleInput = this.find('.list-name-input');
|
||||
const title = titleInput.value.trim();
|
||||
if (title) {
|
||||
Lists.insert({
|
||||
title,
|
||||
boardId: Session.get('currentBoard'),
|
||||
sort: $('.list').length,
|
||||
});
|
||||
|
||||
titleInput.value = '';
|
||||
titleInput.focus();
|
||||
}
|
||||
},
|
||||
}];
|
||||
},
|
||||
}).register('addListForm');
|
||||
|
||||
Template.boardBody.helpers({
|
||||
canSeeAddList() {
|
||||
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
|
||||
},
|
||||
});
|
||||
@@ -20,15 +20,14 @@ position()
|
||||
&.is-sibling-sidebar-open
|
||||
margin-right: 248px
|
||||
|
||||
.lists
|
||||
align-items: flex-start
|
||||
.swimlane
|
||||
border-bottom: 1px solid #CCC
|
||||
display: flex
|
||||
flex-direction: row
|
||||
margin: 0 0 10px
|
||||
padding: 0 40px 5px 0
|
||||
overflow-x: auto
|
||||
overflow-y: hidden
|
||||
position: cover
|
||||
|
||||
.board-overlay
|
||||
position: cover
|
||||
@@ -43,3 +42,17 @@ position()
|
||||
.open-minicard-composer,
|
||||
.minicard-wrapper.is-checked
|
||||
display: none
|
||||
|
||||
@media screen and (max-width: 800px)
|
||||
.board-wrapper
|
||||
|
||||
.board-canvas
|
||||
|
||||
.swimlane
|
||||
border-bottom: 1px solid #CCC
|
||||
display: flex
|
||||
flex-direction: column
|
||||
margin: 0
|
||||
padding: 0 40px 0px 0
|
||||
overflow-x: hidden
|
||||
overflow-y: auto
|
||||
@@ -51,11 +51,25 @@ setBoardColor(color)
|
||||
&:not(.is-checked) + .minicard:hover:not(.minicard-composer)
|
||||
background: lighten(color, 97%)
|
||||
|
||||
.toggle-label
|
||||
|
||||
&:after
|
||||
background-color: darken(color, 20%)
|
||||
|
||||
.toggle-switch:checked ~ .toggle-label
|
||||
background-color: lighten(color, 20%)
|
||||
|
||||
&:after
|
||||
background-color: darken(color, 20%)
|
||||
|
||||
@media screen and (max-width: 800px)
|
||||
&.pop-over .header
|
||||
background: color
|
||||
color: white
|
||||
|
||||
&#header ul li.current, &#header-quick-access ul li.current
|
||||
border-bottom: 4px solid lighten(color, 20%)
|
||||
|
||||
.board-color-nephritis
|
||||
setBoardColor(#27AE60)
|
||||
|
||||
|
||||
@@ -87,6 +87,11 @@ template(name="boardHeaderBar")
|
||||
a.board-header-btn-close.js-filter-reset(title="{{_ 'filter-clear'}}")
|
||||
i.fa.fa-times-thin
|
||||
|
||||
a.board-header-btn.js-toggle-board-view(
|
||||
title="{{_ 'board-view'}}")
|
||||
i.fa.fa-th-large
|
||||
span {{_ currentBoard.view}}
|
||||
|
||||
if canModifyBoard
|
||||
a.board-header-btn.js-multiselection-activate(
|
||||
title="{{#if MultiSelection.isActive}}{{_ 'multi-selection-on'}}{{else}}{{_ 'multi-selection'}}{{/if}}"
|
||||
|
||||
@@ -58,10 +58,6 @@ BlazeComponent.extendComponent({
|
||||
return user && user.hasStarred(boardId);
|
||||
},
|
||||
|
||||
isMiniScreen() {
|
||||
return Utils.isMiniScreen();
|
||||
},
|
||||
|
||||
// Only show the star counter if the number of star is greater than 2
|
||||
showStarCounter() {
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
@@ -80,6 +76,22 @@ BlazeComponent.extendComponent({
|
||||
'click .js-open-archived-board'() {
|
||||
Modal.open('archivedBoards');
|
||||
},
|
||||
'click .js-toggle-board-view'() {
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
if (currentBoard.view === 'board-view-swimlanes') {
|
||||
Boards.update(currentBoard._id, {
|
||||
$set: {
|
||||
view: 'board-view-lists',
|
||||
},
|
||||
});
|
||||
} else if (currentBoard.view === 'board-view-lists') {
|
||||
Boards.update(currentBoard._id, {
|
||||
$set: {
|
||||
view: 'board-view-swimlanes',
|
||||
},
|
||||
});
|
||||
}
|
||||
},
|
||||
'click .js-open-filter-view'() {
|
||||
Sidebar.setView('filter');
|
||||
},
|
||||
@@ -168,6 +180,11 @@ const CreateBoard = BlazeComponent.extendComponent({
|
||||
permission: visibility,
|
||||
}));
|
||||
|
||||
Swimlanes.insert({
|
||||
title: 'Default',
|
||||
boardId: this.boardId.get(),
|
||||
});
|
||||
|
||||
Utils.goBoardId(this.boardId.get());
|
||||
},
|
||||
|
||||
|
||||
@@ -20,6 +20,12 @@ template(name="boardList")
|
||||
i.fa.js-star-board(
|
||||
class="fa-star{{#if isStarred}} is-star-active{{else}}-o{{/if}}"
|
||||
title="{{_ 'star-board-title'}}")
|
||||
|
||||
if hasSpentTimeCards
|
||||
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}}")
|
||||
|
||||
p.board-list-item-desc= description
|
||||
li.js-add-board
|
||||
a.board-list-item.label {{_ 'add-board'}}
|
||||
|
||||
@@ -1,4 +1,10 @@
|
||||
const subManager = new SubsManager();
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
Meteor.subscribe('setting');
|
||||
},
|
||||
|
||||
boards() {
|
||||
return Boards.find({
|
||||
archived: false,
|
||||
@@ -13,6 +19,16 @@ BlazeComponent.extendComponent({
|
||||
return user && user.hasStarred(this.currentData()._id);
|
||||
},
|
||||
|
||||
hasOvertimeCards() {
|
||||
subManager.subscribe('board', this.currentData()._id);
|
||||
return this.currentData().hasOvertimeCards();
|
||||
},
|
||||
|
||||
hasSpentTimeCards() {
|
||||
subManager.subscribe('board', this.currentData()._id);
|
||||
return this.currentData().hasSpentTimeCards();
|
||||
},
|
||||
|
||||
isInvited() {
|
||||
const user = Meteor.user();
|
||||
return user && user.isInvitedTo(this.currentData()._id);
|
||||
|
||||
@@ -17,6 +17,7 @@ $spaceBetweenTiles = 16px
|
||||
opacity: 1
|
||||
|
||||
.board-list-item
|
||||
overflow: hidden;
|
||||
background-color: #999
|
||||
color: #f6f6f6
|
||||
height: 90px
|
||||
@@ -73,6 +74,23 @@ $spaceBetweenTiles = 16px
|
||||
transition-duration: .15s
|
||||
transition-property: color, font-size, background
|
||||
|
||||
.fa-circle
|
||||
bottom: 0;
|
||||
font-size: 10px;
|
||||
height: 10px;
|
||||
line-height: 10px;
|
||||
padding: 9px 9px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
transition-duration: .15s
|
||||
transition-property: color, font-size, background
|
||||
|
||||
.has-overtime-card-active
|
||||
color: #eb4646 !important
|
||||
|
||||
.no-overtime-card-active
|
||||
color: #3cb500 !important
|
||||
|
||||
.is-star-active
|
||||
color: white
|
||||
|
||||
|
||||
@@ -21,11 +21,11 @@ template(name="attachmentDeletePopup")
|
||||
template(name="attachmentsGalery")
|
||||
.attachments-galery
|
||||
each attachments
|
||||
a.attachment-item.js-open-viewer(title="{{_ 'added'}} {{ moment uploadedAt }}")
|
||||
.attachment-thumbnail
|
||||
.attachment-item
|
||||
a.attachment-thumbnail.swipebox(href="{{url}}" title="{{name}}")
|
||||
if isUploaded
|
||||
if isImage
|
||||
img.attachment-thumbnail-img.js-preview-image(src="{{url}}")
|
||||
img.attachment-thumbnail-img(src="{{url}}")
|
||||
else
|
||||
span.attachment-thumbnail-ext= extension
|
||||
else
|
||||
|
||||
@@ -11,9 +11,6 @@ Template.attachmentsGalery.events({
|
||||
'click .js-download'(event) {
|
||||
event.stopPropagation();
|
||||
},
|
||||
'click .js-open-viewer'() {
|
||||
// XXX Not implemented!
|
||||
},
|
||||
'click .js-add-cover'() {
|
||||
Cards.findOne(this.cardId).setCover(this._id);
|
||||
},
|
||||
@@ -63,7 +60,13 @@ Template.cardAttachmentsPopup.events({
|
||||
file.boardId = card.boardId;
|
||||
file.cardId = card._id;
|
||||
file.userId = Meteor.userId();
|
||||
Attachments.insert(file);
|
||||
|
||||
const attachment = Attachments.insert(file);
|
||||
|
||||
if (attachment && attachment._id && attachment.isImage()) {
|
||||
card.setCover(attachment._id);
|
||||
}
|
||||
|
||||
Popup.close();
|
||||
});
|
||||
},
|
||||
@@ -110,7 +113,12 @@ Template.previewClipboardImagePopup.events({
|
||||
file.boardId = card.boardId;
|
||||
file.cardId = card._id;
|
||||
file.userId = Meteor.userId();
|
||||
Attachments.insert(file);
|
||||
const attachment = Attachments.insert(file);
|
||||
|
||||
if (attachment && attachment._id && attachment.isImage()) {
|
||||
card.setCover(attachment._id);
|
||||
}
|
||||
|
||||
pastedResults = null;
|
||||
$(document.body).pasteImageReader(() => {});
|
||||
Popup.close();
|
||||
|
||||
@@ -58,7 +58,28 @@
|
||||
|
||||
.preview-clipboard-image
|
||||
width: 280px
|
||||
max-width: 100%;
|
||||
height: 200px
|
||||
display: block
|
||||
border: 1px solid black
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,.2)
|
||||
|
||||
@media screen and (max-width: 800px)
|
||||
.attachments-galery
|
||||
flex-direction
|
||||
row
|
||||
.attachment-item
|
||||
width: 50% - 2%
|
||||
|
||||
.attachment-thumbnail
|
||||
height: 130px
|
||||
.attachment-details
|
||||
font-size: 1.1em
|
||||
|
||||
@media screen and (max-width: 360px)
|
||||
.attachments-galery
|
||||
.attachment-item
|
||||
width: 100%
|
||||
|
||||
.attachment-thumbnail
|
||||
height: 200px
|
||||
@@ -171,11 +171,12 @@ class CardStartDate extends CardDate {
|
||||
}
|
||||
|
||||
classes() {
|
||||
let classes = 'start-date' + ' ';
|
||||
if (this.date.get().isBefore(this.now.get(), 'minute') &&
|
||||
this.now.get().isBefore(this.data().dueAt)) {
|
||||
return 'current';
|
||||
classes += 'current';
|
||||
}
|
||||
return '';
|
||||
return classes;
|
||||
}
|
||||
|
||||
showTitle() {
|
||||
@@ -200,13 +201,14 @@ class CardDueDate extends CardDate {
|
||||
}
|
||||
|
||||
classes() {
|
||||
let classes = 'due-date' + ' ';
|
||||
if (this.now.get().diff(this.date.get(), 'days') >= 2)
|
||||
return 'long-overdue';
|
||||
classes += 'long-overdue';
|
||||
else if (this.now.get().diff(this.date.get(), 'minute') >= 0)
|
||||
return 'due';
|
||||
classes += 'due';
|
||||
else if (this.now.get().diff(this.date.get(), 'days') >= -1)
|
||||
return 'almost-due';
|
||||
return '';
|
||||
classes += 'almost-due';
|
||||
return classes;
|
||||
}
|
||||
|
||||
showTitle() {
|
||||
|
||||
@@ -49,10 +49,20 @@
|
||||
&:hover, &.is-active
|
||||
background-color: darken(#fd5d47, 7)
|
||||
|
||||
&.due-date
|
||||
time
|
||||
&::before
|
||||
content: "\f090" // symbol: fa-sign-in
|
||||
|
||||
&.start-date
|
||||
time
|
||||
&::before
|
||||
content: "\f08b" // symbol: fa-sign-out
|
||||
|
||||
time
|
||||
&::before
|
||||
font: normal normal normal 14px/1 FontAwesome
|
||||
font-size: inherit
|
||||
-webkit-font-smoothing: antialiased
|
||||
content: "\f017" // clock symbol
|
||||
margin-right: 0.3em
|
||||
margin-right: 0.3em
|
||||
|
||||
@@ -9,9 +9,10 @@ template(name="cardDetails")
|
||||
a.fa.fa-navicon.card-details-menu.js-open-card-details-menu
|
||||
h2.card-details-title.js-card-title(
|
||||
class="{{#if canModifyCard}}js-open-inlined-form is-editable{{/if}}")
|
||||
= title
|
||||
if isWatching
|
||||
i.fa.fa-eye.card-details-watch
|
||||
+viewer
|
||||
= title
|
||||
if isWatching
|
||||
i.fa.fa-eye.card-details-watch
|
||||
|
||||
if archived
|
||||
p.warning {{_ 'card-archived'}}
|
||||
@@ -45,6 +46,14 @@ template(name="cardDetails")
|
||||
h3.card-details-item-title {{_ 'card-due'}}
|
||||
+cardDueDate
|
||||
|
||||
.card-details-items
|
||||
if spentTime
|
||||
.card-details-item.card-details-item-spent
|
||||
if isOvertime
|
||||
h3.card-details-item-title {{_ 'overtime-hours'}}
|
||||
else
|
||||
h3.card-details-item-title {{_ 'spent-time-hours'}}
|
||||
+cardSpentTime
|
||||
|
||||
//- XXX We should use "editable" to avoid repetiting ourselves
|
||||
if canModifyCard
|
||||
@@ -76,16 +85,24 @@ template(name="cardDetails")
|
||||
hr
|
||||
+checklists(cardId = _id)
|
||||
|
||||
if attachments.count
|
||||
hr
|
||||
h2
|
||||
i.fa.fa-paperclip
|
||||
| {{_ 'attachments'}}
|
||||
hr
|
||||
h2
|
||||
i.fa.fa-paperclip
|
||||
| {{_ 'attachments'}}
|
||||
|
||||
+attachmentsGalery
|
||||
+attachmentsGalery
|
||||
|
||||
hr
|
||||
h2 {{ _ 'activity'}}
|
||||
.activity-title
|
||||
h2 {{ _ 'activity'}}
|
||||
if currentUser.isBoardMember
|
||||
.material-toggle-switch
|
||||
span.toggle-switch-title {{_ 'hide-system-messages'}}
|
||||
if hiddenSystemMessages
|
||||
input.toggle-switch(type="checkbox" id="toggleButton" checked="checked")
|
||||
else
|
||||
input.toggle-switch(type="checkbox" id="toggleButton")
|
||||
label.toggle-label(for="toggleButton")
|
||||
if currentUser.isBoardMember
|
||||
+commentForm
|
||||
if isLoaded.get
|
||||
@@ -109,6 +126,7 @@ template(name="cardDetailsActionsPopup")
|
||||
li: a.js-attachments {{_ 'card-edit-attachments'}}
|
||||
li: a.js-start-date {{_ 'editCardStartDatePopup-title'}}
|
||||
li: a.js-due-date {{_ 'editCardDueDatePopup-title'}}
|
||||
li: a.js-spent-time {{_ 'editCardSpentTimePopup-title'}}
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li: a.js-move-card-to-top {{_ 'moveCardToTop-title'}}
|
||||
@@ -117,19 +135,52 @@ template(name="cardDetailsActionsPopup")
|
||||
ul.pop-over-list
|
||||
li: a.js-move-card {{_ 'moveCardPopup-title'}}
|
||||
li: a.js-copy-card {{_ 'copyCardPopup-title'}}
|
||||
li: a.js-copy-checklist-cards {{_ 'copyChecklistToManyCardsPopup-title'}}
|
||||
unless archived
|
||||
li: a.js-archive {{_ 'archive-card'}}
|
||||
li: a.js-more {{_ 'cardMorePopup-title'}}
|
||||
|
||||
template(name="moveCardPopup")
|
||||
+boardLists
|
||||
if isSandstorm
|
||||
+boardLists
|
||||
else
|
||||
+boardsAndLists
|
||||
|
||||
template(name="copyCardPopup")
|
||||
label(for='copy-card-title') {{_ 'title'}}:
|
||||
textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)
|
||||
= title
|
||||
if isSandstorm
|
||||
+boardLists
|
||||
else
|
||||
+boardsAndLists
|
||||
|
||||
|
||||
template(name="copyChecklistToManyCardsPopup")
|
||||
label(for='copy-checklist-cards-title') {{_ 'copyChecklistToManyCardsPopup-instructions'}}:
|
||||
textarea#copy-card-title.minicard-composer-textarea.js-card-title(autofocus)
|
||||
| {{_ 'copyChecklistToManyCardsPopup-format'}}
|
||||
if isSandstorm
|
||||
+boardLists
|
||||
else
|
||||
+boardsAndLists
|
||||
|
||||
template(name="boardsAndLists")
|
||||
select.js-select-boards
|
||||
each boards
|
||||
if $eq _id currentBoard._id
|
||||
option(value="{{_id}}" selected) {{_ 'current'}}
|
||||
else
|
||||
option(value="{{_id}}") {{title}}
|
||||
|
||||
label {{_ 'lists'}}:
|
||||
+boardLists
|
||||
ul.pop-over-list
|
||||
each aBoardLists
|
||||
li
|
||||
if $eq ../_id _id
|
||||
a.disabled {{title}} ({{_ 'current'}})
|
||||
else
|
||||
a.js-select-list= title
|
||||
|
||||
template(name="cardMembersPopup")
|
||||
ul.pop-over-list.js-card-member-list
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
const subManager = new SubsManager();
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
mixins() {
|
||||
return [Mixins.InfiniteScrolling, Mixins.PerfectScrollbar];
|
||||
@@ -18,9 +20,11 @@ BlazeComponent.extendComponent({
|
||||
|
||||
onCreated() {
|
||||
this.isLoaded = new ReactiveVar(false);
|
||||
this.parentComponent().showOverlay.set(true);
|
||||
this.parentComponent().mouseHasEnterCardDetails = false;
|
||||
this.parentComponent().parentComponent().showOverlay.set(true);
|
||||
this.parentComponent().parentComponent().mouseHasEnterCardDetails = false;
|
||||
this.calculateNextPeak();
|
||||
|
||||
Meteor.subscribe('unsaved-edits');
|
||||
},
|
||||
|
||||
isWatching() {
|
||||
@@ -28,13 +32,17 @@ BlazeComponent.extendComponent({
|
||||
return card.findWatcher(Meteor.userId());
|
||||
},
|
||||
|
||||
hiddenSystemMessages() {
|
||||
return Meteor.user().hasHiddenSystemMessages();
|
||||
},
|
||||
|
||||
canModifyCard() {
|
||||
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
|
||||
},
|
||||
|
||||
scrollParentContainer() {
|
||||
const cardPanelWidth = 510;
|
||||
const bodyBoardComponent = this.parentComponent();
|
||||
const bodyBoardComponent = this.parentComponent().parentComponent();
|
||||
|
||||
const $cardContainer = bodyBoardComponent.$('.js-lists');
|
||||
const $cardView = this.$(this.firstNode());
|
||||
@@ -61,7 +69,7 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
|
||||
onDestroyed() {
|
||||
this.parentComponent().showOverlay.set(false);
|
||||
this.parentComponent().parentComponent().showOverlay.set(false);
|
||||
},
|
||||
|
||||
events() {
|
||||
@@ -96,8 +104,11 @@ BlazeComponent.extendComponent({
|
||||
'click .js-add-members': Popup.open('cardMembers'),
|
||||
'click .js-add-labels': Popup.open('cardLabels'),
|
||||
'mouseenter .js-card-details' () {
|
||||
this.parentComponent().showOverlay.set(true);
|
||||
this.parentComponent().mouseHasEnterCardDetails = true;
|
||||
this.parentComponent().parentComponent().showOverlay.set(true);
|
||||
this.parentComponent().parentComponent().mouseHasEnterCardDetails = true;
|
||||
},
|
||||
'click #toggleButton'() {
|
||||
Meteor.call('toggleSystemMessages');
|
||||
},
|
||||
}];
|
||||
},
|
||||
@@ -156,17 +167,19 @@ Template.cardDetailsActionsPopup.events({
|
||||
'click .js-attachments': Popup.open('cardAttachments'),
|
||||
'click .js-start-date': Popup.open('editCardStartDate'),
|
||||
'click .js-due-date': Popup.open('editCardDueDate'),
|
||||
'click .js-spent-time': Popup.open('editCardSpentTime'),
|
||||
'click .js-move-card': Popup.open('moveCard'),
|
||||
'click .js-copy-card': Popup.open('copyCard'),
|
||||
'click .js-copy-checklist-cards': Popup.open('copyChecklistToManyCards'),
|
||||
'click .js-move-card-to-top' (evt) {
|
||||
evt.preventDefault();
|
||||
const minOrder = _.min(this.list().cards().map((c) => c.sort));
|
||||
this.move(this.listId, minOrder - 1);
|
||||
const minOrder = _.min(this.list().cards(this.swimlaneId).map((c) => c.sort));
|
||||
this.move(this.swimlaneId, this.listId, minOrder - 1);
|
||||
},
|
||||
'click .js-move-card-to-bottom' (evt) {
|
||||
evt.preventDefault();
|
||||
const maxOrder = _.max(this.list().cards().map((c) => c.sort));
|
||||
this.move(this.listId, maxOrder + 1);
|
||||
const maxOrder = _.max(this.list().cards(this.swimlaneId).map((c) => c.sort));
|
||||
this.move(this.swimlaneId, this.listId, maxOrder + 1);
|
||||
},
|
||||
'click .js-archive' (evt) {
|
||||
evt.preventDefault();
|
||||
@@ -190,7 +203,8 @@ Template.editCardTitleForm.onRendered(function () {
|
||||
Template.editCardTitleForm.events({
|
||||
'keydown .js-edit-card-title' (evt) {
|
||||
// If enter key was pressed, submit the data
|
||||
if (evt.keyCode === 13) {
|
||||
// Unless the shift key is also being pressed
|
||||
if (evt.keyCode === 13 && !evt.shiftKey) {
|
||||
$('.js-submit-edit-card-title-form').click();
|
||||
}
|
||||
},
|
||||
@@ -202,17 +216,48 @@ Template.moveCardPopup.events({
|
||||
// instead from a “component” state.
|
||||
const card = Cards.findOne(Session.get('currentCard'));
|
||||
const newListId = this._id;
|
||||
card.move(newListId);
|
||||
card.move(card.swimlaneId, newListId, 0);
|
||||
Popup.close();
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.selectedBoard = new ReactiveVar(Session.get('currentBoard'));
|
||||
},
|
||||
|
||||
boards() {
|
||||
const boards = Boards.find({
|
||||
archived: false,
|
||||
'members.userId': Meteor.userId(),
|
||||
}, {
|
||||
sort: ['title'],
|
||||
});
|
||||
return boards;
|
||||
},
|
||||
|
||||
aBoardLists() {
|
||||
subManager.subscribe('board', this.selectedBoard.get());
|
||||
const board = Boards.findOne(this.selectedBoard.get());
|
||||
return board.lists();
|
||||
},
|
||||
events() {
|
||||
return [{
|
||||
'change .js-select-boards'(evt) {
|
||||
this.selectedBoard.set($(evt.currentTarget).val());
|
||||
},
|
||||
}];
|
||||
},
|
||||
}).register('boardsAndLists');
|
||||
|
||||
Template.copyCardPopup.events({
|
||||
'click .js-select-list' (evt) {
|
||||
const card = Cards.findOne(Session.get('currentCard'));
|
||||
const oldId = card._id;
|
||||
card._id = null;
|
||||
card.listId = this._id;
|
||||
const list = Lists.findOne(card.listId);
|
||||
card.boardId = list.boardId;
|
||||
const textarea = $(evt.currentTarget).parents('.content').find('textarea');
|
||||
const title = textarea.val().trim();
|
||||
// insert new card to the bottom of new list
|
||||
@@ -220,6 +265,7 @@ Template.copyCardPopup.events({
|
||||
|
||||
if (title) {
|
||||
card.title = title;
|
||||
card.coverId = '';
|
||||
const _id = Cards.insert(card);
|
||||
// In case the filter is active we need to add the newly inserted card in
|
||||
// the list of exceptions -- cards that are not filtered. Otherwise the
|
||||
@@ -251,6 +297,60 @@ Template.copyCardPopup.events({
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
Template.copyChecklistToManyCardsPopup.events({
|
||||
'click .js-select-list' (evt) {
|
||||
const card = Cards.findOne(Session.get('currentCard'));
|
||||
const oldId = card._id;
|
||||
card._id = null;
|
||||
card.listId = this._id;
|
||||
const list = Lists.findOne(card.listId);
|
||||
card.boardId = list.boardId;
|
||||
const textarea = $(evt.currentTarget).parents('.content').find('textarea');
|
||||
const titleEntry = textarea.val().trim();
|
||||
// insert new card to the bottom of new list
|
||||
card.sort = Lists.findOne(this._id).cards().count();
|
||||
|
||||
if (titleEntry) {
|
||||
const titleList = JSON.parse(titleEntry);
|
||||
for (let i = 0; i < titleList.length; i++){
|
||||
const obj = titleList[i];
|
||||
card.title = obj.title;
|
||||
card.description = obj.description;
|
||||
card.coverId = '';
|
||||
const _id = Cards.insert(card);
|
||||
// In case the filter is active we need to add the newly inserted card in
|
||||
// the list of exceptions -- cards that are not filtered. Otherwise the
|
||||
// card will disappear instantly.
|
||||
// See https://github.com/wekan/wekan/issues/80
|
||||
Filter.addException(_id);
|
||||
|
||||
// copy checklists
|
||||
let cursor = Checklists.find({cardId: oldId});
|
||||
cursor.forEach(function() {
|
||||
'use strict';
|
||||
const checklist = arguments[0];
|
||||
checklist.cardId = _id;
|
||||
checklist._id = null;
|
||||
Checklists.insert(checklist);
|
||||
});
|
||||
|
||||
// copy card comments
|
||||
cursor = CardComments.find({cardId: oldId});
|
||||
cursor.forEach(function () {
|
||||
'use strict';
|
||||
const comment = arguments[0];
|
||||
comment.cardId = _id;
|
||||
comment._id = null;
|
||||
CardComments.insert(comment);
|
||||
});
|
||||
}
|
||||
Popup.close();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
Template.cardMorePopup.events({
|
||||
'click .js-copy-card-link-to-clipboard' () {
|
||||
// Clipboard code from:
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
template(name="editCardSpentTime")
|
||||
.edit-card-time
|
||||
form.edit-time
|
||||
.fields
|
||||
label(for="time") {{_ 'time'}}
|
||||
input.js-time-field#time(type="number" step="0.01" name="time" value="{{card.spentTime}}" placeholder=timeFormat autofocus)
|
||||
label(for="overtime") {{_ 'overtime'}}
|
||||
a.js-toggle-overtime
|
||||
.materialCheckBox#overtime(class="{{#if card.isOvertime}}is-checked{{/if}}" name="overtime")
|
||||
|
||||
if error.get
|
||||
.warning {{_ error.get}}
|
||||
button.primary.wide.left.js-submit-time(type="submit") {{_ 'save'}}
|
||||
button.js-delete-time.negate.wide.right {{_ 'delete'}}
|
||||
|
||||
template(name="timeBadge")
|
||||
if canModifyCard
|
||||
a.js-edit-time.card-time(title="{{showTitle}}" class="{{#if isOvertime}}card-label-red{{else}}card-label-green{{/if}}")
|
||||
| {{showTime}}
|
||||
else
|
||||
a.card-time(title="{{showTitle}}" class="{{#if isOvertime}}card-label-red{{else}}card-label-green{{/if}}")
|
||||
| {{showTime}}
|
||||
@@ -0,0 +1,81 @@
|
||||
BlazeComponent.extendComponent({
|
||||
template() {
|
||||
return 'editCardSpentTime';
|
||||
},
|
||||
onCreated() {
|
||||
this.error = new ReactiveVar('');
|
||||
this.card = this.data();
|
||||
},
|
||||
toggleOvertime() {
|
||||
this.card.isOvertime = !this.card.isOvertime;
|
||||
$('#overtime .materialCheckBox').toggleClass('is-checked');
|
||||
|
||||
$('#overtime').toggleClass('is-checked');
|
||||
},
|
||||
storeTime(spentTime, isOvertime) {
|
||||
this.card.setSpentTime(spentTime);
|
||||
this.card.setOvertime(isOvertime);
|
||||
},
|
||||
deleteTime() {
|
||||
this.card.unsetSpentTime();
|
||||
},
|
||||
events() {
|
||||
return [{
|
||||
//TODO : need checking this portion
|
||||
'submit .edit-time'(evt) {
|
||||
evt.preventDefault();
|
||||
|
||||
const spentTime = parseFloat(evt.target.time.value);
|
||||
const isOvertime = this.card.isOvertime;
|
||||
|
||||
if (spentTime >= 0) {
|
||||
this.storeTime(spentTime, isOvertime);
|
||||
Popup.close();
|
||||
} else {
|
||||
this.error.set('invalid-time');
|
||||
evt.target.time.focus();
|
||||
}
|
||||
},
|
||||
'click .js-delete-time'(evt) {
|
||||
evt.preventDefault();
|
||||
this.deleteTime();
|
||||
Popup.close();
|
||||
},
|
||||
'click a.js-toggle-overtime': this.toggleOvertime,
|
||||
}];
|
||||
},
|
||||
}).register('editCardSpentTimePopup');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
template() {
|
||||
return 'timeBadge';
|
||||
},
|
||||
onCreated() {
|
||||
const self = this;
|
||||
self.time = ReactiveVar();
|
||||
},
|
||||
showTitle() {
|
||||
if (this.data().isOvertime) {
|
||||
return `${TAPi18n.__('overtime')} ${this.data().spentTime} ${TAPi18n.__('hours')}`;
|
||||
} else {
|
||||
return `${TAPi18n.__('card-spent')} ${this.data().spentTime} ${TAPi18n.__('hours')}`;
|
||||
}
|
||||
},
|
||||
showTime() {
|
||||
return this.data().spentTime;
|
||||
},
|
||||
isOvertime() {
|
||||
return this.data().isOvertime;
|
||||
},
|
||||
events() {
|
||||
return [{
|
||||
'click .js-edit-time': Popup.open('editCardSpentTime'),
|
||||
}];
|
||||
},
|
||||
}).register('cardSpentTime');
|
||||
|
||||
Template.timeBadge.helpers({
|
||||
canModifyCard() {
|
||||
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,17 @@
|
||||
.card-time
|
||||
display: block
|
||||
border-radius: 4px
|
||||
padding: 1px 3px
|
||||
color: #fff
|
||||
|
||||
background-color: #dbdbdb
|
||||
&:hover, &.is-active
|
||||
background-color: #b3b3b3
|
||||
|
||||
time
|
||||
&::before
|
||||
font: normal normal normal 14px/1 FontAwesome
|
||||
font-size: inherit
|
||||
-webkit-font-smoothing: antialiased
|
||||
content: "\f017" // clock symbol
|
||||
margin-right: 0.3em
|
||||
@@ -28,9 +28,13 @@ template(name="checklistDetail")
|
||||
|
||||
span.checklist-stat(class="{{#if checklist.isFinished}}is-finished{{/if}}") {{checklist.finishedCount}}/{{checklist.itemCount}}
|
||||
if canModifyCard
|
||||
h2.title.js-open-inlined-form.is-editable {{checklist.title}}
|
||||
h2.title.js-open-inlined-form.is-editable
|
||||
+viewer
|
||||
= checklist.title
|
||||
else
|
||||
h2.title {{checklist.title}}
|
||||
h2.title
|
||||
+viewer
|
||||
= checklist.title
|
||||
+checklistItems(checklist = checklist)
|
||||
|
||||
template(name="checklistDeleteDialog")
|
||||
@@ -83,7 +87,11 @@ template(name='itemDetail')
|
||||
.item.js-checklist-item
|
||||
if canModifyCard
|
||||
.check-box.materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}")
|
||||
.item-title.js-open-inlined-form.is-editable(class="{{#if item.isFinished }}is-checked{{/if}}") {{item.title}}
|
||||
.item-title.js-open-inlined-form.is-editable(class="{{#if item.isFinished }}is-checked{{/if}}")
|
||||
+viewer
|
||||
= item.title
|
||||
else
|
||||
.materialCheckBox(class="{{#if item.isFinished }}is-checked{{/if}}")
|
||||
.item-title(class="{{#if item.isFinished }}is-checked{{/if}}") {{item.title}}
|
||||
.item-title(class="{{#if item.isFinished }}is-checked{{/if}}")
|
||||
+viewer
|
||||
= item.title
|
||||
@@ -146,8 +146,9 @@ BlazeComponent.extendComponent({
|
||||
},
|
||||
|
||||
pressKey(event) {
|
||||
//If user press enter key inside a form, submit it, so user doesn't have to leave keyboard to submit a form.
|
||||
if (event.keyCode === 13) {
|
||||
//If user press enter key inside a form, submit it
|
||||
//Unless the user is also holding down the 'shift' key
|
||||
if (event.keyCode === 13 && !event.shiftKey) {
|
||||
event.preventDefault();
|
||||
const $form = $(event.currentTarget).closest('form');
|
||||
$form.find('button[type=submit]').click();
|
||||
@@ -180,8 +181,8 @@ BlazeComponent.extendComponent({
|
||||
Template.checklistDeleteDialog.onCreated(() => {
|
||||
const $cardDetails = this.$('.card-details');
|
||||
this.scrollState = { position: $cardDetails.scrollTop(), //save current scroll position
|
||||
top: false, //required for smooth scroll animation
|
||||
};
|
||||
top: false, //required for smooth scroll animation
|
||||
};
|
||||
//Callback's purpose is to only prevent scrolling after animation is complete
|
||||
$cardDetails.animate({ scrollTop: 0 }, 500, () => { this.scrollState.top = true; });
|
||||
|
||||
|
||||
@@ -34,4 +34,5 @@ template(name="cardLabelsPopup")
|
||||
= name
|
||||
if(isLabelSelected ../_id)
|
||||
i.card-label-selectable-icon.fa.fa-check
|
||||
a.quiet-button.full.js-add-label {{_ 'label-create'}}
|
||||
if currentUser.isBoardAdmin
|
||||
a.quiet-button.full.js-add-label {{_ 'label-create'}}
|
||||
@@ -6,14 +6,20 @@ template(name="minicard")
|
||||
.minicard-labels
|
||||
each labels
|
||||
.minicard-label(class="card-label-{{color}}" title="{{name}}")
|
||||
.minicard-title= title
|
||||
.minicard-title
|
||||
+viewer
|
||||
= title
|
||||
.dates
|
||||
if startAt
|
||||
.date
|
||||
+minicardStartDate
|
||||
.date
|
||||
+minicardStartDate
|
||||
if dueAt
|
||||
.date
|
||||
+minicardDueDate
|
||||
.date
|
||||
+minicardDueDate
|
||||
if spentTime
|
||||
.date
|
||||
+cardSpentTime
|
||||
|
||||
if members
|
||||
.minicard-members.js-minicard-members
|
||||
each members
|
||||
|
||||
@@ -77,6 +77,9 @@
|
||||
height: @width
|
||||
border-radius: 2px
|
||||
margin-left: 3px
|
||||
.minicard-title
|
||||
p:last-child
|
||||
margin-bottom: 0
|
||||
.dates
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
|
||||
@@ -630,6 +630,59 @@ button
|
||||
a, .quiet
|
||||
color: white
|
||||
|
||||
// Material Design Toggle Switch
|
||||
.material-toggle-switch
|
||||
display: flex
|
||||
|
||||
.toggle-label
|
||||
position: relative
|
||||
display: block
|
||||
height: 20px
|
||||
width: 44px
|
||||
background-color: #a6a6a6
|
||||
border-radius: 100px
|
||||
cursor: pointer
|
||||
transition: all 0.3s ease
|
||||
|
||||
&:after
|
||||
position: absolute
|
||||
left: -2px
|
||||
top: -3px
|
||||
display: block
|
||||
width: 26px
|
||||
height: 26px
|
||||
border-radius: 100px
|
||||
background-color: #fff
|
||||
box-shadow: 0px 3px 3px rgba(0,0,0,0.05)
|
||||
content: ''
|
||||
transition: all 0.3s ease
|
||||
|
||||
&:active
|
||||
&:after
|
||||
transform: scale(1.15, 0.85)
|
||||
|
||||
.toggle-switch:checked ~ .toggle-label
|
||||
background-color: #6fbeb5
|
||||
|
||||
&:after
|
||||
left: 20px
|
||||
background-color: #179588
|
||||
|
||||
.toggle-switch:checked:disabled ~ .toggle-label
|
||||
background-color: #d5d5d5
|
||||
pointer-events: none
|
||||
|
||||
&:after
|
||||
background-color: #bcbdbc
|
||||
|
||||
.toggle-switch
|
||||
display: none
|
||||
|
||||
.toggle-switch-title
|
||||
margin: 0 0.5em
|
||||
display: flex
|
||||
|
||||
|
||||
@media screen and (max-width: 800px)
|
||||
.edit-controls,
|
||||
.add-controls
|
||||
|
||||
@@ -11,13 +11,17 @@ template(name="import")
|
||||
+Template.dynamic(template=currentTemplate)
|
||||
|
||||
template(name="importTextarea")
|
||||
form
|
||||
p: label(for='import-textarea') {{_ instruction}}
|
||||
textarea.js-import-json(placeholder="{{_ 'import-json-placeholder'}}" autofocus)
|
||||
| {{jsonText}}
|
||||
if isSandstorm
|
||||
p.warning {{_ 'import-sandstorm-warning'}}
|
||||
input.primary.wide(type="submit" value="{{_ 'import'}}")
|
||||
unless isSandstorm
|
||||
form
|
||||
p: label(for='import-textarea') {{_ instruction}}
|
||||
textarea.js-import-json(placeholder="{{_ 'import-json-placeholder'}}" autofocus)
|
||||
| {{jsonText}}
|
||||
if isSandstorm
|
||||
p.warning {{_ 'import-sandstorm-warning'}}
|
||||
input.primary.wide(type="submit" value="{{_ 'import'}}")
|
||||
if isSandstorm
|
||||
p.warning 'Import disabled because of data loss bug https://github.com/wekan/wekan/issues/1430'
|
||||
|
||||
|
||||
template(name="importMapMembers")
|
||||
h2 {{_ 'import-map-members'}}
|
||||
|
||||
@@ -2,3 +2,7 @@ template(name='list')
|
||||
.list.js-list(id="js-list-{{_id}}")
|
||||
+listHeader
|
||||
+listBody
|
||||
|
||||
template(name='miniList')
|
||||
a.mini-list.js-select-list.js-list(id="js-list-{{_id}}")
|
||||
+listHeader
|
||||
@@ -18,11 +18,11 @@ BlazeComponent.extendComponent({
|
||||
// callback, we basically solve all issues related to reactive updates. A
|
||||
// comment below provides further details.
|
||||
onRendered() {
|
||||
const boardComponent = this.parentComponent();
|
||||
const boardComponent = this.parentComponent().parentComponent();
|
||||
const itemsSelector = '.js-minicard:not(.placeholder, .js-card-composer)';
|
||||
const $cards = this.$('.js-minicards');
|
||||
$cards.sortable({
|
||||
connectWith: '.js-minicards',
|
||||
connectWith: '.js-minicards:not(.js-list-full)',
|
||||
tolerance: 'pointer',
|
||||
appendTo: 'body',
|
||||
helper(evt, item) {
|
||||
@@ -55,6 +55,7 @@ BlazeComponent.extendComponent({
|
||||
const nCards = MultiSelection.isActive() ? MultiSelection.count() : 1;
|
||||
const sortIndex = calculateIndex(prevCardDom, nextCardDom, nCards);
|
||||
const listId = Blaze.getData(ui.item.parents('.list').get(0))._id;
|
||||
const swimlaneId = 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
|
||||
@@ -67,12 +68,12 @@ BlazeComponent.extendComponent({
|
||||
|
||||
if (MultiSelection.isActive()) {
|
||||
Cards.find(MultiSelection.getMongoSelector()).forEach((card, i) => {
|
||||
card.move(listId, sortIndex.base + i * sortIndex.increment);
|
||||
card.move(swimlaneId, listId, sortIndex.base + i * sortIndex.increment);
|
||||
});
|
||||
} else {
|
||||
const cardDomElement = ui.item.get(0);
|
||||
const card = Blaze.getData(cardDomElement);
|
||||
card.move(listId, sortIndex.base);
|
||||
card.move(swimlaneId, listId, sortIndex.base);
|
||||
}
|
||||
boardComponent.setIsDragging(false);
|
||||
},
|
||||
@@ -114,3 +115,10 @@ BlazeComponent.extendComponent({
|
||||
});
|
||||
},
|
||||
}).register('list');
|
||||
|
||||
Template.miniList.events({
|
||||
'click .js-select-list'() {
|
||||
const listId = this._id;
|
||||
Session.set('currentList', listId);
|
||||
},
|
||||
});
|
||||
@@ -9,7 +9,6 @@
|
||||
// Even if this background color is the same as the body we can't leave it
|
||||
// transparent, because that won't work during a list drag.
|
||||
background: darken(white, 13%)
|
||||
height: 100%
|
||||
border-left: 1px solid darken(white, 20%)
|
||||
padding: 0
|
||||
float: left
|
||||
@@ -53,6 +52,9 @@
|
||||
&.ui-sortable-handle
|
||||
cursor: grab
|
||||
|
||||
.list-header-left-icon
|
||||
display: none
|
||||
|
||||
.list-header-name
|
||||
display: inline
|
||||
font-size: 16px
|
||||
@@ -78,15 +80,21 @@
|
||||
|
||||
.list-header-plus-icon
|
||||
color: #a6a6a6
|
||||
margin-right: 10px
|
||||
|
||||
.highlight
|
||||
color: #ce1414
|
||||
|
||||
.list-body
|
||||
flex: 1
|
||||
flex-direction: column
|
||||
display: flex
|
||||
overflow-y: auto
|
||||
padding: 5px 11px
|
||||
|
||||
.minicards
|
||||
flex: 1
|
||||
flex-grow: 1
|
||||
flex-shrink: 0
|
||||
|
||||
form
|
||||
margin-bottom: 9px
|
||||
@@ -110,3 +118,71 @@
|
||||
background: #fafafa
|
||||
color: #222
|
||||
box-shadow: 0 1px 2px rgba(0,0,0,.2)
|
||||
|
||||
#js-wip-limit-edit
|
||||
padding-top: 2%
|
||||
|
||||
p
|
||||
margin-bottom: 0
|
||||
|
||||
input
|
||||
display: inline-block
|
||||
|
||||
.wip-limit-value
|
||||
width: 20%
|
||||
margin-right: 5%
|
||||
|
||||
.wip-limit-error
|
||||
display: none
|
||||
|
||||
.soft-wip-limit
|
||||
margin-right: 8px
|
||||
|
||||
div
|
||||
float: left
|
||||
|
||||
@media screen and (max-width: 800px)
|
||||
.mini-list
|
||||
flex: 0 0 60px
|
||||
height: 60px
|
||||
width: 100%
|
||||
border-left: 0px
|
||||
border-bottom: 1px solid darken(white, 20%)
|
||||
|
||||
.list
|
||||
display: block
|
||||
width: 100%
|
||||
border-left: 0px
|
||||
|
||||
&.ui-sortable-helper
|
||||
flex: 0 0 60px
|
||||
height: 60px
|
||||
width: 100%
|
||||
border-left: 0px
|
||||
border-bottom: 1px solid darken(white, 20%)
|
||||
|
||||
.list-header.ui-sortable-handle
|
||||
cursor: grabbing
|
||||
|
||||
&.placeholder
|
||||
flex: 0 0 60px
|
||||
height: 60px
|
||||
width: 100%
|
||||
border-left: 0px
|
||||
border-bottom: 1px solid darken(white, 20%)
|
||||
|
||||
.list-header
|
||||
|
||||
.list-header-left-icon
|
||||
display: inline
|
||||
padding: 7px
|
||||
padding-right: 27px
|
||||
margin-top: 1px
|
||||
top: -@padding
|
||||
left: -@padding
|
||||
|
||||
.list-header-menu-icon
|
||||
position: absolute
|
||||
padding: 7px
|
||||
top: -@padding
|
||||
right: 17px
|
||||
@@ -1,10 +1,10 @@
|
||||
template(name="listBody")
|
||||
.list-body.js-perfect-scrollbar
|
||||
.minicards.clearfix.js-minicards
|
||||
.minicards.clearfix.js-minicards(class="{{#if reachedWipLimit}}js-list-full{{/if}}")
|
||||
if cards.count
|
||||
+inlinedForm(autoclose=false position="top")
|
||||
+addCardForm(listId=_id position="top")
|
||||
each cards
|
||||
each (cards (idOrNull ../../_id))
|
||||
a.minicard-wrapper.js-minicard(href=absoluteUrl
|
||||
class="{{#if cardIsSelected}}is-selected{{/if}}"
|
||||
class="{{#if MultiSelection.isSelected _id}}is-checked{{/if}}")
|
||||
|
||||
@@ -36,6 +36,14 @@ BlazeComponent.extendComponent({
|
||||
const members = formComponent.members.get();
|
||||
const labelIds = formComponent.labels.get();
|
||||
|
||||
const boardId = this.data().board()._id;
|
||||
const board = Boards.findOne(boardId);
|
||||
let swimlaneId = '';
|
||||
if (board.view === 'board-view-swimlanes')
|
||||
swimlaneId = this.parentComponent().parentComponent().data()._id;
|
||||
else
|
||||
swimlaneId = Swimlanes.findOne({boardId})._id;
|
||||
|
||||
if (title) {
|
||||
const _id = Cards.insert({
|
||||
title,
|
||||
@@ -44,6 +52,7 @@ BlazeComponent.extendComponent({
|
||||
listId: this.data()._id,
|
||||
boardId: this.data().board()._id,
|
||||
sort: sortIndex,
|
||||
swimlaneId,
|
||||
});
|
||||
// In case the filter is active we need to add the newly inserted card in
|
||||
// the list of exceptions -- cards that are not filtered. Otherwise the
|
||||
@@ -96,6 +105,22 @@ BlazeComponent.extendComponent({
|
||||
MultiSelection.toggle(this.currentData()._id);
|
||||
},
|
||||
|
||||
idOrNull(swimlaneId) {
|
||||
const board = Boards.findOne(Session.get('currentBoard'));
|
||||
if (board.view === 'board-view-swimlanes')
|
||||
return swimlaneId;
|
||||
return undefined;
|
||||
},
|
||||
|
||||
canSeeAddCard() {
|
||||
return !this.reachedWipLimit() && Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
|
||||
},
|
||||
|
||||
reachedWipLimit() {
|
||||
const list = Template.currentData();
|
||||
return !list.getWipLimit('soft') && list.getWipLimit('enabled') && list.getWipLimit('value') <= list.cards().count();
|
||||
},
|
||||
|
||||
events() {
|
||||
return [{
|
||||
'click .js-minicard': this.clickOnMiniCard,
|
||||
@@ -239,10 +264,3 @@ BlazeComponent.extendComponent({
|
||||
});
|
||||
},
|
||||
}).register('addCardForm');
|
||||
|
||||
|
||||
Template.listBody.helpers({
|
||||
canSeeAddCard() {
|
||||
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
|
||||
},
|
||||
});
|
||||
@@ -3,19 +3,40 @@ template(name="listHeader")
|
||||
+inlinedForm
|
||||
+editListTitleForm
|
||||
else
|
||||
if isMiniScreen
|
||||
if currentList
|
||||
a.list-header-left-icon.fa.fa-angle-left.js-unselect-list
|
||||
h2.list-header-name(
|
||||
class="{{#if currentUser.isBoardMember}}js-open-inlined-form is-editable{{/if}}")
|
||||
= title
|
||||
if wipLimit.enabled
|
||||
| (
|
||||
span(class="{{#if reachedWipLimit}}highlight{{/if}}") {{cards.count}}
|
||||
|/#{wipLimit.value})
|
||||
|
||||
if showCardsCountForList cards.count
|
||||
= cards.count
|
||||
span.lowercase
|
||||
| {{_ 'cards'}}
|
||||
if currentUser.isBoardMember
|
||||
if isMiniScreen
|
||||
if currentList
|
||||
if isWatching
|
||||
i.list-header-watch-icon.fa.fa-eye
|
||||
div.list-header-menu
|
||||
unless currentUser.isCommentOnly
|
||||
if canSeeAddCard
|
||||
a.js-add-card.fa.fa-plus.list-header-plus-icon
|
||||
a.fa.fa-navicon.js-open-list-menu
|
||||
else
|
||||
a.list-header-menu-icon.fa.fa-angle-right.js-select-list
|
||||
else if currentUser.isBoardMember
|
||||
if isWatching
|
||||
i.list-header-watch-icon.fa.fa-eye
|
||||
div.list-header-menu
|
||||
a.js-add-card.fa.fa-plus.list-header-plus-icon
|
||||
a.fa.fa-navicon.js-open-list-menu
|
||||
unless currentUser.isCommentOnly
|
||||
if canSeeAddCard
|
||||
a.js-add-card.fa.fa-plus.list-header-plus-icon
|
||||
a.fa.fa-navicon.js-open-list-menu
|
||||
|
||||
template(name="editListTitleForm")
|
||||
.list-composer
|
||||
@@ -33,6 +54,10 @@ template(name="listActionPopup")
|
||||
if cards.count
|
||||
li: a.js-select-cards {{_ 'list-select-cards'}}
|
||||
hr
|
||||
if currentUser.isBoardAdmin
|
||||
ul.pop-over-list
|
||||
li: a.js-set-wip-limit {{#if isWipLimitEnabled }}{{_ 'edit-wip-limit'}}{{else}}{{_ 'setWipLimitPopup-title'}}{{/if}}
|
||||
hr
|
||||
ul.pop-over-list
|
||||
li: a.js-close-list {{_ 'archive-list'}}
|
||||
hr
|
||||
@@ -64,3 +89,26 @@ template(name="listDeletePopup")
|
||||
unless archived
|
||||
p {{_ "list-delete-suggest-archive"}}
|
||||
button.js-confirm.negate.full(type="submit") {{_ 'delete'}}
|
||||
|
||||
template(name="setWipLimitPopup")
|
||||
#js-wip-limit-edit
|
||||
label {{_ 'set-wip-limit-value'}}
|
||||
ul.pop-over-list
|
||||
li: a.js-enable-wip-limit {{_ 'enable-wip-limit'}}
|
||||
if isWipLimitEnabled
|
||||
i.fa.fa-check
|
||||
if isWipLimitEnabled
|
||||
p
|
||||
input.wip-limit-value(type="number" value="{{ wipLimitValue }}" min="1" max="99")
|
||||
input.wip-limit-apply(type="submit" value="{{_ 'apply'}}")
|
||||
input.wip-limit-error
|
||||
p
|
||||
.soft-wip-limit
|
||||
.materialCheckBox(class="{{#if isWipLimitSoft}}is-checked{{/if}}")
|
||||
label {{_ 'soft-wip-limit'}}
|
||||
|
||||
template(name="wipLimitErrorPopup")
|
||||
.wip-limit-invalid
|
||||
p {{_ 'wipLimitErrorPopup-dialog-pt1'}}
|
||||
p {{_ 'wipLimitErrorPopup-dialog-pt2'}}
|
||||
button.full.js-back-view(type="submit") {{_ 'cancel'}}
|
||||
@@ -1,4 +1,9 @@
|
||||
BlazeComponent.extendComponent({
|
||||
canSeeAddCard() {
|
||||
const list = Template.currentData();
|
||||
return !list.getWipLimit('enabled') || list.getWipLimit('soft') || !this.reachedWipLimit();
|
||||
},
|
||||
|
||||
editTitle(evt) {
|
||||
evt.preventDefault();
|
||||
const newTitle = this.childComponents('inlinedForm')[0].getValue().trim();
|
||||
@@ -17,6 +22,11 @@ BlazeComponent.extendComponent({
|
||||
return Meteor.user().getLimitToShowCardsCount();
|
||||
},
|
||||
|
||||
reachedWipLimit() {
|
||||
const list = Template.currentData();
|
||||
return list.getWipLimit('enabled') && list.getWipLimit('value') <= list.cards().count();
|
||||
},
|
||||
|
||||
showCardsCountForList(count) {
|
||||
return count > this.limitToShowCardsCount();
|
||||
},
|
||||
@@ -31,12 +41,19 @@ BlazeComponent.extendComponent({
|
||||
position: 'top',
|
||||
});
|
||||
},
|
||||
'click .js-unselect-list'() {
|
||||
Session.set('currentList', null);
|
||||
},
|
||||
submit: this.editTitle,
|
||||
}];
|
||||
},
|
||||
}).register('listHeader');
|
||||
|
||||
Template.listActionPopup.helpers({
|
||||
isWipLimitEnabled() {
|
||||
return Template.currentData().getWipLimit('enabled');
|
||||
},
|
||||
|
||||
isWatching() {
|
||||
return this.findWatcher(Meteor.userId());
|
||||
},
|
||||
@@ -61,9 +78,63 @@ Template.listActionPopup.events({
|
||||
this.archive();
|
||||
Popup.close();
|
||||
},
|
||||
'click .js-set-wip-limit': Popup.open('setWipLimit'),
|
||||
'click .js-more': Popup.open('listMore'),
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
applyWipLimit() {
|
||||
const list = Template.currentData();
|
||||
const limit = parseInt(Template.instance().$('.wip-limit-value').val(), 10);
|
||||
|
||||
if(limit < list.cards().count() && !list.getWipLimit('soft')){
|
||||
Template.instance().$('.wip-limit-error').click();
|
||||
} else {
|
||||
Meteor.call('applyWipLimit', list._id, limit);
|
||||
Popup.back();
|
||||
}
|
||||
},
|
||||
|
||||
enableSoftLimit() {
|
||||
const list = Template.currentData();
|
||||
|
||||
if(list.getWipLimit('soft') && list.getWipLimit('value') < list.cards().count()){
|
||||
list.setWipLimit(list.cards().count());
|
||||
}
|
||||
Meteor.call('enableSoftLimit', Template.currentData()._id);
|
||||
},
|
||||
|
||||
enableWipLimit() {
|
||||
const list = Template.currentData();
|
||||
// Prevent user from using previously stored wipLimit.value if it is less than the current number of cards in the list
|
||||
if(!list.getWipLimit('enabled') && list.getWipLimit('value') < list.cards().count()){
|
||||
list.setWipLimit(list.cards().count());
|
||||
}
|
||||
Meteor.call('enableWipLimit', list._id);
|
||||
},
|
||||
|
||||
isWipLimitSoft() {
|
||||
return Template.currentData().getWipLimit('soft');
|
||||
},
|
||||
|
||||
isWipLimitEnabled() {
|
||||
return Template.currentData().getWipLimit('enabled');
|
||||
},
|
||||
|
||||
wipLimitValue(){
|
||||
return Template.currentData().getWipLimit('value');
|
||||
},
|
||||
|
||||
events() {
|
||||
return [{
|
||||
'click .js-enable-wip-limit': this.enableWipLimit,
|
||||
'click .wip-limit-apply': this.applyWipLimit,
|
||||
'click .wip-limit-error': Popup.open('wipLimitError'),
|
||||
'click .materialCheckBox': this.enableSoftLimit,
|
||||
}];
|
||||
},
|
||||
}).register('setWipLimitPopup');
|
||||
|
||||
Template.listMorePopup.events({
|
||||
'click .js-delete': Popup.afterConfirm('listDelete', function () {
|
||||
Popup.close();
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
BlazeComponent.extendComponent({
|
||||
currentCardIsInThisList(listId, swimlaneId) {
|
||||
const currentCard = Cards.findOne(Session.get('currentCard'));
|
||||
const currentBoardId = Session.get('currentBoard');
|
||||
const board = Boards.findOne(currentBoardId);
|
||||
if (board.view === 'board-view-lists')
|
||||
return currentCard && currentCard.listId === listId;
|
||||
else if (board.view === 'board-view-swimlanes')
|
||||
return currentCard && currentCard.listId === listId && currentCard.swimlaneId === swimlaneId;
|
||||
else
|
||||
return false;
|
||||
},
|
||||
}).register('listsGroup');
|
||||
@@ -9,6 +9,5 @@ template(name="editor")
|
||||
template(name="viewer")
|
||||
.viewer
|
||||
+mentions
|
||||
+emoji
|
||||
+markdown
|
||||
{{> UI.contentBlock }}
|
||||
+markdown
|
||||
{{> UI.contentBlock }}
|
||||
@@ -4,25 +4,6 @@ Template.editor.onRendered(() => {
|
||||
autosize($textarea);
|
||||
|
||||
$textarea.escapeableTextComplete([
|
||||
// Emoji
|
||||
{
|
||||
match: /\B:([\-+\w]*)$/,
|
||||
search(term, callback) {
|
||||
callback(Emoji.values.map((emoji) => {
|
||||
return emoji.includes(term) ? emoji : null;
|
||||
}).filter(Boolean));
|
||||
},
|
||||
template(value) {
|
||||
const imgSrc = Emoji.baseImagePath + value;
|
||||
const image = `<img src="${imgSrc}.png" />`;
|
||||
return image + value;
|
||||
},
|
||||
replace(value) {
|
||||
return `:${value}:`;
|
||||
},
|
||||
index: 1,
|
||||
},
|
||||
|
||||
// User mentions
|
||||
{
|
||||
match: /\B@([\w.]*)$/,
|
||||
@@ -47,7 +28,7 @@ Template.editor.onRendered(() => {
|
||||
import sanitizeXss from 'xss';
|
||||
|
||||
// XXX I believe we should compute a HTML rendered field on the server that
|
||||
// would handle markdown, emoji and user mentions. We can simply have two
|
||||
// would handle markdown and user mentions. We can simply have two
|
||||
// fields, one source, and one compiled version (in HTML) and send only the
|
||||
// compiled version to most users -- who don't need to edit.
|
||||
// In the meantime, all the transformation are done on the client using the
|
||||
|
||||
@@ -7,19 +7,31 @@ template(name="header")
|
||||
unless isSandstorm
|
||||
if currentUser
|
||||
#header-quick-access(class=currentBoard.colorClass)
|
||||
ul
|
||||
li
|
||||
a(href="{{pathFor 'home'}}")
|
||||
span.fa.fa-home
|
||||
| {{_ 'all-boards'}}
|
||||
each currentUser.starredBoards
|
||||
li.separator -
|
||||
li(class="{{#if $.Session.equals 'currentBoard' _id}}current{{/if}}")
|
||||
a(href="{{pathFor 'board' id=_id slug=slug}}")
|
||||
= title
|
||||
else
|
||||
li.current {{_ 'quick-access-description'}}
|
||||
if isMiniScreen
|
||||
ul
|
||||
li
|
||||
a(href="{{pathFor 'home'}}")
|
||||
span.fa.fa-home
|
||||
|
||||
if currentList
|
||||
each currentBoard.lists
|
||||
li(class="{{#if $.Session.equals 'currentList' _id}}current{{/if}}")
|
||||
a.js-select-list
|
||||
= title
|
||||
#header-new-board-icon
|
||||
else
|
||||
ul
|
||||
li
|
||||
a(href="{{pathFor 'home'}}")
|
||||
span.fa.fa-home
|
||||
| {{_ 'all-boards'}}
|
||||
each currentUser.starredBoards
|
||||
li.separator -
|
||||
li(class="{{#if $.Session.equals 'currentBoard' _id}}current{{/if}}")
|
||||
a(href="{{pathFor 'board' id=_id slug=slug}}")
|
||||
= title
|
||||
else
|
||||
li.current {{_ 'quick-access-description'}}
|
||||
|
||||
a#header-new-board-icon.js-create-board
|
||||
i.fa.fa-plus(title="Create a new board")
|
||||
@@ -49,6 +61,14 @@ template(name="header")
|
||||
if appIsOffline
|
||||
+offlineWarning
|
||||
|
||||
if currentUser.isBoardMember
|
||||
if hasAnnouncement
|
||||
.announcement
|
||||
p
|
||||
i.fa.fa-bullhorn
|
||||
| #{announcement}
|
||||
i.fa.fa-times-circle.js-close-announcement
|
||||
|
||||
template(name="offlineWarning")
|
||||
.offline-warning
|
||||
p
|
||||
|
||||
@@ -1,3 +1,6 @@
|
||||
Meteor.subscribe('user-admin');
|
||||
Meteor.subscribe('boards');
|
||||
|
||||
Template.header.helpers({
|
||||
wrappedHeader() {
|
||||
return !Session.get('currentBoard');
|
||||
@@ -10,8 +13,26 @@ Template.header.helpers({
|
||||
appIsOffline() {
|
||||
return !Meteor.status().connected;
|
||||
},
|
||||
|
||||
hasAnnouncement() {
|
||||
const announcements = Announcements.findOne();
|
||||
return announcements && announcements.enabled;
|
||||
},
|
||||
|
||||
announcement() {
|
||||
$('.announcement').show();
|
||||
const announcements = Announcements.findOne();
|
||||
return announcements && announcements.body;
|
||||
},
|
||||
});
|
||||
|
||||
Template.header.events({
|
||||
'click .js-create-board': Popup.open('headerBarCreateBoard'),
|
||||
'click .js-close-announcement'() {
|
||||
$('.announcement').hide();
|
||||
},
|
||||
'click .js-select-list'() {
|
||||
Session.set('currentList', this._id);
|
||||
Session.set('currentCard', null);
|
||||
},
|
||||
});
|
||||
@@ -191,12 +191,35 @@
|
||||
bottom: 0px
|
||||
|
||||
ul
|
||||
width: calc(100% - 150px)
|
||||
width: calc(100% - 60px)
|
||||
overflow: ellipsis
|
||||
padding: 10px
|
||||
margin: -10px
|
||||
|
||||
li
|
||||
height: 28px
|
||||
height: 100%
|
||||
padding: 12px 0px
|
||||
margin: -10px 0px
|
||||
|
||||
a
|
||||
height: 100%
|
||||
padding: 12px 10px
|
||||
margin: -10px 0px
|
||||
|
||||
.fa-home
|
||||
font-size: 26px
|
||||
margin-top: -2px
|
||||
|
||||
#header-new-board-icon
|
||||
display: none
|
||||
|
||||
#header-user-bar
|
||||
position: absolute
|
||||
right: 0px
|
||||
padding: 10px
|
||||
margin: -10px
|
||||
|
||||
.announcement,
|
||||
.offline-warning
|
||||
width: 100%
|
||||
text-align: center
|
||||
|
||||
@@ -8,6 +8,7 @@ head
|
||||
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="manifest" href="/wekan-manifest.json")
|
||||
|
||||
template(name="userFormsLayout")
|
||||
|
||||
@@ -1,7 +1,3 @@
|
||||
Meteor.subscribe('boards');
|
||||
Meteor.subscribe('setting');
|
||||
Meteor.subscribe('user-admin');
|
||||
|
||||
BlazeLayout.setRoot('body');
|
||||
|
||||
const i18nTagToT9n = (i18nTag) => {
|
||||
@@ -23,7 +19,7 @@ Template.userFormsLayout.helpers({
|
||||
return _.map(TAPi18n.getLanguages(), (lang, code) => {
|
||||
return {
|
||||
tag: code,
|
||||
name: lang.name === 'br' ? 'Brezhoneg' : lang.name,
|
||||
name: lang.name === 'br' ? 'Brezhoneg' : lang.name === 'ig' ? 'Igbo' : lang.name,
|
||||
};
|
||||
}).sort(function(a, b) {
|
||||
if (a.name === b.name) {
|
||||
|
||||
@@ -270,11 +270,6 @@ kbd
|
||||
.grabbing
|
||||
cursor: grabbing
|
||||
|
||||
.emoji
|
||||
height: 18px
|
||||
width: 18px
|
||||
vertical-align: text-bottom
|
||||
|
||||
// Implement a thiner close icon as suggested in
|
||||
// https://github.com/FortAwesome/Font-Awesome/issues/1540#issuecomment-68689950
|
||||
.fa.fa-times-thin:before
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Template.invitationCode.onRendered(() => {
|
||||
const setting = Settings.findOne();
|
||||
if (!setting || !setting.disableRegistration) {
|
||||
if (setting || setting.disableRegistration) {
|
||||
$('#invitationcode').hide();
|
||||
}
|
||||
});
|
||||
@@ -0,0 +1,90 @@
|
||||
template(name="people")
|
||||
.setting-content
|
||||
unless currentUser.isAdmin
|
||||
| {{_ 'error-notAuthorized'}}
|
||||
else
|
||||
.content-title
|
||||
span {{_ 'people'}}
|
||||
.content-body
|
||||
.side-menu
|
||||
ul
|
||||
li.active
|
||||
a.js-setting-menu(data-id="people-setting") {{_ 'people'}}
|
||||
.main-body
|
||||
if loading.get
|
||||
+spinner
|
||||
else if people.get
|
||||
+peopleGeneral
|
||||
|
||||
template(name="peopleGeneral")
|
||||
table
|
||||
tbody
|
||||
tr
|
||||
th {{_ 'username'}}
|
||||
th {{_ 'fullname'}}
|
||||
th {{_ 'admin'}}
|
||||
th {{_ 'email'}}
|
||||
th {{_ 'verified'}}
|
||||
th {{_ 'createdAt'}}
|
||||
th {{_ 'active'}}
|
||||
th
|
||||
each user in peopleList
|
||||
+peopleRow(userId=user._id)
|
||||
|
||||
template(name="peopleRow")
|
||||
tr
|
||||
td.username {{ userData.username }}
|
||||
td {{ userData.profile.fullname }}
|
||||
td
|
||||
if userData.isAdmin
|
||||
| {{_ 'yes'}}
|
||||
else
|
||||
| {{_ 'no'}}
|
||||
td {{ userData.emails.[0].address }}
|
||||
td
|
||||
if userData.emails.[0].verified
|
||||
| {{_ 'yes'}}
|
||||
else
|
||||
| {{_ 'no'}}
|
||||
td {{ moment userData.createdAt 'LLL' }}
|
||||
td
|
||||
if userData.loginDisabled
|
||||
| {{_ 'no'}}
|
||||
else
|
||||
| {{_ 'yes'}}
|
||||
td
|
||||
a.edit-user
|
||||
| {{_ 'edit'}}
|
||||
|
||||
template(name="editUserPopup")
|
||||
form
|
||||
label.hide.userId(type="text" value=user._id)
|
||||
label
|
||||
| {{_ 'fullname'}}
|
||||
input.js-profile-fullname(type="text" value=user.profile.fullname autofocus)
|
||||
label
|
||||
| {{_ 'username'}}
|
||||
span.error.hide.username-taken
|
||||
| {{_ 'error-username-taken'}}
|
||||
input.js-profile-username(type="text" value=user.username)
|
||||
label
|
||||
| {{_ 'email'}}
|
||||
span.error.hide.email-taken
|
||||
| {{_ 'error-email-taken'}}
|
||||
input.js-profile-email(type="email" value="{{user.emails.[0].address}}")
|
||||
label
|
||||
| {{_ 'admin'}}
|
||||
select.select-role.js-profile-isadmin
|
||||
option(value="false") {{_ 'no'}}
|
||||
option(value="true" selected="{{user.isAdmin}}") {{_ 'yes'}}
|
||||
label
|
||||
| {{_ 'active'}}
|
||||
select.select-active.js-profile-isactive
|
||||
option(value="false") {{_ 'yes'}}
|
||||
option(value="true" selected="{{user.loginDisabled}}") {{_ 'no'}}
|
||||
hr
|
||||
label
|
||||
| {{_ 'password'}}
|
||||
input.js-profile-password(type="password")
|
||||
|
||||
input.primary.wide(type="submit" value="{{_ 'save'}}")
|
||||
@@ -0,0 +1,158 @@
|
||||
const usersPerPage = 25;
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
mixins() {
|
||||
return [Mixins.InfiniteScrolling];
|
||||
},
|
||||
onCreated() {
|
||||
this.error = new ReactiveVar('');
|
||||
this.loading = new ReactiveVar(false);
|
||||
this.people = new ReactiveVar(true);
|
||||
|
||||
this.page = new ReactiveVar(1);
|
||||
this.loadNextPageLocked = false;
|
||||
this.callFirstWith(null, 'resetNextPeak');
|
||||
this.autorun(() => {
|
||||
const limit = this.page.get() * usersPerPage;
|
||||
|
||||
this.subscribe('people', limit, () => {
|
||||
this.loadNextPageLocked = false;
|
||||
const nextPeakBefore = this.callFirstWith(null, 'getNextPeak');
|
||||
this.calculateNextPeak();
|
||||
const nextPeakAfter = this.callFirstWith(null, 'getNextPeak');
|
||||
if (nextPeakBefore === nextPeakAfter) {
|
||||
this.callFirstWith(null, 'resetNextPeak');
|
||||
}
|
||||
});
|
||||
});
|
||||
},
|
||||
loadNextPage() {
|
||||
if (this.loadNextPageLocked === false) {
|
||||
this.page.set(this.page.get() + 1);
|
||||
this.loadNextPageLocked = true;
|
||||
}
|
||||
},
|
||||
calculateNextPeak() {
|
||||
const element = this.find('.main-body');
|
||||
if (element) {
|
||||
const altitude = element.scrollHeight;
|
||||
this.callFirstWith(this, 'setNextPeak', altitude);
|
||||
}
|
||||
},
|
||||
reachNextPeak() {
|
||||
this.loadNextPage();
|
||||
},
|
||||
setError(error) {
|
||||
this.error.set(error);
|
||||
},
|
||||
setLoading(w) {
|
||||
this.loading.set(w);
|
||||
},
|
||||
peopleList() {
|
||||
return Users.find({}, {
|
||||
fields: {_id: true},
|
||||
});
|
||||
},
|
||||
}).register('people');
|
||||
|
||||
Template.peopleRow.helpers({
|
||||
userData() {
|
||||
const userCollection = this.esSearch ? ESSearchResults : Users;
|
||||
return userCollection.findOne(this.userId);
|
||||
},
|
||||
});
|
||||
|
||||
Template.editUserPopup.helpers({
|
||||
user() {
|
||||
return Users.findOne(this.userId);
|
||||
},
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
},
|
||||
user() {
|
||||
return Users.findOne(this.userId);
|
||||
},
|
||||
events() {
|
||||
return [{
|
||||
'click a.edit-user': Popup.open('editUser'),
|
||||
}];
|
||||
},
|
||||
}).register('peopleRow');
|
||||
|
||||
Template.editUserPopup.events({
|
||||
submit(evt, tpl) {
|
||||
evt.preventDefault();
|
||||
const user = Users.findOne(this.userId);
|
||||
const fullname = tpl.find('.js-profile-fullname').value.trim();
|
||||
const username = tpl.find('.js-profile-username').value.trim();
|
||||
const password = tpl.find('.js-profile-password').value;
|
||||
const isAdmin = tpl.find('.js-profile-isadmin').value.trim();
|
||||
const isActive = tpl.find('.js-profile-isactive').value.trim();
|
||||
const email = tpl.find('.js-profile-email').value.trim();
|
||||
|
||||
const isChangePassword = password.length > 0;
|
||||
const isChangeUserName = username !== user.username;
|
||||
const isChangeEmail = email.toLowerCase() !== user.emails[0].address.toLowerCase();
|
||||
|
||||
Users.update(this.userId, {
|
||||
$set: {
|
||||
'profile.fullname': fullname,
|
||||
'isAdmin': isAdmin === 'true',
|
||||
'loginDisabled': isActive === 'true',
|
||||
},
|
||||
});
|
||||
|
||||
if(isChangePassword){
|
||||
Meteor.call('setPassword', password, this.userId);
|
||||
}
|
||||
|
||||
if (isChangeUserName && isChangeEmail) {
|
||||
Meteor.call('setUsernameAndEmail', username, email.toLowerCase(), this.userId, function (error) {
|
||||
const usernameMessageElement = tpl.$('.username-taken');
|
||||
const emailMessageElement = tpl.$('.email-taken');
|
||||
if (error) {
|
||||
const errorElement = error.error;
|
||||
if (errorElement === 'username-already-taken') {
|
||||
usernameMessageElement.show();
|
||||
emailMessageElement.hide();
|
||||
} else if (errorElement === 'email-already-taken') {
|
||||
usernameMessageElement.hide();
|
||||
emailMessageElement.show();
|
||||
}
|
||||
} else {
|
||||
usernameMessageElement.hide();
|
||||
emailMessageElement.hide();
|
||||
Popup.close();
|
||||
}
|
||||
});
|
||||
} else if (isChangeUserName) {
|
||||
Meteor.call('setUsername', username, this.userId, function (error) {
|
||||
const usernameMessageElement = tpl.$('.username-taken');
|
||||
if (error) {
|
||||
const errorElement = error.error;
|
||||
if (errorElement === 'username-already-taken') {
|
||||
usernameMessageElement.show();
|
||||
}
|
||||
} else {
|
||||
usernameMessageElement.hide();
|
||||
Popup.close();
|
||||
}
|
||||
});
|
||||
} else if (isChangeEmail) {
|
||||
Meteor.call('setEmail', email.toLowerCase(), this.userId, function (error) {
|
||||
const emailMessageElement = tpl.$('.email-taken');
|
||||
if (error) {
|
||||
const errorElement = error.error;
|
||||
if (errorElement === 'email-already-taken') {
|
||||
emailMessageElement.show();
|
||||
}
|
||||
} else {
|
||||
emailMessageElement.hide();
|
||||
Popup.close();
|
||||
}
|
||||
});
|
||||
} else Popup.close();
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,15 @@
|
||||
.main-body
|
||||
overflow: scroll;
|
||||
|
||||
table
|
||||
font-family: arial, sans-serif;
|
||||
border-collapse: collapse;
|
||||
width: 100%;
|
||||
|
||||
td, th
|
||||
border: 1px solid #d2d0d0;
|
||||
text-align: left;
|
||||
padding: 8px;
|
||||
|
||||
tr:nth-child(even)
|
||||
background-color: #dddddd;
|
||||
@@ -14,6 +14,8 @@ template(name="setting")
|
||||
a.js-setting-menu(data-id="email-setting") {{_ 'email'}}
|
||||
li
|
||||
a.js-setting-menu(data-id="account-setting") {{_ 'accounts'}}
|
||||
li
|
||||
a.js-setting-menu(data-id="announcement-setting") {{_ 'admin-announcement'}}
|
||||
.main-body
|
||||
if loading.get
|
||||
+spinner
|
||||
@@ -23,6 +25,8 @@ template(name="setting")
|
||||
+email
|
||||
else if accountSetting.get
|
||||
+accountSettings
|
||||
else if announcementSetting.get
|
||||
+announcementSettings
|
||||
|
||||
template(name="general")
|
||||
ul#registration-setting.setting-detail
|
||||
@@ -85,6 +89,9 @@ template(name='email')
|
||||
li
|
||||
button.js-save.primary {{_ 'save'}}
|
||||
|
||||
li
|
||||
button.js-send-smtp-test-email.primary {{_ 'send-smtp-test'}}
|
||||
|
||||
template(name='accountSettings')
|
||||
ul#account-setting.setting-detail
|
||||
li.smtp-form
|
||||
@@ -96,3 +103,19 @@ template(name='accountSettings')
|
||||
span {{_ 'no'}}
|
||||
li
|
||||
button.js-accounts-save.primary {{_ 'save'}}
|
||||
|
||||
template(name='announcementSettings')
|
||||
ul#announcement-setting.setting-detail
|
||||
li
|
||||
a.flex.js-toggle-activemessage
|
||||
.materialCheckBox(class="{{#if currentSetting.enabled}}is-checked{{/if}}")
|
||||
|
||||
span {{_ 'admin-announcement-active'}}
|
||||
li
|
||||
.admin-announcement(class="{{#if currentSetting.enabled}}{{else}}hide{{/if}}")
|
||||
ul
|
||||
li
|
||||
.title {{_ 'admin-announcement-title'}}
|
||||
textarea#admin-announcement.form-control= currentSetting.body
|
||||
li
|
||||
button.js-announcement-save.primary {{_ 'save'}}
|
||||
@@ -1,7 +1,3 @@
|
||||
Meteor.subscribe('setting');
|
||||
Meteor.subscribe('mailServer');
|
||||
Meteor.subscribe('accountSettings');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.error = new ReactiveVar('');
|
||||
@@ -9,6 +5,12 @@ BlazeComponent.extendComponent({
|
||||
this.generalSetting = new ReactiveVar(true);
|
||||
this.emailSetting = new ReactiveVar(false);
|
||||
this.accountSetting = new ReactiveVar(false);
|
||||
this.announcementSetting = new ReactiveVar(false);
|
||||
|
||||
Meteor.subscribe('setting');
|
||||
Meteor.subscribe('mailServer');
|
||||
Meteor.subscribe('accountSettings');
|
||||
Meteor.subscribe('announcements');
|
||||
},
|
||||
|
||||
setError(error) {
|
||||
@@ -65,6 +67,7 @@ BlazeComponent.extendComponent({
|
||||
this.generalSetting.set('registration-setting' === targetID);
|
||||
this.emailSetting.set('email-setting' === targetID);
|
||||
this.accountSetting.set('account-setting' === targetID);
|
||||
this.announcementSetting.set('announcement-setting' === targetID);
|
||||
}
|
||||
},
|
||||
|
||||
@@ -113,7 +116,7 @@ BlazeComponent.extendComponent({
|
||||
const from = this.checkField('#mail-server-from');
|
||||
const tls = $('#mail-server-tls.is-checked').length > 0;
|
||||
Settings.update(Settings.findOne()._id, {$set:{'mailServer.host':host, 'mailServer.port': port, 'mailServer.username': username,
|
||||
'mailServer.password': password, 'mailServer.enableTLS': tls, 'mailServer.from': from}});
|
||||
'mailServer.password': password, 'mailServer.enableTLS': tls, 'mailServer.from': from}});
|
||||
} catch (e) {
|
||||
return;
|
||||
} finally {
|
||||
@@ -122,6 +125,21 @@ BlazeComponent.extendComponent({
|
||||
|
||||
},
|
||||
|
||||
sendSMTPTestEmail() {
|
||||
Meteor.call('sendSMTPTestEmail', (err, ret) => {
|
||||
if (!err && ret) { /* eslint-disable no-console */
|
||||
const message = `${TAPi18n.__(ret.message)}: ${ret.email}`;
|
||||
console.log(message);
|
||||
alert(message);
|
||||
} else {
|
||||
const reason = err.reason || '';
|
||||
const message = `${TAPi18n.__(err.error)}\n${reason}`;
|
||||
console.log(message, err);
|
||||
alert(message);
|
||||
} /* eslint-enable no-console */
|
||||
});
|
||||
},
|
||||
|
||||
events(){
|
||||
return [{
|
||||
'click a.js-toggle-registration': this.toggleRegistration,
|
||||
@@ -130,6 +148,7 @@ BlazeComponent.extendComponent({
|
||||
'click a.js-toggle-board-choose': this.checkBoard,
|
||||
'click button.js-email-invite': this.inviteThroughEmail,
|
||||
'click button.js-save': this.saveMailServerInfo,
|
||||
'click button.js-send-smtp-test-email': this.sendSMTPTestEmail,
|
||||
}];
|
||||
},
|
||||
}).register('setting');
|
||||
@@ -152,3 +171,45 @@ BlazeComponent.extendComponent({
|
||||
}];
|
||||
},
|
||||
}).register('accountSettings');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.loading = new ReactiveVar(false);
|
||||
},
|
||||
|
||||
setLoading(w) {
|
||||
this.loading.set(w);
|
||||
},
|
||||
|
||||
currentSetting(){
|
||||
return Announcements.findOne();
|
||||
},
|
||||
|
||||
saveMessage() {
|
||||
const message = $('#admin-announcement').val().trim();
|
||||
Announcements.update(Announcements.findOne()._id, {
|
||||
$set: { 'body': message },
|
||||
});
|
||||
},
|
||||
|
||||
toggleActive(){
|
||||
this.setLoading(true);
|
||||
const isActive = this.currentSetting().enabled;
|
||||
Announcements.update(Announcements.findOne()._id, {
|
||||
$set:{ 'enabled': !isActive},
|
||||
});
|
||||
this.setLoading(false);
|
||||
if(isActive){
|
||||
$('.admin-announcement').slideUp();
|
||||
}else{
|
||||
$('.admin-announcement').slideDown();
|
||||
}
|
||||
},
|
||||
|
||||
events() {
|
||||
return [{
|
||||
'click a.js-toggle-activemessage': this.toggleActive,
|
||||
'click button.js-announcement-save': this.saveMessage,
|
||||
}];
|
||||
},
|
||||
}).register('announcementSettings');
|
||||
@@ -61,10 +61,11 @@
|
||||
.is-checked
|
||||
border-bottom: 2px solid #2980b9;
|
||||
border-right: 2px solid #2980b9;
|
||||
|
||||
span
|
||||
|
||||
span
|
||||
padding: 0 0.5rem
|
||||
|
||||
|
||||
.admin-announcement,
|
||||
.invite-people
|
||||
padding-left 20px;
|
||||
li
|
||||
|
||||
@@ -9,13 +9,14 @@ template(name="settingHeaderBar")
|
||||
a.setting-header-btn.settings(href="{{pathFor 'setting'}}")
|
||||
i.fa(class="fa-cog")
|
||||
span {{_ 'settings'}}
|
||||
|
||||
a.setting-header-btn.people(href="{{pathFor 'people'}}")
|
||||
i.fa(class="fa-users")
|
||||
span {{_ 'people'}}
|
||||
|
||||
a.setting-header-btn.informations(href="{{pathFor 'information'}}")
|
||||
i.fa(class="fa-info-circle")
|
||||
span {{_ 'info'}}
|
||||
//TODO
|
||||
// a.setting-header-btn.people
|
||||
// i.fa(class="fa-users")
|
||||
// span {{_ 'people'}}
|
||||
|
||||
else
|
||||
a.setting-header-btn.js-log-in(
|
||||
|
||||
@@ -82,23 +82,27 @@ template(name="memberPopup")
|
||||
ul.pop-over-list
|
||||
li
|
||||
a.js-filter-member {{_ 'filter-cards'}}
|
||||
if currentUser.isBoardAdmin
|
||||
unless isSandstorm
|
||||
unless isSandstorm
|
||||
if currentUser.isBoardAdmin
|
||||
li
|
||||
a.js-change-role
|
||||
| {{_ 'change-permissions'}}
|
||||
span.quiet (#{memberType})
|
||||
li
|
||||
if $eq currentUser._id userId
|
||||
a.js-leave-member {{_ 'leave-board'}}
|
||||
else
|
||||
a.js-remove-member {{_ 'remove-from-board'}}
|
||||
li
|
||||
if $eq currentUser._id userId
|
||||
a.js-leave-member {{_ 'leave-board'}}
|
||||
else if currentUser.isBoardAdmin
|
||||
a.js-remove-member {{_ 'remove-from-board'}}
|
||||
|
||||
|
||||
template(name="removeMemberPopup")
|
||||
p {{_ 'remove-member-pop' name=user.profile.fullname username=user.username boardTitle=board.title}}
|
||||
button.js-confirm.negate.full(type="submit") {{_ 'remove-member'}}
|
||||
|
||||
template(name="leaveBoardPopup")
|
||||
p {{_ 'leave-board-pop' boardTitle=board.title}}
|
||||
button.js-confirm.negate.full(type="submit") {{_ 'leave-board'}}
|
||||
|
||||
template(name="addMemberPopup")
|
||||
.js-search-member
|
||||
+esInput(index="users")
|
||||
|
||||
@@ -153,15 +153,13 @@ Template.memberPopup.events({
|
||||
Boards.findOne(boardId).removeMember(memberId);
|
||||
Popup.close();
|
||||
}),
|
||||
'click .js-leave-member'() {
|
||||
'click .js-leave-member': Popup.afterConfirm('leaveBoard', () => {
|
||||
const boardId = Session.get('currentBoard');
|
||||
Meteor.call('quitBoard', boardId, (err, ret) => {
|
||||
if (!ret && ret) {
|
||||
Popup.close();
|
||||
FlowRouter.go('home');
|
||||
}
|
||||
Popup.close();
|
||||
FlowRouter.go('home');
|
||||
});
|
||||
},
|
||||
}),
|
||||
});
|
||||
|
||||
Template.removeMemberPopup.helpers({
|
||||
@@ -173,6 +171,12 @@ Template.removeMemberPopup.helpers({
|
||||
},
|
||||
});
|
||||
|
||||
Template.leaveBoardPopup.helpers({
|
||||
board() {
|
||||
return Boards.findOne(Session.get('currentBoard'));
|
||||
},
|
||||
});
|
||||
|
||||
Template.membersWidget.helpers({
|
||||
isInvited() {
|
||||
const user = Meteor.user();
|
||||
|
||||
@@ -25,3 +25,14 @@ template(name="archivesSidebar")
|
||||
= title
|
||||
else
|
||||
li.no-items-message {{_ 'no-archived-lists'}}
|
||||
|
||||
+tabContent(slug="swimlanes")
|
||||
ul.archived-lists
|
||||
each archivedSwimlanes
|
||||
li.archived-lists-item
|
||||
if currentUser.isBoardMember
|
||||
button.js-restore-swimlane
|
||||
i.fa.fa-undo
|
||||
= title
|
||||
else
|
||||
li.no-items-message {{_ 'no-archived-swimlanes'}}
|
||||
@@ -3,6 +3,7 @@ BlazeComponent.extendComponent({
|
||||
return [
|
||||
{ name: TAPi18n.__('cards'), slug: 'cards' },
|
||||
{ name: TAPi18n.__('lists'), slug: 'lists' },
|
||||
{ name: TAPi18n.__('swimlanes'), slug: 'swimlanes' },
|
||||
];
|
||||
},
|
||||
|
||||
@@ -20,6 +21,13 @@ BlazeComponent.extendComponent({
|
||||
});
|
||||
},
|
||||
|
||||
archivedSwimlanes() {
|
||||
return Swimlanes.find({
|
||||
archived: true,
|
||||
boardId: Session.get('currentBoard'),
|
||||
});
|
||||
},
|
||||
|
||||
cardIsInArchivedList() {
|
||||
return this.currentData().list().archived;
|
||||
},
|
||||
@@ -32,7 +40,9 @@ BlazeComponent.extendComponent({
|
||||
return [{
|
||||
'click .js-restore-card'() {
|
||||
const card = this.currentData();
|
||||
card.restore();
|
||||
if(card.canBeRestored()){
|
||||
card.restore();
|
||||
}
|
||||
},
|
||||
'click .js-delete-card': Popup.afterConfirm('cardDelete', function() {
|
||||
const cardId = this._id;
|
||||
@@ -43,6 +53,10 @@ BlazeComponent.extendComponent({
|
||||
const list = this.currentData();
|
||||
list.restore();
|
||||
},
|
||||
'click .js-restore-swimlane'() {
|
||||
const swimlane = this.currentData();
|
||||
swimlane.restore();
|
||||
},
|
||||
}];
|
||||
},
|
||||
}).register('archivesSidebar');
|
||||
@@ -59,7 +59,7 @@ template(name="multiselectionSidebar")
|
||||
if name
|
||||
= name
|
||||
else
|
||||
span.quiet {{_ "label-default" color}}
|
||||
span.quiet {{_ "label-default" (_ (concat "color-" color))}}
|
||||
if allSelectedElementHave 'label' _id
|
||||
i.fa.fa-check
|
||||
else if someSelectedElementHave 'label' _id
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
template(name="swimlaneHeader")
|
||||
.swimlane-header-wrap
|
||||
+inlinedForm
|
||||
+editSwimlaneTitleForm
|
||||
else
|
||||
.swimlane-header(
|
||||
class="{{#if currentUser.isBoardMember}}js-open-inlined-form is-editable{{/if}}")
|
||||
= title
|
||||
.swimlane-header-menu
|
||||
unless currentUser.isCommentOnly
|
||||
a.fa.fa-navicon.js-open-swimlane-menu
|
||||
|
||||
template(name="editSwimlaneTitleForm")
|
||||
.list-composer
|
||||
input.list-name-input.full-line(type="text" value=title autofocus)
|
||||
.edit-controls.clearfix
|
||||
button.primary.confirm(type="submit") {{_ 'save'}}
|
||||
a.fa.fa-times-thin.js-close-inlined-form
|
||||
|
||||
template(name="swimlaneActionPopup")
|
||||
unless currentUser.isCommentOnly
|
||||
ul.pop-over-list
|
||||
li: a.js-close-swimlane {{_ 'archive-swimlane'}}
|
||||
@@ -0,0 +1,25 @@
|
||||
BlazeComponent.extendComponent({
|
||||
editTitle(evt) {
|
||||
evt.preventDefault();
|
||||
const newTitle = this.childComponents('inlinedForm')[0].getValue().trim();
|
||||
const swimlane = this.currentData();
|
||||
if (newTitle) {
|
||||
swimlane.rename(newTitle.trim());
|
||||
}
|
||||
},
|
||||
|
||||
events() {
|
||||
return [{
|
||||
'click .js-open-swimlane-menu': Popup.open('swimlaneAction'),
|
||||
submit: this.editTitle,
|
||||
}];
|
||||
},
|
||||
}).register('swimlaneHeader');
|
||||
|
||||
Template.swimlaneActionPopup.events({
|
||||
'click .js-close-swimlane' (evt) {
|
||||
evt.preventDefault();
|
||||
this.archive();
|
||||
Popup.close();
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,75 @@
|
||||
template(name="swimlane")
|
||||
.swimlane.js-lists
|
||||
+swimlaneHeader
|
||||
if isMiniScreen
|
||||
if currentList
|
||||
+list(currentList)
|
||||
else
|
||||
each currentBoard.lists
|
||||
+miniList(this)
|
||||
if currentUser.isBoardMember
|
||||
+addListForm
|
||||
else
|
||||
each currentBoard.lists
|
||||
+list(this)
|
||||
if currentCardIsInThisList _id ../_id
|
||||
+cardDetails(currentCard)
|
||||
if currentUser.isBoardMember
|
||||
+addListAndSwimlaneForm
|
||||
|
||||
template(name="listsGroup")
|
||||
.swimlane.js-lists
|
||||
if isMiniScreen
|
||||
if currentList
|
||||
+list(currentList)
|
||||
else
|
||||
each currentBoard.lists
|
||||
+miniList(this)
|
||||
if currentUser.isBoardMember
|
||||
+addListForm
|
||||
else
|
||||
each currentBoard.lists
|
||||
+list(this)
|
||||
if currentCardIsInThisList _id null
|
||||
+cardDetails(currentCard)
|
||||
if currentUser.isBoardMember
|
||||
+addListForm
|
||||
|
||||
template(name="addListAndSwimlaneForm")
|
||||
.list.js-list.list-composer.js-list-composer
|
||||
.list-header
|
||||
+inlinedForm(autoclose=false)
|
||||
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
|
||||
autocomplete="off" autofocus)
|
||||
.edit-controls.clearfix
|
||||
button.primary.confirm(type="submit") {{_ 'save'}}
|
||||
a.fa.fa-times-thin.js-close-inlined-form
|
||||
else
|
||||
a.open-list-composer.js-open-inlined-form
|
||||
i.fa.fa-plus
|
||||
| {{_ 'add-list'}}
|
||||
.list-header
|
||||
+inlinedForm(autoclose=false)
|
||||
input.swimlane-name-input.full-line(type="text" placeholder="{{_ 'add-swimlane'}}"
|
||||
autocomplete="off" autofocus)
|
||||
.edit-controls.clearfix
|
||||
button.primary.confirm(type="submit") {{_ 'save'}}
|
||||
a.fa.fa-times-thin.js-close-inlined-form
|
||||
else
|
||||
a.open-list-composer.js-open-inlined-form
|
||||
i.fa.fa-plus
|
||||
| {{_ 'add-swimlane'}}
|
||||
|
||||
template(name="addListForm")
|
||||
.list.js-list.list-composer.js-list-composer
|
||||
.list-header
|
||||
+inlinedForm(autoclose=false)
|
||||
input.list-name-input.full-line(type="text" placeholder="{{_ 'add-list'}}"
|
||||
autocomplete="off" autofocus)
|
||||
.edit-controls.clearfix
|
||||
button.primary.confirm(type="submit") {{_ 'save'}}
|
||||
a.fa.fa-times-thin.js-close-inlined-form
|
||||
else
|
||||
a.open-list-composer.js-open-inlined-form
|
||||
i.fa.fa-plus
|
||||
| {{_ 'add-list'}}
|
||||
@@ -0,0 +1,229 @@
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.draggingActive = new ReactiveVar(false);
|
||||
|
||||
this._isDragging = false;
|
||||
this._lastDragPositionX = 0;
|
||||
},
|
||||
|
||||
openNewListForm() {
|
||||
this.childComponents('addListForm')[0].open();
|
||||
},
|
||||
|
||||
id() {
|
||||
return this._id;
|
||||
},
|
||||
|
||||
// XXX Flow components allow us to avoid creating these two setter methods by
|
||||
// exposing a public API to modify the component state. We need to investigate
|
||||
// best practices here.
|
||||
setIsDragging(bool) {
|
||||
this.draggingActive.set(bool);
|
||||
},
|
||||
|
||||
scrollLeft(position = 0) {
|
||||
const lists = this.$('.js-lists');
|
||||
lists && lists.animate({
|
||||
scrollLeft: position,
|
||||
});
|
||||
},
|
||||
|
||||
currentCardIsInThisList(listId, swimlaneId) {
|
||||
const currentCard = Cards.findOne(Session.get('currentCard'));
|
||||
const currentBoardId = Session.get('currentBoard');
|
||||
const board = Boards.findOne(currentBoardId);
|
||||
if (board.view === 'board-view-lists')
|
||||
return currentCard && currentCard.listId === listId;
|
||||
else if (board.view === 'board-view-swimlanes')
|
||||
return currentCard && currentCard.listId === listId && currentCard.swimlaneId === swimlaneId;
|
||||
else
|
||||
return false;
|
||||
},
|
||||
|
||||
events() {
|
||||
return [{
|
||||
// Click-and-drag action
|
||||
'mousedown .board-canvas'(evt) {
|
||||
// Translating the board canvas using the click-and-drag action can
|
||||
// conflict with the build-in browser mechanism to select text. We
|
||||
// define a list of elements in which we disable the dragging because
|
||||
// the user will legitimately expect to be able to select some text with
|
||||
// his mouse.
|
||||
const noDragInside = ['a', 'input', 'textarea', 'p', '.js-list-header'];
|
||||
if ($(evt.target).closest(noDragInside.join(',')).length === 0 && this.$('.swimlane').prop('clientHeight') > evt.offsetY) {
|
||||
this._isDragging = true;
|
||||
this._lastDragPositionX = evt.clientX;
|
||||
}
|
||||
},
|
||||
'mouseup'() {
|
||||
if (this._isDragging) {
|
||||
this._isDragging = false;
|
||||
}
|
||||
},
|
||||
'mousemove'(evt) {
|
||||
if (this._isDragging) {
|
||||
// Update the canvas position
|
||||
this.listsDom.scrollLeft -= evt.clientX - this._lastDragPositionX;
|
||||
this._lastDragPositionX = evt.clientX;
|
||||
// Disable browser text selection while dragging
|
||||
evt.stopPropagation();
|
||||
evt.preventDefault();
|
||||
// Don't close opened card or inlined form at the end of the
|
||||
// click-and-drag.
|
||||
EscapeActions.executeUpTo('popup-close');
|
||||
EscapeActions.preventNextClick();
|
||||
}
|
||||
},
|
||||
}];
|
||||
},
|
||||
}).register('swimlane');
|
||||
|
||||
Template.swimlane.onRendered(function() {
|
||||
const self = BlazeComponent.getComponentForElement(this.firstNode);
|
||||
|
||||
self.listsDom = this.find('.js-lists');
|
||||
|
||||
if (!Session.get('currentCard')) {
|
||||
self.scrollLeft();
|
||||
}
|
||||
|
||||
// We want to animate the card details window closing. We rely on CSS
|
||||
// transition for the actual animation.
|
||||
self.listsDom._uihooks = {
|
||||
removeElement(node) {
|
||||
const removeNode = _.once(() => {
|
||||
node.parentNode.removeChild(node);
|
||||
});
|
||||
if ($(node).hasClass('js-card-details')) {
|
||||
$(node).css({
|
||||
flexBasis: 0,
|
||||
padding: 0,
|
||||
});
|
||||
$(self.listsDom).one(CSSEvents.transitionend, removeNode);
|
||||
} else {
|
||||
removeNode();
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
$(self.listsDom).sortable({
|
||||
tolerance: 'pointer',
|
||||
helper: 'clone',
|
||||
handle: '.js-list-header',
|
||||
items: '.js-list:not(.js-list-composer)',
|
||||
placeholder: 'list placeholder',
|
||||
distance: 7,
|
||||
start(evt, ui) {
|
||||
ui.placeholder.height(ui.helper.height());
|
||||
Popup.close();
|
||||
},
|
||||
stop() {
|
||||
$(self.listsDom).find('.js-list:not(.js-list-composer)').each(
|
||||
(i, list) => {
|
||||
const data = Blaze.getData(list);
|
||||
Lists.update(data._id, {
|
||||
$set: {
|
||||
sort: i,
|
||||
},
|
||||
});
|
||||
}
|
||||
);
|
||||
},
|
||||
});
|
||||
|
||||
function userIsMember() {
|
||||
return Meteor.user() && Meteor.user().isBoardMember();
|
||||
}
|
||||
|
||||
// Disable drag-dropping while in multi-selection mode, or if the current user
|
||||
// is not a board member
|
||||
self.autorun(() => {
|
||||
const $listDom = $(self.listsDom);
|
||||
if ($listDom.data('sortable')) {
|
||||
$(self.listsDom).sortable('option', 'disabled',
|
||||
MultiSelection.isActive() || !userIsMember());
|
||||
}
|
||||
});
|
||||
|
||||
// If there is no data in the board (ie, no lists) we autofocus the list
|
||||
// creation form by clicking on the corresponding element.
|
||||
const currentBoard = Boards.findOne(Session.get('currentBoard'));
|
||||
if (userIsMember() && currentBoard.lists().count() === 0) {
|
||||
self.openNewListForm();
|
||||
}
|
||||
});
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
// Proxy
|
||||
open() {
|
||||
this.childComponents('inlinedForm')[0].open();
|
||||
},
|
||||
|
||||
events() {
|
||||
return [{
|
||||
submit(evt) {
|
||||
evt.preventDefault();
|
||||
const titleInput = this.find('.list-name-input');
|
||||
const title = titleInput.value.trim();
|
||||
if (title) {
|
||||
Lists.insert({
|
||||
title,
|
||||
boardId: Session.get('currentBoard'),
|
||||
sort: $('.list').length,
|
||||
});
|
||||
|
||||
titleInput.value = '';
|
||||
titleInput.focus();
|
||||
}
|
||||
},
|
||||
}];
|
||||
},
|
||||
}).register('addListForm');
|
||||
|
||||
BlazeComponent.extendComponent({
|
||||
// Proxy
|
||||
open() {
|
||||
this.childComponents('inlinedForm')[0].open();
|
||||
},
|
||||
|
||||
events() {
|
||||
return [{
|
||||
submit(evt) {
|
||||
evt.preventDefault();
|
||||
let titleInput = this.find('.list-name-input');
|
||||
if (titleInput) {
|
||||
const title = titleInput.value.trim();
|
||||
if (title) {
|
||||
Lists.insert({
|
||||
title,
|
||||
boardId: Session.get('currentBoard'),
|
||||
sort: $('.list').length,
|
||||
});
|
||||
|
||||
titleInput.value = '';
|
||||
titleInput.focus();
|
||||
}
|
||||
} else {
|
||||
titleInput = this.find('.swimlane-name-input');
|
||||
const title = titleInput.value.trim();
|
||||
if (title) {
|
||||
Swimlanes.insert({
|
||||
title,
|
||||
boardId: Session.get('currentBoard'),
|
||||
sort: $('.swimlane').length,
|
||||
});
|
||||
|
||||
titleInput.value = '';
|
||||
titleInput.focus();
|
||||
}
|
||||
}
|
||||
},
|
||||
}];
|
||||
},
|
||||
}).register('addListAndSwimlaneForm');
|
||||
|
||||
Template.swimlane.helpers({
|
||||
canSeeAddList() {
|
||||
return Meteor.user() && Meteor.user().isBoardMember() && !Meteor.user().isCommentOnly();
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,24 @@
|
||||
@import 'nib'
|
||||
|
||||
.swimlane-header-wrap
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
flex: 0 0 50px;
|
||||
|
||||
.swimlane-header
|
||||
writing-mode: sideways-lr;
|
||||
font-size: 14px;
|
||||
line-height: 50px;
|
||||
margin: 0;
|
||||
font-weight: bold;
|
||||
min-height: 9px;
|
||||
min-width: 30px;
|
||||
overflow: hidden;
|
||||
-o-text-overflow: ellipsis;
|
||||
text-overflow: ellipsis;
|
||||
word-wrap: break-word;
|
||||
text-align: center;
|
||||
|
||||
.swimlane-header-menu
|
||||
position: absolute
|
||||
padding: 20px 20px
|
||||
@@ -71,10 +71,10 @@ template(name="cardMemberPopup")
|
||||
.info
|
||||
h3= user.profile.fullname
|
||||
p.quiet @{{ user.username }}
|
||||
if currentUser.isBoardMember
|
||||
ul.pop-over-list
|
||||
li: a.js-remove-member {{_ 'remove-member-from-card'}}
|
||||
ul.pop-over-list
|
||||
if currentUser.isNotCommentOnly
|
||||
li: a.js-remove-member {{_ 'remove-member-from-card'}}
|
||||
|
||||
if $eq currentUser._id user._id
|
||||
with currentUser
|
||||
li: a.js-edit-profile {{_ 'edit-profile'}}
|
||||
if $eq currentUser._id user._id
|
||||
with currentUser
|
||||
li: a.js-edit-profile {{_ 'edit-profile'}}
|
||||
@@ -1,5 +1,3 @@
|
||||
Meteor.subscribe('my-avatars');
|
||||
|
||||
Template.userAvatar.helpers({
|
||||
userData() {
|
||||
// We need to handle a special case for the search results provided by the
|
||||
@@ -54,6 +52,8 @@ Template.userAvatarInitials.helpers({
|
||||
BlazeComponent.extendComponent({
|
||||
onCreated() {
|
||||
this.error = new ReactiveVar('');
|
||||
|
||||
Meteor.subscribe('my-avatars');
|
||||
},
|
||||
|
||||
avatarUrlOptions() {
|
||||
|
||||
@@ -3,10 +3,11 @@ template(name="headerUserBar")
|
||||
a.header-user-bar-name.js-open-header-member-menu
|
||||
.header-user-bar-avatar
|
||||
+userAvatar(userId=currentUser._id)
|
||||
if currentUser.profile.fullname
|
||||
= currentUser.profile.fullname
|
||||
else
|
||||
= currentUser.username
|
||||
unless isMiniScreen
|
||||
if currentUser.profile.fullname
|
||||
= currentUser.profile.fullname
|
||||
else
|
||||
= currentUser.username
|
||||
|
||||
template(name="memberMenuPopup")
|
||||
ul.pop-over-list
|
||||
|
||||
@@ -35,14 +35,16 @@ Template.editProfilePopup.events({
|
||||
const email = tpl.find('.js-profile-email').value.trim();
|
||||
let isChangeUserName = false;
|
||||
let isChangeEmail = false;
|
||||
Users.update(Meteor.userId(), {$set: {
|
||||
'profile.fullname': fullname,
|
||||
'profile.initials': initials,
|
||||
}});
|
||||
Users.update(Meteor.userId(), {
|
||||
$set: {
|
||||
'profile.fullname': fullname,
|
||||
'profile.initials': initials,
|
||||
},
|
||||
});
|
||||
isChangeUserName = username !== Meteor.user().username;
|
||||
isChangeEmail = email.toLowerCase() !== Meteor.user().emails[0].address.toLowerCase();
|
||||
if (isChangeUserName && isChangeEmail) {
|
||||
Meteor.call('setUsernameAndEmail', username, email.toLowerCase(), function(error) {
|
||||
Meteor.call('setUsernameAndEmail', username, email.toLowerCase(), Meteor.userId(), function (error) {
|
||||
const usernameMessageElement = tpl.$('.username-taken');
|
||||
const emailMessageElement = tpl.$('.email-taken');
|
||||
if (error) {
|
||||
@@ -61,7 +63,7 @@ Template.editProfilePopup.events({
|
||||
}
|
||||
});
|
||||
} else if (isChangeUserName) {
|
||||
Meteor.call('setUsername', username, function(error) {
|
||||
Meteor.call('setUsername', username, Meteor.userId(), function (error) {
|
||||
const messageElement = tpl.$('.username-taken');
|
||||
if (error) {
|
||||
messageElement.show();
|
||||
@@ -71,7 +73,7 @@ Template.editProfilePopup.events({
|
||||
}
|
||||
});
|
||||
} else if (isChangeEmail) {
|
||||
Meteor.call('setEmail', email.toLowerCase(), function(error) {
|
||||
Meteor.call('setEmail', email.toLowerCase(), Meteor.userId(), function (error) {
|
||||
const messageElement = tpl.$('.email-taken');
|
||||
if (error) {
|
||||
messageElement.show();
|
||||
@@ -105,7 +107,7 @@ Template.editNotificationPopup.events({
|
||||
|
||||
// XXX For some reason the useraccounts autofocus isnt working in this case.
|
||||
// See https://github.com/meteor-useraccounts/core/issues/384
|
||||
Template.changePasswordPopup.onRendered(function() {
|
||||
Template.changePasswordPopup.onRendered(function () {
|
||||
this.find('#at-field-current_password').focus();
|
||||
});
|
||||
|
||||
@@ -114,9 +116,9 @@ Template.changeLanguagePopup.helpers({
|
||||
return _.map(TAPi18n.getLanguages(), (lang, code) => {
|
||||
return {
|
||||
tag: code,
|
||||
name: lang.name === 'br' ? 'Brezhoneg' : lang.name,
|
||||
name: lang.name === 'br' ? 'Brezhoneg' : lang.name === 'ig' ? 'Igbo' : lang.name,
|
||||
};
|
||||
}).sort(function(a, b) {
|
||||
}).sort(function (a, b) {
|
||||
if (a.name === b.name) {
|
||||
return 0;
|
||||
} else {
|
||||
|
||||
@@ -16,6 +16,17 @@ Blaze.registerHelper('currentCard', () => {
|
||||
}
|
||||
});
|
||||
|
||||
Blaze.registerHelper('currentList', () => {
|
||||
const listId = Session.get('currentList');
|
||||
if (listId) {
|
||||
return Lists.findOne(listId);
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
|
||||
Blaze.registerHelper('getUser', (userId) => Users.findOne(userId));
|
||||
|
||||
Blaze.registerHelper('concat', (...args) => args.slice(0, -1).join(''));
|
||||
|
||||
Blaze.registerHelper('isMiniScreen', () => Utils.isMiniScreen());
|
||||
@@ -1,152 +0,0 @@
|
||||
Emoji.values = ['+1', '-1', '100', '1234', '8ball', 'a', 'ab', 'abc', 'abcd',
|
||||
'accept', 'aerial_tramway', 'airplane', 'alarm_clock', 'alien', 'ambulance',
|
||||
'anchor', 'angel', 'anger', 'angry', 'anguished', 'ant', 'apple', 'aquarius',
|
||||
'aries', 'arrow_backward', 'arrow_double_down', 'arrow_double_up', 'arrow_down',
|
||||
'arrow_down_small', 'arrow_forward', 'arrow_heading_down', 'arrow_heading_up',
|
||||
'arrow_left', 'arrow_lower_left', 'arrow_lower_right', 'arrow_right',
|
||||
'arrow_right_hook', 'arrow_up', 'arrow_up_down', 'arrow_up_small',
|
||||
'arrow_upper_left', 'arrow_upper_right', 'arrows_clockwise',
|
||||
'arrows_counterclockwise', 'art', 'articulated_lorry', 'astonished', 'atm', 'b',
|
||||
'baby', 'baby_bottle', 'baby_chick', 'baby_symbol', 'baggage_claim', 'balloon',
|
||||
'ballot_box_with_check', 'bamboo', 'banana', 'bangbang', 'bank', 'bar_chart',
|
||||
'barber', 'baseball', 'basketball', 'bath', 'bathtub', 'battery', 'bear', 'bee',
|
||||
'beer', 'beers', 'beetle', 'beginner', 'bell', 'bento', 'bicyclist', 'bike',
|
||||
'bikini', 'bird', 'birthday', 'black_circle', 'black_joker', 'black_nib',
|
||||
'black_square', 'black_square_button', 'blossom', 'blowfish', 'blue_book',
|
||||
'blue_car', 'blue_heart', 'blush', 'boar', 'boat', 'bomb', 'book', 'bookmark',
|
||||
'bookmark_tabs', 'books', 'boom', 'boot', 'bouquet', 'bow', 'bowling', 'bowtie',
|
||||
'boy', 'bread', 'bride_with_veil', 'bridge_at_night', 'briefcase',
|
||||
'broken_heart', 'bug', 'bulb', 'bullettrain_front', 'bullettrain_side', 'bus',
|
||||
'busstop', 'bust_in_silhouette', 'busts_in_silhouette', 'cactus', 'cake',
|
||||
'calendar', 'calling', 'camel', 'camera', 'cancer', 'candy', 'capital_abcd',
|
||||
'capricorn', 'car', 'card_index', 'carousel_horse', 'cat', 'cat2', 'cd',
|
||||
'chart', 'chart_with_downwards_trend', 'chart_with_upwards_trend',
|
||||
'checkered_flag', 'cherries', 'cherry_blossom', 'chestnut', 'chicken',
|
||||
'children_crossing', 'chocolate_bar', 'christmas_tree', 'church', 'cinema',
|
||||
'circus_tent', 'city_sunrise', 'city_sunset', 'cl', 'clap', 'clapper',
|
||||
'clipboard', 'clock1', 'clock10', 'clock1030', 'clock11', 'clock1130',
|
||||
'clock12', 'clock1230', 'clock130', 'clock2', 'clock230', 'clock3', 'clock330',
|
||||
'clock4', 'clock430', 'clock5', 'clock530', 'clock6', 'clock630', 'clock7',
|
||||
'clock730', 'clock8', 'clock830', 'clock9', 'clock930', 'closed_book',
|
||||
'closed_lock_with_key', 'closed_umbrella', 'cloud', 'clubs', 'cn', 'cocktail',
|
||||
'coffee', 'cold_sweat', 'collision', 'computer', 'confetti_ball', 'confounded',
|
||||
'confused', 'congratulations', 'construction', 'construction_worker',
|
||||
'convenience_store', 'cookie', 'cool', 'cop', 'copyright', 'corn', 'couple',
|
||||
'couple_with_heart', 'couplekiss', 'cow', 'cow2', 'credit_card', 'crocodile',
|
||||
'crossed_flags', 'crown', 'cry', 'crying_cat_face', 'crystal_ball', 'cupid',
|
||||
'curly_loop', 'currency_exchange', 'curry', 'custard', 'customs', 'cyclone',
|
||||
'dancer', 'dancers', 'dango', 'dart', 'dash', 'date', 'de', 'deciduous_tree',
|
||||
'department_store', 'diamond_shape_with_a_dot_inside', 'diamonds',
|
||||
'disappointed', 'disappointed_relieved', 'dizzy', 'dizzy_face', 'do_not_litter',
|
||||
'dog', 'dog2', 'dollar', 'dolls', 'dolphin', 'donut', 'door', 'doughnut',
|
||||
'dragon', 'dragon_face', 'dress', 'dromedary_camel', 'droplet', 'dvd', 'e-mail',
|
||||
'ear', 'ear_of_rice', 'earth_africa', 'earth_americas', 'earth_asia', 'egg',
|
||||
'eggplant', 'eight', 'eight_pointed_black_star', 'eight_spoked_asterisk',
|
||||
'electric_plug', 'elephant', 'email', 'end', 'envelope', 'es', 'euro',
|
||||
'european_castle', 'european_post_office', 'evergreen_tree', 'exclamation',
|
||||
'expressionless', 'eyeglasses', 'eyes', 'facepunch', 'factory', 'fallen_leaf',
|
||||
'family', 'fast_forward', 'fax', 'fearful', 'feelsgood', 'feet', 'ferris_wheel',
|
||||
'file_folder', 'finnadie', 'fire', 'fire_engine', 'fireworks',
|
||||
'first_quarter_moon', 'first_quarter_moon_with_face', 'fish', 'fish_cake',
|
||||
'fishing_pole_and_fish', 'fist', 'five', 'flags', 'flashlight', 'floppy_disk',
|
||||
'flower_playing_cards', 'flushed', 'foggy', 'football', 'fork_and_knife',
|
||||
'fountain', 'four', 'four_leaf_clover', 'fr', 'free', 'fried_shrimp', 'fries',
|
||||
'frog', 'frowning', 'fu', 'fuelpump', 'full_moon', 'full_moon_with_face',
|
||||
'game_die', 'gb', 'gem', 'gemini', 'ghost', 'gift', 'gift_heart', 'girl',
|
||||
'globe_with_meridians', 'goat', 'goberserk', 'godmode', 'golf', 'grapes',
|
||||
'green_apple', 'green_book', 'green_heart', 'grey_exclamation', 'grey_question',
|
||||
'grimacing', 'grin', 'grinning', 'guardsman', 'guitar', 'gun', 'haircut',
|
||||
'hamburger', 'hammer', 'hamster', 'hand', 'handbag', 'hankey', 'hash',
|
||||
'hatched_chick', 'hatching_chick', 'headphones', 'hear_no_evil', 'heart',
|
||||
'heart_decoration', 'heart_eyes', 'heart_eyes_cat', 'heartbeat', 'heartpulse',
|
||||
'hearts', 'heavy_check_mark', 'heavy_division_sign', 'heavy_dollar_sign',
|
||||
'heavy_exclamation_mark', 'heavy_minus_sign', 'heavy_multiplication_x',
|
||||
'heavy_plus_sign', 'helicopter', 'herb', 'hibiscus', 'high_brightness',
|
||||
'high_heel', 'hocho', 'honey_pot', 'honeybee', 'horse', 'horse_racing',
|
||||
'hospital', 'hotel', 'hotsprings', 'hourglass', 'hourglass_flowing_sand',
|
||||
'house', 'house_with_garden', 'hurtrealbad', 'hushed', 'ice_cream', 'icecream',
|
||||
'id', 'ideograph_advantage', 'imp', 'inbox_tray', 'incoming_envelope',
|
||||
'information_desk_person', 'information_source', 'innocent', 'interrobang',
|
||||
'iphone', 'it', 'izakaya_lantern', 'jack_o_lantern', 'japan', 'japanese_castle',
|
||||
'japanese_goblin', 'japanese_ogre', 'jeans', 'joy', 'joy_cat', 'jp', 'key',
|
||||
'keycap_ten', 'kimono', 'kiss', 'kissing', 'kissing_cat', 'kissing_closed_eyes',
|
||||
'kissing_face', 'kissing_heart', 'kissing_smiling_eyes', 'koala', 'koko', 'kr',
|
||||
'large_blue_circle', 'large_blue_diamond', 'large_orange_diamond',
|
||||
'last_quarter_moon', 'last_quarter_moon_with_face', 'laughing', 'leaves',
|
||||
'ledger', 'left_luggage', 'left_right_arrow', 'leftwards_arrow_with_hook',
|
||||
'lemon', 'leo', 'leopard', 'libra', 'light_rail', 'link', 'lips', 'lipstick',
|
||||
'lock', 'lock_with_ink_pen', 'lollipop', 'loop', 'loudspeaker', 'love_hotel',
|
||||
'love_letter', 'low_brightness', 'm', 'mag', 'mag_right', 'mahjong', 'mailbox',
|
||||
'mailbox_closed', 'mailbox_with_mail', 'mailbox_with_no_mail', 'man',
|
||||
'man_with_gua_pi_mao', 'man_with_turban', 'mans_shoe', 'maple_leaf', 'mask',
|
||||
'massage', 'meat_on_bone', 'mega', 'melon', 'memo', 'mens', 'metal', 'metro',
|
||||
'microphone', 'microscope', 'milky_way', 'minibus', 'minidisc',
|
||||
'mobile_phone_off', 'money_with_wings', 'moneybag', 'monkey', 'monkey_face',
|
||||
'monorail', 'moon', 'mortar_board', 'mount_fuji', 'mountain_bicyclist',
|
||||
'mountain_cableway', 'mountain_railway', 'mouse', 'mouse2', 'movie_camera',
|
||||
'moyai', 'muscle', 'mushroom', 'musical_keyboard', 'musical_note',
|
||||
'musical_score', 'mute', 'nail_care', 'name_badge', 'neckbeard', 'necktie',
|
||||
'negative_squared_cross_mark', 'neutral_face', 'new', 'new_moon',
|
||||
'new_moon_with_face', 'newspaper', 'ng', 'nine', 'no_bell', 'no_bicycles',
|
||||
'no_entry', 'no_entry_sign', 'no_good', 'no_mobile_phones', 'no_mouth',
|
||||
'no_pedestrians', 'no_smoking', 'non-potable_water', 'nose', 'notebook',
|
||||
'notebook_with_decorative_cover', 'notes', 'nut_and_bolt', 'o', 'o2', 'ocean',
|
||||
'octocat', 'octopus', 'oden', 'office', 'ok', 'ok_hand', 'ok_woman',
|
||||
'older_man', 'older_woman', 'on', 'oncoming_automobile', 'oncoming_bus',
|
||||
'oncoming_police_car', 'oncoming_taxi', 'one', 'open_file_folder', 'open_hands',
|
||||
'open_mouth', 'ophiuchus', 'orange_book', 'outbox_tray', 'ox', 'page_facing_up',
|
||||
'page_with_curl', 'pager', 'palm_tree', 'panda_face', 'paperclip', 'parking',
|
||||
'part_alternation_mark', 'partly_sunny', 'passport_control', 'paw_prints',
|
||||
'peach', 'pear', 'pencil', 'pencil2', 'penguin', 'pensive', 'performing_arts',
|
||||
'persevere', 'person_frowning', 'person_with_blond_hair',
|
||||
'person_with_pouting_face', 'phone', 'pig', 'pig2', 'pig_nose', 'pill',
|
||||
'pineapple', 'pisces', 'pizza', 'plus1', 'point_down', 'point_left',
|
||||
'point_right', 'point_up', 'point_up_2', 'police_car', 'poodle', 'poop',
|
||||
'post_office', 'postal_horn', 'postbox', 'potable_water', 'pouch',
|
||||
'poultry_leg', 'pound', 'pouting_cat', 'pray', 'princess', 'punch',
|
||||
'purple_heart', 'purse', 'pushpin', 'put_litter_in_its_place', 'question',
|
||||
'rabbit', 'rabbit2', 'racehorse', 'radio', 'radio_button', 'rage', 'rage1',
|
||||
'rage2', 'rage3', 'rage4', 'railway_car', 'rainbow', 'raised_hand',
|
||||
'raised_hands', 'raising_hand', 'ram', 'ramen', 'rat', 'recycle', 'red_car',
|
||||
'red_circle', 'registered', 'relaxed', 'relieved', 'repeat', 'repeat_one',
|
||||
'restroom', 'revolving_hearts', 'rewind', 'ribbon', 'rice', 'rice_ball',
|
||||
'rice_cracker', 'rice_scene', 'ring', 'rocket', 'roller_coaster', 'rooster',
|
||||
'rose', 'rotating_light', 'round_pushpin', 'rowboat', 'ru', 'rugby_football',
|
||||
'runner', 'running', 'running_shirt_with_sash', 'sa', 'sagittarius', 'sailboat',
|
||||
'sake', 'sandal', 'santa', 'satellite', 'satisfied', 'saxophone', 'school',
|
||||
'school_satchel', 'scissors', 'scorpius', 'scream', 'scream_cat', 'scroll',
|
||||
'seat', 'secret', 'see_no_evil', 'seedling', 'seven', 'shaved_ice', 'sheep',
|
||||
'shell', 'ship', 'shipit', 'shirt', 'shit', 'shoe', 'shower', 'signal_strength',
|
||||
'six', 'six_pointed_star', 'ski', 'skull', 'sleeping', 'sleepy', 'slot_machine',
|
||||
'small_blue_diamond', 'small_orange_diamond', 'small_red_triangle',
|
||||
'small_red_triangle_down', 'smile', 'smile_cat', 'smiley', 'smiley_cat',
|
||||
'smiling_imp', 'smirk', 'smirk_cat', 'smoking', 'snail', 'snake', 'snowboarder',
|
||||
'snowflake', 'snowman', 'sob', 'soccer', 'soon', 'sos', 'sound',
|
||||
'space_invader', 'spades', 'spaghetti', 'sparkler', 'sparkles',
|
||||
'sparkling_heart', 'speak_no_evil', 'speaker', 'speech_balloon', 'speedboat',
|
||||
'squirrel', 'star', 'star2', 'stars', 'station', 'statue_of_liberty',
|
||||
'steam_locomotive', 'stew', 'straight_ruler', 'strawberry', 'stuck_out_tongue',
|
||||
'stuck_out_tongue_closed_eyes', 'stuck_out_tongue_winking_eye', 'sun_with_face',
|
||||
'sunflower', 'sunglasses', 'sunny', 'sunrise', 'sunrise_over_mountains',
|
||||
'surfer', 'sushi', 'suspect', 'suspension_railway', 'sweat', 'sweat_drops',
|
||||
'sweat_smile', 'sweet_potato', 'swimmer', 'symbols', 'syringe', 'tada',
|
||||
'tanabata_tree', 'tangerine', 'taurus', 'taxi', 'tea', 'telephone',
|
||||
'telephone_receiver', 'telescope', 'tennis', 'tent', 'thought_balloon', 'three',
|
||||
'thumbsdown', 'thumbsup', 'ticket', 'tiger', 'tiger2', 'tired_face', 'tm',
|
||||
'toilet', 'tokyo_tower', 'tomato', 'tongue', 'top', 'tophat', 'tractor',
|
||||
'traffic_light', 'train', 'train2', 'tram', 'triangular_flag_on_post',
|
||||
'triangular_ruler', 'trident', 'triumph', 'trolleybus', 'trollface', 'trophy',
|
||||
'tropical_drink', 'tropical_fish', 'truck', 'trumpet', 'tshirt', 'tulip',
|
||||
'turtle', 'tv', 'twisted_rightwards_arrows', 'two', 'two_hearts',
|
||||
'two_men_holding_hands', 'two_women_holding_hands', 'u5272', 'u5408', 'u55b6',
|
||||
'u6307', 'u6708', 'u6709', 'u6e80', 'u7121', 'u7533', 'u7981', 'u7a7a', 'uk',
|
||||
'umbrella', 'unamused', 'underage', 'unlock', 'up', 'us', 'v',
|
||||
'vertical_traffic_light', 'vhs', 'vibration_mode', 'video_camera', 'video_game',
|
||||
'violin', 'virgo', 'volcano', 'vs', 'walking', 'waning_crescent_moon',
|
||||
'waning_gibbous_moon', 'warning', 'watch', 'water_buffalo', 'watermelon',
|
||||
'wave', 'wavy_dash', 'waxing_crescent_moon', 'waxing_gibbous_moon', 'wc',
|
||||
'weary', 'wedding', 'whale', 'whale2', 'wheelchair', 'white_check_mark',
|
||||
'white_circle', 'white_flower', 'white_square', 'white_square_button',
|
||||
'wind_chime', 'wine_glass', 'wink', 'wolf', 'woman', 'womans_clothes',
|
||||
'womans_hat', 'womens', 'worried', 'wrench', 'x', 'yellow_heart', 'yen', 'yum',
|
||||
'zap', 'zero', 'zzz'];
|
||||
@@ -90,9 +90,6 @@ Template.keyboardShortcuts.helpers({
|
||||
}, {
|
||||
keys: ['@'],
|
||||
action: 'shortcut-autocomplete-members',
|
||||
}, {
|
||||
keys: [':'],
|
||||
action: 'shortcut-autocomplete-emoji',
|
||||
}, {
|
||||
keys: ['SPACE'],
|
||||
action: 'shortcut-assign-self',
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ window.Modal = new class {
|
||||
this._currentModal.set({ header, modalName });
|
||||
this._onCloseGoTo = onCloseGoTo;
|
||||
}
|
||||
};
|
||||
}();
|
||||
|
||||
Blaze.registerHelper('Modal', Modal);
|
||||
|
||||
|
||||
+1
-2
@@ -190,7 +190,7 @@ window.Popup = new class {
|
||||
return title !== translationKey ? title : defaultTitle;
|
||||
};
|
||||
}
|
||||
};
|
||||
}();
|
||||
|
||||
// We close a potential opened popup on any left click on the document, or go
|
||||
// one step back by pressing escape.
|
||||
@@ -205,4 +205,3 @@ escapeActions.forEach((actionName) => {
|
||||
}
|
||||
);
|
||||
});
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
Meteor.subscribe('unsaved-edits');
|
||||
|
||||
// `UnsavedEdits` is a global key-value store used to save drafts of user
|
||||
// inputs. We used to have the notion of a `cachedValue` that was local to a
|
||||
// component but the global store has multiple advantages:
|
||||
|
||||
@@ -8,6 +8,7 @@ FlowRouter.route('/', {
|
||||
triggersEnter: [AccountsTemplates.ensureSignedIn],
|
||||
action() {
|
||||
Session.set('currentBoard', null);
|
||||
Session.set('currentList', null);
|
||||
Session.set('currentCard', null);
|
||||
|
||||
Filter.reset();
|
||||
@@ -88,6 +89,7 @@ FlowRouter.route('/import/:source', {
|
||||
Session.set('fromBoard', Session.get('currentBoard'));
|
||||
}
|
||||
Session.set('currentBoard', null);
|
||||
Session.set('currentList', null);
|
||||
Session.set('currentCard', null);
|
||||
Session.set('importSource', params.source);
|
||||
|
||||
@@ -106,6 +108,7 @@ FlowRouter.route('/setting', {
|
||||
AccountsTemplates.ensureSignedIn,
|
||||
() => {
|
||||
Session.set('currentBoard', null);
|
||||
Session.set('currentList', null);
|
||||
Session.set('currentCard', null);
|
||||
|
||||
Filter.reset();
|
||||
@@ -126,6 +129,7 @@ FlowRouter.route('/information', {
|
||||
AccountsTemplates.ensureSignedIn,
|
||||
() => {
|
||||
Session.set('currentBoard', null);
|
||||
Session.set('currentList', null);
|
||||
Session.set('currentCard', null);
|
||||
|
||||
Filter.reset();
|
||||
@@ -140,6 +144,27 @@ FlowRouter.route('/information', {
|
||||
},
|
||||
});
|
||||
|
||||
FlowRouter.route('/people', {
|
||||
name: 'people',
|
||||
triggersEnter: [
|
||||
AccountsTemplates.ensureSignedIn,
|
||||
() => {
|
||||
Session.set('currentBoard', null);
|
||||
Session.set('currentList', null);
|
||||
Session.set('currentCard', null);
|
||||
|
||||
Filter.reset();
|
||||
EscapeActions.executeAll();
|
||||
},
|
||||
],
|
||||
action() {
|
||||
BlazeLayout.render('defaultLayout', {
|
||||
headerBar: 'settingHeaderBar',
|
||||
content: 'people',
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
FlowRouter.notFound = {
|
||||
action() {
|
||||
BlazeLayout.render('defaultLayout', { content: 'notFound' });
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@ version: '2'
|
||||
services:
|
||||
|
||||
wekandb:
|
||||
image: mongo:3.2.16
|
||||
image: mongo:3.2.18
|
||||
container_name: wekan-db
|
||||
restart: always
|
||||
command: mongod --smallfiles --oplogSize 128
|
||||
|
||||
+101
-59
@@ -12,6 +12,7 @@
|
||||
"act-archivedBoard": "قام بأرشفة __board__",
|
||||
"act-archivedCard": "قام بأرشفة __card__",
|
||||
"act-archivedList": "قام بأرشفة __list__",
|
||||
"act-archivedSwimlane": "archived __swimlane__",
|
||||
"act-importBoard": "إستورد __board__",
|
||||
"act-importCard": "إستورد __card__",
|
||||
"act-importList": "إستورد __list__",
|
||||
@@ -44,6 +45,7 @@
|
||||
"add-attachment": "إضافة مرفق",
|
||||
"add-board": "إضافة لوحة",
|
||||
"add-card": "إضافة بطاقة",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"add-checklist": "إضافة قائمة تدقيق",
|
||||
"add-checklist-item": "إضافة عنصر إلى قائمة التحقق",
|
||||
"add-cover": "إضافة غلاف",
|
||||
@@ -54,6 +56,9 @@
|
||||
"addMemberPopup-title": "الأعضاء",
|
||||
"admin": "المدير",
|
||||
"admin-desc": "إمكانية مشاهدة و تعديل و حذف أعضاء ، و تعديل إعدادات اللوحة أيضا.",
|
||||
"admin-announcement": "إعلان",
|
||||
"admin-announcement-active": "Active System-Wide Announcement",
|
||||
"admin-announcement-title": "Announcement from Administrator",
|
||||
"all-boards": "كل اللوحات",
|
||||
"and-n-other-card": "And __count__ other بطاقة",
|
||||
"and-n-other-card_plural": "And __count__ other بطاقات",
|
||||
@@ -64,6 +69,7 @@
|
||||
"archive-board": "أرشيف اللوحة",
|
||||
"archive-card": "أرشيف البطاقة",
|
||||
"archive-list": "قائمة الأرشيفات",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-selection": "أرشف المُحدّد",
|
||||
"archiveBoardPopup-title": "أرشيف اللوحة ؟",
|
||||
"archived-items": "عناصر مؤرشفة",
|
||||
@@ -91,6 +97,9 @@
|
||||
"boardChangeWatchPopup-title": "تغيير المتابعة",
|
||||
"boardMenuPopup-title": "قائمة اللوحة",
|
||||
"boards": "لوحات",
|
||||
"board-view": "Board View",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "القائمات",
|
||||
"bucket-example": "مثل « todo list » على سبيل المثال",
|
||||
"cancel": "إلغاء",
|
||||
"card-archived": "هذه البطاقة أُرشفت.",
|
||||
@@ -100,6 +109,7 @@
|
||||
"card-delete-suggest-archive": "يمكنك أرشفة بطاقة لحذفها من اللوحة والمحافظة على النشاط.",
|
||||
"card-due": "مستحق",
|
||||
"card-due-on": "مستحق في",
|
||||
"card-spent": "Spent Time",
|
||||
"card-edit-attachments": "تعديل المرفقات",
|
||||
"card-edit-labels": "تعديل العلامات",
|
||||
"card-edit-members": "تعديل الأعضاء",
|
||||
@@ -147,8 +157,11 @@
|
||||
"comment-only-desc": "يمكن التعليق على بطاقات فقط.",
|
||||
"computer": "حاسوب",
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copy-card-link-to-clipboard": "نسخ رابط البطاقة إلى الحافظة",
|
||||
"copyCardPopup-title": "نسخ البطاقة",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "إنشاء",
|
||||
"createBoardPopup-title": "إنشاء لوحة",
|
||||
"chooseBoardSourcePopup-title": "استيراد لوحة",
|
||||
@@ -168,8 +181,11 @@
|
||||
"edit": "تعديل",
|
||||
"edit-avatar": "تعديل الصورة الشخصية",
|
||||
"edit-profile": "تعديل الملف الشخصي",
|
||||
"edit-wip-limit": "Edit WIP Limit",
|
||||
"soft-wip-limit": "Soft WIP Limit",
|
||||
"editCardStartDatePopup-title": "تغيير تاريخ البدء",
|
||||
"editCardDueDatePopup-title": "تغيير تاريخ الاستحقاق",
|
||||
"editCardSpentTimePopup-title": "Change spent time",
|
||||
"editLabelPopup-title": "تعديل العلامة",
|
||||
"editNotificationPopup-title": "تصحيح الإشعار",
|
||||
"editProfilePopup-title": "تعديل الملف الشخصي",
|
||||
@@ -177,6 +193,7 @@
|
||||
"email-enrollAccount-subject": "An account created for you on __siteName__",
|
||||
"email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"email-fail": "Sending email failed",
|
||||
"email-fail-text": "Error trying to send email",
|
||||
"email-invalid": "Invalid email",
|
||||
"email-invite": "Invite via Email",
|
||||
"email-invite-subject": "__inviter__ sent you an invitation",
|
||||
@@ -186,6 +203,7 @@
|
||||
"email-sent": "Email sent",
|
||||
"email-verifyEmail-subject": "Verify your email address on __siteName__",
|
||||
"email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"enable-wip-limit": "Enable WIP Limit",
|
||||
"error-board-doesNotExist": "This board does not exist",
|
||||
"error-board-notAdmin": "You need to be admin of this board to do that",
|
||||
"error-board-notAMember": "You need to be a member of this board to do that",
|
||||
@@ -196,7 +214,7 @@
|
||||
"error-user-notAllowSelf": "لا يمكنك دعوة نفسك",
|
||||
"error-user-notCreated": "This user is not created",
|
||||
"error-username-taken": "إسم المستخدم مأخوذ مسبقا",
|
||||
"error-email-taken": "Email has already been taken",
|
||||
"error-email-taken": "البريد الإلكتروني مأخوذ بالفعل",
|
||||
"export-board": "Export board",
|
||||
"filter": "تصفية",
|
||||
"filter-cards": "تصفية البطاقات",
|
||||
@@ -227,9 +245,11 @@
|
||||
"import-show-user-mapping": "Review members mapping",
|
||||
"import-user-select": "Pick the Wekan user you want to use as this member",
|
||||
"importMapMembersAddPopup-title": "حدّد عضو ويكان",
|
||||
"info": "Version",
|
||||
"info": "الإصدار",
|
||||
"initials": "أولية",
|
||||
"invalid-date": "تاريخ غير صالح",
|
||||
"invalid-time": "Invalid time",
|
||||
"invalid-user": "Invalid user",
|
||||
"joined": "انضمّ",
|
||||
"just-invited": "You are just invited to this board",
|
||||
"keyboard-shortcuts": "اختصار لوحة المفاتيح",
|
||||
@@ -240,18 +260,22 @@
|
||||
"language": "لغة",
|
||||
"last-admin-desc": "لا يمكن تعديل الأدوار لأن ذلك يتطلب صلاحيات المدير.",
|
||||
"leave-board": "مغادرة اللوحة",
|
||||
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
|
||||
"leaveBoardPopup-title": "مغادرة اللوحة ؟",
|
||||
"link-card": "ربط هذه البطاقة",
|
||||
"list-archive-cards": "أرضفت بطاقات هذه القائمة",
|
||||
"list-archive-cards-pop": "سيقتضي هذا أرشفة جميع بطاقات هذه القائمة. لمشاهدة أرشيف البطاقات أو إعادتها إلى اللوحة، اضغط على -القائمة- ثم - أرشيف العناصر-",
|
||||
"list-move-cards": "نقل بطاقات هذه القائمة",
|
||||
"list-select-cards": "تحديد بطاقات هذه القائمة",
|
||||
"listActionPopup-title": "قائمة الإجراءات",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
"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.",
|
||||
"list-delete-suggest-archive": "يمكنك أرشفة قائمة لحذفها من اللوحة والمحافظة على النشاط.",
|
||||
"lists": "القائمات",
|
||||
"swimlanes": "Swimlanes",
|
||||
"log-out": "تسجيل الخروج",
|
||||
"log-in": "تسجيل الدخول",
|
||||
"loginPopup-title": "تسجيل الدخول",
|
||||
@@ -260,17 +284,18 @@
|
||||
"menu": "القائمة",
|
||||
"move-selection": "Move selection",
|
||||
"moveCardPopup-title": "نقل البطاقة",
|
||||
"moveCardToBottom-title": "Move to Bottom",
|
||||
"moveCardToTop-title": "Move to Top",
|
||||
"moveCardToBottom-title": "التحرك إلى القاع",
|
||||
"moveCardToTop-title": "التحرك إلى الأعلى",
|
||||
"moveSelectionPopup-title": "Move selection",
|
||||
"multi-selection": "تحديد أكثر من واحدة",
|
||||
"multi-selection-on": "Multi-Selection is on",
|
||||
"muted": "Muted",
|
||||
"muted": "مكتوم",
|
||||
"muted-info": "You will never be notified of any changes in this board",
|
||||
"my-boards": "لوحاتي",
|
||||
"name": "اسم",
|
||||
"no-archived-cards": "لا توجد بطاقات مؤرشفة.",
|
||||
"no-archived-lists": "لا توجد قوائم مؤرشفة.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"no-results": "لا توجد نتائج",
|
||||
"normal": "عادي",
|
||||
"normal-desc": "يمكن مشاهدة و تعديل البطاقات. لا يمكن تغيير إعدادات الضبط.",
|
||||
@@ -283,7 +308,7 @@
|
||||
"page-not-found": "صفحة غير موجودة",
|
||||
"password": "كلمة المرور",
|
||||
"paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
|
||||
"participating": "Participating",
|
||||
"participating": "المشاركة",
|
||||
"preview": "Preview",
|
||||
"previewAttachedImagePopup-title": "Preview",
|
||||
"previewClipboardImagePopup-title": "Preview",
|
||||
@@ -295,8 +320,8 @@
|
||||
"quick-access-description": "أضف لوحة إلى المفضلة لإنشاء اختصار في هذا الشريط.",
|
||||
"remove-cover": "حذف الغلاف",
|
||||
"remove-from-board": "حذف من اللوحة",
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Delete List ?",
|
||||
"remove-label": "إزالة التصنيف",
|
||||
"listDeletePopup-title": "حذف القائمة ؟",
|
||||
"remove-member": "حذف العضو",
|
||||
"remove-member-from-card": "حذف من البطاقة",
|
||||
"remove-member-pop": "حذف __name__ (__username__) من __boardTitle__ ? سيتم حذف هذا العضو من جميع بطاقة اللوحة مع إرسال إشعار له بذاك.",
|
||||
@@ -306,7 +331,9 @@
|
||||
"restore": "استعادة",
|
||||
"save": "حفظ",
|
||||
"search": "بحث",
|
||||
"select-color": "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",
|
||||
"shortcut-assign-self": "Assign yourself to current card",
|
||||
"shortcut-autocomplete-emoji": "الإكمال التلقائي للرموز التعبيرية",
|
||||
"shortcut-autocomplete-members": "الإكمال التلقائي لأسماء الأعضاء",
|
||||
@@ -316,9 +343,9 @@
|
||||
"shortcut-show-shortcuts": "عرض قائمة الإختصارات ،تلك",
|
||||
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
|
||||
"shortcut-toggle-sidebar": "إظهار-إخفاء الشريط الجانبي للوحة",
|
||||
"show-cards-minimum-count": "Show cards count if list contains more than",
|
||||
"sidebar-open": "Open Sidebar",
|
||||
"sidebar-close": "Close Sidebar",
|
||||
"show-cards-minimum-count": "إظهار عدد البطاقات إذا كانت القائمة تتضمن أكثر من",
|
||||
"sidebar-open": "فتح الشريط الجانبي",
|
||||
"sidebar-close": "إغلاق الشريط الجانبي",
|
||||
"signupPopup-title": "إنشاء حساب",
|
||||
"star-board-title": "اضغط لإضافة هذه اللوحة إلى المفضلة . سوف يتم إظهارها على رأس بقية اللوحات.",
|
||||
"starred-boards": "اللوحات المفضلة",
|
||||
@@ -327,69 +354,84 @@
|
||||
"team": "فريق",
|
||||
"this-board": "هذه اللوحة",
|
||||
"this-card": "هذه البطاقة",
|
||||
"time": "Time",
|
||||
"spent-time-hours": "Spent time (hours)",
|
||||
"overtime-hours": "Overtime (hours)",
|
||||
"overtime": "Overtime",
|
||||
"has-overtime-cards": "Has overtime cards",
|
||||
"has-spenttime-cards": "Has spent time cards",
|
||||
"time": "الوقت",
|
||||
"title": "عنوان",
|
||||
"tracking": "Tracking",
|
||||
"tracking": "تتبع",
|
||||
"tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
|
||||
"unassign-member": "إلغاء تعيين العضو",
|
||||
"unsaved-description": "لديك وصف غير محفوظ",
|
||||
"unwatch": "Unwatch",
|
||||
"unwatch": "غير مُشاهد",
|
||||
"upload": "Upload",
|
||||
"upload-avatar": "رفع صورة شخصية",
|
||||
"uploaded-avatar": "تم رفع الصورة الشخصية",
|
||||
"username": "اسم المستخدم",
|
||||
"view-it": "شاهدها",
|
||||
"warn-list-archived": "انتبه : هذه البطاقة في أرشيف القائمات",
|
||||
"watch": "Watch",
|
||||
"watching": "Watching",
|
||||
"watch": "مُشاهد",
|
||||
"watching": "مشاهدة",
|
||||
"watching-info": "You will be notified of any change in this board",
|
||||
"welcome-board": "لوحة التّرحيب",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "المبادئ",
|
||||
"welcome-list2": "متقدم",
|
||||
"what-to-do": "ماذا تريد أن تنجز?",
|
||||
"admin-panel": "Admin Panel",
|
||||
"settings": "Settings",
|
||||
"people": "People",
|
||||
"registration": "Registration",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
|
||||
"admin-panel": "لوحة التحكم",
|
||||
"settings": "الإعدادات",
|
||||
"people": "الناس",
|
||||
"registration": "تسجيل",
|
||||
"disable-self-registration": "Disable Self-Registration",
|
||||
"invite": "Invite",
|
||||
"invite-people": "Invite People",
|
||||
"invite": "دعوة",
|
||||
"invite-people": "الناس المدعوين",
|
||||
"to-boards": "إلى اللوحات",
|
||||
"email-addresses": "Email Addresses",
|
||||
"email-addresses": "عناوين البريد الإلكتروني",
|
||||
"smtp-host-description": "The address of the SMTP server that handles your emails.",
|
||||
"smtp-port-description": "The port your SMTP server uses for outgoing emails.",
|
||||
"smtp-tls-description": "Enable TLS support for SMTP server",
|
||||
"smtp-host": "SMTP Host",
|
||||
"smtp-port": "SMTP Port",
|
||||
"smtp-tls-description": "تفعيل دعم TLS من اجل خادم SMTP",
|
||||
"smtp-host": "مضيف SMTP",
|
||||
"smtp-port": "منفذ SMTP",
|
||||
"smtp-username": "اسم المستخدم",
|
||||
"smtp-password": "كلمة المرور",
|
||||
"smtp-tls": "TLS support",
|
||||
"send-from": "From",
|
||||
"invitation-code": "Invitation Code",
|
||||
"email-invite-register-subject": "__inviter__ sent you an invitation",
|
||||
"smtp-tls": "دعم التي ال سي",
|
||||
"send-from": "من",
|
||||
"send-smtp-test": "Send a test email to yourself",
|
||||
"invitation-code": "رمز الدعوة",
|
||||
"email-invite-register-subject": "__inviter__ أرسل دعوة لك",
|
||||
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
|
||||
"error-invitation-code-not-exist": "Invitation code doesn't exist",
|
||||
"error-notAuthorized": "You are not authorized to view this page.",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
|
||||
"new-outgoing-webhook": "New Outgoing Webhook",
|
||||
"no-name": "(Unknown)",
|
||||
"Wekan_version": "Wekan version",
|
||||
"Node_version": "Node version",
|
||||
"OS_Arch": "OS Arch",
|
||||
"OS_Cpus": "OS CPU Count",
|
||||
"OS_Freemem": "OS Free Memory",
|
||||
"OS_Loadavg": "OS Load Average",
|
||||
"OS_Platform": "OS Platform",
|
||||
"OS_Release": "OS Release",
|
||||
"OS_Totalmem": "OS Total Memory",
|
||||
"OS_Type": "OS Type",
|
||||
"OS_Uptime": "OS Uptime",
|
||||
"hours": "hours",
|
||||
"minutes": "minutes",
|
||||
"seconds": "seconds",
|
||||
"yes": "Yes",
|
||||
"no": "No",
|
||||
"accounts": "Accounts",
|
||||
"accounts-allowEmailChange": "Allow Email Change"
|
||||
"email-smtp-test-subject": "SMTP Test Email From Wekan",
|
||||
"email-smtp-test-text": "You have successfully sent an email",
|
||||
"error-invitation-code-not-exist": "رمز الدعوة غير موجود",
|
||||
"error-notAuthorized": "أنتَ لا تملك الصلاحيات لرؤية هذه الصفحة.",
|
||||
"outgoing-webhooks": "الويبهوك الصادرة",
|
||||
"outgoingWebhooksPopup-title": "الويبهوك الصادرة",
|
||||
"new-outgoing-webhook": "ويبهوك جديدة ",
|
||||
"no-name": "(غير معروف)",
|
||||
"Wekan_version": "إصدار ويكان",
|
||||
"Node_version": "إصدار النود",
|
||||
"OS_Arch": "معمارية نظام التشغيل",
|
||||
"OS_Cpus": "استهلاك وحدة المعالجة المركزية لنظام التشغيل",
|
||||
"OS_Freemem": "الذاكرة الحرة لنظام التشغيل",
|
||||
"OS_Loadavg": "متوسط حمل نظام التشغيل",
|
||||
"OS_Platform": "منصة نظام التشغيل",
|
||||
"OS_Release": "إصدار نظام التشغيل",
|
||||
"OS_Totalmem": "الذاكرة الكلية لنظام التشغيل",
|
||||
"OS_Type": "نوع نظام التشغيل",
|
||||
"OS_Uptime": "مدة تشغيل نظام التشغيل",
|
||||
"hours": "الساعات",
|
||||
"minutes": "الدقائق",
|
||||
"seconds": "الثواني",
|
||||
"yes": "نعم",
|
||||
"no": "لا",
|
||||
"accounts": "الحسابات",
|
||||
"accounts-allowEmailChange": "السماح بتغيير البريد الإلكتروني",
|
||||
"createdAt": "Created at",
|
||||
"verified": "Verified",
|
||||
"active": "Active"
|
||||
}
|
||||
+43
-1
@@ -12,6 +12,7 @@
|
||||
"act-archivedBoard": "archived __board__",
|
||||
"act-archivedCard": "archived __card__",
|
||||
"act-archivedList": "archived __list__",
|
||||
"act-archivedSwimlane": "archived __swimlane__",
|
||||
"act-importBoard": "imported __board__",
|
||||
"act-importCard": "imported __card__",
|
||||
"act-importList": "imported __list__",
|
||||
@@ -44,6 +45,7 @@
|
||||
"add-attachment": "Add Attachment",
|
||||
"add-board": "Add Board",
|
||||
"add-card": "Add Card",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"add-cover": "Ouzphenn ur golo",
|
||||
@@ -54,6 +56,9 @@
|
||||
"addMemberPopup-title": "Izili",
|
||||
"admin": "Merour",
|
||||
"admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
|
||||
"admin-announcement": "Announcement",
|
||||
"admin-announcement-active": "Active System-Wide Announcement",
|
||||
"admin-announcement-title": "Announcement from Administrator",
|
||||
"all-boards": "All boards",
|
||||
"and-n-other-card": "And __count__ other card",
|
||||
"and-n-other-card_plural": "And __count__ other cards",
|
||||
@@ -64,6 +69,7 @@
|
||||
"archive-board": "Archive Board",
|
||||
"archive-card": "Archive Card",
|
||||
"archive-list": "Archive List",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-selection": "Archive selection",
|
||||
"archiveBoardPopup-title": "Archive Board?",
|
||||
"archived-items": "Archived Items",
|
||||
@@ -91,6 +97,9 @@
|
||||
"boardChangeWatchPopup-title": "Change Watch",
|
||||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
"cancel": "Cancel",
|
||||
"card-archived": "This card is archived.",
|
||||
@@ -100,6 +109,7 @@
|
||||
"card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
|
||||
"card-due": "Due",
|
||||
"card-due-on": "Due on",
|
||||
"card-spent": "Spent Time",
|
||||
"card-edit-attachments": "Edit attachments",
|
||||
"card-edit-labels": "Edit labels",
|
||||
"card-edit-members": "Edit members",
|
||||
@@ -149,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Krouiñ",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
@@ -168,8 +181,11 @@
|
||||
"edit": "Kemmañ",
|
||||
"edit-avatar": "Change Avatar",
|
||||
"edit-profile": "Edit Profile",
|
||||
"edit-wip-limit": "Edit WIP Limit",
|
||||
"soft-wip-limit": "Soft WIP Limit",
|
||||
"editCardStartDatePopup-title": "Change start date",
|
||||
"editCardDueDatePopup-title": "Change due date",
|
||||
"editCardSpentTimePopup-title": "Change spent time",
|
||||
"editLabelPopup-title": "Change Label",
|
||||
"editNotificationPopup-title": "Edit Notification",
|
||||
"editProfilePopup-title": "Edit Profile",
|
||||
@@ -177,6 +193,7 @@
|
||||
"email-enrollAccount-subject": "An account created for you on __siteName__",
|
||||
"email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"email-fail": "Sending email failed",
|
||||
"email-fail-text": "Error trying to send email",
|
||||
"email-invalid": "Invalid email",
|
||||
"email-invite": "Invite via Email",
|
||||
"email-invite-subject": "__inviter__ sent you an invitation",
|
||||
@@ -186,6 +203,7 @@
|
||||
"email-sent": "Email sent",
|
||||
"email-verifyEmail-subject": "Verify your email address on __siteName__",
|
||||
"email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"enable-wip-limit": "Enable WIP Limit",
|
||||
"error-board-doesNotExist": "This board does not exist",
|
||||
"error-board-notAdmin": "You need to be admin of this board to do that",
|
||||
"error-board-notAMember": "You need to be a member of this board to do that",
|
||||
@@ -230,6 +248,8 @@
|
||||
"info": "Version",
|
||||
"initials": "Initials",
|
||||
"invalid-date": "Invalid date",
|
||||
"invalid-time": "Invalid time",
|
||||
"invalid-user": "Invalid user",
|
||||
"joined": "joined",
|
||||
"just-invited": "You are just invited to this board",
|
||||
"keyboard-shortcuts": "Keyboard shortcuts",
|
||||
@@ -240,18 +260,22 @@
|
||||
"language": "Yezh",
|
||||
"last-admin-desc": "You can’t change roles because there must be at least one admin.",
|
||||
"leave-board": "Leave Board",
|
||||
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
|
||||
"leaveBoardPopup-title": "Leave Board ?",
|
||||
"link-card": "Link to this card",
|
||||
"list-archive-cards": "Archive all cards in this list",
|
||||
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
|
||||
"list-move-cards": "Move all cards in this list",
|
||||
"list-select-cards": "Select all cards in this list",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
"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.",
|
||||
"list-delete-suggest-archive": "You can archive a list to remove it from the board and preserve the activity.",
|
||||
"lists": "Lists",
|
||||
"swimlanes": "Swimlanes",
|
||||
"log-out": "Log Out",
|
||||
"log-in": "Log In",
|
||||
"loginPopup-title": "Log In",
|
||||
@@ -271,6 +295,7 @@
|
||||
"name": "Name",
|
||||
"no-archived-cards": "No archived cards.",
|
||||
"no-archived-lists": "No archived lists.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"no-results": "No results",
|
||||
"normal": "Normal",
|
||||
"normal-desc": "Can view and edit cards. Can't change settings.",
|
||||
@@ -307,6 +332,8 @@
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"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",
|
||||
"shortcut-assign-self": "Assign yourself to current card",
|
||||
"shortcut-autocomplete-emoji": "Autocomplete emoji",
|
||||
"shortcut-autocomplete-members": "Autocomplete members",
|
||||
@@ -327,6 +354,11 @@
|
||||
"team": "Team",
|
||||
"this-board": "this board",
|
||||
"this-card": "this card",
|
||||
"spent-time-hours": "Spent time (hours)",
|
||||
"overtime-hours": "Overtime (hours)",
|
||||
"overtime": "Overtime",
|
||||
"has-overtime-cards": "Has overtime cards",
|
||||
"has-spenttime-cards": "Has spent time cards",
|
||||
"time": "Time",
|
||||
"title": "Title",
|
||||
"tracking": "Tracking",
|
||||
@@ -344,9 +376,13 @@
|
||||
"watching": "Watching",
|
||||
"watching-info": "You will be notified of any change in this board",
|
||||
"welcome-board": "Welcome Board",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
|
||||
"admin-panel": "Admin Panel",
|
||||
"settings": "Settings",
|
||||
"people": "People",
|
||||
@@ -365,9 +401,12 @@
|
||||
"smtp-password": "Ger-tremen",
|
||||
"smtp-tls": "TLS support",
|
||||
"send-from": "From",
|
||||
"send-smtp-test": "Send a test email to yourself",
|
||||
"invitation-code": "Invitation Code",
|
||||
"email-invite-register-subject": "__inviter__ sent you an invitation",
|
||||
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
|
||||
"email-smtp-test-subject": "SMTP Test Email From Wekan",
|
||||
"email-smtp-test-text": "You have successfully sent an email",
|
||||
"error-invitation-code-not-exist": "Invitation code doesn't exist",
|
||||
"error-notAuthorized": "You are not authorized to view this page.",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
@@ -391,5 +430,8 @@
|
||||
"yes": "Yes",
|
||||
"no": "No",
|
||||
"accounts": "Accounts",
|
||||
"accounts-allowEmailChange": "Allow Email Change"
|
||||
"accounts-allowEmailChange": "Allow Email Change",
|
||||
"createdAt": "Created at",
|
||||
"verified": "Verified",
|
||||
"active": "Active"
|
||||
}
|
||||
+46
-4
@@ -2,8 +2,8 @@
|
||||
"accept": "Accepta",
|
||||
"act-activity-notify": "[Wekan] Notificació d'activitat",
|
||||
"act-addAttachment": "adjuntat __attachment__ a __card__",
|
||||
"act-addChecklist": "added checklist __checklist__ to __card__",
|
||||
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
|
||||
"act-addChecklist": "afegida la checklist _checklist__ a __card__",
|
||||
"act-addChecklistItem": "afegit __checklistItem__ a la checklist __checklist__ on __card__",
|
||||
"act-addComment": "comentat a __card__: __comment__",
|
||||
"act-createBoard": "creat __board__",
|
||||
"act-createCard": "afegit/da __card__ a __list__",
|
||||
@@ -12,6 +12,7 @@
|
||||
"act-archivedBoard": "__board__ arxivat",
|
||||
"act-archivedCard": "__card__ arxivat/da",
|
||||
"act-archivedList": "__list__ arxivat/da",
|
||||
"act-archivedSwimlane": "archived __swimlane__",
|
||||
"act-importBoard": "__board__ importat",
|
||||
"act-importCard": "__card__ importat",
|
||||
"act-importList": "__list__ importat",
|
||||
@@ -44,6 +45,7 @@
|
||||
"add-attachment": "Afegeix adjunt",
|
||||
"add-board": "Afegeix Tauler",
|
||||
"add-card": "Afegeix fitxa",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"add-checklist": "Afegeix checklist",
|
||||
"add-checklist-item": "Afegeix un ítem",
|
||||
"add-cover": "Afegeix coberta",
|
||||
@@ -54,6 +56,9 @@
|
||||
"addMemberPopup-title": "Membres",
|
||||
"admin": "Administrador",
|
||||
"admin-desc": "Pots veure i editar fitxes, eliminar membres, i canviar la configuració del tauler",
|
||||
"admin-announcement": "Announcement",
|
||||
"admin-announcement-active": "Active System-Wide Announcement",
|
||||
"admin-announcement-title": "Announcement from Administrator",
|
||||
"all-boards": "Tots els taulers",
|
||||
"and-n-other-card": "And __count__ other card",
|
||||
"and-n-other-card_plural": "And __count__ other cards",
|
||||
@@ -64,6 +69,7 @@
|
||||
"archive-board": "Arxiva tauler",
|
||||
"archive-card": "Arxiva fitxa",
|
||||
"archive-list": "Arxiva llista",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-selection": "Arxiva selecció",
|
||||
"archiveBoardPopup-title": "Arxivar el tauler?",
|
||||
"archived-items": "Elements arxivats",
|
||||
@@ -91,6 +97,9 @@
|
||||
"boardChangeWatchPopup-title": "Canvia seguiment",
|
||||
"boardMenuPopup-title": "Menú del tauler",
|
||||
"boards": "Taulers",
|
||||
"board-view": "Board View",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Llistes",
|
||||
"bucket-example": "Igual que “Bucket List”, per exemple",
|
||||
"cancel": "Cancel·la",
|
||||
"card-archived": "Aquesta fitxa està arxivada.",
|
||||
@@ -100,6 +109,7 @@
|
||||
"card-delete-suggest-archive": "Podeu arxivar una fitxa per extreure-la del tauler i preservar l'activitat.",
|
||||
"card-due": "Finalitza",
|
||||
"card-due-on": "Finalitza a",
|
||||
"card-spent": "Spent Time",
|
||||
"card-edit-attachments": "Edita arxius adjunts",
|
||||
"card-edit-labels": "Edita etiquetes",
|
||||
"card-edit-members": "Edita membres",
|
||||
@@ -149,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copia l'enllaç de la ftixa al porta-retalls",
|
||||
"copyCardPopup-title": "Copia la fitxa",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Crea",
|
||||
"createBoardPopup-title": "Crea tauler",
|
||||
"chooseBoardSourcePopup-title": "Importa Tauler",
|
||||
@@ -168,8 +181,11 @@
|
||||
"edit": "Edita",
|
||||
"edit-avatar": "Canvia Avatar",
|
||||
"edit-profile": "Edita el teu Perfil",
|
||||
"edit-wip-limit": "Edit WIP Limit",
|
||||
"soft-wip-limit": "Soft WIP Limit",
|
||||
"editCardStartDatePopup-title": "Canvia data d'inici",
|
||||
"editCardDueDatePopup-title": "Canvia data de finalització",
|
||||
"editCardSpentTimePopup-title": "Change spent time",
|
||||
"editLabelPopup-title": "Canvia etiqueta",
|
||||
"editNotificationPopup-title": "Edita la notificació",
|
||||
"editProfilePopup-title": "Edita teu Perfil",
|
||||
@@ -177,6 +193,7 @@
|
||||
"email-enrollAccount-subject": "An account created for you on __siteName__",
|
||||
"email-enrollAccount-text": "Hola __user__,\n\nPer començar a utilitzar el servei, segueix l'enllaç següent.\n\n__url__\n\nGràcies.",
|
||||
"email-fail": "Error enviant el correu",
|
||||
"email-fail-text": "Error trying to send email",
|
||||
"email-invalid": "Adreça de correu invàlida",
|
||||
"email-invite": "Convida mitjançant correu electrònic",
|
||||
"email-invite-subject": "__inviter__ t'ha convidat",
|
||||
@@ -186,6 +203,7 @@
|
||||
"email-sent": "Correu enviat",
|
||||
"email-verifyEmail-subject": "Verify your email address on __siteName__",
|
||||
"email-verifyEmail-text": "Hola __user__, \n\n per verificar el teu correu, segueix l'enllaç següent.\n\n __url__\n\n Gràcies.",
|
||||
"enable-wip-limit": "Enable WIP Limit",
|
||||
"error-board-doesNotExist": "Aquest tauler no existeix",
|
||||
"error-board-notAdmin": "Necessites ser administrador d'aquest tauler per dur a lloc aquest acció",
|
||||
"error-board-notAMember": "Necessites ser membre d'aquest tauler per dur a terme aquesta acció",
|
||||
@@ -216,7 +234,7 @@
|
||||
"import-board-c": "Importa tauler",
|
||||
"import-board-title-trello": "Importa tauler des de Trello",
|
||||
"import-board-title-wekan": "I",
|
||||
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
|
||||
"import-sandstorm-warning": "Estau segur que voleu esborrar aquesta checklist?",
|
||||
"from-trello": "Des de Trello",
|
||||
"from-wekan": "Des de Wekan",
|
||||
"import-board-instruction-trello": "En el teu tauler Trello, ves a 'Menú', 'Més'.' Imprimir i Exportar', 'Exportar JSON', i copia el text resultant.",
|
||||
@@ -230,6 +248,8 @@
|
||||
"info": "Versió",
|
||||
"initials": "Inicials",
|
||||
"invalid-date": "Data invàlida",
|
||||
"invalid-time": "Temps Invàlid",
|
||||
"invalid-user": "Invalid user",
|
||||
"joined": "s'ha unit",
|
||||
"just-invited": "Has estat convidat a aquest tauler",
|
||||
"keyboard-shortcuts": "Dreceres de teclat",
|
||||
@@ -240,18 +260,22 @@
|
||||
"language": "Idioma",
|
||||
"last-admin-desc": "No podeu canviar rols perquè ha d'haver-hi almenys un administrador.",
|
||||
"leave-board": "Abandona tauler",
|
||||
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
|
||||
"leaveBoardPopup-title": "Leave Board ?",
|
||||
"link-card": "Enllaç a aquesta fitxa",
|
||||
"list-archive-cards": "Arxiva totes les fitxes d'aquesta llista",
|
||||
"list-archive-cards-pop": "Això eliminarà totes les fitxes d'aquesta llista del tauler. Per veure les fitxes arxivades i recuperar-les en el tauler, feu clic a \" Menú \"/ \" Articles Arxivat \".",
|
||||
"list-move-cards": "Mou totes les fitxes d'aquesta llista",
|
||||
"list-select-cards": "Selecciona totes les fitxes d'aquesta llista",
|
||||
"listActionPopup-title": "Accions de la llista",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"listImportCardPopup-title": "importa una fitxa de Trello",
|
||||
"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",
|
||||
"list-delete-suggest-archive": "Pots arxivar una llista per eliminar-la del tauler i preservar la seva activitat",
|
||||
"lists": "Llistes",
|
||||
"swimlanes": "Swimlanes",
|
||||
"log-out": "Finalitza la sessió",
|
||||
"log-in": "Ingresa",
|
||||
"loginPopup-title": "Inicia sessió",
|
||||
@@ -271,6 +295,7 @@
|
||||
"name": "Nom",
|
||||
"no-archived-cards": "No hi ha fitxes arxivades.",
|
||||
"no-archived-lists": "No hi ha llistes arxivades.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"no-results": "Sense resultats",
|
||||
"normal": "Normal",
|
||||
"normal-desc": "Podeu veure i editar fitxes. No podeu canviar la configuració.",
|
||||
@@ -307,6 +332,8 @@
|
||||
"save": "Desa",
|
||||
"search": "Cerca",
|
||||
"select-color": "Selecciona color",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
"shortcut-assign-self": "Assigna't la ftixa actual",
|
||||
"shortcut-autocomplete-emoji": "Autocompleta emoji",
|
||||
"shortcut-autocomplete-members": "Autocompleta membres",
|
||||
@@ -327,6 +354,11 @@
|
||||
"team": "Equip",
|
||||
"this-board": "aquest tauler",
|
||||
"this-card": "aquesta fitxa",
|
||||
"spent-time-hours": "Spent time (hours)",
|
||||
"overtime-hours": "Overtime (hours)",
|
||||
"overtime": "Overtime",
|
||||
"has-overtime-cards": "Has overtime cards",
|
||||
"has-spenttime-cards": "Has spent time cards",
|
||||
"time": "Hora",
|
||||
"title": "Títol",
|
||||
"tracking": "En seguiment",
|
||||
@@ -344,9 +376,13 @@
|
||||
"watching": "En observació",
|
||||
"watching-info": "Seràs notificat de cada canvi en aquest tauler",
|
||||
"welcome-board": "Tauler de benvinguda",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Bàsics",
|
||||
"welcome-list2": "Avançades",
|
||||
"what-to-do": "Què vols fer?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
|
||||
"admin-panel": "Tauler d'administració",
|
||||
"settings": "Configuració",
|
||||
"people": "Persones",
|
||||
@@ -365,9 +401,12 @@
|
||||
"smtp-password": "Contrasenya",
|
||||
"smtp-tls": "Suport TLS",
|
||||
"send-from": "De",
|
||||
"send-smtp-test": "Send a test email to yourself",
|
||||
"invitation-code": "Codi d'invitació",
|
||||
"email-invite-register-subject": "__inviter__ t'ha convidat",
|
||||
"email-invite-register-text": " __user__,\n\n __inviter__ us ha convidat a col·laborar a Wekan.\n\n Clicau l'enllaç següent per acceptar l'invitació:\n __url__\n\n El vostre codi d'invitació és: __icode__\n\n Gràcies",
|
||||
"email-smtp-test-subject": "SMTP Test Email From Wekan",
|
||||
"email-smtp-test-text": "You have successfully sent an email",
|
||||
"error-invitation-code-not-exist": "El codi d'invitació no existeix",
|
||||
"error-notAuthorized": "No estau autoritzats per veure aquesta pàgina",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
@@ -391,5 +430,8 @@
|
||||
"yes": "Si",
|
||||
"no": "No",
|
||||
"accounts": "Comptes",
|
||||
"accounts-allowEmailChange": "Permet modificar correu electrònic"
|
||||
"accounts-allowEmailChange": "Permet modificar correu electrònic",
|
||||
"createdAt": "Creat ",
|
||||
"verified": "Verificat",
|
||||
"active": "Actiu"
|
||||
}
|
||||
+43
-1
@@ -12,6 +12,7 @@
|
||||
"act-archivedBoard": "archivace __board__",
|
||||
"act-archivedCard": "archivace __card__",
|
||||
"act-archivedList": "archivace __list__",
|
||||
"act-archivedSwimlane": "archived __swimlane__",
|
||||
"act-importBoard": "import __board__",
|
||||
"act-importCard": "import __card__",
|
||||
"act-importList": "import __list__",
|
||||
@@ -44,6 +45,7 @@
|
||||
"add-attachment": "Přidat přílohu",
|
||||
"add-board": "Přidat tablo",
|
||||
"add-card": "Přidat kartu",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"add-checklist": "Přidat zaškrtávací seznam",
|
||||
"add-checklist-item": "Přidat položku do zaškrtávacího seznamu",
|
||||
"add-cover": "Přidat obal",
|
||||
@@ -54,6 +56,9 @@
|
||||
"addMemberPopup-title": "Členové",
|
||||
"admin": "Administrátor",
|
||||
"admin-desc": "Může zobrazovat a upravovat karty, mazat členy a měnit nastavení tabla.",
|
||||
"admin-announcement": "Announcement",
|
||||
"admin-announcement-active": "Active System-Wide Announcement",
|
||||
"admin-announcement-title": "Announcement from Administrator",
|
||||
"all-boards": "Všechna tabla",
|
||||
"and-n-other-card": "A __count__ další karta(y)",
|
||||
"and-n-other-card_plural": "A __count__ dalších karet",
|
||||
@@ -64,6 +69,7 @@
|
||||
"archive-board": "Archivovat tablo",
|
||||
"archive-card": "Archivovat kartu",
|
||||
"archive-list": "Archive List",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-selection": "Archivovat výběr",
|
||||
"archiveBoardPopup-title": "Archivovat tablo?",
|
||||
"archived-items": "Archivované položky",
|
||||
@@ -91,6 +97,9 @@
|
||||
"boardChangeWatchPopup-title": "Change Watch",
|
||||
"boardMenuPopup-title": "Menu tabla",
|
||||
"boards": "Tabla",
|
||||
"board-view": "Board View",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Seznamy",
|
||||
"bucket-example": "Například \"Než mě odvedou\"",
|
||||
"cancel": "Zrušit",
|
||||
"card-archived": "Tato karta je archivována.",
|
||||
@@ -100,6 +109,7 @@
|
||||
"card-delete-suggest-archive": "Kartu můžete archivovat a tím ji odstranit z tabla a přitom zachovat aktivity.",
|
||||
"card-due": "Termín",
|
||||
"card-due-on": "Do",
|
||||
"card-spent": "Spent Time",
|
||||
"card-edit-attachments": "Upravit přílohy",
|
||||
"card-edit-labels": "Upravit štítky",
|
||||
"card-edit-members": "Upravit členy",
|
||||
@@ -149,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Kopírovat adresu karty do mezipaměti",
|
||||
"copyCardPopup-title": "Kopírovat kartu",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Vytvořit",
|
||||
"createBoardPopup-title": "Vytvořit tablo",
|
||||
"chooseBoardSourcePopup-title": "Importovat tablo",
|
||||
@@ -168,8 +181,11 @@
|
||||
"edit": "Upravit",
|
||||
"edit-avatar": "Změnit avatar",
|
||||
"edit-profile": "Upravit profil",
|
||||
"edit-wip-limit": "Edit WIP Limit",
|
||||
"soft-wip-limit": "Soft WIP Limit",
|
||||
"editCardStartDatePopup-title": "Změnit datum startu úkolu",
|
||||
"editCardDueDatePopup-title": "Změnit datum dokončení úkolu",
|
||||
"editCardSpentTimePopup-title": "Change spent time",
|
||||
"editLabelPopup-title": "Změnit štítek",
|
||||
"editNotificationPopup-title": "Změnit notifikace",
|
||||
"editProfilePopup-title": "Upravit profil",
|
||||
@@ -177,6 +193,7 @@
|
||||
"email-enrollAccount-subject": "Byl vytvořen účet na __siteName__",
|
||||
"email-enrollAccount-text": "Ahoj __user__,\n\nMůžeš začít používat službu kliknutím na odkaz níže.\n\n__url__\n\nDěkujeme.",
|
||||
"email-fail": "Odeslání emailu selhalo",
|
||||
"email-fail-text": "Error trying to send email",
|
||||
"email-invalid": "Neplatný email",
|
||||
"email-invite": "Pozvat pomocí emailu",
|
||||
"email-invite-subject": "__inviter__ odeslal pozvánku",
|
||||
@@ -186,6 +203,7 @@
|
||||
"email-sent": "Email byl odeslán",
|
||||
"email-verifyEmail-subject": "Ověř svou emailovou adresu na",
|
||||
"email-verifyEmail-text": "Ahoj __user__,\n\nPro ověření emailové adresy klikni na odkaz níže.\n\n__url__\n\nDěkujeme.",
|
||||
"enable-wip-limit": "Enable WIP Limit",
|
||||
"error-board-doesNotExist": "Toto tablo neexistuje",
|
||||
"error-board-notAdmin": "K provedení změny musíš být administrátor tohoto tabla",
|
||||
"error-board-notAMember": "K provedení změny musíš být členem tohoto tabla",
|
||||
@@ -230,6 +248,8 @@
|
||||
"info": "Version",
|
||||
"initials": "Iniciály",
|
||||
"invalid-date": "Invalid date",
|
||||
"invalid-time": "Invalid time",
|
||||
"invalid-user": "Invalid user",
|
||||
"joined": "spojeno",
|
||||
"just-invited": "Právě jsi byl pozván(a) do tohoto tabla",
|
||||
"keyboard-shortcuts": "Klávesové zkratky",
|
||||
@@ -240,18 +260,22 @@
|
||||
"language": "Jazyk",
|
||||
"last-admin-desc": "Nelze změnit role, protože musí existovat alespoň jeden administrátor.",
|
||||
"leave-board": "Opustit tablo",
|
||||
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
|
||||
"leaveBoardPopup-title": "Leave Board ?",
|
||||
"link-card": "Odkázat na tuto kartu",
|
||||
"list-archive-cards": "Archivovat všechny karty na tomto seznamu",
|
||||
"list-archive-cards-pop": "Toto odstraní z tabla všechny karty z tohoto seznamu. Pro zobrazení archivovaných karet a jejich opětovné obnovení, klikni v \"Menu\" > \"Archivované položky\".",
|
||||
"list-move-cards": "Přesunout všechny karty v tomto seznamu",
|
||||
"list-select-cards": "Vybrat všechny karty v tomto seznamu",
|
||||
"listActionPopup-title": "Vypsat akce",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"listImportCardPopup-title": "Importovat Trello kartu",
|
||||
"listMorePopup-title": "Více",
|
||||
"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.",
|
||||
"list-delete-suggest-archive": "You can archive a list to remove it from the board and preserve the activity.",
|
||||
"lists": "Seznamy",
|
||||
"swimlanes": "Swimlanes",
|
||||
"log-out": "Odhlásit",
|
||||
"log-in": "Přihlásit",
|
||||
"loginPopup-title": "Přihlásit",
|
||||
@@ -271,6 +295,7 @@
|
||||
"name": "Jméno",
|
||||
"no-archived-cards": "Žádné archivované karty.",
|
||||
"no-archived-lists": "Žádné archivované seznamy.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"no-results": "Žádné výsledky",
|
||||
"normal": "Normální",
|
||||
"normal-desc": "Může zobrazovat a upravovat karty. Nemůže měnit nastavení.",
|
||||
@@ -307,6 +332,8 @@
|
||||
"save": "Uložit",
|
||||
"search": "Hledat",
|
||||
"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",
|
||||
"shortcut-assign-self": "Přiřadit sebe k aktuální kartě",
|
||||
"shortcut-autocomplete-emoji": "Autocomplete emoji",
|
||||
"shortcut-autocomplete-members": "Automatický výběr uživatel",
|
||||
@@ -327,6 +354,11 @@
|
||||
"team": "Tým",
|
||||
"this-board": "toto tablo",
|
||||
"this-card": "tuto kartu",
|
||||
"spent-time-hours": "Spent time (hours)",
|
||||
"overtime-hours": "Overtime (hours)",
|
||||
"overtime": "Overtime",
|
||||
"has-overtime-cards": "Has overtime cards",
|
||||
"has-spenttime-cards": "Has spent time cards",
|
||||
"time": "Time",
|
||||
"title": "Název",
|
||||
"tracking": "Tracking",
|
||||
@@ -344,9 +376,13 @@
|
||||
"watching": "Watching",
|
||||
"watching-info": "You will be notified of any change in this board",
|
||||
"welcome-board": "Welcome Board",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"what-to-do": "Co chcete dělat?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
|
||||
"admin-panel": "Admin Panel",
|
||||
"settings": "Nastavení",
|
||||
"people": "Lidé",
|
||||
@@ -365,9 +401,12 @@
|
||||
"smtp-password": "Heslo",
|
||||
"smtp-tls": "TLS support",
|
||||
"send-from": "Od",
|
||||
"send-smtp-test": "Send a test email to yourself",
|
||||
"invitation-code": "Invitation Code",
|
||||
"email-invite-register-subject": "__inviter__ odeslal pozvánku",
|
||||
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
|
||||
"email-smtp-test-subject": "SMTP Test Email From Wekan",
|
||||
"email-smtp-test-text": "You have successfully sent an email",
|
||||
"error-invitation-code-not-exist": "Invitation code doesn't exist",
|
||||
"error-notAuthorized": "Nejste autorizován k prohlížení této stránky.",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
@@ -391,5 +430,8 @@
|
||||
"yes": "Ano",
|
||||
"no": "Ne",
|
||||
"accounts": "Účty",
|
||||
"accounts-allowEmailChange": "Povolit změnu Emailu"
|
||||
"accounts-allowEmailChange": "Povolit změnu Emailu",
|
||||
"createdAt": "Created at",
|
||||
"verified": "Verified",
|
||||
"active": "Active"
|
||||
}
|
||||
+60
-18
@@ -12,6 +12,7 @@
|
||||
"act-archivedBoard": "hat __board__ archiviert",
|
||||
"act-archivedCard": "hat __card__ archiviert",
|
||||
"act-archivedList": "hat __list__ archiviert",
|
||||
"act-archivedSwimlane": "__swimlane__ wurde archiviert",
|
||||
"act-importBoard": "hat __board__ importiert",
|
||||
"act-importCard": "hat __card__ importiert",
|
||||
"act-importList": "hat __list__ importiert",
|
||||
@@ -44,6 +45,7 @@
|
||||
"add-attachment": "Datei anhängen",
|
||||
"add-board": "neues Board",
|
||||
"add-card": "Karte hinzufügen",
|
||||
"add-swimlane": "Swimlane hinzufügen",
|
||||
"add-checklist": "Checkliste hinzufügen",
|
||||
"add-checklist-item": "Punkt zu einer Checkliste hinzufügen",
|
||||
"add-cover": "Cover hinzufügen",
|
||||
@@ -53,7 +55,10 @@
|
||||
"added": "Hinzugefügt",
|
||||
"addMemberPopup-title": "Mitglieder",
|
||||
"admin": "Admin",
|
||||
"admin-desc": "Kann Karten anschauen und bearbeiten, Mitglieder entfernen und Boardeinstellungen ändern.",
|
||||
"admin-desc": "Kann Karten anzeigen und bearbeiten, Mitglieder entfernen und Boardeinstellungen ändern.",
|
||||
"admin-announcement": "Ankündigung",
|
||||
"admin-announcement-active": "Aktive, systemweite Ankündigungen",
|
||||
"admin-announcement-title": "Ankündigung des Administrators",
|
||||
"all-boards": "Alle Boards",
|
||||
"and-n-other-card": "und eine andere Karte",
|
||||
"and-n-other-card_plural": "und __count__ andere Karten",
|
||||
@@ -64,12 +69,13 @@
|
||||
"archive-board": "Board archivieren",
|
||||
"archive-card": "Karte archivieren",
|
||||
"archive-list": "Liste archivieren",
|
||||
"archive-swimlane": "Swimlane archivieren",
|
||||
"archive-selection": "Auswahl archivieren",
|
||||
"archiveBoardPopup-title": "Board archivieren?",
|
||||
"archived-items": "Archivierte Einträge",
|
||||
"archived-boards": "Achivierte Boards",
|
||||
"restore-board": "Board wiederherstellen",
|
||||
"no-archived-boards": "keine archivierten Boards",
|
||||
"no-archived-boards": "Keine archivierten Boards",
|
||||
"archives": "Archive",
|
||||
"assign-member": "Mitglied zuweisen",
|
||||
"attached": "angehängt",
|
||||
@@ -85,21 +91,25 @@
|
||||
"board-not-found": "Board nicht gefunden",
|
||||
"board-private-info": "Dieses Board wird <strong>privat</strong> sein.",
|
||||
"board-public-info": "Dieses Board wird <strong>öffentlich</strong> sein.",
|
||||
"boardChangeColorPopup-title": "Boardfarbe ändern",
|
||||
"boardChangeColorPopup-title": "Farbe des Boards ändern",
|
||||
"boardChangeTitlePopup-title": "Board umbenennen",
|
||||
"boardChangeVisibilityPopup-title": "Sichtbarkeit ändern",
|
||||
"boardChangeWatchPopup-title": "Beobachtung ändern",
|
||||
"boardMenuPopup-title": "Boardmenü",
|
||||
"boards": "Boards",
|
||||
"board-view": "Boardansicht",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Listen",
|
||||
"bucket-example": "z.B. \"Löffelliste\"",
|
||||
"cancel": "Abbrechen",
|
||||
"card-archived": "Diese Karte wurde archiviert.",
|
||||
"card-comments-title": "Diese Karte hat %s Kommentare.",
|
||||
"card-comments-title": "Diese Karte hat %s Kommentar(e).",
|
||||
"card-delete-notice": "Löschen ist unwiderruflich. Alle Aktionen die dieser Karte zugeordnet sind werden ebenfalls gelöscht.",
|
||||
"card-delete-pop": "Alle Aktionen werden vom Aktivitätsfeed entfernt und die Karte kann nicht mehr geöffnet werden. Das Löschen kann nicht widerrufen werden!",
|
||||
"card-delete-suggest-archive": "Sie können eine Karte archivieren, um sie von dem Board zu entfernen und die Aktivitäten zu behalten.",
|
||||
"card-delete-suggest-archive": "Sie können eine Karte archivieren, um sie vom Board zu entfernen und die Aktivitäten zu behalten.",
|
||||
"card-due": "Ende",
|
||||
"card-due-on": "Ende am",
|
||||
"card-spent": "Aufgewendete Zeit",
|
||||
"card-edit-attachments": "Anhänge ändern",
|
||||
"card-edit-labels": "Labels ändern",
|
||||
"card-edit-members": "Mitglieder ändern",
|
||||
@@ -125,8 +135,8 @@
|
||||
"changePermissionsPopup-title": "Berechtigungen ändern",
|
||||
"changeSettingsPopup-title": "Einstellungen ändern",
|
||||
"checklists": "Checklisten",
|
||||
"click-to-star": "Klicken um dem Board einen Stern zu geben.",
|
||||
"click-to-unstar": "Klicken um den Stern von dem Board zu entfernen.",
|
||||
"click-to-star": "Klicken Sie, um das Board mit einem Stern zu markieren.",
|
||||
"click-to-unstar": "Klicken Sie, um den Stern vom Board zu entfernen.",
|
||||
"clipboard": "Zwischenablage oder Drag & Drop",
|
||||
"close": "Schließen",
|
||||
"close-board": "Board schließen",
|
||||
@@ -146,9 +156,12 @@
|
||||
"comment-only": "Nur kommentierbar",
|
||||
"comment-only-desc": "Kann Karten nur Kommentieren",
|
||||
"computer": "Computer",
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Kopiere die Karte in die Zwischenablage",
|
||||
"confirm-checklist-delete-dialog": "Sind Sie sicher, dass Sie die Checkliste löschen möchten?",
|
||||
"copy-card-link-to-clipboard": "Kopiere Link zur Karte in die Zwischenablage",
|
||||
"copyCardPopup-title": "Karte kopieren",
|
||||
"copyChecklistToManyCardsPopup-title": "Checklistenvorlage in mehrere Karten kopieren",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Titel und Beschreibungen der Zielkarten im folgenden JSON-Format",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"Titel der ersten Karte\", \"description\":\"Beschreibung der ersten Karte\"}, {\"title\":\"Titel der zweiten Karte\",\"description\":\"Beschreibung der zweiten Karte\"},{\"title\":\"Titel der letzten Karte\",\"description\":\"Beschreibung der letzten Karte\"} ]",
|
||||
"create": "Erstellen",
|
||||
"createBoardPopup-title": "Board erstellen",
|
||||
"chooseBoardSourcePopup-title": "Board importieren",
|
||||
@@ -168,8 +181,11 @@
|
||||
"edit": "Bearbeiten",
|
||||
"edit-avatar": "Profilbild ändern",
|
||||
"edit-profile": "Profil ändern",
|
||||
"edit-wip-limit": "WIP-Limit bearbeiten",
|
||||
"soft-wip-limit": "Soft WIP-Limit",
|
||||
"editCardStartDatePopup-title": "Startdatum ändern",
|
||||
"editCardDueDatePopup-title": "Enddatum ändern",
|
||||
"editCardSpentTimePopup-title": "Aufgewendete Zeit ändern",
|
||||
"editLabelPopup-title": "Label ändern",
|
||||
"editNotificationPopup-title": "Benachrichtigung ändern",
|
||||
"editProfilePopup-title": "Profil ändern",
|
||||
@@ -177,6 +193,7 @@
|
||||
"email-enrollAccount-subject": "Ihr Benutzerkonto auf __siteName__ wurde erstellt",
|
||||
"email-enrollAccount-text": "Hallo __user__,\n\num den Dienst nutzen zu können, klicken Sie bitte auf folgenden Link:\n\n__url__\n\nDanke.",
|
||||
"email-fail": "Senden der E-Mail fehlgeschlagen",
|
||||
"email-fail-text": "Fehler beim Senden des E-Mails",
|
||||
"email-invalid": "Ungültige E-Mail-Adresse",
|
||||
"email-invite": "via E-Mail einladen",
|
||||
"email-invite-subject": "__inviter__ hat Ihnen eine Einladung geschickt",
|
||||
@@ -186,6 +203,7 @@
|
||||
"email-sent": "E-Mail gesendet",
|
||||
"email-verifyEmail-subject": "Bestätigen Sie ihre E-Mail-Adresse auf __siteName__",
|
||||
"email-verifyEmail-text": "Hallo __user__,\n\num ihre E-Mail-Adresse zu bestätigen, klicken Sie bitte auf folgenden Link:\n\n__url__\n\nDanke.",
|
||||
"enable-wip-limit": "WIP-Limit einschalten",
|
||||
"error-board-doesNotExist": "Dieses Board existiert nicht",
|
||||
"error-board-notAdmin": "Um das zu tun, müssen Sie Administrator dieses Boards sein",
|
||||
"error-board-notAMember": "Um das zu tun, müssen Sie Mitglied dieses Boards sein",
|
||||
@@ -204,7 +222,7 @@
|
||||
"filter-no-label": "Kein Label",
|
||||
"filter-no-member": "Kein Mitglied",
|
||||
"filter-on": "Filter ist aktiv",
|
||||
"filter-on-desc": "Sie filtern die Karten in diesem Board. Klicken um die Filter zu bearbeiten.",
|
||||
"filter-on-desc": "Sie filtern die Karten in diesem Board. Klicken Sie, um den Filter zu bearbeiten.",
|
||||
"filter-to-selection": "Ergebnisse auswählen",
|
||||
"fullname": "Vollständiger Name",
|
||||
"header-logo-title": "Zurück zur Board Seite.",
|
||||
@@ -223,13 +241,15 @@
|
||||
"import-board-instruction-wekan": "Gehen Sie in Ihrem Wekan board auf 'Menü', und dann auf 'Board exportieren'. Kopieren Sie anschließend den Text aus der heruntergeladenen Datei.",
|
||||
"import-json-placeholder": "Fügen Sie die korrekten JSON-Daten hier ein",
|
||||
"import-map-members": "Mitglieder zuordnen",
|
||||
"import-members-map": "Das importierte Board hat einige Mitglieder. Bitte ordnen Sie die Mitglieder, die importiert werden sollen, Wekan-Nutzern zu",
|
||||
"import-members-map": "Das importierte Board hat Mitglieder. Bitte ordnen Sie jene, die importiert werden sollen, vorhandenen Wekan-Nutzern zu",
|
||||
"import-show-user-mapping": "Mitgliederzuordnung überprüfen",
|
||||
"import-user-select": "Wählen Sie den Wekan-Nutzer aus, der dieses Mitglied sein soll",
|
||||
"importMapMembersAddPopup-title": "Wekan-Nutzer auswählen",
|
||||
"info": "Version",
|
||||
"initials": "Initialen",
|
||||
"invalid-date": "Ungültiges Datum",
|
||||
"invalid-time": "Ungültige Zeitangabe",
|
||||
"invalid-user": "Ungültiger Benutzer",
|
||||
"joined": "beigetreten",
|
||||
"just-invited": "Sie wurden soeben zu diesem Board eingeladen",
|
||||
"keyboard-shortcuts": "Tastaturkürzel",
|
||||
@@ -240,18 +260,22 @@
|
||||
"language": "Sprache",
|
||||
"last-admin-desc": "Sie können keine Rollen ändern, weil es mindestens einen Administrator geben muss.",
|
||||
"leave-board": "Board verlassen",
|
||||
"leave-board-pop": "Sind Sie sicher, dass Sie __boardTitle__ verlassen möchten? Sie werden von allen Karten in diesem Board entfernt.",
|
||||
"leaveBoardPopup-title": "Board verlassen?",
|
||||
"link-card": "Link zu dieser Karte",
|
||||
"list-archive-cards": "Alle Karten in dieser Liste archivieren",
|
||||
"list-archive-cards-pop": "Alle Karten von dieser Liste werden vom Board entfernt. Um archivierte Karten anzuzeigen und wiederherzustellen, klicken Sie auf \"Menü\" > \"Archivierte Einträge\".",
|
||||
"list-move-cards": "Alle Karten in dieser Liste verschieben",
|
||||
"list-select-cards": "Alle Karten in dieser Liste auswählen",
|
||||
"listActionPopup-title": "Listenaktionen",
|
||||
"swimlaneActionPopup-title": "Swimlaneaktionen",
|
||||
"listImportCardPopup-title": "Eine Trello-Karte importieren",
|
||||
"listMorePopup-title": "Mehr",
|
||||
"link-list": "Link zu dieser Liste",
|
||||
"list-delete-pop": "Alle Aktionen werden aus dem Verlauf gelöscht. Die Liste kann nicht wiederhergestellt werden.",
|
||||
"list-delete-suggest-archive": "Listen können archiviert werden um sie aus dem Board zu entfernen und den Verlauf zu erhalten.",
|
||||
"list-delete-suggest-archive": "Listen können archiviert werden, um sie aus dem Board zu entfernen und den Verlauf zu erhalten.",
|
||||
"lists": "Listen",
|
||||
"swimlanes": "Swimlanes",
|
||||
"log-out": "Ausloggen",
|
||||
"log-in": "Einloggen",
|
||||
"loginPopup-title": "Einloggen",
|
||||
@@ -260,22 +284,23 @@
|
||||
"menu": "Menü",
|
||||
"move-selection": "Auswahl verschieben",
|
||||
"moveCardPopup-title": "Karte verschieben",
|
||||
"moveCardToBottom-title": "Zum Ende verschieben",
|
||||
"moveCardToBottom-title": "Ans Ende verschieben",
|
||||
"moveCardToTop-title": "Zum Anfang verschieben",
|
||||
"moveSelectionPopup-title": "Auswahl verschieben",
|
||||
"multi-selection": "Mehrfachauswahl",
|
||||
"multi-selection-on": "Mehrfachauswahl ist aktiv",
|
||||
"muted": "Stumm",
|
||||
"muted-info": "Sie werden über keine Änderung in diesem Board benachrichtigt",
|
||||
"muted-info": "Sie werden nicht über Änderungen auf diesem Board benachrichtigt",
|
||||
"my-boards": "Meine Boards",
|
||||
"name": "Name",
|
||||
"no-archived-cards": "Keine archivierten Karten.",
|
||||
"no-archived-lists": "Keine archivierten Listen.",
|
||||
"no-archived-swimlanes": "Keine archivierten Swimlanes",
|
||||
"no-results": "Keine Ergebnisse",
|
||||
"normal": "Normal",
|
||||
"normal-desc": "Kann Karten anschauen und bearbeiten, aber keine Einstellungen ändern.",
|
||||
"normal-desc": "Kann Karten anzeigen und bearbeiten, aber keine Einstellungen ändern.",
|
||||
"not-accepted-yet": "Die Einladung wurde noch nicht angenommen",
|
||||
"notify-participate": "Benachrichtigungen über alle Karten erhalten, bei denen Sie als Ersteller oder Mitglied teilnehmen",
|
||||
"notify-participate": "Benachrichtigungen zu allen Karten erhalten, an denen Sie teilnehmen",
|
||||
"notify-watch": "Benachrichtigungen über alle Boards, Listen oder Karten erhalten, die Sie beobachten",
|
||||
"optional": "optional",
|
||||
"or": "oder",
|
||||
@@ -307,6 +332,8 @@
|
||||
"save": "Speichern",
|
||||
"search": "Suchen",
|
||||
"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",
|
||||
"shortcut-assign-self": "Fügen Sie sich zur aktuellen Karte hinzu",
|
||||
"shortcut-autocomplete-emoji": "Emojis vervollständigen",
|
||||
"shortcut-autocomplete-members": "Mitglieder vervollständigen",
|
||||
@@ -320,13 +347,18 @@
|
||||
"sidebar-open": "Seitenleiste öffnen",
|
||||
"sidebar-close": "Seitenleiste schließen",
|
||||
"signupPopup-title": "Benutzerkonto erstellen",
|
||||
"star-board-title": "Klicken um das Board mit einem Stern zu markieren. Es erscheint dann oben in ihrer Boardliste.",
|
||||
"star-board-title": "Klicken Sie, um das Board mit einem Stern zu markieren. Es erscheint dann oben in ihrer Boardliste.",
|
||||
"starred-boards": "Markierte Boards",
|
||||
"starred-boards-description": "Markierte Boards erscheinen oben in ihrer Boardliste.",
|
||||
"subscribe": "Abonnieren",
|
||||
"team": "Team",
|
||||
"this-board": "dieses Board",
|
||||
"this-card": "diese Karte",
|
||||
"spent-time-hours": "Aufgewendete Zeit (Stunden)",
|
||||
"overtime-hours": "Überzeit (Stunden)",
|
||||
"overtime": "Überzeit",
|
||||
"has-overtime-cards": "Hat Karten mit Überzeit",
|
||||
"has-spenttime-cards": "Hat Karten mit aufgewendeten Zeiten",
|
||||
"time": "Zeit",
|
||||
"title": "Titel",
|
||||
"tracking": "Folgen",
|
||||
@@ -344,9 +376,13 @@
|
||||
"watching": "Beobachten",
|
||||
"watching-info": "Sie werden über alle Änderungen in diesem Board benachrichtigt",
|
||||
"welcome-board": "Willkommen-Board",
|
||||
"welcome-swimlane": "Meilenstein 1",
|
||||
"welcome-list1": "Grundlagen",
|
||||
"welcome-list2": "Fortgeschritten",
|
||||
"what-to-do": "Was wollen Sie tun?",
|
||||
"wipLimitErrorPopup-title": "Ungültiges WIP-Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "Die Anzahl von Aufgaben in dieser Liste ist größer als das von Ihnen definierte WIP-Limit.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Bitte verschieben Sie einige Aufgaben aus dieser Liste oder setzen Sie ein grösseres WIP-Limit.",
|
||||
"admin-panel": "Administration",
|
||||
"settings": "Einstellungen",
|
||||
"people": "Nutzer",
|
||||
@@ -365,9 +401,12 @@
|
||||
"smtp-password": "Passwort",
|
||||
"smtp-tls": "TLS Unterstützung",
|
||||
"send-from": "Absender",
|
||||
"send-smtp-test": "Test-E-Mail an sich selbst schicken",
|
||||
"invitation-code": "Einladungscode",
|
||||
"email-invite-register-subject": "__inviter__ hat Ihnen eine Einladung geschickt",
|
||||
"email-invite-register-text": "Hallo __user__,\n\n__inviter__ hat Sie für Ihre Zusammenarbeit zu Wekan eingeladen.\n\nBitte klicken Sie auf folgenden Link:\n__url__\n\nIhr Einladungscode lautet: __icode__\n\nDanke.",
|
||||
"email-smtp-test-subject": "SMTP-Test-E-Mail von Wekan",
|
||||
"email-smtp-test-text": "Sie haben erfolgreich eine E-Mail versandt",
|
||||
"error-invitation-code-not-exist": "Ungültiger Einladungscode",
|
||||
"error-notAuthorized": "Sie sind nicht berechtigt diese Seite zu sehen.",
|
||||
"outgoing-webhooks": "Ausgehende Webhooks",
|
||||
@@ -391,5 +430,8 @@
|
||||
"yes": "Ja",
|
||||
"no": "Nein",
|
||||
"accounts": "Konten",
|
||||
"accounts-allowEmailChange": "Zulassen E-Mail ändern"
|
||||
"accounts-allowEmailChange": "Ändern der E-Mailadresse zulassen",
|
||||
"createdAt": "Erstellt am",
|
||||
"verified": "Geprüft",
|
||||
"active": "Aktiv"
|
||||
}
|
||||
@@ -0,0 +1,437 @@
|
||||
{
|
||||
"accept": "Accept",
|
||||
"act-activity-notify": "[Wekan] Activity Notification",
|
||||
"act-addAttachment": "attached __attachment__ to __card__",
|
||||
"act-addChecklist": "added checklist __checklist__ to __card__",
|
||||
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
|
||||
"act-addComment": "commented on __card__: __comment__",
|
||||
"act-createBoard": "created __board__",
|
||||
"act-createCard": "added __card__ to __list__",
|
||||
"act-createList": "added __list__ to __board__",
|
||||
"act-addBoardMember": "added __member__ to __board__",
|
||||
"act-archivedBoard": "archived __board__",
|
||||
"act-archivedCard": "archived __card__",
|
||||
"act-archivedList": "archived __list__",
|
||||
"act-archivedSwimlane": "archived __swimlane__",
|
||||
"act-importBoard": "imported __board__",
|
||||
"act-importCard": "imported __card__",
|
||||
"act-importList": "imported __list__",
|
||||
"act-joinMember": "added __member__ to __card__",
|
||||
"act-moveCard": "moved __card__ from __oldList__ to __list__",
|
||||
"act-removeBoardMember": "removed __member__ from __board__",
|
||||
"act-restoredCard": "restored __card__ to __board__",
|
||||
"act-unjoinMember": "removed __member__ from __card__",
|
||||
"act-withBoardTitle": "[Wekan] __board__",
|
||||
"act-withCardTitle": "[__board__] __card__",
|
||||
"actions": "Actions",
|
||||
"activities": "Activities",
|
||||
"activity": "Activity",
|
||||
"activity-added": "added %s to %s",
|
||||
"activity-archived": "archived %s",
|
||||
"activity-attached": "attached %s to %s",
|
||||
"activity-created": "created %s",
|
||||
"activity-excluded": "excluded %s from %s",
|
||||
"activity-imported": "imported %s into %s from %s",
|
||||
"activity-imported-board": "imported %s from %s",
|
||||
"activity-joined": "joined %s",
|
||||
"activity-moved": "moved %s from %s to %s",
|
||||
"activity-on": "on %s",
|
||||
"activity-removed": "removed %s from %s",
|
||||
"activity-sent": "sent %s to %s",
|
||||
"activity-unjoined": "unjoined %s",
|
||||
"activity-checklist-added": "added checklist to %s",
|
||||
"activity-checklist-item-added": "added checklist item to '%s' in %s",
|
||||
"add": "Προσθήκη",
|
||||
"add-attachment": "Add Attachment",
|
||||
"add-board": "Add Board",
|
||||
"add-card": "Προσθήκη Κάρτας",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"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": "Μέλοι",
|
||||
"admin": "Διαχειριστής",
|
||||
"admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
|
||||
"admin-announcement": "Announcement",
|
||||
"admin-announcement-active": "Active System-Wide Announcement",
|
||||
"admin-announcement-title": "Announcement from Administrator",
|
||||
"all-boards": "All boards",
|
||||
"and-n-other-card": "And __count__ other card",
|
||||
"and-n-other-card_plural": "And __count__ other cards",
|
||||
"apply": "Εφαρμογή",
|
||||
"app-is-offline": "Wekan is loading, please wait. Refreshing the page will cause data loss. If Wekan does not load, please check that Wekan server has not stopped.",
|
||||
"archive": "Archive",
|
||||
"archive-all": "Archive All",
|
||||
"archive-board": "Archive Board",
|
||||
"archive-card": "Archive Card",
|
||||
"archive-list": "Archive List",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-selection": "Archive selection",
|
||||
"archiveBoardPopup-title": "Archive Board?",
|
||||
"archived-items": "Archived Items",
|
||||
"archived-boards": "Archived Boards",
|
||||
"restore-board": "Restore Board",
|
||||
"no-archived-boards": "No Archived Boards.",
|
||||
"archives": "Archives",
|
||||
"assign-member": "Assign member",
|
||||
"attached": "attached",
|
||||
"attachment": "Attachment",
|
||||
"attachment-delete-pop": "Deleting an attachment is permanent. There is no undo.",
|
||||
"attachmentDeletePopup-title": "Delete Attachment?",
|
||||
"attachments": "Attachments",
|
||||
"auto-watch": "Automatically watch boards when they are created",
|
||||
"avatar-too-big": "The avatar is too large (70KB max)",
|
||||
"back": "Πίσω",
|
||||
"board-change-color": "Αλλαγή χρώματος",
|
||||
"board-nb-stars": "%s stars",
|
||||
"board-not-found": "Board not found",
|
||||
"board-private-info": "This board will be <strong>private</strong>.",
|
||||
"board-public-info": "This board will be <strong>public</strong>.",
|
||||
"boardChangeColorPopup-title": "Change Board Background",
|
||||
"boardChangeTitlePopup-title": "Rename Board",
|
||||
"boardChangeVisibilityPopup-title": "Change Visibility",
|
||||
"boardChangeWatchPopup-title": "Change Watch",
|
||||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Λίστες",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
"cancel": "Ακύρωση",
|
||||
"card-archived": "This card is archived.",
|
||||
"card-comments-title": "This card has %s comment.",
|
||||
"card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
|
||||
"card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
|
||||
"card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
|
||||
"card-due": "Έως",
|
||||
"card-due-on": "Έως τις",
|
||||
"card-spent": "Spent Time",
|
||||
"card-edit-attachments": "Edit attachments",
|
||||
"card-edit-labels": "Edit labels",
|
||||
"card-edit-members": "Edit members",
|
||||
"card-labels-title": "Change the labels for the card.",
|
||||
"card-members-title": "Add or remove members of the board from the card.",
|
||||
"card-start": "Start",
|
||||
"card-start-on": "Starts on",
|
||||
"cardAttachmentsPopup-title": "Attach From",
|
||||
"cardDeletePopup-title": "Διαγραφή Κάρτας;",
|
||||
"cardDetailsActionsPopup-title": "Card Actions",
|
||||
"cardLabelsPopup-title": "Ετικέτες",
|
||||
"cardMembersPopup-title": "Μέλοι",
|
||||
"cardMorePopup-title": "Περισσότερα",
|
||||
"cards": "Κάρτες",
|
||||
"change": "Αλλαγή",
|
||||
"change-avatar": "Change Avatar",
|
||||
"change-password": "Αλλαγή Κωδικού",
|
||||
"change-permissions": "Change permissions",
|
||||
"change-settings": "Αλλαγή Ρυθμίσεων",
|
||||
"changeAvatarPopup-title": "Change Avatar",
|
||||
"changeLanguagePopup-title": "Αλλαγή Γλώσσας",
|
||||
"changePasswordPopup-title": "Αλλαγή Κωδικού",
|
||||
"changePermissionsPopup-title": "Change Permissions",
|
||||
"changeSettingsPopup-title": "Αλλαγή Ρυθμίσεων",
|
||||
"checklists": "Checklists",
|
||||
"click-to-star": "Click to star this board.",
|
||||
"click-to-unstar": "Click to unstar this board.",
|
||||
"clipboard": "Clipboard or drag & drop",
|
||||
"close": "Κλείσιμο",
|
||||
"close-board": "Close Board",
|
||||
"close-board-pop": "You will be able to restore the board by clicking the “Archives” button from the home header.",
|
||||
"color-black": "μαύρο",
|
||||
"color-blue": "μπλε",
|
||||
"color-green": "πράσινο",
|
||||
"color-lime": "λάιμ",
|
||||
"color-orange": "πορτοκαλί",
|
||||
"color-pink": "ροζ",
|
||||
"color-purple": "μωβ",
|
||||
"color-red": "κόκκινο",
|
||||
"color-sky": "ουρανός",
|
||||
"color-yellow": "κίτρινο",
|
||||
"comment": "Comment",
|
||||
"comment-placeholder": "Write Comment",
|
||||
"comment-only": "Comment only",
|
||||
"comment-only-desc": "Can comment on cards only.",
|
||||
"computer": "Υπολογιστής",
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Δημιουργία",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"current": "current",
|
||||
"date": "Ημερομηνία",
|
||||
"decline": "Decline",
|
||||
"default-avatar": "Default avatar",
|
||||
"delete": "Διαγραφή",
|
||||
"deleteLabelPopup-title": "Delete Label?",
|
||||
"description": "Description",
|
||||
"disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
|
||||
"disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
|
||||
"discard": "Απόρριψη",
|
||||
"done": "Done",
|
||||
"download": "Download",
|
||||
"edit": "Edit",
|
||||
"edit-avatar": "Change Avatar",
|
||||
"edit-profile": "Edit Profile",
|
||||
"edit-wip-limit": "Edit WIP Limit",
|
||||
"soft-wip-limit": "Soft WIP Limit",
|
||||
"editCardStartDatePopup-title": "Change start date",
|
||||
"editCardDueDatePopup-title": "Change due date",
|
||||
"editCardSpentTimePopup-title": "Change spent time",
|
||||
"editLabelPopup-title": "Change Label",
|
||||
"editNotificationPopup-title": "Edit Notification",
|
||||
"editProfilePopup-title": "Edit Profile",
|
||||
"email": "Email",
|
||||
"email-enrollAccount-subject": "An account created for you on __siteName__",
|
||||
"email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"email-fail": "Sending email failed",
|
||||
"email-fail-text": "Error trying to send email",
|
||||
"email-invalid": "Invalid email",
|
||||
"email-invite": "Invite via Email",
|
||||
"email-invite-subject": "__inviter__ sent you an invitation",
|
||||
"email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
|
||||
"email-resetPassword-subject": "Reset your password on __siteName__",
|
||||
"email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"email-sent": "Email sent",
|
||||
"email-verifyEmail-subject": "Verify your email address on __siteName__",
|
||||
"email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"enable-wip-limit": "Enable WIP Limit",
|
||||
"error-board-doesNotExist": "This board does not exist",
|
||||
"error-board-notAdmin": "You need to be admin of this board to do that",
|
||||
"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-list-doesNotExist": "This list does not exist",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"error-user-notAllowSelf": "You can not invite yourself",
|
||||
"error-user-notCreated": "This user is not created",
|
||||
"error-username-taken": "This username is already taken",
|
||||
"error-email-taken": "Email has already been taken",
|
||||
"export-board": "Export board",
|
||||
"filter": "Φίλτρο",
|
||||
"filter-cards": "Filter Cards",
|
||||
"filter-clear": "Clear filter",
|
||||
"filter-no-label": "No label",
|
||||
"filter-no-member": "Κανένα μέλος",
|
||||
"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",
|
||||
"fullname": "Πλήρες Όνομα",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"hide-system-messages": "Hide system messages",
|
||||
"headerBarCreateBoardPopup-title": "Create Board",
|
||||
"home": "Home",
|
||||
"import": "Εισαγωγή",
|
||||
"import-board": "import board",
|
||||
"import-board-c": "Import board",
|
||||
"import-board-title-trello": "Import board from Trello",
|
||||
"import-board-title-wekan": "Import board from Wekan",
|
||||
"import-sandstorm-warning": "Imported board will delete all existing data on board and replace it with imported board.",
|
||||
"from-trello": "Από το Trello",
|
||||
"from-wekan": "Από το Wekan",
|
||||
"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-wekan": "In your Wekan board, go to 'Menu', then 'Export board', and copy the text in the downloaded file.",
|
||||
"import-json-placeholder": "Paste your valid JSON 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 Wekan users",
|
||||
"import-show-user-mapping": "Review members mapping",
|
||||
"import-user-select": "Pick the Wekan user you want to use as this member",
|
||||
"importMapMembersAddPopup-title": "Select Wekan member",
|
||||
"info": "Έκδοση",
|
||||
"initials": "Initials",
|
||||
"invalid-date": "Invalid date",
|
||||
"invalid-time": "Invalid time",
|
||||
"invalid-user": "Invalid user",
|
||||
"joined": "joined",
|
||||
"just-invited": "You are just invited to this board",
|
||||
"keyboard-shortcuts": "Keyboard shortcuts",
|
||||
"label-create": "Create Label",
|
||||
"label-default": "%s label (default)",
|
||||
"label-delete-pop": "There is no undo. This will remove this label from all cards and destroy its history.",
|
||||
"labels": "Ετικέτες",
|
||||
"language": "Γλώσσα",
|
||||
"last-admin-desc": "You can’t change roles because there must be at least one admin.",
|
||||
"leave-board": "Leave Board",
|
||||
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
|
||||
"leaveBoardPopup-title": "Leave Board ?",
|
||||
"link-card": "Link to this card",
|
||||
"list-archive-cards": "Archive all cards in this list",
|
||||
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
|
||||
"list-move-cards": "Move all cards in this list",
|
||||
"list-select-cards": "Select all cards in this list",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
"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.",
|
||||
"list-delete-suggest-archive": "You can archive a list to remove it from the board and preserve the activity.",
|
||||
"lists": "Λίστες",
|
||||
"swimlanes": "Swimlanes",
|
||||
"log-out": "Αποσύνδεση",
|
||||
"log-in": "Σύνδεση",
|
||||
"loginPopup-title": "Σύνδεση",
|
||||
"memberMenuPopup-title": "Member Settings",
|
||||
"members": "Μέλοι",
|
||||
"menu": "Menu",
|
||||
"move-selection": "Move selection",
|
||||
"moveCardPopup-title": "Move Card",
|
||||
"moveCardToBottom-title": "Move to Bottom",
|
||||
"moveCardToTop-title": "Move to Top",
|
||||
"moveSelectionPopup-title": "Move selection",
|
||||
"multi-selection": "Multi-Selection",
|
||||
"multi-selection-on": "Multi-Selection is on",
|
||||
"muted": "Muted",
|
||||
"muted-info": "You will never be notified of any changes in this board",
|
||||
"my-boards": "My Boards",
|
||||
"name": "Όνομα",
|
||||
"no-archived-cards": "No archived cards.",
|
||||
"no-archived-lists": "No archived lists.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"no-results": "Κανένα αποτέλεσμα",
|
||||
"normal": "Normal",
|
||||
"normal-desc": "Can view and edit cards. Can't change settings.",
|
||||
"not-accepted-yet": "Invitation not accepted yet",
|
||||
"notify-participate": "Receive updates to any cards you participate as creater or member",
|
||||
"notify-watch": "Receive updates to any boards, lists, or cards you’re watching",
|
||||
"optional": "optional",
|
||||
"or": "ή",
|
||||
"page-maybe-private": "This page may be private. You may be able to view it by <a href='%s'>logging in</a>.",
|
||||
"page-not-found": "Η σελίδα δεν βρέθηκε.",
|
||||
"password": "Κωδικός",
|
||||
"paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
|
||||
"participating": "Participating",
|
||||
"preview": "Preview",
|
||||
"previewAttachedImagePopup-title": "Preview",
|
||||
"previewClipboardImagePopup-title": "Preview",
|
||||
"private": "Private",
|
||||
"private-desc": "This board is private. Only people added to the board can view and edit it.",
|
||||
"profile": "Profile",
|
||||
"public": "Public",
|
||||
"public-desc": "This board is public. It's visible to anyone with the link and will show up in search engines like Google. Only people added to the board can edit.",
|
||||
"quick-access-description": "Star a board to add a shortcut in this bar.",
|
||||
"remove-cover": "Remove Cover",
|
||||
"remove-from-board": "Remove from Board",
|
||||
"remove-label": "Remove Label",
|
||||
"listDeletePopup-title": "Διαγραφή Λίστας;",
|
||||
"remove-member": "Αφαίρεση Μέλους",
|
||||
"remove-member-from-card": "Αφαίρεση από την Κάρτα",
|
||||
"remove-member-pop": "Remove __name__ (__username__) from __boardTitle__? The member will be removed from all cards on this board. They will receive a notification.",
|
||||
"removeMemberPopup-title": "Αφαίρεση Μέλους;",
|
||||
"rename": "Μετανομασία",
|
||||
"rename-board": "Rename Board",
|
||||
"restore": "Restore",
|
||||
"save": "Αποθήκευση",
|
||||
"search": "Αναζήτηση",
|
||||
"select-color": "Επιλέξτε Χρώμα",
|
||||
"set-wip-limit-value": "Set a limit for the maximum number of tasks in this list",
|
||||
"setWipLimitPopup-title": "Set WIP Limit",
|
||||
"shortcut-assign-self": "Assign yourself to current card",
|
||||
"shortcut-autocomplete-emoji": "Autocomplete emoji",
|
||||
"shortcut-autocomplete-members": "Autocomplete members",
|
||||
"shortcut-clear-filters": "Clear all filters",
|
||||
"shortcut-close-dialog": "Close Dialog",
|
||||
"shortcut-filter-my-cards": "Filter my cards",
|
||||
"shortcut-show-shortcuts": "Bring up this shortcuts list",
|
||||
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
|
||||
"shortcut-toggle-sidebar": "Toggle Board Sidebar",
|
||||
"show-cards-minimum-count": "Show cards count if list contains more than",
|
||||
"sidebar-open": "Open Sidebar",
|
||||
"sidebar-close": "Close Sidebar",
|
||||
"signupPopup-title": "Δημιουργία Λογαριασμού",
|
||||
"star-board-title": "Click to star this board. It will show up at top of your boards list.",
|
||||
"starred-boards": "Starred Boards",
|
||||
"starred-boards-description": "Starred boards show up at the top of your boards list.",
|
||||
"subscribe": "Subscribe",
|
||||
"team": "Ομάδα",
|
||||
"this-board": "this board",
|
||||
"this-card": "αυτή η κάρτα",
|
||||
"spent-time-hours": "Spent time (hours)",
|
||||
"overtime-hours": "Overtime (hours)",
|
||||
"overtime": "Overtime",
|
||||
"has-overtime-cards": "Has overtime cards",
|
||||
"has-spenttime-cards": "Has spent time cards",
|
||||
"time": "Ώρα",
|
||||
"title": "Τίτλος",
|
||||
"tracking": "Tracking",
|
||||
"tracking-info": "You will be notified of any changes to those cards you are involved as creator or member.",
|
||||
"unassign-member": "Unassign member",
|
||||
"unsaved-description": "You have an unsaved description.",
|
||||
"unwatch": "Unwatch",
|
||||
"upload": "Upload",
|
||||
"upload-avatar": "Upload an avatar",
|
||||
"uploaded-avatar": "Uploaded an avatar",
|
||||
"username": "Όνομα Χρήστη",
|
||||
"view-it": "View it",
|
||||
"warn-list-archived": "warning: this card is in an archived list",
|
||||
"watch": "Watch",
|
||||
"watching": "Watching",
|
||||
"watching-info": "You will be notified of any change in this board",
|
||||
"welcome-board": "Welcome Board",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
|
||||
"admin-panel": "Admin Panel",
|
||||
"settings": "Ρυθμίσεις",
|
||||
"people": "People",
|
||||
"registration": "Registration",
|
||||
"disable-self-registration": "Disable Self-Registration",
|
||||
"invite": "Invite",
|
||||
"invite-people": "Invite People",
|
||||
"to-boards": "To board(s)",
|
||||
"email-addresses": "Email Διευθύνσεις",
|
||||
"smtp-host-description": "The address of the SMTP server that handles your emails.",
|
||||
"smtp-port-description": "The port your SMTP server uses for outgoing emails.",
|
||||
"smtp-tls-description": "Enable TLS support for SMTP server",
|
||||
"smtp-host": "SMTP Host",
|
||||
"smtp-port": "SMTP Port",
|
||||
"smtp-username": "Όνομα Χρήστη",
|
||||
"smtp-password": "Κωδικός",
|
||||
"smtp-tls": "TLS υποστήριξη",
|
||||
"send-from": "Από",
|
||||
"send-smtp-test": "Send a test email to yourself",
|
||||
"invitation-code": "Κωδικός Πρόσκλησης",
|
||||
"email-invite-register-subject": "__inviter__ sent you an invitation",
|
||||
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
|
||||
"email-smtp-test-subject": "SMTP Test Email From Wekan",
|
||||
"email-smtp-test-text": "You have successfully sent an email",
|
||||
"error-invitation-code-not-exist": "Ο κωδικός πρόσκλησης δεν υπάρχει",
|
||||
"error-notAuthorized": "You are not authorized to view this page.",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
"outgoingWebhooksPopup-title": "Outgoing Webhooks",
|
||||
"new-outgoing-webhook": "New Outgoing Webhook",
|
||||
"no-name": "(Άγνωστο)",
|
||||
"Wekan_version": "Wekan έκδοση",
|
||||
"Node_version": "Node version",
|
||||
"OS_Arch": "OS Arch",
|
||||
"OS_Cpus": "OS CPU Count",
|
||||
"OS_Freemem": "OS Free Memory",
|
||||
"OS_Loadavg": "OS Load Average",
|
||||
"OS_Platform": "OS Platform",
|
||||
"OS_Release": "OS Release",
|
||||
"OS_Totalmem": "OS Total Memory",
|
||||
"OS_Type": "OS Type",
|
||||
"OS_Uptime": "OS Uptime",
|
||||
"hours": "ώρες",
|
||||
"minutes": "λεπτά",
|
||||
"seconds": "δευτερόλεπτα",
|
||||
"yes": "Ναι",
|
||||
"no": "Όχι",
|
||||
"accounts": "Λογαριασμοί",
|
||||
"accounts-allowEmailChange": "Allow Email Change",
|
||||
"createdAt": "Created at",
|
||||
"verified": "Verified",
|
||||
"active": "Active"
|
||||
}
|
||||
+43
-1
@@ -12,6 +12,7 @@
|
||||
"act-archivedBoard": "archived __board__",
|
||||
"act-archivedCard": "archived __card__",
|
||||
"act-archivedList": "archived __list__",
|
||||
"act-archivedSwimlane": "archived __swimlane__",
|
||||
"act-importBoard": "imported __board__",
|
||||
"act-importCard": "imported __card__",
|
||||
"act-importList": "imported __list__",
|
||||
@@ -44,6 +45,7 @@
|
||||
"add-attachment": "Add Attachment",
|
||||
"add-board": "Add Board",
|
||||
"add-card": "Add Card",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"add-cover": "Add Cover",
|
||||
@@ -54,6 +56,9 @@
|
||||
"addMemberPopup-title": "Members",
|
||||
"admin": "Admin",
|
||||
"admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
|
||||
"admin-announcement": "Announcement",
|
||||
"admin-announcement-active": "Active System-Wide Announcement",
|
||||
"admin-announcement-title": "Announcement from Administrator",
|
||||
"all-boards": "All boards",
|
||||
"and-n-other-card": "And __count__ other card",
|
||||
"and-n-other-card_plural": "And __count__ other cards",
|
||||
@@ -64,6 +69,7 @@
|
||||
"archive-board": "Archive Board",
|
||||
"archive-card": "Archive Card",
|
||||
"archive-list": "Archive List",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-selection": "Archive selection",
|
||||
"archiveBoardPopup-title": "Archive Board?",
|
||||
"archived-items": "Archived Items",
|
||||
@@ -91,6 +97,9 @@
|
||||
"boardChangeWatchPopup-title": "Change Watch",
|
||||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
"cancel": "Cancel",
|
||||
"card-archived": "This card is archived.",
|
||||
@@ -100,6 +109,7 @@
|
||||
"card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
|
||||
"card-due": "Due",
|
||||
"card-due-on": "Due on",
|
||||
"card-spent": "Spent Time",
|
||||
"card-edit-attachments": "Edit attachments",
|
||||
"card-edit-labels": "Edit labels",
|
||||
"card-edit-members": "Edit members",
|
||||
@@ -149,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
@@ -168,8 +181,11 @@
|
||||
"edit": "Edit",
|
||||
"edit-avatar": "Change Avatar",
|
||||
"edit-profile": "Edit Profile",
|
||||
"edit-wip-limit": "Edit WIP Limit",
|
||||
"soft-wip-limit": "Soft WIP Limit",
|
||||
"editCardStartDatePopup-title": "Change start date",
|
||||
"editCardDueDatePopup-title": "Change due date",
|
||||
"editCardSpentTimePopup-title": "Change spent time",
|
||||
"editLabelPopup-title": "Change Label",
|
||||
"editNotificationPopup-title": "Edit Notification",
|
||||
"editProfilePopup-title": "Edit Profile",
|
||||
@@ -177,6 +193,7 @@
|
||||
"email-enrollAccount-subject": "An account created for you on __siteName__",
|
||||
"email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"email-fail": "Sending email failed",
|
||||
"email-fail-text": "Error trying to send email",
|
||||
"email-invalid": "Invalid email",
|
||||
"email-invite": "Invite via email",
|
||||
"email-invite-subject": "__inviter__ sent you an invitation",
|
||||
@@ -186,6 +203,7 @@
|
||||
"email-sent": "Email sent",
|
||||
"email-verifyEmail-subject": "Verify your email address on __siteName__",
|
||||
"email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"enable-wip-limit": "Enable WIP Limit",
|
||||
"error-board-doesNotExist": "This board does not exist",
|
||||
"error-board-notAdmin": "You need to be admin of this board to do that",
|
||||
"error-board-notAMember": "You need to be a member of this board to do that",
|
||||
@@ -230,6 +248,8 @@
|
||||
"info": "Version",
|
||||
"initials": "Initials",
|
||||
"invalid-date": "Invalid date",
|
||||
"invalid-time": "Invalid time",
|
||||
"invalid-user": "Invalid user",
|
||||
"joined": "joined",
|
||||
"just-invited": "You are just invited to this board",
|
||||
"keyboard-shortcuts": "Keyboard shortcuts",
|
||||
@@ -240,18 +260,22 @@
|
||||
"language": "Language",
|
||||
"last-admin-desc": "You can’t change roles because there must be at least one admin.",
|
||||
"leave-board": "Leave Board",
|
||||
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
|
||||
"leaveBoardPopup-title": "Leave Board ?",
|
||||
"link-card": "Link to this card",
|
||||
"list-archive-cards": "Archive all cards in this list",
|
||||
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
|
||||
"list-move-cards": "Move all cards in this list",
|
||||
"list-select-cards": "Select all cards in this list",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
"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.",
|
||||
"list-delete-suggest-archive": "You can archive a list to remove it from the board and preserve the activity.",
|
||||
"lists": "Lists",
|
||||
"swimlanes": "Swimlanes",
|
||||
"log-out": "Log Out",
|
||||
"log-in": "Log In",
|
||||
"loginPopup-title": "Log In",
|
||||
@@ -271,6 +295,7 @@
|
||||
"name": "Name",
|
||||
"no-archived-cards": "No archived cards.",
|
||||
"no-archived-lists": "No archived lists.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"no-results": "No results",
|
||||
"normal": "Normal",
|
||||
"normal-desc": "Can view and edit cards. Can't change settings.",
|
||||
@@ -307,6 +332,8 @@
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"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",
|
||||
"shortcut-assign-self": "Assign yourself to current card",
|
||||
"shortcut-autocomplete-emoji": "Autocomplete emoji",
|
||||
"shortcut-autocomplete-members": "Autocomplete members",
|
||||
@@ -327,6 +354,11 @@
|
||||
"team": "Team",
|
||||
"this-board": "this board",
|
||||
"this-card": "this card",
|
||||
"spent-time-hours": "Spent time (hours)",
|
||||
"overtime-hours": "Overtime (hours)",
|
||||
"overtime": "Overtime",
|
||||
"has-overtime-cards": "Has overtime cards",
|
||||
"has-spenttime-cards": "Has spent time cards",
|
||||
"time": "Time",
|
||||
"title": "Title",
|
||||
"tracking": "Tracking",
|
||||
@@ -344,9 +376,13 @@
|
||||
"watching": "Watching",
|
||||
"watching-info": "You will be notified of any changes in this board",
|
||||
"welcome-board": "Welcome Board",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
|
||||
"admin-panel": "Admin Panel",
|
||||
"settings": "Settings",
|
||||
"people": "People",
|
||||
@@ -365,9 +401,12 @@
|
||||
"smtp-password": "Password",
|
||||
"smtp-tls": "TLS support",
|
||||
"send-from": "From",
|
||||
"send-smtp-test": "Send a test email to yourself",
|
||||
"invitation-code": "Invitation Code",
|
||||
"email-invite-register-subject": "__inviter__ sent you an invitation",
|
||||
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaboration.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
|
||||
"email-smtp-test-subject": "SMTP Test Email From Wekan",
|
||||
"email-smtp-test-text": "You have successfully sent an email",
|
||||
"error-invitation-code-not-exist": "Invitation code doesn't exist",
|
||||
"error-notAuthorized": "You are not authorised to view this page.",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
@@ -391,5 +430,8 @@
|
||||
"yes": "Yes",
|
||||
"no": "No",
|
||||
"accounts": "Accounts",
|
||||
"accounts-allowEmailChange": "Allow Email Change"
|
||||
"accounts-allowEmailChange": "Allow Email Change",
|
||||
"createdAt": "Created at",
|
||||
"verified": "Verified",
|
||||
"active": "Active"
|
||||
}
|
||||
+43
-1
@@ -12,6 +12,7 @@
|
||||
"act-archivedBoard": "archived __board__",
|
||||
"act-archivedCard": "archived __card__",
|
||||
"act-archivedList": "archived __list__",
|
||||
"act-archivedSwimlane": "archived __swimlane__",
|
||||
"act-importBoard": "imported __board__",
|
||||
"act-importCard": "imported __card__",
|
||||
"act-importList": "imported __list__",
|
||||
@@ -44,6 +45,7 @@
|
||||
"add-attachment": "Add Attachment",
|
||||
"add-board": "Add Board",
|
||||
"add-card": "Add Card",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"add-cover": "Add Cover",
|
||||
@@ -54,6 +56,9 @@
|
||||
"addMemberPopup-title": "Members",
|
||||
"admin": "Admin",
|
||||
"admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
|
||||
"admin-announcement": "Announcement",
|
||||
"admin-announcement-active": "Active System-Wide Announcement",
|
||||
"admin-announcement-title": "Announcement from Administrator",
|
||||
"all-boards": "All boards",
|
||||
"and-n-other-card": "And __count__ other card",
|
||||
"and-n-other-card_plural": "And __count__ other cards",
|
||||
@@ -64,6 +69,7 @@
|
||||
"archive-board": "Archive Board",
|
||||
"archive-card": "Archive Card",
|
||||
"archive-list": "Archive List",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-selection": "Archive selection",
|
||||
"archiveBoardPopup-title": "Archive Board?",
|
||||
"archived-items": "Archived Items",
|
||||
@@ -91,6 +97,9 @@
|
||||
"boardChangeWatchPopup-title": "Change Watch",
|
||||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Lists",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
"cancel": "Cancel",
|
||||
"card-archived": "This card is archived.",
|
||||
@@ -100,6 +109,7 @@
|
||||
"card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
|
||||
"card-due": "Due",
|
||||
"card-due-on": "Due on",
|
||||
"card-spent": "Spent Time",
|
||||
"card-edit-attachments": "Edit attachments",
|
||||
"card-edit-labels": "Edit labels",
|
||||
"card-edit-members": "Edit members",
|
||||
@@ -149,6 +159,9 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Create",
|
||||
"createBoardPopup-title": "Create Board",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
@@ -168,8 +181,11 @@
|
||||
"edit": "Edit",
|
||||
"edit-avatar": "Change Avatar",
|
||||
"edit-profile": "Edit Profile",
|
||||
"edit-wip-limit": "Edit WIP Limit",
|
||||
"soft-wip-limit": "Soft WIP Limit",
|
||||
"editCardStartDatePopup-title": "Change start date",
|
||||
"editCardDueDatePopup-title": "Change due date",
|
||||
"editCardSpentTimePopup-title": "Change spent time",
|
||||
"editLabelPopup-title": "Change Label",
|
||||
"editNotificationPopup-title": "Edit Notification",
|
||||
"editProfilePopup-title": "Edit Profile",
|
||||
@@ -177,6 +193,7 @@
|
||||
"email-enrollAccount-subject": "An account created for you on __siteName__",
|
||||
"email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"email-fail": "Sending email failed",
|
||||
"email-fail-text": "Error trying to send email",
|
||||
"email-invalid": "Invalid email",
|
||||
"email-invite": "Invite via Email",
|
||||
"email-invite-subject": "__inviter__ sent you an invitation",
|
||||
@@ -186,6 +203,7 @@
|
||||
"email-sent": "Email sent",
|
||||
"email-verifyEmail-subject": "Verify your email address on __siteName__",
|
||||
"email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"enable-wip-limit": "Enable WIP Limit",
|
||||
"error-board-doesNotExist": "This board does not exist",
|
||||
"error-board-notAdmin": "You need to be admin of this board to do that",
|
||||
"error-board-notAMember": "You need to be a member of this board to do that",
|
||||
@@ -230,6 +248,8 @@
|
||||
"info": "Version",
|
||||
"initials": "Initials",
|
||||
"invalid-date": "Invalid date",
|
||||
"invalid-time": "Invalid time",
|
||||
"invalid-user": "Invalid user",
|
||||
"joined": "joined",
|
||||
"just-invited": "You are just invited to this board",
|
||||
"keyboard-shortcuts": "Keyboard shortcuts",
|
||||
@@ -240,18 +260,22 @@
|
||||
"language": "Language",
|
||||
"last-admin-desc": "You can’t change roles because there must be at least one admin.",
|
||||
"leave-board": "Leave Board",
|
||||
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
|
||||
"leaveBoardPopup-title": "Leave Board ?",
|
||||
"link-card": "Link to this card",
|
||||
"list-archive-cards": "Archive all cards in this list",
|
||||
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
|
||||
"list-move-cards": "Move all cards in this list",
|
||||
"list-select-cards": "Select all cards in this list",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
"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.",
|
||||
"list-delete-suggest-archive": "You can archive a list to remove it from the board and preserve the activity.",
|
||||
"lists": "Lists",
|
||||
"swimlanes": "Swimlanes",
|
||||
"log-out": "Log Out",
|
||||
"log-in": "Log In",
|
||||
"loginPopup-title": "Log In",
|
||||
@@ -271,6 +295,7 @@
|
||||
"name": "Name",
|
||||
"no-archived-cards": "No archived cards.",
|
||||
"no-archived-lists": "No archived lists.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"no-results": "No results",
|
||||
"normal": "Normal",
|
||||
"normal-desc": "Can view and edit cards. Can't change settings.",
|
||||
@@ -307,6 +332,8 @@
|
||||
"save": "Save",
|
||||
"search": "Search",
|
||||
"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",
|
||||
"shortcut-assign-self": "Assign yourself to current card",
|
||||
"shortcut-autocomplete-emoji": "Autocomplete emoji",
|
||||
"shortcut-autocomplete-members": "Autocomplete members",
|
||||
@@ -327,6 +354,11 @@
|
||||
"team": "Team",
|
||||
"this-board": "this board",
|
||||
"this-card": "this card",
|
||||
"spent-time-hours": "Spent time (hours)",
|
||||
"overtime-hours": "Overtime (hours)",
|
||||
"overtime": "Overtime",
|
||||
"has-overtime-cards": "Has overtime cards",
|
||||
"has-spenttime-cards": "Has spent time cards",
|
||||
"time": "Time",
|
||||
"title": "Title",
|
||||
"tracking": "Tracking",
|
||||
@@ -344,9 +376,13 @@
|
||||
"watching": "Watching",
|
||||
"watching-info": "You will be notified of any change in this board",
|
||||
"welcome-board": "Welcome Board",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
|
||||
"admin-panel": "Admin Panel",
|
||||
"settings": "Settings",
|
||||
"people": "People",
|
||||
@@ -365,9 +401,12 @@
|
||||
"smtp-password": "Password",
|
||||
"smtp-tls": "TLS support",
|
||||
"send-from": "From",
|
||||
"send-smtp-test": "Send a test email to yourself",
|
||||
"invitation-code": "Invitation Code",
|
||||
"email-invite-register-subject": "__inviter__ sent you an invitation",
|
||||
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
|
||||
"email-smtp-test-subject": "SMTP Test Email From Wekan",
|
||||
"email-smtp-test-text": "You have successfully sent an email",
|
||||
"error-invitation-code-not-exist": "Invitation code doesn't exist",
|
||||
"error-notAuthorized": "You are not authorized to view this page.",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
@@ -391,5 +430,8 @@
|
||||
"yes": "Yes",
|
||||
"no": "No",
|
||||
"accounts": "Accounts",
|
||||
"accounts-allowEmailChange": "Allow Email Change"
|
||||
"accounts-allowEmailChange": "Allow Email Change",
|
||||
"createdAt": "Created at",
|
||||
"verified": "Verified",
|
||||
"active": "Active"
|
||||
}
|
||||
+62
-20
@@ -5,17 +5,18 @@
|
||||
"act-addChecklist": "added checklist __checklist__ to __card__",
|
||||
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
|
||||
"act-addComment": "commented on __card__: __comment__",
|
||||
"act-createBoard": "kreiis __board__",
|
||||
"act-createCard": "aldonis __card__ al __list__",
|
||||
"act-createList": "aldonis __card__ al __board__",
|
||||
"act-addBoardMember": "aldonis __member__ al __board__",
|
||||
"act-createBoard": "Kreiis __board__",
|
||||
"act-createCard": "Aldonis __card__ al __list__",
|
||||
"act-createList": "Aldonis __card__ al __board__",
|
||||
"act-addBoardMember": "Aldonis __member__ al __board__",
|
||||
"act-archivedBoard": "archived __board__",
|
||||
"act-archivedCard": "archived __card__",
|
||||
"act-archivedList": "archived __list__",
|
||||
"act-archivedSwimlane": "archived __swimlane__",
|
||||
"act-importBoard": "imported __board__",
|
||||
"act-importCard": "imported __card__",
|
||||
"act-importList": "imported __list__",
|
||||
"act-joinMember": "aldonis __member__ al __card__",
|
||||
"act-joinMember": "Aldonis __member__ al __card__",
|
||||
"act-moveCard": "moved __card__ from __oldList__ to __list__",
|
||||
"act-removeBoardMember": "removed __member__ from __board__",
|
||||
"act-restoredCard": "restored __card__ to __board__",
|
||||
@@ -25,10 +26,10 @@
|
||||
"actions": "Akcioj",
|
||||
"activities": "Aktivaĵoj",
|
||||
"activity": "Aktivaĵo",
|
||||
"activity-added": "aldonis %s al %s",
|
||||
"activity-added": "Aldonis %s al %s",
|
||||
"activity-archived": "archived %s",
|
||||
"activity-attached": "attached %s to %s",
|
||||
"activity-created": "kreiis %s",
|
||||
"activity-created": "Kreiis %s",
|
||||
"activity-excluded": "excluded %s from %s",
|
||||
"activity-imported": "imported %s into %s from %s",
|
||||
"activity-imported-board": "imported %s from %s",
|
||||
@@ -36,7 +37,7 @@
|
||||
"activity-moved": "moved %s from %s to %s",
|
||||
"activity-on": "on %s",
|
||||
"activity-removed": "removed %s from %s",
|
||||
"activity-sent": "sendis %s al %s",
|
||||
"activity-sent": "Sendis %s al %s",
|
||||
"activity-unjoined": "unjoined %s",
|
||||
"activity-checklist-added": "added checklist to %s",
|
||||
"activity-checklist-item-added": "added checklist item to '%s' in %s",
|
||||
@@ -44,6 +45,7 @@
|
||||
"add-attachment": "Add Attachment",
|
||||
"add-board": "Add Board",
|
||||
"add-card": "Add Card",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"add-checklist": "Add Checklist",
|
||||
"add-checklist-item": "Add an item to checklist",
|
||||
"add-cover": "Add Cover",
|
||||
@@ -54,6 +56,9 @@
|
||||
"addMemberPopup-title": "Membroj",
|
||||
"admin": "Admin",
|
||||
"admin-desc": "Can view and edit cards, remove members, and change settings for the board.",
|
||||
"admin-announcement": "Announcement",
|
||||
"admin-announcement-active": "Active System-Wide Announcement",
|
||||
"admin-announcement-title": "Announcement from Administrator",
|
||||
"all-boards": "All boards",
|
||||
"and-n-other-card": "And __count__ other card",
|
||||
"and-n-other-card_plural": "And __count__ other cards",
|
||||
@@ -64,6 +69,7 @@
|
||||
"archive-board": "Archive Board",
|
||||
"archive-card": "Arkivi karton",
|
||||
"archive-list": "Archive List",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-selection": "Arkivi elekton",
|
||||
"archiveBoardPopup-title": "Archive Board?",
|
||||
"archived-items": "Archived Items",
|
||||
@@ -91,29 +97,33 @@
|
||||
"boardChangeWatchPopup-title": "Change Watch",
|
||||
"boardMenuPopup-title": "Board Menu",
|
||||
"boards": "Boards",
|
||||
"board-view": "Board View",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Listoj",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
"cancel": "Cancel",
|
||||
"card-archived": "Karto arkivita.",
|
||||
"card-archived": "Karto arkivita",
|
||||
"card-comments-title": "This card has %s comment.",
|
||||
"card-delete-notice": "Deleting is permanent. You will lose all actions associated with this card.",
|
||||
"card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
|
||||
"card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
|
||||
"card-due": "Due",
|
||||
"card-due-on": "Due on",
|
||||
"card-spent": "Spent Time",
|
||||
"card-edit-attachments": "Edit attachments",
|
||||
"card-edit-labels": "Redakti etikedojn",
|
||||
"card-edit-members": "Redakti membroj",
|
||||
"card-edit-members": "Redakti membrojn",
|
||||
"card-labels-title": "Change the labels for the card.",
|
||||
"card-members-title": "Add or remove members of the board from the card.",
|
||||
"card-start": "Komenco",
|
||||
"card-start-on": "Komencas je ",
|
||||
"card-start-on": "Komencas je la",
|
||||
"cardAttachmentsPopup-title": "Attach From",
|
||||
"cardDeletePopup-title": "Delete Card?",
|
||||
"cardDetailsActionsPopup-title": "Card Actions",
|
||||
"cardLabelsPopup-title": "Etikedoj",
|
||||
"cardMembersPopup-title": "Membroj",
|
||||
"cardMorePopup-title": "Pli",
|
||||
"cards": "Karto",
|
||||
"cards": "Kartoj",
|
||||
"change": "Ŝanĝi",
|
||||
"change-avatar": "Change Avatar",
|
||||
"change-password": "Ŝangi pasvorton",
|
||||
@@ -149,8 +159,11 @@
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copy card link to clipboard",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Krei",
|
||||
"createBoardPopup-title": "Krei ",
|
||||
"createBoardPopup-title": "Krei tavolon",
|
||||
"chooseBoardSourcePopup-title": "Import board",
|
||||
"createLabelPopup-title": "Create Label",
|
||||
"current": "current",
|
||||
@@ -167,16 +180,20 @@
|
||||
"download": "Elŝuti",
|
||||
"edit": "Redakti",
|
||||
"edit-avatar": "Change Avatar",
|
||||
"edit-profile": "Redakti profilo",
|
||||
"editCardStartDatePopup-title": "Redakti komencdato",
|
||||
"edit-profile": "Redakti profilon",
|
||||
"edit-wip-limit": "Edit WIP Limit",
|
||||
"soft-wip-limit": "Soft WIP Limit",
|
||||
"editCardStartDatePopup-title": "Redakti komencdaton",
|
||||
"editCardDueDatePopup-title": "Change due date",
|
||||
"editLabelPopup-title": "Ŝanĝi etikedo",
|
||||
"editCardSpentTimePopup-title": "Change spent time",
|
||||
"editLabelPopup-title": "Ŝanĝi etikedon",
|
||||
"editNotificationPopup-title": "Edit Notification",
|
||||
"editProfilePopup-title": "Redakti profilo",
|
||||
"editProfilePopup-title": "Redakti profilon",
|
||||
"email": "Retpoŝtadreso",
|
||||
"email-enrollAccount-subject": "An account created for you on __siteName__",
|
||||
"email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"email-fail": "Malsukcese sendis retpoŝton",
|
||||
"email-fail": "Malsukcesis sendi retpoŝton",
|
||||
"email-fail-text": "Error trying to send email",
|
||||
"email-invalid": "Nevalida retpoŝtadreso",
|
||||
"email-invite": "Inviti per retpoŝto",
|
||||
"email-invite-subject": "__inviter__ sent you an invitation",
|
||||
@@ -186,6 +203,7 @@
|
||||
"email-sent": "Sendis retpoŝton",
|
||||
"email-verifyEmail-subject": "Verify your email address on __siteName__",
|
||||
"email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"enable-wip-limit": "Enable WIP Limit",
|
||||
"error-board-doesNotExist": "This board does not exist",
|
||||
"error-board-notAdmin": "You need to be admin of this board to do that",
|
||||
"error-board-notAMember": "You need to be a member of this board to do that",
|
||||
@@ -209,7 +227,7 @@
|
||||
"fullname": "Full Name",
|
||||
"header-logo-title": "Go back to your boards page.",
|
||||
"hide-system-messages": "Hide system messages",
|
||||
"headerBarCreateBoardPopup-title": "Krei ",
|
||||
"headerBarCreateBoardPopup-title": "Krei tavolon",
|
||||
"home": "Hejmo",
|
||||
"import": "Importi",
|
||||
"import-board": "import board",
|
||||
@@ -230,6 +248,8 @@
|
||||
"info": "Version",
|
||||
"initials": "Initials",
|
||||
"invalid-date": "Invalid date",
|
||||
"invalid-time": "Invalid time",
|
||||
"invalid-user": "Invalid user",
|
||||
"joined": "joined",
|
||||
"just-invited": "You are just invited to this board",
|
||||
"keyboard-shortcuts": "Keyboard shortcuts",
|
||||
@@ -240,18 +260,22 @@
|
||||
"language": "Lingvo",
|
||||
"last-admin-desc": "You can’t change roles because there must be at least one admin.",
|
||||
"leave-board": "Leave Board",
|
||||
"leave-board-pop": "Are you sure you want to leave __boardTitle__? You will be removed from all cards on this board.",
|
||||
"leaveBoardPopup-title": "Leave Board ?",
|
||||
"link-card": "Ligi al ĉitiu karto",
|
||||
"list-archive-cards": "Archive all cards in this list",
|
||||
"list-archive-cards-pop": "This will remove all the cards in this list from the board. To view archived cards and bring them back to the board, click “Menu” > “Archived Items”.",
|
||||
"list-move-cards": "Movu ĉiujn kartojn en tiu listo.",
|
||||
"list-select-cards": "Elektu ĉiujn kartojn en tiu listo.",
|
||||
"listActionPopup-title": "List Actions",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"listImportCardPopup-title": "Import a Trello card",
|
||||
"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.",
|
||||
"list-delete-suggest-archive": "You can archive a list to remove it from the board and preserve the activity.",
|
||||
"lists": "Listoj",
|
||||
"swimlanes": "Swimlanes",
|
||||
"log-out": "Elsaluti",
|
||||
"log-in": "Ensaluti",
|
||||
"loginPopup-title": "Ensaluti",
|
||||
@@ -271,6 +295,7 @@
|
||||
"name": "Nomo",
|
||||
"no-archived-cards": "No archived cards.",
|
||||
"no-archived-lists": "No archived lists.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"no-results": "Neniaj rezultoj",
|
||||
"normal": "Normala",
|
||||
"normal-desc": "Can view and edit cards. Can't change settings.",
|
||||
@@ -307,6 +332,8 @@
|
||||
"save": "Savi",
|
||||
"search": "Serĉi",
|
||||
"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",
|
||||
"shortcut-assign-self": "Assign yourself to current card",
|
||||
"shortcut-autocomplete-emoji": "Autocomplete emoji",
|
||||
"shortcut-autocomplete-members": "Autocomplete members",
|
||||
@@ -327,6 +354,11 @@
|
||||
"team": "Teamo",
|
||||
"this-board": "this board",
|
||||
"this-card": "this card",
|
||||
"spent-time-hours": "Spent time (hours)",
|
||||
"overtime-hours": "Overtime (hours)",
|
||||
"overtime": "Overtime",
|
||||
"has-overtime-cards": "Has overtime cards",
|
||||
"has-spenttime-cards": "Has spent time cards",
|
||||
"time": "Tempo",
|
||||
"title": "Titolo",
|
||||
"tracking": "Tracking",
|
||||
@@ -344,9 +376,13 @@
|
||||
"watching": "Rigardante",
|
||||
"watching-info": "You will be notified of any change in this board",
|
||||
"welcome-board": "Welcome Board",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Basics",
|
||||
"welcome-list2": "Advanced",
|
||||
"what-to-do": "Kion vi volas fari?",
|
||||
"wipLimitErrorPopup-title": "Invalid WIP Limit",
|
||||
"wipLimitErrorPopup-dialog-pt1": "The number of tasks in this list is higher than the WIP limit you've defined.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Please move some tasks out of this list, or set a higher WIP limit.",
|
||||
"admin-panel": "Admin Panel",
|
||||
"settings": "Settings",
|
||||
"people": "People",
|
||||
@@ -365,9 +401,12 @@
|
||||
"smtp-password": "Pasvorto",
|
||||
"smtp-tls": "TLS support",
|
||||
"send-from": "From",
|
||||
"send-smtp-test": "Send a test email to yourself",
|
||||
"invitation-code": "Invitation Code",
|
||||
"email-invite-register-subject": "__inviter__ sent you an invitation",
|
||||
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
|
||||
"email-smtp-test-subject": "SMTP Test Email From Wekan",
|
||||
"email-smtp-test-text": "You have successfully sent an email",
|
||||
"error-invitation-code-not-exist": "Invitation code doesn't exist",
|
||||
"error-notAuthorized": "You are not authorized to view this page.",
|
||||
"outgoing-webhooks": "Outgoing Webhooks",
|
||||
@@ -391,5 +430,8 @@
|
||||
"yes": "Yes",
|
||||
"no": "No",
|
||||
"accounts": "Accounts",
|
||||
"accounts-allowEmailChange": "Allow Email Change"
|
||||
"accounts-allowEmailChange": "Allow Email Change",
|
||||
"createdAt": "Created at",
|
||||
"verified": "Verified",
|
||||
"active": "Active"
|
||||
}
|
||||
@@ -0,0 +1,437 @@
|
||||
{
|
||||
"accept": "Aceptar",
|
||||
"act-activity-notify": "[Wekan] Notificación de Actividad",
|
||||
"act-addAttachment": "adjunto __attachment__ a __card__",
|
||||
"act-addChecklist": "lista de ítems __checklist__ agregada a __card__",
|
||||
"act-addChecklistItem": " __checklistItem__ agregada a lista de ítems __checklist__ en __card__",
|
||||
"act-addComment": "comentado en __card__: __comment__",
|
||||
"act-createBoard": "__board__ creado",
|
||||
"act-createCard": "agregada __card__ a __list__",
|
||||
"act-createList": "agregada __list__ a __board__",
|
||||
"act-addBoardMember": "agregado __member__ a __board__",
|
||||
"act-archivedBoard": "__board__ archivado",
|
||||
"act-archivedCard": "__card__ archivada",
|
||||
"act-archivedList": "__list__ archivada",
|
||||
"act-archivedSwimlane": "archived __swimlane__",
|
||||
"act-importBoard": "__board__ importado",
|
||||
"act-importCard": "__card__ importada",
|
||||
"act-importList": "__list__ importada",
|
||||
"act-joinMember": "__member__ agregado a __card__",
|
||||
"act-moveCard": "__card__ movida de __oldList__ a __list__",
|
||||
"act-removeBoardMember": "__member__ removido de __board__",
|
||||
"act-restoredCard": "__card__ restaurada a __board__",
|
||||
"act-unjoinMember": "__member__ removido de __card__",
|
||||
"act-withBoardTitle": "__board__ [Wekan]",
|
||||
"act-withCardTitle": "__card__ [__board__] ",
|
||||
"actions": "Acciones",
|
||||
"activities": "Actividades",
|
||||
"activity": "Actividad",
|
||||
"activity-added": "agregadas %s a %s",
|
||||
"activity-archived": "archivadas %s",
|
||||
"activity-attached": "adjuntadas %s a %s",
|
||||
"activity-created": "creadas %s",
|
||||
"activity-excluded": "excluidas %s de %s",
|
||||
"activity-imported": "importadas %s en %s de %s",
|
||||
"activity-imported-board": "importadas %s de %s",
|
||||
"activity-joined": "unidas %s",
|
||||
"activity-moved": "movidas %s de %s a %s",
|
||||
"activity-on": "en %s",
|
||||
"activity-removed": "eliminadas %s de %s",
|
||||
"activity-sent": "enviadas %s a %s",
|
||||
"activity-unjoined": "separadas %s",
|
||||
"activity-checklist-added": "agregada lista de tareas a %s",
|
||||
"activity-checklist-item-added": "agregado item de lista de tareas a '%s' en %s",
|
||||
"add": "Agregar",
|
||||
"add-attachment": "Agregar Adjunto",
|
||||
"add-board": "Agregar Tablero",
|
||||
"add-card": "Agregar Tarjeta",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"add-checklist": "Agregar Lista de Tareas",
|
||||
"add-checklist-item": "Agregar ítem a lista de tareas",
|
||||
"add-cover": "Agregar Portadas",
|
||||
"add-label": "Agregar Etiqueta",
|
||||
"add-list": "Agregar Lista",
|
||||
"add-members": "Agregar Miembros",
|
||||
"added": "Agregadas",
|
||||
"addMemberPopup-title": "Miembros",
|
||||
"admin": "Administrador",
|
||||
"admin-desc": "Puede ver y editar tarjetas, eliminar miembros, y cambiar opciones para el tablero.",
|
||||
"admin-announcement": "Anuncio",
|
||||
"admin-announcement-active": "Anuncio del Sistema Activo",
|
||||
"admin-announcement-title": "Anuncio del Administrador",
|
||||
"all-boards": "Todos los tableros",
|
||||
"and-n-other-card": "Y __count__ otra tarjeta",
|
||||
"and-n-other-card_plural": "Y __count__ otras tarjetas",
|
||||
"apply": "Aplicar",
|
||||
"app-is-offline": "Wekan está cargándose, por favor espere. Refrescar la página va a causar pérdida de datos. Si Wekan no se carga, por favor revise que el servidor de Wekan no se haya detenido.",
|
||||
"archive": "Archivar",
|
||||
"archive-all": "Archivar Todo",
|
||||
"archive-board": "Archivar Tablero",
|
||||
"archive-card": "Archivar Tarjeta",
|
||||
"archive-list": "Archivar Lista",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-selection": "Archivar selección",
|
||||
"archiveBoardPopup-title": "Archivar Tablero?",
|
||||
"archived-items": "Items Archivados",
|
||||
"archived-boards": "Tableros Archivados",
|
||||
"restore-board": "Restaurar Tablero",
|
||||
"no-archived-boards": "Tableros no archivados.",
|
||||
"archives": "Archivos",
|
||||
"assign-member": "Asignar miembro",
|
||||
"attached": "adjunto(s)",
|
||||
"attachment": "Adjunto",
|
||||
"attachment-delete-pop": "Borrar un adjunto es permanente. No hay deshacer.",
|
||||
"attachmentDeletePopup-title": "¿Borrar Adjunto?",
|
||||
"attachments": "Adjuntos",
|
||||
"auto-watch": "Seguir tableros automáticamente al crearlos",
|
||||
"avatar-too-big": "El avatar es muy grande (70KB max)",
|
||||
"back": "Atrás",
|
||||
"board-change-color": "Cambiar color",
|
||||
"board-nb-stars": "%s estrellas",
|
||||
"board-not-found": "Tablero no encontrado",
|
||||
"board-private-info": "Este tablero va a ser <strong>privado</strong>.",
|
||||
"board-public-info": "Este tablero va a ser <strong>público</strong>.",
|
||||
"boardChangeColorPopup-title": "Cambiar Fondo del Tablero",
|
||||
"boardChangeTitlePopup-title": "Renombrar Tablero",
|
||||
"boardChangeVisibilityPopup-title": "Cambiar Visibilidad",
|
||||
"boardChangeWatchPopup-title": "Alternar Seguimiento",
|
||||
"boardMenuPopup-title": "Menú del Tablero",
|
||||
"boards": "Tableros",
|
||||
"board-view": "Board View",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Listas",
|
||||
"bucket-example": "Como \"Lista de Contenedores\" por ejemplo",
|
||||
"cancel": "Cancelar",
|
||||
"card-archived": "Esta tarjeta está archivada",
|
||||
"card-comments-title": "Esta tarjeta tiene %s comentario.",
|
||||
"card-delete-notice": "Borrar es permanente. Perderás todas las acciones asociadas con esta tarjeta.",
|
||||
"card-delete-pop": "Todas las acciones van a ser eliminadas del agregador de actividad y no podrás re-abrir la tarjeta. No hay deshacer.",
|
||||
"card-delete-suggest-archive": "Tu puedes archivar una tarjeta para removerla del tablero y preservar la actividad.",
|
||||
"card-due": "Vence",
|
||||
"card-due-on": "Vence en",
|
||||
"card-spent": "Tiempo Empleado",
|
||||
"card-edit-attachments": "Editar adjuntos",
|
||||
"card-edit-labels": "Editar etiquetas",
|
||||
"card-edit-members": "Editar miembros",
|
||||
"card-labels-title": "Cambiar las etiquetas de la tarjeta.",
|
||||
"card-members-title": "Agregar o eliminar de la tarjeta miembros del tablero.",
|
||||
"card-start": "Empieza",
|
||||
"card-start-on": "Empieza el",
|
||||
"cardAttachmentsPopup-title": "Adjuntar De",
|
||||
"cardDeletePopup-title": "¿Borrar Tarjeta?",
|
||||
"cardDetailsActionsPopup-title": "Acciones de la Tarjeta",
|
||||
"cardLabelsPopup-title": "Etiquetas",
|
||||
"cardMembersPopup-title": "Miembros",
|
||||
"cardMorePopup-title": "Mas",
|
||||
"cards": "Tarjetas",
|
||||
"change": "Cambiar",
|
||||
"change-avatar": "Cambiar Avatar",
|
||||
"change-password": "Cambiar Contraseña",
|
||||
"change-permissions": "Cambiar permisos",
|
||||
"change-settings": "Cambiar Opciones",
|
||||
"changeAvatarPopup-title": "Cambiar Avatar",
|
||||
"changeLanguagePopup-title": "Cambiar Lenguaje",
|
||||
"changePasswordPopup-title": "Cambiar Contraseña",
|
||||
"changePermissionsPopup-title": "Cambiar Permisos",
|
||||
"changeSettingsPopup-title": "Cambiar Opciones",
|
||||
"checklists": "Listas de ítems",
|
||||
"click-to-star": "Clickeá para darle una estrella a este tablero.",
|
||||
"click-to-unstar": "Clickeá para sacarle la estrella al tablero.",
|
||||
"clipboard": "Portapapeles o arrastrar y soltar",
|
||||
"close": "Cerrar",
|
||||
"close-board": "Cerrar Tablero",
|
||||
"close-board-pop": "Podrás restaurar el tablero apretando el botón \"Archivos\" del encabezado en inicio.",
|
||||
"color-black": "negro",
|
||||
"color-blue": "azul",
|
||||
"color-green": "verde",
|
||||
"color-lime": "lima",
|
||||
"color-orange": "naranja",
|
||||
"color-pink": "rosa",
|
||||
"color-purple": "púrpura",
|
||||
"color-red": "rojo",
|
||||
"color-sky": "cielo",
|
||||
"color-yellow": "amarillo",
|
||||
"comment": "Comentario",
|
||||
"comment-placeholder": "Comentar",
|
||||
"comment-only": "Comentar solamente",
|
||||
"comment-only-desc": "Puede comentar en tarjetas solamente.",
|
||||
"computer": "Computadora",
|
||||
"confirm-checklist-delete-dialog": "¿Estás segur@ que querés borrar la lista de ítems?",
|
||||
"copy-card-link-to-clipboard": "Copiar enlace a tarjeta en el portapapeles",
|
||||
"copyCardPopup-title": "Copiar Tarjeta",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Crear",
|
||||
"createBoardPopup-title": "Crear Tablero",
|
||||
"chooseBoardSourcePopup-title": "Importar tablero",
|
||||
"createLabelPopup-title": "Crear Etiqueta",
|
||||
"current": "actual",
|
||||
"date": "Fecha",
|
||||
"decline": "Rechazar",
|
||||
"default-avatar": "Avatar por defecto",
|
||||
"delete": "Borrar",
|
||||
"deleteLabelPopup-title": "¿Borrar Etiqueta?",
|
||||
"description": "Descripción",
|
||||
"disambiguateMultiLabelPopup-title": "Desambiguación de Acción de Etiqueta",
|
||||
"disambiguateMultiMemberPopup-title": "Desambiguación de Acción de Miembro",
|
||||
"discard": "Descartar",
|
||||
"done": "Hecho",
|
||||
"download": "Descargar",
|
||||
"edit": "Editar",
|
||||
"edit-avatar": "Cambiar Avatar",
|
||||
"edit-profile": "Editar Perfil",
|
||||
"edit-wip-limit": "Editar Lìmite de TEP",
|
||||
"soft-wip-limit": "Límite TEP suave",
|
||||
"editCardStartDatePopup-title": "Cambiar fecha de inicio",
|
||||
"editCardDueDatePopup-title": "Cambiar fecha de vencimiento",
|
||||
"editCardSpentTimePopup-title": "Cambiar tiempo empleado",
|
||||
"editLabelPopup-title": "Cambiar Etiqueta",
|
||||
"editNotificationPopup-title": "Editar Notificació",
|
||||
"editProfilePopup-title": "Editar Perfil",
|
||||
"email": "Email",
|
||||
"email-enrollAccount-subject": "Una cuenta creada para vos en __siteName__",
|
||||
"email-enrollAccount-text": "Hola __user__,\n\nPara empezar a usar el servicio, simplemente clickeá en el enlace de abajo.\n\n__url__\n\nGracias.",
|
||||
"email-fail": "Fallo envío de email",
|
||||
"email-fail-text": "Error intentando enviar email",
|
||||
"email-invalid": "Email inválido",
|
||||
"email-invite": "Invitar vía Email",
|
||||
"email-invite-subject": "__inviter__ te envió una invitación",
|
||||
"email-invite-text": "Querido __user__,\n\n__inviter__ te invita a unirte al tablero \"__board__\" para colaborar.\n\nPor favor sigue el enlace de abajo:\n\n__url__\n\nGracias.",
|
||||
"email-resetPassword-subject": "Restaurá tu contraseña en __siteName__",
|
||||
"email-resetPassword-text": "Hola __user__,\n\nPara restaurar tu contraseña, simplemente clickeá el enlace de abajo.\n\n__url__\n\nGracias.",
|
||||
"email-sent": "Email enviado",
|
||||
"email-verifyEmail-subject": "Verificá tu dirección de email en __siteName__",
|
||||
"email-verifyEmail-text": "Hola __user__,\n\nPara verificar tu cuenta de email, simplemente clickeá el enlace de abajo.\n\n__url__\n\nGracias.",
|
||||
"enable-wip-limit": "Activar Límite TEP",
|
||||
"error-board-doesNotExist": "Este tablero no existe",
|
||||
"error-board-notAdmin": "Necesitás ser administrador de este tablero para hacer eso",
|
||||
"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-list-doesNotExist": "Esta lista no existe",
|
||||
"error-user-doesNotExist": "Este usuario no existe",
|
||||
"error-user-notAllowSelf": "No podés invitarte a vos mismo",
|
||||
"error-user-notCreated": " El usuario no se creó",
|
||||
"error-username-taken": "El nombre de usuario ya existe",
|
||||
"error-email-taken": "El email ya existe",
|
||||
"export-board": "Exportar tablero",
|
||||
"filter": "Filtrar",
|
||||
"filter-cards": "Filtrar Tarjetas",
|
||||
"filter-clear": "Sacar filtro",
|
||||
"filter-no-label": "Sin etiqueta",
|
||||
"filter-no-member": "No es miembro",
|
||||
"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",
|
||||
"fullname": "Nombre Completo",
|
||||
"header-logo-title": "Retroceder a tu página de tableros.",
|
||||
"hide-system-messages": "Esconder mensajes del sistema",
|
||||
"headerBarCreateBoardPopup-title": "Crear Tablero",
|
||||
"home": "Inicio",
|
||||
"import": "Importar",
|
||||
"import-board": "importar tablero",
|
||||
"import-board-c": "Importar tablero",
|
||||
"import-board-title-trello": "Importar tablero de Trello",
|
||||
"import-board-title-wekan": "Importar tablero de Wekan",
|
||||
"import-sandstorm-warning": "El tablero importado va a borrar todos los datos existentes en el tablero y reemplazarlos con los del tablero en cuestión.",
|
||||
"from-trello": "De Trello",
|
||||
"from-wekan": "De Wekan",
|
||||
"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-wekan": "En tu tablero Wekan, ve a 'Menú', luego a 'Exportar tablero', y copia el texto en el archivo descargado.",
|
||||
"import-json-placeholder": "Pegá tus datos JSON válidos acá",
|
||||
"import-map-members": "Mapear Miembros",
|
||||
"import-members-map": "Tu tablero importado tiene algunos miembros. Por favor mapeá los miembros que quieras importar/convertir a usuarios de Wekan.",
|
||||
"import-show-user-mapping": "Revisar mapeo de miembros",
|
||||
"import-user-select": "Elegí el usuario de Wekan que querés usar como éste miembro",
|
||||
"importMapMembersAddPopup-title": "Elegí el miembro de Wekan.",
|
||||
"info": "Versión",
|
||||
"initials": "Iniciales",
|
||||
"invalid-date": "Fecha inválida",
|
||||
"invalid-time": "Tiempo inválido",
|
||||
"invalid-user": "Usuario inválido",
|
||||
"joined": "unido",
|
||||
"just-invited": "Fuiste invitado a este tablero",
|
||||
"keyboard-shortcuts": "Atajos de teclado",
|
||||
"label-create": "Crear Etiqueta",
|
||||
"label-default": "%s etiqueta (por defecto)",
|
||||
"label-delete-pop": "No hay deshacer. Esto va a eliminar esta etiqueta de todas las tarjetas y destruir su historia.",
|
||||
"labels": "Etiquetas",
|
||||
"language": "Lenguaje",
|
||||
"last-admin-desc": "No podés cambiar roles porque tiene que haber al menos un administrador.",
|
||||
"leave-board": "Dejar Tablero",
|
||||
"leave-board-pop": "¿Estás seguro que querés dejar __boardTitle__? Vas a salir de todas las tarjetas en este tablero.",
|
||||
"leaveBoardPopup-title": "¿Dejar Tablero?",
|
||||
"link-card": "Enlace a esta tarjeta",
|
||||
"list-archive-cards": "Archivar todas las tarjetas en esta lista",
|
||||
"list-archive-cards-pop": "Esto va a eliminar las tarjetas en esta lista del tablero. Para ver tarjetas archivadas y traerlas de vuelta al tablero, clickeá \"Menú\" > \"Items Archivados\".",
|
||||
"list-move-cards": "Mueve todas las tarjetas en esta lista",
|
||||
"list-select-cards": "Selecciona todas las tarjetas en esta lista",
|
||||
"listActionPopup-title": "Listar Acciones",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"listImportCardPopup-title": "Importar una tarjeta Trello",
|
||||
"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.",
|
||||
"list-delete-suggest-archive": "Podés archivar la lista para eliminarla del tablero y preservar la actividad.",
|
||||
"lists": "Listas",
|
||||
"swimlanes": "Swimlanes",
|
||||
"log-out": "Salir",
|
||||
"log-in": "Entrar",
|
||||
"loginPopup-title": "Entrar",
|
||||
"memberMenuPopup-title": "Opciones de Miembros",
|
||||
"members": "Miembros",
|
||||
"menu": "Menú",
|
||||
"move-selection": "Mover selección",
|
||||
"moveCardPopup-title": "Mover Tarjeta",
|
||||
"moveCardToBottom-title": "Mover al Final",
|
||||
"moveCardToTop-title": "Mover al Tope",
|
||||
"moveSelectionPopup-title": "Mover selección",
|
||||
"multi-selection": "Multi-Selección",
|
||||
"multi-selection-on": "Multi-selección está activo",
|
||||
"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 archived swimlanes.",
|
||||
"no-results": "No hay resultados",
|
||||
"normal": "Normal",
|
||||
"normal-desc": "Puede ver y editar tarjetas. No puede cambiar opciones.",
|
||||
"not-accepted-yet": "Invitación no aceptada todavía",
|
||||
"notify-participate": "Recibí actualizaciones en cualquier tarjeta que participés como creador o miembro",
|
||||
"notify-watch": "Recibí actualizaciones en cualquier tablero, lista, o tarjeta que estés siguiendo",
|
||||
"optional": "opcional",
|
||||
"or": "o",
|
||||
"page-maybe-private": "Esta página puede ser privada. Vos podrás verla <a href='%s'>entrando</a>.",
|
||||
"page-not-found": "Página no encontrada.",
|
||||
"password": "Contraseña",
|
||||
"paste-or-dragdrop": "pegar, arrastrar y soltar el archivo de imagen a esto (imagen sola)",
|
||||
"participating": "Participando",
|
||||
"preview": "Previsualización",
|
||||
"previewAttachedImagePopup-title": "Previsualización",
|
||||
"previewClipboardImagePopup-title": "Previsualización",
|
||||
"private": "Privado",
|
||||
"private-desc": "Este tablero es privado. Solo personas agregadas a este tablero pueden verlo y editarlo.",
|
||||
"profile": "Perfil",
|
||||
"public": "Público",
|
||||
"public-desc": "Este tablero es público. Es visible para cualquiera con un enlace y se va a mostrar en los motores de búsqueda como Google. Solo personas agregadas a este tablero pueden editarlo.",
|
||||
"quick-access-description": "Dale una estrella al tablero para agregar un acceso directo en esta barra.",
|
||||
"remove-cover": "Remover Portada",
|
||||
"remove-from-board": "Remover del Tablero",
|
||||
"remove-label": "Remover Etiqueta",
|
||||
"listDeletePopup-title": "¿Borrar Lista?",
|
||||
"remove-member": "Remover Miembro",
|
||||
"remove-member-from-card": "Remover de Tarjeta",
|
||||
"remove-member-pop": "¿Remover __name__ (__username__) de __boardTitle__? Los miembros va a ser removido de todas las tarjetas en este tablero. Serán notificados.",
|
||||
"removeMemberPopup-title": "¿Remover Miembro?",
|
||||
"rename": "Renombrar",
|
||||
"rename-board": "Renombrar Tablero",
|
||||
"restore": "Restaurar",
|
||||
"save": "Grabar",
|
||||
"search": "Buscar",
|
||||
"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",
|
||||
"shortcut-assign-self": "Asignarte a vos mismo en la tarjeta actual",
|
||||
"shortcut-autocomplete-emoji": "Autocompletar emonji",
|
||||
"shortcut-autocomplete-members": "Autocompletar miembros",
|
||||
"shortcut-clear-filters": "Limpiar todos los filtros",
|
||||
"shortcut-close-dialog": "Cerrar Diálogo",
|
||||
"shortcut-filter-my-cards": "Filtrar mis tarjetas",
|
||||
"shortcut-show-shortcuts": "Traer esta lista de atajos",
|
||||
"shortcut-toggle-filterbar": "Activar/Desactivar Barra Lateral de Filtros",
|
||||
"shortcut-toggle-sidebar": "Activar/Desactivar Barra Lateral de Tableros",
|
||||
"show-cards-minimum-count": "Mostrar cuenta de tarjetas si la lista contiene más que",
|
||||
"sidebar-open": "Abrir Barra Lateral",
|
||||
"sidebar-close": "Cerrar Barra Lateral",
|
||||
"signupPopup-title": "Crear Cuenta",
|
||||
"star-board-title": "Clickear para darle una estrella a este tablero. Se mostrará arriba en el tope de tu lista de tableros.",
|
||||
"starred-boards": "Tableros con estrellas",
|
||||
"starred-boards-description": "Tableros con estrellas se muestran en el tope de tu lista de tableros.",
|
||||
"subscribe": "Suscribirse",
|
||||
"team": "Equipo",
|
||||
"this-board": "este tablero",
|
||||
"this-card": "esta tarjeta",
|
||||
"spent-time-hours": "Tiempo empleado (horas)",
|
||||
"overtime-hours": "Sobretiempo (horas)",
|
||||
"overtime": "Sobretiempo",
|
||||
"has-overtime-cards": "Tiene tarjetas con sobretiempo",
|
||||
"has-spenttime-cards": "Has spent time cards",
|
||||
"time": "Hora",
|
||||
"title": "Título",
|
||||
"tracking": "Seguimiento",
|
||||
"tracking-info": "Serás notificado de cualquier cambio a aquellas tarjetas en las que seas creador o miembro.",
|
||||
"unassign-member": "Desasignar miembro",
|
||||
"unsaved-description": "Tienes una descripción sin guardar.",
|
||||
"unwatch": "Dejar de seguir",
|
||||
"upload": "Cargar",
|
||||
"upload-avatar": "Cargar un avatar",
|
||||
"uploaded-avatar": "Cargado un avatar",
|
||||
"username": "Nombre de usuario",
|
||||
"view-it": "Verlo",
|
||||
"warn-list-archived": "cuidado; esta tarjeta está en una lista archivada",
|
||||
"watch": "Seguir",
|
||||
"watching": "Siguiendo",
|
||||
"watching-info": "Serás notificado de cualquier cambio en este tablero",
|
||||
"welcome-board": "Tablero de Bienvenida",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Básicos",
|
||||
"welcome-list2": "Avanzado",
|
||||
"what-to-do": "¿Qué querés hacer?",
|
||||
"wipLimitErrorPopup-title": "Límite TEP Inválido",
|
||||
"wipLimitErrorPopup-dialog-pt1": " El número de tareas en esta lista es mayor que el límite TEP que definiste.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Por favor mové algunas tareas fuera de esta lista, o seleccioná un límite TEP más alto.",
|
||||
"admin-panel": "Panel de Administración",
|
||||
"settings": "Opciones",
|
||||
"people": "Gente",
|
||||
"registration": "Registro",
|
||||
"disable-self-registration": "Desactivar auto-registro",
|
||||
"invite": "Invitar",
|
||||
"invite-people": "Invitar Gente",
|
||||
"to-boards": "A tarjeta(s)",
|
||||
"email-addresses": "Dirección de Email",
|
||||
"smtp-host-description": "La dirección del servidor SMTP que maneja tus emails",
|
||||
"smtp-port-description": "El puerto que tu servidor SMTP usa para correos salientes",
|
||||
"smtp-tls-description": "Activar soporte TLS para el servidor SMTP",
|
||||
"smtp-host": "Servidor SMTP",
|
||||
"smtp-port": "Puerto SMTP",
|
||||
"smtp-username": "Usuario",
|
||||
"smtp-password": "Contraseña",
|
||||
"smtp-tls": "Soporte TLS",
|
||||
"send-from": "De",
|
||||
"send-smtp-test": "Enviarse un email de prueba",
|
||||
"invitation-code": "Código de Invitación",
|
||||
"email-invite-register-subject": "__inviter__ te envió una invitación",
|
||||
"email-invite-register-text": "Querido __user__,\n\n__inviter__ te invita a Wekan para colaborar.\n\nPor favor sigue el enlace de abajo:\n__url__\n\nI tu código de invitación es: __icode__\n\nGracias.",
|
||||
"email-smtp-test-subject": "Email de Prueba SMTP de Wekan",
|
||||
"email-smtp-test-text": "Enviaste el correo correctamente",
|
||||
"error-invitation-code-not-exist": "El código de invitación no existe",
|
||||
"error-notAuthorized": "No estás autorizado para ver esta página.",
|
||||
"outgoing-webhooks": "Ganchos Web Salientes",
|
||||
"outgoingWebhooksPopup-title": "Ganchos Web Salientes",
|
||||
"new-outgoing-webhook": "Nuevo Gancho Web",
|
||||
"no-name": "(desconocido)",
|
||||
"Wekan_version": "Versión de Wekan",
|
||||
"Node_version": "Versión de Node",
|
||||
"OS_Arch": "Arch del SO",
|
||||
"OS_Cpus": "Cantidad de CPU del SO",
|
||||
"OS_Freemem": "Memoria Libre del SO",
|
||||
"OS_Loadavg": "Carga Promedio del SO",
|
||||
"OS_Platform": "Plataforma del SO",
|
||||
"OS_Release": "Revisión del SO",
|
||||
"OS_Totalmem": "Memoria Total del SO",
|
||||
"OS_Type": "Tipo de SO",
|
||||
"OS_Uptime": "Tiempo encendido del SO",
|
||||
"hours": "horas",
|
||||
"minutes": "minutos",
|
||||
"seconds": "segundos",
|
||||
"yes": "Si",
|
||||
"no": "No",
|
||||
"accounts": "Cuentas",
|
||||
"accounts-allowEmailChange": "Permitir Cambio de Email",
|
||||
"createdAt": "Creado en",
|
||||
"verified": "Verificado",
|
||||
"active": "Activo"
|
||||
}
|
||||
+303
-261
@@ -1,288 +1,313 @@
|
||||
{
|
||||
"accept": "Aceptar",
|
||||
"act-activity-notify": "[Wekan] Notificación de Actividad",
|
||||
"act-addAttachment": "adjuntado __attachment__ a __card__",
|
||||
"act-addChecklist": "added checklist __checklist__ to __card__",
|
||||
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
|
||||
"act-addComment": "comentado en __card__: __comment__",
|
||||
"act-createBoard": "creado __board__",
|
||||
"act-createCard": "añadido __card__ a __list__",
|
||||
"act-createList": "añadido __list__ a __board__",
|
||||
"act-addBoardMember": "añadido __member__ a __board__",
|
||||
"act-archivedBoard": "__board__ archivado",
|
||||
"act-archivedCard": "__card__ archivada",
|
||||
"act-archivedList": "__list__ archivada",
|
||||
"act-importBoard": "__board__ importado",
|
||||
"act-importCard": "__card__ importada",
|
||||
"act-importList": "__list__ importada",
|
||||
"act-joinMember": "añadido __member__ to __card__",
|
||||
"act-moveCard": "movida __card__ desde __oldList__ a __list__",
|
||||
"act-removeBoardMember": "borrado __member__ de __board__",
|
||||
"act-restoredCard": "restaurada __card__ en __board__",
|
||||
"act-unjoinMember": "borrado __member__ de __card__",
|
||||
"act-activity-notify": "[Wekan] Notificación de actividad",
|
||||
"act-addAttachment": "ha adjuntado __attachment__ a __card__",
|
||||
"act-addChecklist": "ha añadido la lista de tareas __checklist__ a __card__",
|
||||
"act-addChecklistItem": "ha añadido __checklistItem__ a la lista de tareas __checklist__ en __card__",
|
||||
"act-addComment": "ha comentado en __card__: __comment__",
|
||||
"act-createBoard": "ha creado __board__",
|
||||
"act-createCard": "ha añadido __card__ a __list__",
|
||||
"act-createList": "ha añadido __list__ a __board__",
|
||||
"act-addBoardMember": "ha añadido a __member__ a __board__",
|
||||
"act-archivedBoard": "ha archivado __board__",
|
||||
"act-archivedCard": "ha archivado __card__",
|
||||
"act-archivedList": "ha archivado __list__",
|
||||
"act-archivedSwimlane": "ha archivado __swimlane__",
|
||||
"act-importBoard": "ha importado __board__",
|
||||
"act-importCard": "ha importado __card__",
|
||||
"act-importList": "ha importado __list__",
|
||||
"act-joinMember": "ha añadido a __member__ a __card__",
|
||||
"act-moveCard": "ha movido __card__ desde __oldList__ a __list__",
|
||||
"act-removeBoardMember": "ha desvinculado a __member__ de __board__",
|
||||
"act-restoredCard": "ha restaurado __card__ en __board__",
|
||||
"act-unjoinMember": "ha desvinculado a __member__ de __card__",
|
||||
"act-withBoardTitle": "[Wekan] __board__",
|
||||
"act-withCardTitle": "[__board__] __card__",
|
||||
"actions": "Acciones",
|
||||
"activities": "Activities",
|
||||
"activities": "Actividades",
|
||||
"activity": "Actividad",
|
||||
"activity-added": "añadido %s a %s",
|
||||
"activity-archived": "archivado %s",
|
||||
"activity-attached": "adjuntado %s a %s",
|
||||
"activity-created": "creado %s",
|
||||
"activity-excluded": "excluido %s de %s",
|
||||
"activity-imported": "imported %s into %s from %s",
|
||||
"activity-imported-board": "imported %s from %s",
|
||||
"activity-joined": "se ha unido %s",
|
||||
"activity-moved": "movido %s de %s a %s",
|
||||
"activity-added": "ha añadido %s a %s",
|
||||
"activity-archived": "ha archivado %s",
|
||||
"activity-attached": "ha adjuntado %s a %s",
|
||||
"activity-created": "ha creado %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": "eliminado %s de %s",
|
||||
"activity-sent": "enviado %s a %s",
|
||||
"activity-unjoined": "unjoined %s",
|
||||
"activity-checklist-added": "añadida lista de tareas a %s",
|
||||
"activity-checklist-item-added": "added checklist item to '%s' in %s",
|
||||
"activity-removed": "ha eliminado %s de %s",
|
||||
"activity-sent": "ha enviado %s a %s",
|
||||
"activity-unjoined": "se ha desvinculado de %s",
|
||||
"activity-checklist-added": "ha añadido una lista de tareas a %s",
|
||||
"activity-checklist-item-added": "ha añadido el elemento de la lista de tareas a '%s' en %s",
|
||||
"add": "Añadir",
|
||||
"add-attachment": "Agregar Adjunto",
|
||||
"add-board": "Agregar Tablero",
|
||||
"add-card": "Agregar Tarjeta",
|
||||
"add-checklist": "Agregar Lista de Tareas",
|
||||
"add-checklist-item": "Agregar un ítem a la lista de tareas",
|
||||
"add-cover": "Añadir cubierta",
|
||||
"add-label": "Agregar Etiqueta",
|
||||
"add-list": "Agregar Lista",
|
||||
"add-members": "Añadir Miembros",
|
||||
"added": "Añadido",
|
||||
"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-checklist": "Añadir una lista de tareas",
|
||||
"add-checklist-item": "Añadir un elemento a la lista de tareas",
|
||||
"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 fichas, eliminar miembros, y cambiar los ajustes del tablero",
|
||||
"admin-desc": "Puedes ver y editar tarjetas, eliminar miembros, y cambiar los ajustes 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": "And __count__ other card",
|
||||
"and-n-other-card_plural": "And __count__ other cards",
|
||||
"and-n-other-card": "y __count__ tarjeta más",
|
||||
"and-n-other-card_plural": "y otras __count__ tarjetas",
|
||||
"apply": "Aplicar",
|
||||
"app-is-offline": "Wekan está cargando, por favor espere. Actualizar la página generará pérdida de datos. Si Wekan no carga, por favor verifique que el servidor de Wekan no ha sido detenido.",
|
||||
"archive": "Guardar",
|
||||
"archive-all": "Guardar Todo",
|
||||
"archive-board": "Archive Board",
|
||||
"archive-card": "Archivo Tarjeta",
|
||||
"archive-list": "Archivar Lista",
|
||||
"archive-selection": "Archive selection",
|
||||
"archiveBoardPopup-title": "Archive Board?",
|
||||
"archived-items": "Items archivados",
|
||||
"archived-boards": "Tableros Archivados",
|
||||
"restore-board": "Restaurar Tablero",
|
||||
"no-archived-boards": "No hay Tableros Archivados",
|
||||
"archives": "Archives",
|
||||
"app-is-offline": "Wekan se está cargando, por favor espere. Actualizar la página provocará la pérdida de datos. Si Wekan no se carga, por favor verifique que el servidor de Wekan no está detenido.",
|
||||
"archive": "Archivar",
|
||||
"archive-all": "Archivar todo",
|
||||
"archive-board": "Archivar el tablero",
|
||||
"archive-card": "Archivar la tarjeta",
|
||||
"archive-list": "Archivar la lista",
|
||||
"archive-swimlane": "Archivar el carril de flujo",
|
||||
"archive-selection": "Archivar la selección",
|
||||
"archiveBoardPopup-title": "¿Archivar el tablero?",
|
||||
"archived-items": "Elementos archivados",
|
||||
"archived-boards": "Tableros archivados",
|
||||
"restore-board": "Restaurar el tablero",
|
||||
"no-archived-boards": "No hay tableros archivados.",
|
||||
"archives": "Archivos",
|
||||
"assign-member": "Asignar miembros",
|
||||
"attached": "adjuntado",
|
||||
"attachment": "Adjunto",
|
||||
"attachment-delete-pop": "El borrado de un archivo adjunto es permanente. No se puede deshacer.",
|
||||
"attachmentDeletePopup-title": "¿Borrar 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 avatares muy grande (70KB máx.)",
|
||||
"avatar-too-big": "El avatar es muy grande (70KB máx.)",
|
||||
"back": "Atrás",
|
||||
"board-change-color": "Cambiar color",
|
||||
"board-nb-stars": "%s stars",
|
||||
"board-change-color": "Cambiar el color",
|
||||
"board-nb-stars": "%s destacados",
|
||||
"board-not-found": "Tablero no encontrado",
|
||||
"board-private-info": "This board will be <strong>private</strong>.",
|
||||
"board-private-info": "Este tablero será <strong>privado</strong>.",
|
||||
"board-public-info": "Este tablero será <strong>público</strong>.",
|
||||
"boardChangeColorPopup-title": "Change Board Background",
|
||||
"boardChangeTitlePopup-title": "Renombrar tablero",
|
||||
"boardChangeColorPopup-title": "Cambiar el fondo del tablero",
|
||||
"boardChangeTitlePopup-title": "Renombrar el tablero",
|
||||
"boardChangeVisibilityPopup-title": "Cambiar visibilidad",
|
||||
"boardChangeWatchPopup-title": "Cambiar Vigilancia",
|
||||
"boardMenuPopup-title": "Board Menu",
|
||||
"boardChangeWatchPopup-title": "Cambiar vigilancia",
|
||||
"boardMenuPopup-title": "Menú del tablero",
|
||||
"boards": "Tableros",
|
||||
"bucket-example": "Like “Bucket List” for example",
|
||||
"board-view": "Vista de tablero",
|
||||
"board-view-swimlanes": "Carril de flujo",
|
||||
"board-view-lists": "Listas",
|
||||
"bucket-example": "Como “Cosas por hacer” por ejemplo",
|
||||
"cancel": "Cancelar",
|
||||
"card-archived": "Esta ficha está archivada.",
|
||||
"card-comments-title": "Esta ficha tiene %s comentarios.",
|
||||
"card-delete-notice": "El borrado es permanente. Perderás todas las acciones asociadas a esta ficha.",
|
||||
"card-delete-pop": "All actions will be removed from the activity feed and you won't be able to re-open the card. There is no undo.",
|
||||
"card-delete-suggest-archive": "You can archive a card to remove it from the board and preserve the activity.",
|
||||
"card-due": "Motivo",
|
||||
"card-due-on": "Debido a",
|
||||
"card-edit-attachments": "Edit attachments",
|
||||
"card-edit-labels": "Edit labels",
|
||||
"card-edit-members": "Editar miembros",
|
||||
"card-labels-title": "Cambia las etiquetas de la ficha",
|
||||
"card-members-title": "Añadir o eliminar miembros del tablero desde la ficha.",
|
||||
"card-archived": "Esta tarjeta está ahora archivada.",
|
||||
"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": "Puede archivar una tarjeta para eliminarla del tablero y conservar la actividad.",
|
||||
"card-due": "Finalizar",
|
||||
"card-due-on": "Vence el",
|
||||
"card-spent": "Tiempo consumido",
|
||||
"card-edit-attachments": "Editar los adjuntos",
|
||||
"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": "Empezar",
|
||||
"card-start-on": "Empieza",
|
||||
"cardAttachmentsPopup-title": "Attach From",
|
||||
"cardDeletePopup-title": "¿Borrar ficha?",
|
||||
"cardDetailsActionsPopup-title": "Card Actions",
|
||||
"card-start-on": "Empieza el",
|
||||
"cardAttachmentsPopup-title": "Adjuntar desde",
|
||||
"cardDeletePopup-title": "¿Eliminar la tarjeta?",
|
||||
"cardDetailsActionsPopup-title": "Acciones de la tarjeta",
|
||||
"cardLabelsPopup-title": "Etiquetas",
|
||||
"cardMembersPopup-title": "Miembros",
|
||||
"cardMorePopup-title": "Más",
|
||||
"cards": "Tarjetas",
|
||||
"change": "Change",
|
||||
"change-avatar": "Cambiar Avatar",
|
||||
"change-password": "Cambiar la clave",
|
||||
"change-permissions": "Cambiar permisos",
|
||||
"change-settings": "Cambiar Preferencias",
|
||||
"changeAvatarPopup-title": "Cambiar Avatar",
|
||||
"changeLanguagePopup-title": "Cambiar idioma",
|
||||
"changePasswordPopup-title": "Cambiar la clave",
|
||||
"changePermissionsPopup-title": "Cambiar permisos",
|
||||
"changeSettingsPopup-title": "Cambiar Preferencias",
|
||||
"checklists": "Lista de Tareas",
|
||||
"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",
|
||||
"checklists": "Lista de tareas",
|
||||
"click-to-star": "Haz clic para destacar este tablero.",
|
||||
"click-to-unstar": "Haz clic para dejar de destacar este tablero.",
|
||||
"clipboard": "Clipboard or drag & drop",
|
||||
"clipboard": "el portapapeles o con arrastrar y soltar",
|
||||
"close": "Cerrar",
|
||||
"close-board": "Cerrar el tablero",
|
||||
"close-board-pop": "You will be able to restore the board by clicking the “Archives” button from the home header.",
|
||||
"color-black": "black",
|
||||
"color-blue": "blue",
|
||||
"color-green": "green",
|
||||
"color-lime": "lime",
|
||||
"color-orange": "orange",
|
||||
"color-pink": "pink",
|
||||
"color-purple": "purple",
|
||||
"color-red": "red",
|
||||
"color-sky": "sky",
|
||||
"color-yellow": "yellow",
|
||||
"comment": "Comentario",
|
||||
"comment-placeholder": "Escribir Comentario",
|
||||
"comment-only": "Sólo comentario",
|
||||
"comment-only-desc": "Solo se puede comentar en tarjetas.",
|
||||
"computer": "Ordenador",
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"copy-card-link-to-clipboard": "Copiar enlace a la tarjeta al portapapeles",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"close-board-pop": "Podrá restaurar el tablero haciendo clic en el botón 'Archivos' en el encabezado al inicio.",
|
||||
"color-black": "negra",
|
||||
"color-blue": "azul",
|
||||
"color-green": "verde",
|
||||
"color-lime": "lima",
|
||||
"color-orange": "naranja",
|
||||
"color-pink": "rosa",
|
||||
"color-purple": "violeta",
|
||||
"color-red": "roja",
|
||||
"color-sky": "celeste",
|
||||
"color-yellow": "amarilla",
|
||||
"comment": "Comentar",
|
||||
"comment-placeholder": "Escribir comentario",
|
||||
"comment-only": "Sólo comentarios",
|
||||
"comment-only-desc": "Solo se puede comentar en las tarjetas.",
|
||||
"computer": "el ordenador",
|
||||
"confirm-checklist-delete-dialog": "¿Seguro que desea eliminar la lista de tareas",
|
||||
"copy-card-link-to-clipboard": "Copiar el enlace de la tarjeta al portapapeles",
|
||||
"copyCardPopup-title": "Copiar la tarjeta",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Crear",
|
||||
"createBoardPopup-title": "Crear tablero",
|
||||
"chooseBoardSourcePopup-title": "Importar tablero",
|
||||
"chooseBoardSourcePopup-title": "Importar un tablero",
|
||||
"createLabelPopup-title": "Crear etiqueta",
|
||||
"current": "actual",
|
||||
"date": "Fecha",
|
||||
"decline": "Decline",
|
||||
"decline": "Declinar",
|
||||
"default-avatar": "Avatar por defecto",
|
||||
"delete": "Borrar",
|
||||
"deleteLabelPopup-title": "Borrar etiqueta",
|
||||
"description": "Descripcion",
|
||||
"disambiguateMultiLabelPopup-title": "Disambiguate Label Action",
|
||||
"disambiguateMultiMemberPopup-title": "Disambiguate Member Action",
|
||||
"discard": "Discard",
|
||||
"done": "Done",
|
||||
"delete": "Eliminar",
|
||||
"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 Avatar",
|
||||
"edit-profile": "Edit Profile",
|
||||
"editCardStartDatePopup-title": "Cambiar fecha de inicio",
|
||||
"editCardDueDatePopup-title": "Cambiar fecha de motivo",
|
||||
"editLabelPopup-title": "Cambiar etiqueta",
|
||||
"editNotificationPopup-title": "Editar Notificación",
|
||||
"editProfilePopup-title": "Edit Profile",
|
||||
"edit-avatar": "Cambiar el avatar",
|
||||
"edit-profile": "Editar el perfil",
|
||||
"edit-wip-limit": "Cambiar el límite del TEP",
|
||||
"soft-wip-limit": "Límite del TEP flexible",
|
||||
"editCardStartDatePopup-title": "Cambiar la fecha de inicio",
|
||||
"editCardDueDatePopup-title": "Cambiar la fecha de vencimiento",
|
||||
"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": "An account created for you on __siteName__",
|
||||
"email-enrollAccount-text": "Hello __user__,\n\nTo start using the service, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"email-fail": "Sending email failed",
|
||||
"email-invalid": "Invalid email",
|
||||
"email-invite": "Invite via Email",
|
||||
"email-invite-subject": "__inviter__ sent you an invitation",
|
||||
"email-invite-text": "Dear __user__,\n\n__inviter__ invites you to join board \"__board__\" for collaborations.\n\nPlease follow the link below:\n\n__url__\n\nThanks.",
|
||||
"email-resetPassword-subject": "Reset your password on __siteName__",
|
||||
"email-resetPassword-text": "Hello __user__,\n\nTo reset your password, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"email-sent": "Email sent",
|
||||
"email-verifyEmail-subject": "Verify your email address on __siteName__",
|
||||
"email-verifyEmail-text": "Hello __user__,\n\nTo verify your account email, simply click the link below.\n\n__url__\n\nThanks.",
|
||||
"error-board-doesNotExist": "This board does not exist",
|
||||
"error-board-notAdmin": "You need to be admin of this board to do that",
|
||||
"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-list-doesNotExist": "This list does not exist",
|
||||
"error-user-doesNotExist": "This user does not exist",
|
||||
"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": "Activar el límite del TEP",
|
||||
"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-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": "This user is not created",
|
||||
"error-user-notCreated": "El usuario no ha sido creado",
|
||||
"error-username-taken": "Este nombre de usuario ya está en uso",
|
||||
"error-email-taken": "Esta direccion de Email ya está en uso",
|
||||
"export-board": "Export board",
|
||||
"filter": "Filter",
|
||||
"filter-cards": "Fichas de filtro",
|
||||
"filter-clear": "Clear filter",
|
||||
"error-email-taken": "Esta dirección de correo ya está en uso",
|
||||
"export-board": "Exportar el tablero",
|
||||
"filter": "Filtro",
|
||||
"filter-cards": "Filtrar tarjetas",
|
||||
"filter-clear": "Limpiar filtro",
|
||||
"filter-no-label": "Sin etiqueta",
|
||||
"filter-no-member": "Sin miembro",
|
||||
"filter-on": "Filtro activo",
|
||||
"filter-on-desc": "Estás filtrando fichas en este tablero. Haz clic aquí para editar el filtro.",
|
||||
"filter-to-selection": "Filter to selection",
|
||||
"fullname": "Nombre Completo",
|
||||
"filter-on": "Filtro 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",
|
||||
"fullname": "Nombre completo",
|
||||
"header-logo-title": "Volver a tu página de tableros",
|
||||
"hide-system-messages": "Ocultar los mensajes del sistema",
|
||||
"hide-system-messages": "Ocultar las notificaciones de actividad",
|
||||
"headerBarCreateBoardPopup-title": "Crear tablero",
|
||||
"home": "Inicio",
|
||||
"import": "Importar",
|
||||
"import-board": "importar tablero",
|
||||
"import-board-c": "Importar tablero",
|
||||
"import-board-title-trello": "Importar tablero desde Trello",
|
||||
"import-board-title-wekan": "Importar tablero desde Wekan",
|
||||
"import-sandstorm-warning": "El tablero importado va a borrar todos los datos existentes en este tablero y reemplazarlos con los datos del tablero importado.",
|
||||
"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 un tablero desde Wekan",
|
||||
"import-sandstorm-warning": "El tablero importado eliminará todos los datos existentes en este tablero y los reemplazará con los datos del tablero importado.",
|
||||
"from-trello": "Desde Trello",
|
||||
"from-wekan": "Desde Wekan",
|
||||
"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-wekan": "En tu tablero Wekan, ve a 'Menu', luego 'Exportar tablero', y copia el texto en el archivo descargado.",
|
||||
"import-json-placeholder": "Paste your valid JSON data here",
|
||||
"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-wekan": "En tu tablero Wekan, ve a 'Menú', luego 'Exportar el tablero', y copia el texto del fichero descargado.",
|
||||
"import-json-placeholder": "Pega tus datos JSON válidos aquí",
|
||||
"import-map-members": "Mapa de miembros",
|
||||
"import-members-map": "Your imported board has some members. Please map the members you want to import to Wekan users",
|
||||
"import-show-user-mapping": "Review members mapping",
|
||||
"import-user-select": "Pick the Wekan user you want to use as this member",
|
||||
"importMapMembersAddPopup-title": "Seleccionar un miembro de Wekan",
|
||||
"import-members-map": "El tablero importado tiene algunos miembros. Por favor mapea los miembros que deseas importar a los usuarios de Wekan",
|
||||
"import-show-user-mapping": "Revisión de la asignación de miembros",
|
||||
"import-user-select": "Escoge el usuario de Wekan que deseas utilizar como miembro",
|
||||
"importMapMembersAddPopup-title": "Selecciona un miembro de Wekan",
|
||||
"info": "Versión",
|
||||
"initials": "Iniciales",
|
||||
"invalid-date": "Fecha no Válida",
|
||||
"invalid-date": "Fecha no válida",
|
||||
"invalid-time": "Tiempo no válido",
|
||||
"invalid-user": "Usuario no válido",
|
||||
"joined": "se ha unido",
|
||||
"just-invited": "You are just invited to this board",
|
||||
"just-invited": "Has sido invitado a este tablero",
|
||||
"keyboard-shortcuts": "Atajos de teclado",
|
||||
"label-create": "Crear etiqueta",
|
||||
"label-default": "%s etiqueta (por Defecto)",
|
||||
"label-delete-pop": "No se puede deshacer. Esto eliminará esta etiqueta de todas las fichas y destruirá su historia.",
|
||||
"label-create": "Crear una etiqueta",
|
||||
"label-default": "etiqueta %s (por defecto)",
|
||||
"label-delete-pop": "Esto eliminará esta etiqueta de todas las tarjetas y destruirá su historial. Esta acción no puede deshacerse.",
|
||||
"labels": "Etiquetas",
|
||||
"language": "Idioma",
|
||||
"language": "Cambiar el idioma",
|
||||
"last-admin-desc": "No puedes cambiar roles porque debe haber al menos un administrador.",
|
||||
"leave-board": "Dejar el Tablero",
|
||||
"link-card": "Enlace a esta ficha",
|
||||
"list-archive-cards": "Archive all cards in this list",
|
||||
"list-archive-cards-pop": "Esto eliminara todas las fichas de esta lista del tablero. Para ver fichas archivadas y recuperarlas en el tablero, haz clic en \"Menu\" / \"Artículos Archivados\".",
|
||||
"list-move-cards": "Move all cards in this list",
|
||||
"list-select-cards": "Select all cards in this list",
|
||||
"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": "Enlace a esta tarjeta",
|
||||
"list-archive-cards": "Archivar todas las tarjetas de esta lista",
|
||||
"list-archive-cards-pop": "Esto eliminara todas las tarjetas de esta lista del tablero. Para ver las tarjetas archivadas y recuperarlas en el tablero, haz clic en 'Menú' > 'Elementos archivados'.",
|
||||
"list-move-cards": "Mover todas las tarjetas de esta lista",
|
||||
"list-select-cards": "Seleccionar todas las tarjetas de esta lista",
|
||||
"listActionPopup-title": "Acciones de la lista",
|
||||
"swimlaneActionPopup-title": "Acciones del carril de flujo",
|
||||
"listImportCardPopup-title": "Importar una tarjeta de Trello",
|
||||
"listMorePopup-title": "Más",
|
||||
"link-list": "Enlace a esta lista",
|
||||
"list-delete-pop": "Todas las acciones serán borradas del feed de actividad y no podrá recuperar la lista. Esta acción no puede deshacerse.",
|
||||
"list-delete-suggest-archive": "Puede archivar una lista para quitarla del tablero y preservar la actividad",
|
||||
"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": "Puede archivar una lista para quitarla del tablero y preservar así sus actividades.",
|
||||
"lists": "Listas",
|
||||
"log-out": "Finalizar la sesion",
|
||||
"log-in": "Iniciar sesion",
|
||||
"loginPopup-title": "Iniciar sesion",
|
||||
"memberMenuPopup-title": "Preferencias de Miembro",
|
||||
"swimlanes": "Carril de flujo",
|
||||
"log-out": "Finalizar la sesión",
|
||||
"log-in": "Iniciar sesión",
|
||||
"loginPopup-title": "Iniciar sesión",
|
||||
"memberMenuPopup-title": "Mis preferencias",
|
||||
"members": "Miembros",
|
||||
"menu": "Menu",
|
||||
"move-selection": "Mover selección",
|
||||
"moveCardPopup-title": "Move Card",
|
||||
"moveCardToBottom-title": "Mover al Final",
|
||||
"moveCardToTop-title": "Movel al Principio",
|
||||
"moveSelectionPopup-title": "Mover selección",
|
||||
"multi-selection": "Multi-Selección",
|
||||
"multi-selection-on": "Multi-Selección activada",
|
||||
"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-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 de flujo archivados.",
|
||||
"no-results": "Sin resultados",
|
||||
"normal": "Normal",
|
||||
"normal-desc": "Puedes ver y editar fichas. No puedes cambiar la configuración.",
|
||||
"not-accepted-yet": "Invitation not accepted yet",
|
||||
"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. Puedes verla por <a href='%s'>logging in</a>.",
|
||||
"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": "Clave",
|
||||
"paste-or-dragdrop": "to paste, or drag & drop image file to it (image only)",
|
||||
"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",
|
||||
@@ -291,105 +316,122 @@
|
||||
"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 cualquier persona con el enlace y se mostrará en los motores de búsqueda como Google. Sólo personas añadidas al tablero pueden editarlo.",
|
||||
"quick-access-description": "Star a board to add a shortcut in this bar.",
|
||||
"remove-cover": "Eliminar cubierta",
|
||||
"remove-from-board": "Borrar del Tablero",
|
||||
"remove-label": "Eliminar Etiqueta",
|
||||
"listDeletePopup-title": "Eliminar lista?",
|
||||
"remove-member": "Eliminar Miembro",
|
||||
"remove-member-from-card": "Eliminar de la Ficha",
|
||||
"remove-member-pop": "Eliminar __nombre__ (__usuario__) de __Título del tablero__? El miembro será eliminado de todas las tarjetas de este tablero. Ellos recibirán una notificación.",
|
||||
"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 tablero",
|
||||
"rename-board": "Renombrar el tablero",
|
||||
"restore": "Restaurar",
|
||||
"save": "Guardar",
|
||||
"search": "Buscar",
|
||||
"select-color": "Selecciona un Color",
|
||||
"select-color": "Selecciona un color",
|
||||
"set-wip-limit-value": "Fija un límite para el número máximo de tareas en esta lista.",
|
||||
"setWipLimitPopup-title": "Fijar el límite del TEP",
|
||||
"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 Diálogo",
|
||||
"shortcut-close-dialog": "Cerrar el cuadro de diálogo",
|
||||
"shortcut-filter-my-cards": "Filtrar mis tarjetas",
|
||||
"shortcut-show-shortcuts": "Bring up this shortcuts list",
|
||||
"shortcut-toggle-filterbar": "Toggle Filter Sidebar",
|
||||
"shortcut-toggle-sidebar": "Toggle Board Sidebar",
|
||||
"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 Barra Lateral",
|
||||
"sidebar-close": "Cerrar Barra Lateral",
|
||||
"signupPopup-title": "Crear una Cuenta",
|
||||
"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": "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 ficha",
|
||||
"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": "Seguimiento",
|
||||
"tracking-info": "Serás notificado de cualquier cambio en las tarjetas que estás envuelto como creador o miembro.",
|
||||
"unassign-member": "Desasignar miembro",
|
||||
"unsaved-description": "Tienes unas descripción no guardada.",
|
||||
"tracking-info": "Serás notificado de cualquier cambio en las tarjetas en las que participas como creador o miembro.",
|
||||
"unassign-member": "Desvincular al miembro",
|
||||
"unsaved-description": "Tienes una descripción sin guardar.",
|
||||
"unwatch": "Dejar de vigilar",
|
||||
"upload": "Cargar",
|
||||
"upload-avatar": "Cargar un avatar",
|
||||
"uploaded-avatar": "Avatar cargado",
|
||||
"username": "Nombre de Usuario",
|
||||
"username": "Nombre de usuario",
|
||||
"view-it": "Verlo",
|
||||
"warn-list-archived": "warning: this card is in an archived list",
|
||||
"warn-list-archived": "advertencia: esta tarjeta está en una lista archivada",
|
||||
"watch": "Vigilar",
|
||||
"watching": "Vigilando",
|
||||
"watching-info": "Serás notificado de cualquier cambio en este tablero",
|
||||
"welcome-board": "Tablero de Bienvenida",
|
||||
"welcome-list1": "Basicos",
|
||||
"welcome-board": "Tablero de bienvenida",
|
||||
"welcome-swimlane": "Hito 1",
|
||||
"welcome-list1": "Básicos",
|
||||
"welcome-list2": "Avanzados",
|
||||
"what-to-do": "What do you want to do?",
|
||||
"admin-panel": "Panel de Administrador",
|
||||
"what-to-do": "¿Qué deseas hacer?",
|
||||
"wipLimitErrorPopup-title": "Límite del TEP no válido",
|
||||
"wipLimitErrorPopup-dialog-pt1": "El número de tareas en esta lista es mayor que el límite del TEP que has definido.",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Por favor, mueve algunas tareas fuera de esta lista, o fija un límite del TEP más alto.",
|
||||
"admin-panel": "Panel del administrador",
|
||||
"settings": "Ajustes",
|
||||
"people": "Personas",
|
||||
"registration": "Registro",
|
||||
"disable-self-registration": "Deshabilitar autoregistro",
|
||||
"invite": "Invitar",
|
||||
"invite-people": "Invitar Personas",
|
||||
"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 emails",
|
||||
"smtp-port-description": "Puerto usado por el servidor SMTP para mandar emails",
|
||||
"smtp-tls-description": "Habilitar soporte TLS para el servidor SMTP",
|
||||
"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": "Clave",
|
||||
"smtp-username": "Nombre de usuario",
|
||||
"smtp-password": "Contraseña",
|
||||
"smtp-tls": "Soporte TLS",
|
||||
"send-from": "De",
|
||||
"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__ sent you an invitation",
|
||||
"email-invite-register-text": "Dear __user__,\n\n__inviter__ invites you to Wekan for collaborations.\n\nPlease follow the link below:\n__url__\n\nAnd your invitation code is: __icode__\n\nThanks.",
|
||||
"error-invitation-code-not-exist": "El Código de Invitación no existe",
|
||||
"email-invite-register-subject": "__inviter__ te ha enviado una invitación",
|
||||
"email-invite-register-text": "Estimado __user__,\n\n__inviter__ te invita a unirte a Wekan para colaborar.\n\nPor favor, haz clic en el siguiente enlace:\n__url__\n\nTu código de invitación es: __icode__\n\nGracias.",
|
||||
"email-smtp-test-subject": "Prueba de correo SMTP desde Wekan",
|
||||
"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.",
|
||||
"outgoing-webhooks": "Webhooks salientes",
|
||||
"outgoingWebhooksPopup-title": "Webhooks salientes",
|
||||
"new-outgoing-webhook": "New Outgoing Webhook",
|
||||
"new-outgoing-webhook": "Nuevo webhook saliente",
|
||||
"no-name": "(Desconocido)",
|
||||
"Wekan_version": "Versión Wekan",
|
||||
"Node_version": "Versión Node",
|
||||
"OS_Arch": "Arquitectura SO",
|
||||
"OS_Cpus": "Número CPUs SO",
|
||||
"OS_Freemem": "Memoria libre SO",
|
||||
"OS_Loadavg": "Carga Media SO",
|
||||
"OS_Platform": "Plataforma SO",
|
||||
"OS_Release": "Release SO",
|
||||
"OS_Totalmem": "Memoria Total SO",
|
||||
"OS_Type": "Tipo SO",
|
||||
"OS_Uptime": "Tiempo activo SO",
|
||||
"Wekan_version": "Versión de Wekan",
|
||||
"Node_version": "Versión de Node",
|
||||
"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",
|
||||
"hours": "horas",
|
||||
"minutes": "minutos",
|
||||
"seconds": "segundos",
|
||||
"yes": "Sí",
|
||||
"no": "No",
|
||||
"accounts": "Cuentas",
|
||||
"accounts-allowEmailChange": "Permitir cambiar email"
|
||||
"accounts-allowEmailChange": "Permitir cambiar el correo electrónico",
|
||||
"createdAt": "Creado en",
|
||||
"verified": "Verificado",
|
||||
"active": "Activo"
|
||||
}
|
||||
+48
-6
@@ -2,8 +2,8 @@
|
||||
"accept": "Onartu",
|
||||
"act-activity-notify": "[Wekan] Jarduera-jakinarazpena",
|
||||
"act-addAttachment": "__attachment__ __card__ txartelera erantsita",
|
||||
"act-addChecklist": "added checklist __checklist__ to __card__",
|
||||
"act-addChecklistItem": "added __checklistItem__ to checklist __checklist__ on __card__",
|
||||
"act-addChecklist": "gehituta checklist __checklist__ __card__ -ri",
|
||||
"act-addChecklistItem": "gehituta __checklistItem__ checklist __checklist__ on __card__ -ri",
|
||||
"act-addComment": "__card__ txartelean iruzkina: __comment__",
|
||||
"act-createBoard": "__board__ sortuta",
|
||||
"act-createCard": "__card__ __list__ zerrrendara gehituta",
|
||||
@@ -12,6 +12,7 @@
|
||||
"act-archivedBoard": "__board__ artxibatuta",
|
||||
"act-archivedCard": "__card__ artxibatuta",
|
||||
"act-archivedList": "__list__ artxibatuta",
|
||||
"act-archivedSwimlane": "archived __swimlane__",
|
||||
"act-importBoard": "__board__ inportatuta",
|
||||
"act-importCard": "__card__ inportatuta",
|
||||
"act-importList": "__list__ inportatuta",
|
||||
@@ -44,6 +45,7 @@
|
||||
"add-attachment": "Gehitu eranskina",
|
||||
"add-board": "Gehitu arbela",
|
||||
"add-card": "Gehitu txartela",
|
||||
"add-swimlane": "Add Swimlane",
|
||||
"add-checklist": "Gehitu egiaztaketa zerrenda",
|
||||
"add-checklist-item": "Gehitu elementu bat egiaztaketa zerrendara",
|
||||
"add-cover": "Gehitu azala",
|
||||
@@ -54,6 +56,9 @@
|
||||
"addMemberPopup-title": "Kideak",
|
||||
"admin": "Kudeatzailea",
|
||||
"admin-desc": "Txartelak ikusi eta editatu ditzake, kideak kendu, eta arbelaren ezarpenak aldatu.",
|
||||
"admin-announcement": "Jakinarazpena",
|
||||
"admin-announcement-active": "Gaitu Sistema-eremuko Jakinarazpena",
|
||||
"admin-announcement-title": "Administrariaren jakinarazpena",
|
||||
"all-boards": "Arbel guztiak",
|
||||
"and-n-other-card": "Eta beste txartel __count__",
|
||||
"and-n-other-card_plural": "Eta beste __count__ txartel",
|
||||
@@ -64,6 +69,7 @@
|
||||
"archive-board": "Artxibatu arbela",
|
||||
"archive-card": "Artxibatu txartela",
|
||||
"archive-list": "Artxibatu zerrenda",
|
||||
"archive-swimlane": "Archive Swimlane",
|
||||
"archive-selection": "Artxibatu hautaketa",
|
||||
"archiveBoardPopup-title": "Artxibatu arbela?",
|
||||
"archived-items": "Artxibatutako elementuak",
|
||||
@@ -91,6 +97,9 @@
|
||||
"boardChangeWatchPopup-title": "Aldatu ikuskatzea",
|
||||
"boardMenuPopup-title": "Arbelaren menua",
|
||||
"boards": "Arbelak",
|
||||
"board-view": "Board View",
|
||||
"board-view-swimlanes": "Swimlanes",
|
||||
"board-view-lists": "Zerrendak",
|
||||
"bucket-example": "Esaterako \"Pertz zerrenda\"",
|
||||
"cancel": "Utzi",
|
||||
"card-archived": "Txartel hau artxibatuta dago.",
|
||||
@@ -100,6 +109,7 @@
|
||||
"card-delete-suggest-archive": "Txartel bat artxibatu dezakezu arbeletik kendu nahi baduzu bere jarduera gordez.",
|
||||
"card-due": "Epemuga",
|
||||
"card-due-on": "Epemuga",
|
||||
"card-spent": "Erabilitako denbora",
|
||||
"card-edit-attachments": "Editatu eranskinak",
|
||||
"card-edit-labels": "Editatu etiketak",
|
||||
"card-edit-members": "Editatu kideak",
|
||||
@@ -146,9 +156,12 @@
|
||||
"comment-only": "Iruzkinak besterik ez",
|
||||
"comment-only-desc": "Iruzkinak txarteletan soilik egin ditzake",
|
||||
"computer": "Ordenagailua",
|
||||
"confirm-checklist-delete-dialog": "Are you sure you want to delete checklist",
|
||||
"confirm-checklist-delete-dialog": "Ziur zaude kontrol-zerrenda ezabatu nahi duzula",
|
||||
"copy-card-link-to-clipboard": "Kopiatu txartela arbelera",
|
||||
"copyCardPopup-title": "Copy Card",
|
||||
"copyCardPopup-title": "Kopiatu txartela",
|
||||
"copyChecklistToManyCardsPopup-title": "Copy Checklist Template to Many Cards",
|
||||
"copyChecklistToManyCardsPopup-instructions": "Destination Card Titles and Descriptions in this JSON format",
|
||||
"copyChecklistToManyCardsPopup-format": "[ {\"title\": \"First card title\", \"description\":\"First card description\"}, {\"title\":\"Second card title\",\"description\":\"Second card description\"},{\"title\":\"Last card title\",\"description\":\"Last card description\"} ]",
|
||||
"create": "Sortu",
|
||||
"createBoardPopup-title": "Sortu arbela",
|
||||
"chooseBoardSourcePopup-title": "Inportatu arbela",
|
||||
@@ -168,8 +181,11 @@
|
||||
"edit": "Editatu",
|
||||
"edit-avatar": "Aldatu avatarra",
|
||||
"edit-profile": "Editatu profila",
|
||||
"edit-wip-limit": "WIP muga editatu",
|
||||
"soft-wip-limit": "WIP muga malgua",
|
||||
"editCardStartDatePopup-title": "Aldatu hasiera data",
|
||||
"editCardDueDatePopup-title": "Aldatu epemuga data",
|
||||
"editCardSpentTimePopup-title": "Aldatu erabilitako denbora",
|
||||
"editLabelPopup-title": "Aldatu etiketa",
|
||||
"editNotificationPopup-title": "Editatu jakinarazpena",
|
||||
"editProfilePopup-title": "Editatu profila",
|
||||
@@ -177,6 +193,7 @@
|
||||
"email-enrollAccount-subject": "Kontu bat sortu zaizu __siteName__ gunean",
|
||||
"email-enrollAccount-text": "Kaixo __user__,\n\nZerbitzua erabiltzen hasteko, egin klik beheko loturan.\n\n__url__\n\nEskerrik asko.",
|
||||
"email-fail": "E-posta bidalketak huts egin du",
|
||||
"email-fail-text": "Arazoa mezua bidaltzen saiatzen",
|
||||
"email-invalid": "Baliogabeko e-posta",
|
||||
"email-invite": "Gonbidatu e-posta bidez",
|
||||
"email-invite-subject": "__inviter__ erabiltzaileak gonbidapen bat bidali dizu",
|
||||
@@ -186,6 +203,7 @@
|
||||
"email-sent": "E-posta bidali da",
|
||||
"email-verifyEmail-subject": "Egiaztatu __siteName__ guneko zure e-posta helbidea.",
|
||||
"email-verifyEmail-text": "Kaixo __user__,\n\nZure e-posta kontua egiaztatzeko, egin klik beheko loturan.\n\n__url__\n\nEskerrik asko.",
|
||||
"enable-wip-limit": "WIP muga gaitu",
|
||||
"error-board-doesNotExist": "Arbel hau ez da existitzen",
|
||||
"error-board-notAdmin": "Arbel honetako kudeatzailea izan behar zara hori egin ahal izateko",
|
||||
"error-board-notAMember": "Arbel honetako kidea izan behar zara hori egin ahal izateko",
|
||||
@@ -230,6 +248,8 @@
|
||||
"info": "Bertsioa",
|
||||
"initials": "Inizialak",
|
||||
"invalid-date": "Baliogabeko data",
|
||||
"invalid-time": "Baliogabeko denbora",
|
||||
"invalid-user": "Baliogabeko erabiltzailea",
|
||||
"joined": "elkartu da",
|
||||
"just-invited": "Arbel honetara gonbidatu berri zaituzte",
|
||||
"keyboard-shortcuts": "Teklatu laster-bideak",
|
||||
@@ -240,18 +260,22 @@
|
||||
"language": "Hizkuntza",
|
||||
"last-admin-desc": "Ezin duzu rola aldatu gutxienez kudeatzaile bat behar delako.",
|
||||
"leave-board": "Utzi arbela",
|
||||
"leave-board-pop": "Ziur zaude __boardTitle__ utzi nahi duzula? Arbel honetako txartel guztietatik ezabatua izango zara.",
|
||||
"leaveBoardPopup-title": "Arbela utzi?",
|
||||
"link-card": "Lotura txartel honetara",
|
||||
"list-archive-cards": "Artxibatu zerrendako txartel guztiak",
|
||||
"list-archive-cards-pop": "Honek zerrenda honetako txartel guztiak arbeletik ezabatuko ditu. Artxibatutako txartelak ikusteko eta arbelera berreskuratzeko, zoaz \"Menua > Artxibatutako elementuak\" atalera.",
|
||||
"list-move-cards": "Lekuz aldatu zerrendako txartel guztiak",
|
||||
"list-select-cards": "Aukeratu zerrenda honetako txartel guztiak",
|
||||
"listActionPopup-title": "Zerrendaren ekintzak",
|
||||
"swimlaneActionPopup-title": "Swimlane Actions",
|
||||
"listImportCardPopup-title": "Inportatu Trello txartel bat",
|
||||
"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.",
|
||||
"list-delete-suggest-archive": "Zerrenda bat artxibatu dezakezu arbeletik kendu nahi baduzu bere jarduera gordez.",
|
||||
"lists": "Zerrendak",
|
||||
"swimlanes": "Swimlanes",
|
||||
"log-out": "Itxi saioa",
|
||||
"log-in": "Hasi saioa",
|
||||
"loginPopup-title": "Hasi saioa",
|
||||
@@ -271,6 +295,7 @@
|
||||
"name": "Izena",
|
||||
"no-archived-cards": "Artxibatutako txartelik ez.",
|
||||
"no-archived-lists": "Artxibatutako zerrendarik ez.",
|
||||
"no-archived-swimlanes": "No archived swimlanes.",
|
||||
"no-results": "Emaitzarik ez",
|
||||
"normal": "Arrunta",
|
||||
"normal-desc": "Txartelak ikusi eta editatu ditzake. Ezin ditu ezarpenak aldatu.",
|
||||
@@ -307,6 +332,8 @@
|
||||
"save": "Gorde",
|
||||
"search": "Bilatu",
|
||||
"select-color": "Aukeratu kolorea",
|
||||
"set-wip-limit-value": "Zerrenda honetako atazen muga maximoa ezarri",
|
||||
"setWipLimitPopup-title": "WIP muga ezarri",
|
||||
"shortcut-assign-self": "Esleitu zure burua txartel honetara",
|
||||
"shortcut-autocomplete-emoji": "Automatikoki osatu emojia",
|
||||
"shortcut-autocomplete-members": "Automatikoki osatu kideak",
|
||||
@@ -327,6 +354,11 @@
|
||||
"team": "Taldea",
|
||||
"this-board": "arbel hau",
|
||||
"this-card": "txartel hau",
|
||||
"spent-time-hours": "Erabilitako denbora (orduak)",
|
||||
"overtime-hours": "Luzapena (orduak)",
|
||||
"overtime": "Luzapena",
|
||||
"has-overtime-cards": "Luzapen txartelak ditu",
|
||||
"has-spenttime-cards": "Erabilitako denbora txartelak ditu",
|
||||
"time": "Ordua",
|
||||
"title": "Izenburua",
|
||||
"tracking": "Jarraitzen",
|
||||
@@ -344,9 +376,13 @@
|
||||
"watching": "Ikuskatzen",
|
||||
"watching-info": "Arbel honi egindako aldaketak jakinaraziko zaizkizu",
|
||||
"welcome-board": "Ongi etorri arbela",
|
||||
"welcome-swimlane": "Milestone 1",
|
||||
"welcome-list1": "Oinarrizkoa",
|
||||
"welcome-list2": "Aurreratua",
|
||||
"what-to-do": "Zer egin nahi duzu?",
|
||||
"wipLimitErrorPopup-title": "Baliogabeko WIP muga",
|
||||
"wipLimitErrorPopup-dialog-pt1": "Zerrenda honetako atazen muga, WIP-en ezarritakoa baina handiagoa da",
|
||||
"wipLimitErrorPopup-dialog-pt2": "Mugitu zenbait ataza zerrenda honetatik, edo WIP muga handiagoa ezarri.",
|
||||
"admin-panel": "Kudeaketa panela",
|
||||
"settings": "Ezarpenak",
|
||||
"people": "Jendea",
|
||||
@@ -365,14 +401,17 @@
|
||||
"smtp-password": "Pasahitza",
|
||||
"smtp-tls": "TLS euskarria",
|
||||
"send-from": "Nork",
|
||||
"send-smtp-test": "Bidali posta elektroniko mezu bat zure buruari",
|
||||
"invitation-code": "Gonbidapen kodea",
|
||||
"email-invite-register-subject": "__inviter__ erabiltzaileak gonbidapen bat bidali dizu",
|
||||
"email-invite-register-text": "Kaixo __user__,\n\n__inviter__ erabiltzaileak Wekanera gonbidatu zaitu elkar-lanean aritzeko.\n\nJarraitu mesedez lotura hau:\n__url__\n\nZure gonbidapen kodea hau da: __icode__\n\nEskerrik asko.",
|
||||
"email-smtp-test-subject": "Wekan-etik bidalitako test-mezua",
|
||||
"email-smtp-test-text": "Arrakastaz bidali duzu posta elektroniko mezua",
|
||||
"error-invitation-code-not-exist": "Gonbidapen kodea ez da existitzen",
|
||||
"error-notAuthorized": "Ez duzu orri hau ikusteko baimenik.",
|
||||
"outgoing-webhooks": "Irteerako Webhook-ak",
|
||||
"outgoingWebhooksPopup-title": "Irteerako Webhook-ak",
|
||||
"new-outgoing-webhook": "New Outgoing Webhook",
|
||||
"new-outgoing-webhook": "Irteera-webhook berria",
|
||||
"no-name": "(Ezezaguna)",
|
||||
"Wekan_version": "Wekan bertsioa",
|
||||
"Node_version": "Nodo bertsioa",
|
||||
@@ -391,5 +430,8 @@
|
||||
"yes": "Bai",
|
||||
"no": "Ez",
|
||||
"accounts": "Kontuak",
|
||||
"accounts-allowEmailChange": "Baimendu e-mail aldaketa"
|
||||
"accounts-allowEmailChange": "Baimendu e-mail aldaketa",
|
||||
"createdAt": "Noiz sortua",
|
||||
"verified": "Egiaztatuta",
|
||||
"active": "Gaituta"
|
||||
}
|
||||
Loaded 100 of 162 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user