Compare commits
631 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2999d96a22 | ||
|
|
9920546ec8 | ||
|
|
eeceda539f | ||
|
|
ee262291ce | ||
|
|
858952a56f | ||
|
|
ad9ce6cd26 | ||
|
|
d362e0ad0e | ||
|
|
31965bf40c | ||
|
|
691bbda056 | ||
|
|
9b82779513 | ||
|
|
8cb92934b1 | ||
|
|
1b471b0fe8 | ||
|
|
537e9b35da | ||
|
|
ad5967859e | ||
|
|
afa2d247aa | ||
|
|
76e3cc5061 | ||
|
|
8f5ded6a28 | ||
|
|
0e092d3495 | ||
|
|
f32721d1e6 | ||
|
|
19a3466b18 | ||
|
|
5d3f952d92 | ||
|
|
d1b8e3cc5f | ||
|
|
efb7da6ca5 | ||
|
|
cc737cf250 | ||
|
|
da373bafe0 | ||
|
|
9e4d48ae36 | ||
|
|
4d84d77d27 | ||
|
|
0a82689284 | ||
|
|
a3e14ec732 | ||
|
|
4a56995326 | ||
|
|
eb262a13e4 | ||
|
|
21d84343ec | ||
|
|
431dfe3b15 | ||
|
|
9bb474638d | ||
|
|
220adf708f | ||
|
|
f616f38e67 | ||
|
|
8e51fdbb88 | ||
|
|
d5bec8d19e | ||
|
|
742c02cbbb | ||
|
|
27aa2adf0f | ||
|
|
79550fc843 | ||
|
|
ac982a72a4 | ||
|
|
de0aeaa084 | ||
|
|
e6f4929cea | ||
|
|
f8fbcee618 | ||
|
|
7ffe11e8cd | ||
|
|
99fffe750d | ||
|
|
ae4857b75e | ||
|
|
27bab0ec4d | ||
|
|
8ca3e5d32e | ||
|
|
6227583917 | ||
|
|
5d10f834c5 | ||
|
|
009734295c | ||
|
|
74c7530a4f | ||
|
|
acc168e174 | ||
|
|
6998a4a643 | ||
|
|
2a6db83804 | ||
|
|
31e4d370c3 | ||
|
|
ce3e979452 | ||
|
|
4ec2ae2a61 | ||
|
|
904eecd155 | ||
|
|
e70045f7d3 | ||
|
|
75f95db0b1 | ||
|
|
63d29ae533 | ||
|
|
59ac632d0e | ||
|
|
b57e8e56fa | ||
|
|
5b28365444 | ||
|
|
f55fb90cfa | ||
|
|
c517dbdb77 | ||
|
|
14d5af683e | ||
|
|
e1e01c0e0d | ||
|
|
403629c91a | ||
|
|
15d642efa4 | ||
|
|
d3d888fb43 | ||
|
|
5ac2b91542 | ||
|
|
de4e90b52e | ||
|
|
dc37dd2c60 | ||
|
|
5d38f6a176 | ||
|
|
70d28ec376 | ||
|
|
8cec7cb571 | ||
|
|
52ac77ea90 | ||
|
|
dd0c26b298 | ||
|
|
19dda17e71 | ||
|
|
cd6f661dc9 | ||
|
|
5dcf52b489 | ||
|
|
ea5203049b | ||
|
|
a388a04a06 | ||
|
|
4393b44e0d | ||
|
|
d3b34fc3f6 | ||
|
|
cd81192cae | ||
|
|
d33cce3725 | ||
|
|
5ffef2fd3a | ||
|
|
d7da990a55 | ||
|
|
95f4e4b014 | ||
|
|
66cfa72839 | ||
|
|
f707bed675 | ||
|
|
173b0f4756 | ||
|
|
2425018897 | ||
|
|
415e5b5a1a | ||
|
|
eb0810de27 | ||
|
|
0af0124c12 | ||
|
|
ebe3666b9f | ||
|
|
183c2665eb | ||
|
|
63da73600f | ||
|
|
253e60f88a | ||
|
|
1d5ed11a8c | ||
|
|
28208f168d | ||
|
|
84502db00b | ||
|
|
6d8afe6252 | ||
|
|
d674abb7b6 | ||
|
|
7200e17d33 | ||
|
|
1ace5de9e6 | ||
|
|
5394d0f59b | ||
|
|
d386ab80d4 | ||
|
|
9fa88cac6b | ||
|
|
827aceecda | ||
|
|
9cefecb45d | ||
|
|
a48169de18 | ||
|
|
fbf48e1be0 | ||
|
|
c8d5f179be | ||
|
|
137f429cfa | ||
|
|
367873beaa | ||
|
|
a8aab8d049 | ||
|
|
ef64dfc5a2 | ||
|
|
7c552e9a52 | ||
|
|
02724fd4eb | ||
|
|
89643fb681 | ||
|
|
1b19ba2385 | ||
|
|
8b9ae38303 | ||
|
|
175f47be5b | ||
|
|
8cfaca8a75 | ||
|
|
03fc1fd0f2 | ||
|
|
066f67ef7b | ||
|
|
081b3520a0 | ||
|
|
8324410578 | ||
|
|
b3db3daf91 | ||
|
|
aa5e0a1d5e | ||
|
|
c38039ad80 | ||
|
|
a9a5b6a52a | ||
|
|
e1793b5c31 | ||
|
|
f533f2bd80 | ||
|
|
35fc02734f | ||
|
|
91261f2e4e | ||
|
|
c519e1b841 | ||
|
|
8668a900b1 | ||
|
|
4ca45a5629 | ||
|
|
78020635c8 | ||
|
|
abc039a634 | ||
|
|
afec4f211c | ||
|
|
47b51c512d | ||
|
|
f8f755f31e | ||
|
|
a2adcf2487 | ||
|
|
650313254f | ||
|
|
5dd91f4261 | ||
|
|
8499a28921 | ||
|
|
c1bc287fe1 | ||
|
|
68b3c0216d | ||
|
|
58885f6598 | ||
|
|
af3201b293 | ||
|
|
d2dde30098 | ||
|
|
10c836d864 | ||
|
|
ff2503f857 | ||
|
|
fcd5918686 | ||
|
|
8213b39949 | ||
|
|
88474bb11b | ||
|
|
546b71926a | ||
|
|
37967f5bfb | ||
|
|
cd651ebda5 | ||
|
|
5f69c56c3a | ||
|
|
3f8806c81f | ||
|
|
32a7c5f765 | ||
|
|
7b45a92a60 | ||
|
|
7b88d56e7a | ||
|
|
19b13456a5 | ||
|
|
53b1af9dbe | ||
|
|
3037effb5a | ||
|
|
8357599361 | ||
|
|
5d54772b1b | ||
|
|
afa16ee3ba | ||
|
|
090d99a360 | ||
|
|
a322c7a3b5 | ||
|
|
1f3276acee | ||
|
|
dc917b1e5d | ||
|
|
ff2d96a1fb | ||
|
|
a56ceb348d | ||
|
|
8cb95c4105 | ||
|
|
28d6f4196e | ||
|
|
99c31d3c00 | ||
|
|
02ec4ae9d1 | ||
|
|
f42e3eb857 | ||
|
|
447cb80573 | ||
|
|
01f11d1be9 | ||
|
|
f746588111 | ||
|
|
458a795460 | ||
|
|
4cf746dd6f | ||
|
|
4fa37f0548 | ||
|
|
fa70d329cd | ||
|
|
98978b019a | ||
|
|
07da13bdf9 | ||
|
|
794fcb76b8 | ||
|
|
2ca1e1eed8 | ||
|
|
063bf59ddb | ||
|
|
5fde7a19bf | ||
|
|
6901314382 | ||
|
|
c45bb71084 | ||
|
|
320f2bf5c8 | ||
|
|
9014ae1490 | ||
|
|
516e396a58 | ||
|
|
9b9c1432f2 | ||
|
|
8d39fd9ad1 | ||
|
|
3d54d129b9 | ||
|
|
05395dbfbe | ||
|
|
1b0ac8c1e2 | ||
|
|
4fc96e40ff | ||
|
|
8b4eac0854 | ||
|
|
1d4c019588 | ||
|
|
dbef69e9ce | ||
|
|
7c6e48d15b | ||
|
|
d9c3aa44b9 | ||
|
|
ac1b1e826f | ||
|
|
3c2ee00ad7 | ||
|
|
6a575baadd | ||
|
|
f8c9bc1c7c | ||
|
|
e1ac6b0a9e | ||
|
|
ed55b0db51 | ||
|
|
e8ecfce134 | ||
|
|
07132126a9 | ||
|
|
a346e215cd | ||
|
|
52fc971529 | ||
|
|
e0bab217a0 | ||
|
|
f770b2e7af | ||
|
|
0d3916d450 | ||
|
|
8fbd400c3c | ||
|
|
fa9067b47a | ||
|
|
af83e8a3d0 | ||
|
|
e8ba47564c | ||
|
|
ea1b597fc0 | ||
|
|
5312751cb8 | ||
|
|
a2bef30759 | ||
|
|
b2f58b3404 | ||
|
|
d212a426f2 | ||
|
|
4689619ba4 | ||
|
|
e2e8e98c1f | ||
|
|
f9b9973c29 | ||
|
|
c3ba8fa536 | ||
|
|
e1d1e0c2c8 | ||
|
|
aaf04ffbd4 | ||
|
|
1d08c67353 | ||
|
|
2706dfaf4e | ||
|
|
830f8a13fc | ||
|
|
a15997a2c8 | ||
|
|
287e1fe2d0 | ||
|
|
ec5389beb3 | ||
|
|
8d8c7587d7 | ||
|
|
c67b5eab6b | ||
|
|
daee347ea5 | ||
|
|
1765ab2c34 | ||
|
|
0cc322f133 | ||
|
|
857e22a8c9 | ||
|
|
a8f3119d26 | ||
|
|
ef52ab5bca | ||
|
|
22c20426b3 | ||
|
|
42fa3fa039 | ||
|
|
2a8a6784f1 | ||
|
|
d50cdcb343 | ||
|
|
1cbfd1b6bf | ||
|
|
38ec1abfa5 | ||
|
|
ac453636a9 | ||
|
|
698f1eea25 | ||
|
|
8e858fac5c | ||
|
|
ce7c5d6196 | ||
|
|
9cfb561c1c | ||
|
|
bf06ec29ca | ||
|
|
1ec13802af | ||
|
|
86385f0d6f | ||
|
|
3c12c84c7b | ||
|
|
168c83fea0 | ||
|
|
04ba531e2f | ||
|
|
460b55f002 | ||
|
|
850cecb0b9 | ||
|
|
ba6e980cba | ||
|
|
b28e549353 | ||
|
|
b3c16a5a92 | ||
|
|
2b7d1b1085 | ||
|
|
c8c32eba8c | ||
|
|
124403f8aa | ||
|
|
f61377d95f | ||
|
|
ec2b0d2c7d | ||
|
|
c68275c325 | ||
|
|
e67aee4019 | ||
|
|
cfcaa6939b | ||
|
|
631a96f8da | ||
|
|
de800f79fb | ||
|
|
43d46830d1 | ||
|
|
14c90e53ce | ||
|
|
a14b74223b | ||
|
|
4cbaff461e | ||
|
|
7461b186a5 | ||
|
|
34a253cff2 | ||
|
|
1cb37ac8fa | ||
|
|
5648557be0 | ||
|
|
6eb10bd667 | ||
|
|
1105363d9a | ||
|
|
2b1bac9a2f | ||
|
|
227f510d73 | ||
|
|
2fa56cdd77 | ||
|
|
1346d085fe | ||
|
|
8e3db9147b | ||
|
|
587f2ef3e3 | ||
|
|
7839f3ea10 | ||
|
|
1029a21f87 | ||
|
|
e908593ce0 | ||
|
|
be555529f0 | ||
|
|
53e4eb345a | ||
|
|
6a2dbf61d9 | ||
|
|
27d99f4a50 | ||
|
|
6f479727d5 | ||
|
|
64c3606e09 | ||
|
|
acaff1e99e | ||
|
|
d584b45114 | ||
|
|
bf52f85c08 | ||
|
|
237df08414 | ||
|
|
e9ef790295 | ||
|
|
1388da0fa0 | ||
|
|
aa69584afd | ||
|
|
a03986b1bb | ||
|
|
e970fca3f3 | ||
|
|
b15555e5e2 | ||
|
|
017b4b5b29 | ||
|
|
905aeed75a | ||
|
|
86fe38832c | ||
|
|
935026fb0f | ||
|
|
da35eb45da | ||
|
|
0b2884cdfb | ||
|
|
515b5c5310 | ||
|
|
f9674db40a | ||
|
|
4dfc11db56 | ||
|
|
5b620879de | ||
|
|
0c478a0636 | ||
|
|
4a2ee8f9d0 | ||
|
|
630104c37f | ||
|
|
882bf773c8 | ||
|
|
42f3f5c1dd | ||
|
|
6d8dbeebcd | ||
|
|
1d9a0d35d8 | ||
|
|
eabcb12185 | ||
|
|
ae88f2291c | ||
|
|
a5199127da | ||
|
|
9c19246b8b | ||
|
|
396a0d6d3a | ||
|
|
0ffb8a0dbd | ||
|
|
2063e1d9f4 | ||
|
|
b350213a01 | ||
|
|
9a77bd7c7c | ||
|
|
58bf51accd | ||
|
|
ead01055fc | ||
|
|
848521a8ef | ||
|
|
7e81b6c182 | ||
|
|
231c4e1acb | ||
|
|
094d5334aa | ||
|
|
989f09ed98 | ||
|
|
fe936f42c4 | ||
|
|
b82ef2b401 | ||
|
|
4de11b8f95 | ||
|
|
61c4e70046 | ||
|
|
d052325874 | ||
|
|
9b6869862c | ||
|
|
d421e23f9d | ||
|
|
bdd47c8dc6 | ||
|
|
bb8c0909f2 | ||
|
|
8e89c36ba8 | ||
|
|
4391af0e84 | ||
|
|
b1ac1b3d4e | ||
|
|
6b8c084ed4 | ||
|
|
ac39568ff6 | ||
|
|
e7b095591a | ||
|
|
2e1f743698 | ||
|
|
537adc09b4 | ||
|
|
48842dd53e | ||
|
|
68b2025390 | ||
|
|
034ac5e2ad | ||
|
|
727a33535d | ||
|
|
3062c82083 | ||
|
|
4623688852 | ||
|
|
19a90809f9 | ||
|
|
57f74c98db | ||
|
|
c7586377ea | ||
|
|
f5dc4ac0e9 | ||
|
|
06e41f59f6 | ||
|
|
f7b69d9c42 | ||
|
|
2c63bfb4b8 | ||
|
|
247b4dde0c | ||
|
|
90eb9ce28e | ||
|
|
8c04ea8dc9 | ||
|
|
fa5cba631f | ||
|
|
b220bab8c6 | ||
|
|
786aa00f83 | ||
|
|
6f9fe17004 | ||
|
|
2efb78bfa3 | ||
|
|
64960956f9 | ||
|
|
cfd936b5c5 | ||
|
|
2cb151ba02 | ||
|
|
2f73f0492b | ||
|
|
e06a2ad743 | ||
|
|
73eff3d64e | ||
|
|
d14f4f20b6 | ||
|
|
c6159e5914 | ||
|
|
d8a287e9dc | ||
|
|
1d09de1d34 | ||
|
|
e633dd4d0f | ||
|
|
7ce7543817 | ||
|
|
033897f877 | ||
|
|
ef31fec924 | ||
|
|
1780b4b21c | ||
|
|
beef990a9f | ||
|
|
18262c6159 | ||
|
|
ff77fb68f5 | ||
|
|
c3b9579f1d | ||
|
|
a86eaec7c6 | ||
|
|
f4a5a0c36c | ||
|
|
1defc48179 | ||
|
|
98c87f4551 | ||
|
|
457b897135 | ||
|
|
314763acca | ||
|
|
8c7190f84d | ||
|
|
8105a4b211 | ||
|
|
7c80b58dd7 | ||
|
|
2adf972440 | ||
|
|
aacf7716ce | ||
|
|
a23b7e8f1a | ||
|
|
2eb6118485 | ||
|
|
855479fe68 | ||
|
|
2596ecae5b | ||
|
|
d60f79da65 | ||
|
|
58c6cf19a6 | ||
|
|
a070fa3bac | ||
|
|
286a56e6f4 | ||
|
|
0b7b89b602 | ||
|
|
04108835a6 | ||
|
|
1143f0807c | ||
|
|
f2dcede923 | ||
|
|
5dd346fbe8 | ||
|
|
b6d94ec9ff | ||
|
|
ec6c8d94c1 | ||
|
|
ca3b89569f | ||
|
|
69d16d7f39 | ||
|
|
2fd06acca8 | ||
|
|
b5afb42989 | ||
|
|
4802f34c04 | ||
|
|
f553e88e29 | ||
|
|
ebee72e9b3 | ||
|
|
23a8863a35 | ||
|
|
4ec59d24b4 | ||
|
|
543127c1e6 | ||
|
|
1e4e0a3947 | ||
|
|
0b133c59d9 | ||
|
|
d2b44c2ad0 | ||
|
|
0b12271ee3 | ||
|
|
c6ebfdc11f | ||
|
|
fbc12ae8f7 | ||
|
|
77b5c7daa7 | ||
|
|
40482f6f03 | ||
|
|
ada458bacf | ||
|
|
5a0b15a490 | ||
|
|
01794141a8 | ||
|
|
8cb30a0094 | ||
|
|
dabf46e886 | ||
|
|
e2923abf90 | ||
|
|
7ba9f769f6 | ||
|
|
79408568b4 | ||
|
|
54f698c20d | ||
|
|
c696d9f287 | ||
|
|
e9f71d1f40 | ||
|
|
92349f66a3 | ||
|
|
1d797b1bf2 | ||
|
|
63714d5133 | ||
|
|
2fbed6342a | ||
|
|
e7fd9d8b3a | ||
|
|
2d16f66ef7 | ||
|
|
d5c80c37cc | ||
|
|
3471e7ac00 | ||
|
|
1f4e0bdee1 | ||
|
|
90c22e8f4a | ||
|
|
ccf19e3129 | ||
|
|
be75d28170 | ||
|
|
9c6b2b160e | ||
|
|
23d8c1aa30 | ||
|
|
96ab5e70fa | ||
|
|
7e5c7a9cb8 | ||
|
|
e700d9d781 | ||
|
|
452f9a3312 | ||
|
|
95b0f49739 | ||
|
|
b330f03a32 | ||
|
|
12ebffb885 | ||
|
|
860cbab1d3 | ||
|
|
c08455e11b | ||
|
|
a6b6842e2b | ||
|
|
588252d949 | ||
|
|
3b0390f50f | ||
|
|
c8389fbcb0 | ||
|
|
94788bed39 | ||
|
|
8b4e7ec2bf | ||
|
|
111a98ce88 | ||
|
|
7fb0d2374d | ||
|
|
491a73456b | ||
|
|
62d671bdd5 | ||
|
|
955c5eb864 | ||
|
|
49cd271cbc | ||
|
|
37bdbecdc2 | ||
|
|
62af080e78 | ||
|
|
84d4b87bb8 | ||
|
|
5ad515f42a | ||
|
|
98b57fe0a4 | ||
|
|
b961206da3 | ||
|
|
d8d8137300 | ||
|
|
56fcb081a4 | ||
|
|
2b9b22f2f2 | ||
|
|
084d892ce6 | ||
|
|
11610f306a | ||
|
|
60e9cf7088 | ||
|
|
7e345256cb | ||
|
|
52a7b8d560 | ||
|
|
d98db33a02 | ||
|
|
04f5e2c2e1 | ||
|
|
74c8a6e848 | ||
|
|
02eecb3a3f | ||
|
|
1e9c86e158 | ||
|
|
2b05227f4b | ||
|
|
3e304a9ff2 | ||
|
|
000e447801 | ||
|
|
1b6531e748 | ||
|
|
e2012dd2c5 | ||
|
|
5346cc4042 | ||
|
|
22438f8f3e | ||
|
|
6033baca23 | ||
|
|
c1ff005710 | ||
|
|
05adda1e03 | ||
|
|
6ae6bdf74a | ||
|
|
35ea7255cb | ||
|
|
c80deaaaee | ||
|
|
ab60f4e3ab | ||
|
|
965708e784 | ||
|
|
1b364b4f85 | ||
|
|
aad1cb4fb5 | ||
|
|
99725765fc | ||
|
|
f313a9ba6b | ||
|
|
6bbe0a3161 | ||
|
|
4414fdebd4 | ||
|
|
0c0b663b9e | ||
|
|
b6645cfaa1 | ||
|
|
9351a04eb3 | ||
|
|
c1f828b894 | ||
|
|
cb233ba35b | ||
|
|
f09ce32f2b | ||
|
|
1e359adf18 | ||
|
|
34c1a681b1 | ||
|
|
3324556542 | ||
|
|
7dba354767 | ||
|
|
8444a00bdf | ||
|
|
021b186424 | ||
|
|
3e38ed7108 | ||
|
|
5d95dbf1ff | ||
|
|
f17b046cb1 | ||
|
|
7d55d22d42 | ||
|
|
138c03160e | ||
|
|
286d4d7900 | ||
|
|
3f6f80ce44 | ||
|
|
7d7c605d36 | ||
|
|
1d966033ec | ||
|
|
9de4051803 | ||
|
|
a2a3d8cae7 | ||
|
|
873e7cb1cf | ||
|
|
4766195872 | ||
|
|
c35f6aa9ef | ||
|
|
59ec9a15ff | ||
|
|
81cd17cf3a | ||
|
|
7ce44deb91 | ||
|
|
96f5f5fe45 | ||
|
|
5c8d7b7644 | ||
|
|
5136615650 | ||
|
|
3e3b120175 | ||
|
|
fef35d3929 | ||
|
|
2a483b6f92 | ||
|
|
f34250ca67 | ||
|
|
308ade1b6e | ||
|
|
cf03e08d1e | ||
|
|
90e0c57224 | ||
|
|
15e5a432b6 | ||
|
|
5372458288 | ||
|
|
2d7e6f2efa | ||
|
|
67f26ef9b2 | ||
|
|
153fb6a0f0 | ||
|
|
61b7228fb6 | ||
|
|
d2a2d7a63a | ||
|
|
db90911e5e | ||
|
|
a636b106c8 | ||
|
|
1e19c44665 | ||
|
|
c308087c4a | ||
|
|
cb5cfe1c73 | ||
|
|
3a311197a8 | ||
|
|
b5feeeaee3 | ||
|
|
8e890df7ab | ||
|
|
d88f561adb | ||
|
|
65eb63d742 | ||
|
|
cde350decf | ||
|
|
ba3d98a8e4 | ||
|
|
3b7a83d2a4 | ||
|
|
eaf8402d31 | ||
|
|
b710bd00a7 | ||
|
|
bf94f787c3 | ||
|
|
d74b9f68d9 | ||
|
|
198e443a24 | ||
|
|
cb073897c3 | ||
|
|
cba8112ff6 | ||
|
|
f8c2d86e4f | ||
|
|
dd612a0c5e | ||
|
|
8342e1f99a | ||
|
|
f604f2f779 | ||
|
|
2fd10f9201 | ||
|
|
0333f31b9a | ||
|
|
dfe8bad832 | ||
|
|
161a6715da | ||
|
|
929ed247c9 | ||
|
|
54c6d669f5 | ||
|
|
fdb7b7fb98 | ||
|
|
8375108412 | ||
|
|
b6d057a284 | ||
|
|
37437c1d76 | ||
|
|
9f61417a58 | ||
|
|
e05c2469b4 | ||
|
|
2085e9b300 |
213
.drone.yml
Normal file
213
.drone.yml
Normal file
@@ -0,0 +1,213 @@
|
||||
clone:
|
||||
git:
|
||||
image: plugins/git
|
||||
depth: 1
|
||||
|
||||
pipeline:
|
||||
check-app-compatbility:
|
||||
image: nextcloudci/php7.0:php7.0-17
|
||||
environment:
|
||||
- APP_NAME=deck
|
||||
- CORE_BRANCH=master
|
||||
- DB=sqlite
|
||||
commands:
|
||||
# Pre-setup steps
|
||||
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
|
||||
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
|
||||
- cd ../server
|
||||
# Code checker
|
||||
- ./occ app:check-code $APP_NAME -c strong-comparison
|
||||
- ./occ app:check-code $APP_NAME -c deprecation
|
||||
- cd apps/$APP_NAME/
|
||||
when:
|
||||
matrix:
|
||||
TESTS: check-app-compatbility
|
||||
signed-off-check:
|
||||
image: nextcloudci/php7.0:php7.0-17
|
||||
environment:
|
||||
- APP_NAME=deck
|
||||
- CORE_BRANCH=master
|
||||
- DB=sqlite
|
||||
commands:
|
||||
- wget https://raw.githubusercontent.com/nextcloud/server/master/build/signed-off-checker.php
|
||||
- php ./signed-off-checker.php
|
||||
when:
|
||||
matrix:
|
||||
TESTS: signed-off-check
|
||||
syntax-php5.6:
|
||||
image: nextcloudci/php5.6:php5.6-8
|
||||
environment:
|
||||
- APP_NAME=deck
|
||||
- CORE_BRANCH=stable13
|
||||
- DB=sqlite
|
||||
commands:
|
||||
- composer install
|
||||
- ./vendor/bin/parallel-lint --exclude ./vendor/ .
|
||||
when:
|
||||
matrix:
|
||||
TESTS: syntax-php5.6
|
||||
syntax-php7.0:
|
||||
image: nextcloudci/php7.0:php7.0-17
|
||||
environment:
|
||||
- APP_NAME=deck
|
||||
- CORE_BRANCH=master
|
||||
- DB=sqlite
|
||||
commands:
|
||||
- composer install
|
||||
- ./vendor/bin/parallel-lint --exclude ./vendor/ .
|
||||
when:
|
||||
matrix:
|
||||
TESTS: syntax-php7.0
|
||||
syntax-php7.1:
|
||||
image: nextcloudci/php7.1:php7.1-15
|
||||
environment:
|
||||
- APP_NAME=deck
|
||||
- CORE_BRANCH=master
|
||||
- DB=sqlite
|
||||
commands:
|
||||
- composer install
|
||||
- ./vendor/bin/parallel-lint --exclude ./vendor/ .
|
||||
when:
|
||||
matrix:
|
||||
TESTS: syntax-php7.1
|
||||
syntax-php7.2:
|
||||
image: nextcloudci/php7.2:php7.2-9
|
||||
environment:
|
||||
- APP_NAME=deck
|
||||
- CORE_BRANCH=master
|
||||
- DB=sqlite
|
||||
commands:
|
||||
- composer install
|
||||
- ./vendor/bin/parallel-lint --exclude ./vendor/ .
|
||||
when:
|
||||
matrix:
|
||||
TESTS: syntax-php7.2
|
||||
php5.6:
|
||||
image: nextcloudci/php5.6:php5.6-8
|
||||
environment:
|
||||
- APP_NAME=deck
|
||||
- CORE_BRANCH=stable13
|
||||
- DB=sqlite
|
||||
commands:
|
||||
- apt update && apt-get -y install php5-xdebug
|
||||
|
||||
# Pre-setup steps
|
||||
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
|
||||
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
|
||||
- cd ../server/
|
||||
- ./occ app:enable $APP_NAME
|
||||
- cd apps/$APP_NAME
|
||||
- phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
|
||||
- phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
|
||||
when:
|
||||
matrix:
|
||||
TESTS: php5.6
|
||||
php7.0:
|
||||
image: nextcloudci/php7.0:php7.0-17
|
||||
environment:
|
||||
- APP_NAME=deck
|
||||
- CORE_BRANCH=master
|
||||
- DB=sqlite
|
||||
commands:
|
||||
# Pre-setup steps
|
||||
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
|
||||
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
|
||||
- cd ../server/
|
||||
- php occ app:enable deck
|
||||
- cd apps/$APP_NAME
|
||||
# Run phpunit tests
|
||||
- phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
|
||||
- phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
|
||||
when:
|
||||
matrix:
|
||||
TESTS: php7.0
|
||||
php7.1:
|
||||
image: nextcloudci/php7.1:php7.1-15
|
||||
environment:
|
||||
- APP_NAME=deck
|
||||
- CORE_BRANCH=master
|
||||
- DB=sqlite
|
||||
commands:
|
||||
# Pre-setup steps
|
||||
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
|
||||
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
|
||||
- cd ../server/
|
||||
- php occ app:enable deck
|
||||
- cd apps/$APP_NAME
|
||||
- phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
|
||||
- phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
|
||||
when:
|
||||
matrix:
|
||||
TESTS: php7.1
|
||||
php7.2:
|
||||
image: nextcloudci/php7.2:php7.2-9
|
||||
environment:
|
||||
- APP_NAME=deck
|
||||
- CORE_BRANCH=master
|
||||
- DB=sqlite
|
||||
commands:
|
||||
# Pre-setup steps
|
||||
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
|
||||
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
|
||||
- cd ../server/
|
||||
- php occ app:enable deck
|
||||
- cd apps/$APP_NAME
|
||||
- phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
|
||||
- phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
|
||||
when:
|
||||
matrix:
|
||||
TESTS: php7.2
|
||||
integration:
|
||||
image: nextcloudci/integration-php7.0:integration-php7.0-6
|
||||
environment:
|
||||
- APP_NAME=deck
|
||||
- CORE_BRANCH=master
|
||||
- DB=sqlite
|
||||
commands:
|
||||
# Pre-setup steps
|
||||
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
|
||||
- bash ./before_install.sh $APP_NAME $CORE_BRANCH $DB
|
||||
- cd ../server/
|
||||
- php occ app:enable deck
|
||||
- cd apps/$APP_NAME
|
||||
- cd tests/integration
|
||||
- ./run.sh
|
||||
when:
|
||||
matrix:
|
||||
TESTS: integration
|
||||
eslint:
|
||||
image: nextcloudci/eslint:eslint-1
|
||||
commands:
|
||||
- ./run-eslint.sh
|
||||
when:
|
||||
matrix:
|
||||
TESTS: eslint
|
||||
jsbuild:
|
||||
image: mhart/alpine-node:6.8.0
|
||||
commands:
|
||||
- apk add --no-cache git
|
||||
- cd js
|
||||
- npm install --deps
|
||||
- ./node_modules/.bin/bower --allow-root install
|
||||
when:
|
||||
matrix:
|
||||
TESTS: jsbuild
|
||||
matrix:
|
||||
include:
|
||||
- TESTS: check-app-compatbility
|
||||
- TESTS: signed-off-check
|
||||
- TESTS: syntax-php5.6
|
||||
- TESTS: syntax-php7.0
|
||||
- TESTS: syntax-php7.1
|
||||
- TESTS: syntax-php7.2
|
||||
- TESTS: php5.6
|
||||
- TESTS: php7.0
|
||||
- TESTS: php7.1
|
||||
- TESTS: php7.2
|
||||
- TESTS: eslint
|
||||
- TESTS: jsbuild
|
||||
#- TESTS: integration
|
||||
|
||||
branches: [ master, stable* ]
|
||||
|
||||
|
||||
8
.eslintignore
Normal file
8
.eslintignore
Normal file
@@ -0,0 +1,8 @@
|
||||
/js/tests/*
|
||||
/js/vendor/*
|
||||
/js/node_modules/*
|
||||
/js/public/*
|
||||
/karma.conf.js
|
||||
/tests/*
|
||||
/l10n/*
|
||||
|
||||
37
.eslintrc.yml
Normal file
37
.eslintrc.yml
Normal file
@@ -0,0 +1,37 @@
|
||||
root: true
|
||||
|
||||
|
||||
extends:
|
||||
- eslint:recommended
|
||||
|
||||
env:
|
||||
browser: true
|
||||
amd: true
|
||||
|
||||
globals:
|
||||
app: false
|
||||
angular: false
|
||||
$: false
|
||||
escapeHTML: false
|
||||
OC: false
|
||||
OCA: false
|
||||
t: false
|
||||
oc_current_user: false
|
||||
oc_requesttoken: false
|
||||
Clipboard: false
|
||||
oc_defaults: false
|
||||
|
||||
rules:
|
||||
curly: error
|
||||
eqeqeq: ["error", "smart"]
|
||||
guard-for-in: error
|
||||
no-console: off
|
||||
no-fallthrough: error
|
||||
no-mixed-spaces-and-tabs: error
|
||||
no-unused-vars: warn
|
||||
no-use-before-define: error
|
||||
semi: ["error", "always"]
|
||||
indent:
|
||||
- error
|
||||
- tab
|
||||
- SwitchCase: 1
|
||||
7
.gitignore
vendored
7
.gitignore
vendored
@@ -1,3 +1,10 @@
|
||||
js/node_modules/*
|
||||
js/vendor/
|
||||
js/public/
|
||||
js/package-lock.json
|
||||
build/
|
||||
css/style.css
|
||||
tests/integration/vendor/
|
||||
tests/integration/composer.lock
|
||||
vendor/
|
||||
*.lock
|
||||
|
||||
32
.travis.yml
32
.travis.yml
@@ -2,35 +2,35 @@ language: php
|
||||
services:
|
||||
- mysql
|
||||
php:
|
||||
- 5.6
|
||||
- 7
|
||||
- 7.0
|
||||
- 7.1
|
||||
- 7.2
|
||||
env:
|
||||
matrix:
|
||||
- CORE_BRANCH=master DB=sqlite
|
||||
- CORE_BRANCH=master DB=mysql
|
||||
- CORE_BRANCH=stable11 DB=sqlite
|
||||
- CORE_BRANCH=stable11 DB=mysql
|
||||
- CORE_BRANCH=master DB=mysql
|
||||
|
||||
before_install:
|
||||
- wget https://phar.phpunit.de/phpunit-5.7.phar
|
||||
- chmod +x phpunit-5.7.phar
|
||||
- mkdir bin
|
||||
- mv phpunit-5.7.phar bin/phpunit
|
||||
- export PATH="$PWD/bin:$PATH"
|
||||
- phpunit --version
|
||||
- wget https://raw.githubusercontent.com/nextcloud/travis_ci/master/before_install.sh
|
||||
- bash ./before_install.sh deck $CORE_BRANCH $DB
|
||||
- cd ../server
|
||||
- ./occ app:enable deck
|
||||
- ./occ app:check-code deck
|
||||
- php -S localhost:8080 &
|
||||
|
||||
before_script:
|
||||
- cd apps/deck
|
||||
- make install-deps
|
||||
|
||||
script:
|
||||
- node --version
|
||||
- npm --version
|
||||
- make build-js
|
||||
- make test
|
||||
- make test-unit
|
||||
|
||||
after_success:
|
||||
- bash <(curl -s https://codecov.io/bash)
|
||||
|
||||
after_failure:
|
||||
- cat ../../data/nextcloud.log
|
||||
|
||||
after_success:
|
||||
- bash <(curl -s https://codecov.io/bash)
|
||||
notifications:
|
||||
email: false
|
||||
|
||||
9
.tx/config
Normal file
9
.tx/config
Normal file
@@ -0,0 +1,9 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
lang_map = bg_BG: bg, cs_CZ: cs, fi_FI: fi, hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja
|
||||
|
||||
[nextcloud.deck]
|
||||
file_filter = translationfiles/<lang>/deck.po
|
||||
source_file = translationfiles/templates/deck.pot
|
||||
source_lang = en
|
||||
type = PO
|
||||
144
CHANGELOG.md
144
CHANGELOG.md
@@ -1,4 +1,148 @@
|
||||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## 0.3.0 - 2018-01-12
|
||||
|
||||
### Added
|
||||
- Allow to assign users to cards
|
||||
- Emit notifications for overdue cards
|
||||
- Emit notifications if boards gets shared to a user
|
||||
- Add support for Nextcloud 13
|
||||
- Simplify layout for cleaner user experience
|
||||
- Add contacts menu to avatars
|
||||
- Automatically save card description on inactivity
|
||||
|
||||
|
||||
### Fixed
|
||||
- Fix card dragging behaviour
|
||||
- Fix scrolling and dragging on mobile
|
||||
- Various fixes when data is not syncronized between different views
|
||||
- Improved performance
|
||||
- Update document title when renaming a board
|
||||
- Automatically chose the least used color
|
||||
- Improve accessibility
|
||||
- Fix issue when assigning labels after creating them
|
||||
- Allow to save tag changes with enter
|
||||
- Fix bug when removing labels changed the color of the remaining ones
|
||||
- Fix issues with auto saving of card descriptions
|
||||
|
||||
|
||||
## 0.2.8 - 2017-11-26
|
||||
|
||||
### Fixed
|
||||
- Drop support for NC 13, since that will only be supported by the next version of Deck
|
||||
|
||||
## 0.2.7 - 2017-11-10
|
||||
|
||||
### Fixed
|
||||
- Fix bug that caused update to fail
|
||||
|
||||
## 0.2.6 - 2017-11-10
|
||||
|
||||
### Fixed
|
||||
- Fix duedates not being updated with MySQL databases
|
||||
|
||||
## 0.2.5 - 2017-11-08
|
||||
|
||||
### Fixed
|
||||
- Fix duedates not being saved with MySQL databases
|
||||
|
||||
## 0.2.4 - 2017-10-08
|
||||
|
||||
### Fixed
|
||||
- Fix card action menu not being accessible
|
||||
|
||||
## 0.2.3 - 2017-09-23
|
||||
|
||||
### Fixed
|
||||
- Fix delete stack button being not available
|
||||
- Fix acl issues with PostgreSQL
|
||||
|
||||
## 0.2.2 - 2017-09-07
|
||||
|
||||
### Fixed
|
||||
- Various frontend fixes
|
||||
- Fix sidebar drag issues
|
||||
- Improvements for IE11
|
||||
- Fix bug when draging a card to an empty stack
|
||||
|
||||
## 0.2.1 - 2017-07-04
|
||||
|
||||
### Added
|
||||
- Editing board details in board list
|
||||
- Due date on mouse over
|
||||
|
||||
### Changed
|
||||
- Polished label editor
|
||||
- Polished sidebar
|
||||
- UI improvements in board view
|
||||
- Moved to SCSS
|
||||
|
||||
### Fixed
|
||||
- Fix opacity of last entry in board list
|
||||
|
||||
## 0.2.0 - 2017-06-20
|
||||
|
||||
### Added
|
||||
- Due dates for cards
|
||||
- Archive boards
|
||||
- Filter board list for archived/shared boards
|
||||
- Rearange stack order
|
||||
- Improved card overview with description indicator
|
||||
- Navigation sidebar visibility can be toggled
|
||||
|
||||
### Fixed
|
||||
- Undo on delete for boards
|
||||
- Various fixes for mobile devices
|
||||
- UI improvements to fit the Nextcloud design
|
||||
|
||||
## 0.1.4 - 2017-05-04
|
||||
|
||||
### Fixed
|
||||
- Avoid red shadow on input in firefox
|
||||
- Fix broken delete function for boards
|
||||
- Fix broken board loading when groups were used for sharing
|
||||
- Fix bug when users/groups got deleted
|
||||
|
||||
## 0.1.3 - 2017-05-01
|
||||
|
||||
### Added
|
||||
- Icon to show if a card has a description
|
||||
|
||||
### Changed
|
||||
- Use OCS API to get users/groups for sharing
|
||||
- Various UI improvements
|
||||
- Show display name instead of uid
|
||||
- Fix bugs with limited field length
|
||||
- Automatically hide sidebar when clicking the board view
|
||||
- Start editing from everywhere in the description section
|
||||
|
||||
|
||||
## 0.1.2
|
||||
|
||||
### Added
|
||||
- Add translations
|
||||
|
||||
### Fixed
|
||||
- Fix issues with Acl checks
|
||||
- Always select first color fixes
|
||||
- Add active class to appmenu
|
||||
- Use server select2 styles
|
||||
- Remove debug logging and unused function
|
||||
- Fix issue while sorting cards
|
||||
- Improve logging of exceptions
|
||||
- Fixed SQL statements without prefixes
|
||||
|
||||
## 0.1.1
|
||||
|
||||
### Fixed
|
||||
- Various styling improvements
|
||||
- Fix problems with MySQL and PostgreSQL
|
||||
- Select first color by default when creating boards
|
||||
- Fix error when changing board permissions
|
||||
|
||||
## 0.1.0
|
||||
|
||||
### Added
|
||||
- Sharing boards with other users
|
||||
- Create and manage boards
|
||||
|
||||
25
Makefile
25
Makefile
@@ -23,15 +23,15 @@ clean-dist:
|
||||
|
||||
install-deps:
|
||||
cd js && npm install --deps
|
||||
cd js && bower install
|
||||
cd js && ./node_modules/.bin/bower install
|
||||
|
||||
build: build-js
|
||||
|
||||
build-js:
|
||||
$(MAKE) -C js build
|
||||
build-js: install-deps
|
||||
cd js && ./node_modules/.bin/grunt build
|
||||
|
||||
watch:
|
||||
$(make) -C js watch
|
||||
cd js && ./node_modules/.bin/grunt watch
|
||||
|
||||
# appstore: clean install-deps
|
||||
appstore: clean-build build
|
||||
@@ -48,6 +48,7 @@ appstore: clean-build build
|
||||
--exclude="../$(app_name)/js/tests" \
|
||||
--exclude="../$(app_name)/js/test" \
|
||||
--exclude="../$(app_name)/js/*.log" \
|
||||
--exclude="../$(app_name)/js/package-lock.json" \
|
||||
--exclude="../$(app_name)/js/package.json" \
|
||||
--exclude="../$(app_name)/js/bower.json" \
|
||||
--exclude="../$(app_name)/js/karma.*" \
|
||||
@@ -57,7 +58,10 @@ appstore: clean-build build
|
||||
--exclude="../$(app_name)/karma.*" \
|
||||
--exclude="../$(app_name)/protractor\.*" \
|
||||
--exclude="../$(app_name)/.*" \
|
||||
--exclude="../$(app_name)/*.lock" \
|
||||
--exclude="../$(app_name)/run-eslint.sh" \
|
||||
--exclude="../$(app_name)/js/.*" \
|
||||
--exclude="../$(app_name)/vendor" \
|
||||
--exclude-vcs \
|
||||
../$(app_name)
|
||||
|
||||
@@ -69,17 +73,24 @@ appstore: clean-build build
|
||||
|
||||
echo $(appstore_package_name).tar.gz
|
||||
|
||||
test: test-unit test-integration
|
||||
|
||||
test:
|
||||
test-unit:
|
||||
mkdir -p build/
|
||||
cd js && $(npm) run test
|
||||
ifeq (, $(shell which phpunit 2> /dev/null))
|
||||
@echo "No phpunit command available, downloading a copy from the web"
|
||||
mkdir -p $(build_tools_directory)
|
||||
curl -sSL https://phar.phpunit.de/phpunit.phar -o $(build_tools_directory)/phpunit.phar
|
||||
curl -sSL https://phar.phpunit.de/phpunit-5.7.phar -o $(build_tools_directory)/phpunit.phar
|
||||
php $(build_tools_directory)/phpunit.phar -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
|
||||
php $(build_tools_directory)/phpunit.phar -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
|
||||
else
|
||||
phpunit -c tests/phpunit.xml --coverage-clover build/php-unit.coverage.xml
|
||||
phpunit -c tests/phpunit.integration.xml --coverage-clover build/php-integration.coverage.xml
|
||||
endif
|
||||
|
||||
test-integration:
|
||||
cd tests/integration && ./run.sh
|
||||
|
||||
test-js: install-deps
|
||||
cd js && run test
|
||||
|
||||
|
||||
64
README.md
64
README.md
@@ -1,6 +1,7 @@
|
||||
# Deck
|
||||
|
||||
[](https://travis-ci.org/juliushaertl/deck) [](https://codecov.io/github/juliushaertl/deck) [](https://scrutinizer-ci.com/g/juliushaertl/deck/?branch=master) [](https://www.versioneye.com/user/projects/58908fc0a23e810038c34e0a)
|
||||
[](https://travis-ci.org/nextcloud/deck) [](https://codecov.io/github/nextcloud/deck) [](https://scrutinizer-ci.com/g/nextcloud/deck/?branch=master) [](https://www.versioneye.com/user/projects/58ad558f4ca76f004ed475b3) [](https://webchat.freenode.net/?channels=nextcloud-deck)
|
||||
|
||||
|
||||
Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.
|
||||
|
||||
@@ -11,9 +12,7 @@ Deck is a kanban style organization tool aimed at personal planning and project
|
||||
- :rocket: Get your project organized
|
||||
|
||||
|
||||

|
||||
|
||||
:boom: This is still alpha software: it may not be stable enough for production
|
||||

|
||||
|
||||
### Planned features
|
||||
|
||||
@@ -29,14 +28,14 @@ This app is supposed to work on Nextcloud version 11 or later.
|
||||
|
||||
### Install latest release
|
||||
|
||||
Grab the latest release over here, extract it to your Nextcloud apps folder and enable the app.
|
||||
You can download and install the latest release from the [Nextcloud app store](https://apps.nextcloud.com/apps/deck)
|
||||
|
||||
### Install from git
|
||||
### Install from git
|
||||
|
||||
If you want to run the latest development version from git source, you need to clone the repo to your apps folder:
|
||||
|
||||
```
|
||||
git clone https://github.com/juliushaertl/deck.git
|
||||
git clone https://github.com/nextcloud/deck.git
|
||||
cd deck
|
||||
make install-deps
|
||||
make
|
||||
@@ -44,6 +43,10 @@ make
|
||||
|
||||
Please make sure you have installed the following dependencies: `make, which, tar, npm, curl`
|
||||
|
||||
### Install the nightly builds
|
||||
|
||||
Instead of setting everything up manually, you can just [download the nightly builds](https://download.bitgrid.net/nextcloud/deck/nightly/) instead. These builds are updated every 24 hours, and are pre-configured with all the needed dependencies.
|
||||
|
||||
## Developing
|
||||
|
||||
### PHP
|
||||
@@ -52,9 +55,54 @@ Nothing to prepare, just dig into the code.
|
||||
|
||||
### JavaScript
|
||||
|
||||
Make sure you have installed the dependencies with ```make install-deps```. After that you can run ```make``` to build the javascript code once or run ```make watch``` to run in on every file change.
|
||||
When `'debug'=>true` is set in your config.php files will get loaded automatically. Otherwise you need to ensure that `public/app.js` is generated by running `make` or `make watch` to regenerate it on every change.
|
||||
Make sure you have installed the dependencies with ```make install-deps```.
|
||||
|
||||
### Running tests
|
||||
You can use the provided Makefile to run all tests by using:
|
||||
|
||||
make test
|
||||
|
||||
|
||||
|
||||
## Contribution Guidelines
|
||||
|
||||
Please read the [Code of Conduct](https://nextcloud.com/community/code-of-conduct/). This document offers some guidance to ensure Nextcloud participants can cooperate effectively in a positive and inspiring atmosphere, and to explain how together we can strengthen and support each other.
|
||||
|
||||
For more information please review the [guidelines for contributing](https://github.com/nextcloud/server/blob/master/CONTRIBUTING.md) to this repository.
|
||||
|
||||
### Apply a license
|
||||
|
||||
All contributions to this repository are considered to be licensed under
|
||||
the GNU AGPLv3 or any later version.
|
||||
|
||||
Contributors to the Deck app retain their copyright. Therefore we recommend
|
||||
to add following line to the header of a file, if you changed it substantially:
|
||||
|
||||
```
|
||||
@copyright Copyright (c) <year>, <your name> (<your email address>)
|
||||
```
|
||||
|
||||
For further information on how to add or update the license header correctly please have a look at [our licensing HowTo][applyalicense].
|
||||
|
||||
### Sign your work
|
||||
|
||||
We use the Developer Certificate of Origin (DCO) as a additional safeguard
|
||||
for the Nextcloud project. This is a well established and widely used
|
||||
mechanism to assure contributors have confirmed their right to license
|
||||
their contribution under the project's license.
|
||||
Please read [developer-certificate-of-origin][dcofile].
|
||||
If you can certify it, then just add a line to every git commit message:
|
||||
|
||||
````
|
||||
Signed-off-by: Random J Developer <random@developer.example.org>
|
||||
````
|
||||
|
||||
Use your real name (sorry, no pseudonyms or anonymous contributions).
|
||||
If you set your `user.name` and `user.email` git configs, you can sign your
|
||||
commit automatically with `git commit -s`. You can also use git [aliases](https://git-scm.com/book/tr/v2/Git-Basics-Git-Aliases)
|
||||
like `git config --global alias.ci 'commit -s'`. Now you can commit with
|
||||
`git ci` and the commit will be signed.
|
||||
|
||||
[dcofile]: https://github.com/nextcloud/server/blob/master/contribute/developer-certificate-of-origin
|
||||
[applyalicense]: https://github.com/nextcloud/server/blob/master/contribute/HowToApplyALicense.md
|
||||
|
||||
2
_config.yml
Normal file
2
_config.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
theme: jekyll-theme-cayman
|
||||
site: https://deck-app.com
|
||||
@@ -23,3 +23,4 @@
|
||||
|
||||
$app = new \OCA\Deck\AppInfo\Application();
|
||||
$app->registerNavigationEntry();
|
||||
$app->registerNotifications();
|
||||
@@ -19,7 +19,7 @@
|
||||
<name>title</name>
|
||||
<type>text</type>
|
||||
<notnull>true</notnull>
|
||||
<length>64</length>
|
||||
<length>100</length>
|
||||
</field>
|
||||
<field>
|
||||
<name>owner</name>
|
||||
@@ -38,6 +38,14 @@
|
||||
<type>boolean</type>
|
||||
<default>false</default>
|
||||
</field>
|
||||
<field>
|
||||
<name>deleted_at</name>
|
||||
<type>integer</type>
|
||||
<default>0</default>
|
||||
<length>8</length>
|
||||
<notnull>false</notnull>
|
||||
<unsigned>true</unsigned>
|
||||
</field>
|
||||
</declaration>
|
||||
</table>
|
||||
<table>
|
||||
@@ -55,7 +63,7 @@
|
||||
<name>title</name>
|
||||
<type>text</type>
|
||||
<notnull>true</notnull>
|
||||
<length>64</length>
|
||||
<length>100</length>
|
||||
</field>
|
||||
<field>
|
||||
<name>board_id</name>
|
||||
@@ -97,14 +105,13 @@
|
||||
<field>
|
||||
<name>title</name>
|
||||
<type>text</type>
|
||||
<length>100</length>
|
||||
<notnull>true</notnull>
|
||||
<length>64</length>
|
||||
</field>
|
||||
<field>
|
||||
<name>description</name>
|
||||
<type>text</type>
|
||||
<type>clob</type>
|
||||
<notnull>false</notnull>
|
||||
<length>4096</length>
|
||||
</field>
|
||||
<field>
|
||||
<name>stack_id</name>
|
||||
@@ -123,7 +130,6 @@
|
||||
<name>last_modified</name>
|
||||
<type>integer</type>
|
||||
<default></default>
|
||||
<length>8</length>
|
||||
<notnull>false</notnull>
|
||||
<unsigned>true</unsigned>
|
||||
</field>
|
||||
@@ -131,7 +137,6 @@
|
||||
<name>created_at</name>
|
||||
<type>integer</type>
|
||||
<default></default>
|
||||
<length>8</length>
|
||||
<notnull>false</notnull>
|
||||
<unsigned>true</unsigned>
|
||||
</field>
|
||||
@@ -152,6 +157,16 @@
|
||||
<type>boolean</type>
|
||||
<default>false</default>
|
||||
</field>
|
||||
<field>
|
||||
<name>duedate</name>
|
||||
<type>timestamp</type>
|
||||
<default>0</default>
|
||||
</field>
|
||||
<field>
|
||||
<name>notified</name>
|
||||
<type>boolean</type>
|
||||
<default>false</default>
|
||||
</field>
|
||||
<index>
|
||||
<name>deck_cards_stack_id_index</name>
|
||||
<field>
|
||||
@@ -187,7 +202,7 @@
|
||||
<name>title</name>
|
||||
<type>text</type>
|
||||
<notnull>true</notnull>
|
||||
<length>64</length>
|
||||
<length>100</length>
|
||||
</field>
|
||||
<field>
|
||||
<name>card_id</name>
|
||||
@@ -239,7 +254,7 @@
|
||||
<name>title</name>
|
||||
<type>text</type>
|
||||
<notnull>false</notnull>
|
||||
<length>64</length>
|
||||
<length>100</length>
|
||||
</field>
|
||||
<field>
|
||||
<name>color</name>
|
||||
@@ -288,13 +303,51 @@
|
||||
<length>4</length>
|
||||
</field>
|
||||
<index>
|
||||
<name>deck_assigned_labels_label_id_index</name>
|
||||
<name>deck_assigned_labels_idx_i</name>
|
||||
<field>
|
||||
<name>label_id</name>
|
||||
</field>
|
||||
</index>
|
||||
<index>
|
||||
<name>deck_assigned_labels_card_id_index</name>
|
||||
<name>deck_assigned_labels_idx_c</name>
|
||||
<field>
|
||||
<name>card_id</name>
|
||||
</field>
|
||||
</index>
|
||||
</declaration>
|
||||
</table>
|
||||
<table>
|
||||
<name>*dbprefix*deck_assigned_users</name>
|
||||
<declaration>
|
||||
<field>
|
||||
<name>id</name>
|
||||
<type>integer</type>
|
||||
<default>0</default>
|
||||
<notnull>true</notnull>
|
||||
<autoincrement>1</autoincrement>
|
||||
<length>4</length>
|
||||
</field>
|
||||
<field>
|
||||
<name>participant</name>
|
||||
<type>text</type>
|
||||
<notnull>true</notnull>
|
||||
<length>64</length>
|
||||
</field>
|
||||
<field>
|
||||
<name>card_id</name>
|
||||
<type>integer</type>
|
||||
<default>0</default>
|
||||
<notnull>true</notnull>
|
||||
<length>4</length>
|
||||
</field>
|
||||
<index>
|
||||
<name>deck_assigned_users_idx_p</name>
|
||||
<field>
|
||||
<name>participant</name>
|
||||
</field>
|
||||
</index>
|
||||
<index>
|
||||
<name>deck_assigned_users_idx_c</name>
|
||||
<field>
|
||||
<name>card_id</name>
|
||||
</field>
|
||||
@@ -346,6 +399,7 @@
|
||||
<default>false</default>
|
||||
</field>
|
||||
<index>
|
||||
<name>deck_board_acl_uq_i</name>
|
||||
<unique>true</unique>
|
||||
<field>
|
||||
<name>board_id</name>
|
||||
@@ -361,7 +415,7 @@
|
||||
</field>
|
||||
</index>
|
||||
<index>
|
||||
<name>deck_board_acl_board_id_index</name>
|
||||
<name>deck_board_acl_idx_i</name>
|
||||
<field>
|
||||
<name>board_id</name>
|
||||
</field>
|
||||
|
||||
@@ -7,25 +7,34 @@
|
||||
<description>Deck is a kanban style organization tool aimed at personal planning and project organization for teams integrated with Nextcloud.
|
||||
|
||||
|
||||
- :inbox_tray: Add your tasks to cards and put them in order
|
||||
- :page_facing_up: Write down additional notes in markdown
|
||||
- :bookmark: Assign labels for even better organization
|
||||
- :busts_in_silhouette: Share with your team, friends or family
|
||||
- :rocket: Get your project organized
|
||||
|
||||
:boom: This is still alpha software: it may not be stable enough for production!
|
||||
- 📥 Add your tasks to cards and put them in order
|
||||
- 📄 Write down additional notes in markdown
|
||||
- 🔖 Assign labels for even better organization
|
||||
- 👥 Share with your team, friends or family
|
||||
- 🚀 Get your project organized
|
||||
|
||||
</description>
|
||||
<version>0.4.0-alpha1</version>
|
||||
<licence>agpl</licence>
|
||||
<author>Julius Härtl</author>
|
||||
<version>0.1.0</version>
|
||||
<namespace>Deck</namespace>
|
||||
<category>organization</category>
|
||||
<category>office</category>
|
||||
<website>https://github.com/nextcloud/deck</website>
|
||||
<bugs>https://github.com/nextcloud/deck/issues</bugs>
|
||||
<repository type="git">https://github.com/nextcloud/deck.git</repository>
|
||||
<screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/Deck_Board.png</screenshot>
|
||||
<screenshot>https://download.bitgrid.net/nextcloud/deck/screenshots/Deck_Details.png</screenshot>
|
||||
<dependencies>
|
||||
<nextcloud min-version="11" max-version="12" />
|
||||
<nextcloud min-version="12" max-version="14" />
|
||||
</dependencies>
|
||||
<repository type="git">https://github.com/juliushaertl/deck.git</repository>
|
||||
<bugs>https://github.com/juliushaertl/deck/issues</bugs>
|
||||
<screenshot>https://bitgrid.net/~jus/deck.png</screenshot>
|
||||
<background-jobs>
|
||||
<job>OCA\Deck\Cron\DeleteCron</job>
|
||||
<job>OCA\Deck\Cron\ScheduledNotifications</job>
|
||||
</background-jobs>
|
||||
<repair-steps>
|
||||
<post-migration>
|
||||
<step>OCA\Deck\Migration\UnknownUsers</step>
|
||||
</post-migration>
|
||||
</repair-steps>
|
||||
</info>
|
||||
|
||||
@@ -25,15 +25,13 @@ return [
|
||||
'routes' => [
|
||||
['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
|
||||
|
||||
// share
|
||||
['name' => 'share#searchUser', 'url' => '/share/search/{search}', 'verb' => 'GET'],
|
||||
|
||||
// boards
|
||||
['name' => 'board#index', 'url' => '/boards', 'verb' => 'GET'],
|
||||
['name' => 'board#create', 'url' => '/boards', 'verb' => 'POST'],
|
||||
['name' => 'board#read', 'url' => '/boards/{boardId}', 'verb' => 'GET'],
|
||||
['name' => 'board#update', 'url' => '/boards/{boardId}', 'verb' => 'PUT'],
|
||||
['name' => 'board#delete', 'url' => '/boards/{boardId}', 'verb' => 'DELETE'],
|
||||
['name' => 'board#deleteUndo', 'url' => '/boards/{boardId}/deleteUndo', 'verb' => 'POST'],
|
||||
['name' => 'board#getUserPermissions', 'url' => '/boards/{boardId}/permissions', 'verb' => 'GET'],
|
||||
['name' => 'board#addAcl', 'url' => '/boards/{boardId}/acl', 'verb' => 'POST'],
|
||||
['name' => 'board#updateAcl', 'url' => '/boards/{boardId}/acl', 'verb' => 'PUT'],
|
||||
@@ -43,6 +41,7 @@ return [
|
||||
['name' => 'stack#index', 'url' => '/stacks/{boardId}', 'verb' => 'GET'],
|
||||
['name' => 'stack#create', 'url' => '/stacks', 'verb' => 'POST'],
|
||||
['name' => 'stack#update', 'url' => '/stacks/{stackId}', 'verb' => 'PUT'],
|
||||
['name' => 'stack#reorder', 'url' => '/stacks/{stackId}/reorder', 'verb' => 'PUT'],
|
||||
['name' => 'stack#delete', 'url' => '/stacks/{stackId}', 'verb' => 'DELETE'],
|
||||
['name' => 'stack#archived', 'url' => '/stacks/{boardId}/archived', 'verb' => 'GET'],
|
||||
|
||||
@@ -57,6 +56,8 @@ return [
|
||||
['name' => 'card#unarchive', 'url' => '/cards/{cardId}/unarchive', 'verb' => 'PUT'],
|
||||
['name' => 'card#assignLabel', 'url' => '/cards/{cardId}/label/{labelId}', 'verb' => 'POST'],
|
||||
['name' => 'card#removeLabel', 'url' => '/cards/{cardId}/label/{labelId}', 'verb' => 'DELETE'],
|
||||
['name' => 'card#assignUser', 'url' => '/cards/{cardId}/assign', 'verb' => 'POST'],
|
||||
['name' => 'card#unassignUser', 'url' => '/cards/{cardId}/assign/{userId}', 'verb' => 'DELETE'],
|
||||
|
||||
// labels
|
||||
['name' => 'label#create', 'url' => '/labels', 'verb' => 'POST'],
|
||||
|
||||
16
composer.json
Normal file
16
composer.json
Normal file
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"name": "nextcloud/deck",
|
||||
"type": "project",
|
||||
"license": "AGPLv3",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Julius Härtl",
|
||||
"email": "jus@bitgrid.net"
|
||||
}
|
||||
],
|
||||
"require": {},
|
||||
"require-dev": {
|
||||
"christophwurst/nextcloud": "^12.0",
|
||||
"jakub-onderka/php-parallel-lint": "^0.9.2"
|
||||
}
|
||||
}
|
||||
113
css/comp-appnav.scss
Normal file
113
css/comp-appnav.scss
Normal file
@@ -0,0 +1,113 @@
|
||||
/*
|
||||
* @copyright Copyright (c) 2017 Julius Härtl <jus@bitgrid.net>
|
||||
* @copyright Copyright (c) 2016, John Molakvoæ <skjnldsv@protonmail.com>
|
||||
*
|
||||
* @author Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/**
|
||||
* Hotfix for support <NC13 with new app sidebar
|
||||
*/
|
||||
#app-navigation {
|
||||
.app-navigation-entry-menu.open {
|
||||
ul li a {
|
||||
background-position: 10px center;
|
||||
padding: 0 10px 0 36px !important;
|
||||
}
|
||||
}
|
||||
.app-navigation-entry-edit {
|
||||
display: none;
|
||||
}
|
||||
.editing {
|
||||
.app-navigation-entry-edit {
|
||||
display: block;
|
||||
position: absolute;
|
||||
background: $color-main-background;
|
||||
height: auto;
|
||||
z-index: 250;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* copied styles from core/css/styles.scss
|
||||
* to have the same breadcrumb styling in NC12
|
||||
*/
|
||||
.breadcrumb {
|
||||
display: inline-flex;
|
||||
}
|
||||
div.crumb {
|
||||
display: inline-flex;
|
||||
background-repeat: no-repeat;
|
||||
background-position: right center;
|
||||
height: 44px;
|
||||
background-size: auto 24px;
|
||||
flex: 0 0 auto;
|
||||
order: 1;
|
||||
padding-right: 7px;
|
||||
&.crumbmenu {
|
||||
order: 2;
|
||||
position: relative;
|
||||
a {
|
||||
opacity: 0.5
|
||||
}
|
||||
}
|
||||
&.hidden {
|
||||
display: none;
|
||||
~ .crumb {
|
||||
order: 3;
|
||||
}
|
||||
}
|
||||
> a,
|
||||
> span {
|
||||
position: relative;
|
||||
padding: 12px;
|
||||
opacity: 0.5;
|
||||
top: 0 !important;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
flex: 0 0 auto;
|
||||
&.icon-home {
|
||||
// Hide home text
|
||||
text-indent: -9999px;
|
||||
}
|
||||
}
|
||||
> a[class^='icon-'] {
|
||||
padding: 0;
|
||||
width: 44px;
|
||||
}
|
||||
&:not(:first-child) a {
|
||||
}
|
||||
&:last-child {
|
||||
font-weight: 600;
|
||||
margin-right: 10px;
|
||||
// Allow multiple span next to the main 'a'
|
||||
a ~ span {
|
||||
padding-left: 0;
|
||||
}
|
||||
}
|
||||
&:hover, &:focus, a:focus, &:active {
|
||||
> a,
|
||||
> span {
|
||||
opacity: .7;
|
||||
}
|
||||
}
|
||||
}
|
||||
42
css/icons.scss
Normal file
42
css/icons.scss
Normal file
@@ -0,0 +1,42 @@
|
||||
/**
|
||||
* Custom icons
|
||||
*/
|
||||
.icon-deck {
|
||||
background-image: url('../img/deck-dark.svg');
|
||||
}
|
||||
|
||||
.icon-group {
|
||||
background-image: url('../../../settings/img/users.svg');
|
||||
}
|
||||
|
||||
.icon-help {
|
||||
background-image: url('../../../settings/img/help.svg');
|
||||
}
|
||||
|
||||
.icon-add-white {
|
||||
background-image: url('../img/add-white.svg');
|
||||
}
|
||||
|
||||
.icon-archive {
|
||||
background-image: url('../img/archive.svg');
|
||||
}
|
||||
|
||||
.icon-archive-white {
|
||||
background-image: url('../img/archive-white.svg');
|
||||
}
|
||||
|
||||
.icon-details {
|
||||
background-image: url('../img/details.svg');
|
||||
}
|
||||
|
||||
.icon-details-white {
|
||||
background-image: url('../img/details-white.svg');
|
||||
}
|
||||
|
||||
.icon-home {
|
||||
background-image: url('../../../core/img/places/home.svg');
|
||||
}
|
||||
|
||||
.icon-badge {
|
||||
background-image: url('../../../core/img/places/calendar-dark.svg');
|
||||
}
|
||||
918
css/style.css
918
css/style.css
@@ -1,918 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @author Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#searchbox {
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
.app-navigation-entry-utils-menu-button {
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
.app-navigation-entry-utils-menu-share {
|
||||
display: block !important;
|
||||
text-align: right;
|
||||
padding-top: 3px;
|
||||
padding-right: 5px;
|
||||
opacity: 0.4;
|
||||
}
|
||||
|
||||
#app-navigation .app-navigation-entry-edit {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
#app-navigation .active,
|
||||
#app-navigation .active a,
|
||||
#app-navigation li:hover > a,
|
||||
#app-navigation li:focus > a,
|
||||
#app-navigation a:focus,
|
||||
#app-navigation .selected,
|
||||
#app-navigation .selected a {
|
||||
background-color: #fafafa;
|
||||
}
|
||||
|
||||
#app-navigation .board-bullet {
|
||||
position: absolute;
|
||||
margin-left: 17px;
|
||||
margin-top: 16px;
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border: none;
|
||||
border-radius: 50%;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#app-view {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
white-space: nowrap;
|
||||
overflow: none;
|
||||
padding: 0;
|
||||
z-index: 100;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#board-status {
|
||||
position: absolute;
|
||||
z-index: 999;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
#board {
|
||||
position: relative;
|
||||
height: 100%;
|
||||
white-space: nowrap; /* important */
|
||||
overflow: auto;
|
||||
padding: 0;
|
||||
top: -40px;
|
||||
padding-top: 40px;
|
||||
z-index: 100;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#board #innerBoard {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#board-header {
|
||||
width: inherit;
|
||||
color: #333333;
|
||||
position: relative;
|
||||
z-index: 120;
|
||||
height: 44px;
|
||||
background-color: #eee;
|
||||
}
|
||||
|
||||
#board-header h1 {
|
||||
font-size: 14pt;
|
||||
margin: 0;
|
||||
padding: 12px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
#board-actions {
|
||||
font-size: 10pt;
|
||||
float: right;
|
||||
position: relative;
|
||||
color: #888;
|
||||
margin:8px;
|
||||
|
||||
}
|
||||
|
||||
#board-actions .filter .filter-button {
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
#board-actions .filter:hover {
|
||||
color: #333333;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.filter {
|
||||
}
|
||||
|
||||
.filter-select {
|
||||
position: absolute;
|
||||
right: auto;
|
||||
top: 42px;
|
||||
left: -21%;
|
||||
}
|
||||
|
||||
.filter-select li {
|
||||
padding: 3px;
|
||||
overflow: hidden;
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.filter-select li span {
|
||||
display: block;
|
||||
float: left;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
margin-right: 5px;
|
||||
}
|
||||
|
||||
#board-actions div {
|
||||
padding: 5px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.board-actions button {
|
||||
border: none;
|
||||
background-color: transparent;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.board-action-button {
|
||||
font-size: 12pt;
|
||||
font-weight: 100;
|
||||
border: none;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
.stack {
|
||||
width: 320px;
|
||||
margin-right: 10px;
|
||||
vertical-align: top;
|
||||
display: inline-block !important;
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
|
||||
.stack h2 {
|
||||
padding:10px;
|
||||
padding-bottom: 8px;
|
||||
margin: 0;
|
||||
font-size: 12pt;
|
||||
font-weight: 700;
|
||||
overflow: hidden;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.stack h2 input {
|
||||
padding: 0px;
|
||||
width: 80%;
|
||||
margin: 0;
|
||||
font-size: 12pt;
|
||||
font-weight: 700;
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.stack h2 button,
|
||||
.stack .stack-actions {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.stack h2 span {
|
||||
float: left;
|
||||
}
|
||||
|
||||
.stack h2 .stack-actions {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.stack h2:hover .stack-actions {
|
||||
display: inline-block;
|
||||
float: right;
|
||||
}
|
||||
|
||||
.card {
|
||||
background-color: #ffffff;
|
||||
margin: 10px;
|
||||
white-space: normal;
|
||||
position: relative;
|
||||
opacity: 1.0;
|
||||
-webkit-box-shadow: 0px 0px 5px #bbb;
|
||||
}
|
||||
|
||||
.card.archived .card-upper {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
.card-upper {
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.card .card-options {
|
||||
position: absolute;
|
||||
bottom: 10px;
|
||||
right: 10px;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.card:hover .card-options {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.card .popovermenu {
|
||||
z-index: 999;
|
||||
opacity: 1;
|
||||
margin-left: 10px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
.card .popovermenu.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.card .card-assignees {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.card:hover {
|
||||
background-color: #fcfcfc;
|
||||
}
|
||||
|
||||
.card a {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.card h3 {
|
||||
font-weight: bold;
|
||||
font-size: 10pt;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
margin: 5px;
|
||||
display: inline-block;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.card.has-labels h3 {
|
||||
margin-top: 15px;
|
||||
}
|
||||
|
||||
.card h3 .fa {
|
||||
font-size: 18pt;
|
||||
line-height: 10pt;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.card .labels {
|
||||
position: absolute;
|
||||
top: -5px;
|
||||
left: 10px;
|
||||
|
||||
}
|
||||
|
||||
.card .labels li {
|
||||
padding: 0px;
|
||||
width: 15px;
|
||||
height: 20px;
|
||||
-webkit-border-radius: 3px;
|
||||
font-size: 80%;
|
||||
border-color: transparent;
|
||||
border: none;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.card .labels li span {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.card .labels li:hover {
|
||||
|
||||
}
|
||||
|
||||
.card .labels li:hover span {
|
||||
position: absolute;
|
||||
padding: 3px;
|
||||
background-color: inherit;
|
||||
}
|
||||
|
||||
.as-sortable-placeholder {
|
||||
margin: 10px;
|
||||
border: 1px dashed #aaa;
|
||||
}
|
||||
|
||||
.info {
|
||||
padding-left: 5px;
|
||||
padding-right: 5px;
|
||||
display: inline-block;
|
||||
color: #aaa;
|
||||
}
|
||||
|
||||
.info i {
|
||||
margin-left: 2px;
|
||||
}
|
||||
|
||||
.info span {
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
.card.create {
|
||||
text-align: center;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
padding: 10px;
|
||||
border: none;
|
||||
overflow: hidden;
|
||||
margin: 10px;
|
||||
-webkit-box-shadow: none;
|
||||
}
|
||||
|
||||
.card.create:hover {
|
||||
text-align: center;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.card.create h3 {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.card.create h3 input {
|
||||
width: 100%;
|
||||
border: 0px;
|
||||
padding: 0px;
|
||||
margin: 0px;
|
||||
font-weight: bold;
|
||||
font-size: 10pt;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border-bottom: 1px solid #ffffff;
|
||||
border-radius: 0px;
|
||||
color: #ffffff;
|
||||
background-color: transparent !important;
|
||||
}
|
||||
|
||||
.card.create .fa {
|
||||
color: #ffffff;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.card.create .fa:hover {
|
||||
opacity: 0.5;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.due {
|
||||
background-color: #eee;
|
||||
color: #aaa;
|
||||
padding: 1px;
|
||||
padding-left: 3px;
|
||||
padding-right: 3px;
|
||||
border-radius: 4px;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
#card-header {
|
||||
height: 44px;
|
||||
}
|
||||
|
||||
#card-header h2 {
|
||||
font-size: 14pt;
|
||||
padding: 10px;
|
||||
padding-bottom: 9px;
|
||||
overflow: hidden;
|
||||
margin-bottom: 0px;
|
||||
background-color: #f0f0f0;
|
||||
}
|
||||
|
||||
.icon-close {
|
||||
position: absolute;
|
||||
top: 5px;
|
||||
right: 5px;
|
||||
}
|
||||
|
||||
#card-meta {
|
||||
padding-top: 0px;
|
||||
}
|
||||
|
||||
#card-dates {
|
||||
font-size: 80%;
|
||||
color: #aaaaaa;
|
||||
margin-bottom: 3px;
|
||||
}
|
||||
|
||||
#card-meta #labels {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#card-dates span {
|
||||
}
|
||||
|
||||
#card-description > h3 {
|
||||
border-bottom: 1px solid #333333;
|
||||
font-weight: 600;
|
||||
font-size: 10pt;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.save-indicator {
|
||||
background-color: #009900;
|
||||
color: #ffffff;
|
||||
border-radius: 3px;
|
||||
float:right;
|
||||
padding:1px 10px;
|
||||
font-size: 8pt !important;
|
||||
display:none;
|
||||
}
|
||||
|
||||
#card-description textarea {
|
||||
width: 100%;
|
||||
height: 200px;
|
||||
border: none;
|
||||
margin: 0px;
|
||||
padding: 0px;
|
||||
}
|
||||
|
||||
#card-description .container {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
#card-description .container.ng-hide-remove {
|
||||
animation: fade 1s forwards;
|
||||
background-color: rgba(255, 255, 100, 1);
|
||||
}
|
||||
|
||||
@keyframes fade {
|
||||
from {
|
||||
background-color: rgba(255, 255, 100, 1);
|
||||
}
|
||||
to {
|
||||
background-color: rgba(255, 255, 255, 0);
|
||||
}
|
||||
}
|
||||
|
||||
#sidebar-header,
|
||||
.card-block {
|
||||
padding: 15px;
|
||||
}
|
||||
|
||||
#card-attachments ul {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
#card-attachments .details {
|
||||
font-size: 8pt;
|
||||
padding-left: 15px;
|
||||
}
|
||||
|
||||
#attachment-add button {
|
||||
background-color: #eeeeee;
|
||||
font-size: 9pt;
|
||||
}
|
||||
|
||||
#app-sidebar {
|
||||
right: -500px;
|
||||
max-width: 100%;
|
||||
border-left: none;
|
||||
width: 500px;
|
||||
/*box-shadow: 0px 0px 5px 0px #aaa;*/
|
||||
border-left: 1px solid #eeeeee;
|
||||
|
||||
}
|
||||
|
||||
#app-sidebar.details-visible {
|
||||
right: 0px;
|
||||
}
|
||||
|
||||
#app-content {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#app-content.details-visible {
|
||||
margin-right: 500px;
|
||||
}
|
||||
|
||||
.labels {
|
||||
display: block;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.labels li {
|
||||
padding: 1px;
|
||||
-webkit-border-radius: 3px;
|
||||
margin: 1px;
|
||||
float: left;
|
||||
color: #ffffff;
|
||||
font-size: 80%;
|
||||
font-weight: 900;
|
||||
min-width: 20px;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.labels li span {
|
||||
|
||||
}
|
||||
|
||||
.avatardiv {
|
||||
float: left;
|
||||
background-color: #eee;
|
||||
border-radius: 16px;
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
.avatardiv .icon-group {
|
||||
margin: 7px;
|
||||
opacity: 0.5;
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
/* color selector */
|
||||
|
||||
.colorselect {
|
||||
overflow: hidden;
|
||||
clear:both;
|
||||
padding-top:4px;
|
||||
padding-left: 4px;
|
||||
}
|
||||
.colorselect .color {
|
||||
opacity: 0.7;
|
||||
width: 27px;
|
||||
height: 27px;
|
||||
float: left;
|
||||
margin-right: 2px;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.colorselect .selected {
|
||||
opacity: 1.0;
|
||||
border: 1px solid #333333;
|
||||
}
|
||||
|
||||
.labels .colorselect {
|
||||
padding: 0;
|
||||
clear: none;
|
||||
overflow: visible;
|
||||
}
|
||||
.labels .colorselect .color {
|
||||
width:26px;
|
||||
height:26px;
|
||||
}
|
||||
|
||||
#boardlist {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
overflow: scroll;
|
||||
}
|
||||
|
||||
#boardlist td .board-bullet {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
border: none;
|
||||
border-radius: 50%;
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
display: block;
|
||||
}
|
||||
|
||||
#boardlist td {
|
||||
padding: 10px;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
#boardlist span.icon {
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.cell-board-bullet {
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
.cell-board-title {
|
||||
width: 50%;
|
||||
|
||||
}
|
||||
|
||||
#boardlist .colorselect,
|
||||
#boardlist input {
|
||||
float: left;
|
||||
}
|
||||
|
||||
#boardlist .colorselect {
|
||||
margin-top: 5px;
|
||||
}
|
||||
|
||||
input.input-inline {
|
||||
font-size: inherit !important;
|
||||
font-weight: inherit;
|
||||
background-color: transparent;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
width: 100%;
|
||||
border-bottom: 1px solid #333333;
|
||||
-webkit-border-radius: 0;
|
||||
margin-top: -4px;
|
||||
line-height: 100%;
|
||||
margin-bottom: -4px;
|
||||
|
||||
}
|
||||
|
||||
button {
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
button:hover {
|
||||
border: 0;
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* board detail */
|
||||
#board-detail-labels {
|
||||
padding: 10px;
|
||||
}
|
||||
|
||||
#board-detail-labels ul li {
|
||||
display: block;
|
||||
font-size: 10pt;
|
||||
float: none;
|
||||
margin-bottom: 1px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
#board-detail-labels ul li input {
|
||||
float: left;
|
||||
font-size: 10pt;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
#board-detail-labels ul li .label-title {
|
||||
float: left;
|
||||
width: 88%;
|
||||
font-size: 10pt;
|
||||
padding: 5px;
|
||||
border: none;
|
||||
margin-right: 2px;
|
||||
}
|
||||
|
||||
#board-detail-labels ul li a.icon {
|
||||
float: right;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.label-create {
|
||||
width: 88%;
|
||||
}
|
||||
|
||||
.label-create .icon {
|
||||
margin-bottom: -3px;
|
||||
}
|
||||
|
||||
#board-detail-labels .color {
|
||||
width: 28px;
|
||||
height: 31px;
|
||||
}
|
||||
|
||||
.tabHeaders {
|
||||
clear: both;
|
||||
overflow: hidden;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
#shareWithList .avatar {
|
||||
float: left;
|
||||
margin-top: -5px;
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.ui-select-container.dropdown {
|
||||
background: #ffffff;
|
||||
border-radius: 0px;
|
||||
box-shadow: none;
|
||||
display: block;
|
||||
margin-right: 0;
|
||||
position: static;
|
||||
width: 100%;
|
||||
z-index: auto;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.ui-select-match-close {
|
||||
float: right;
|
||||
left: -20px;
|
||||
margin-top: 3px;
|
||||
z-index: 100;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.ui-select-match-item {
|
||||
padding: 2px;
|
||||
float: left;
|
||||
display: block;
|
||||
margin-right: -17px !important;
|
||||
}
|
||||
|
||||
.ui-select-match-item .select-label {
|
||||
padding: 4px;
|
||||
color: #fff;
|
||||
padding-right: 23px;
|
||||
}
|
||||
|
||||
.ui-select-container {
|
||||
background-color: #fafafa !important;
|
||||
border: 1px solid #fafafa;
|
||||
|
||||
}
|
||||
|
||||
.ui-select-container.open {
|
||||
border: 1px solid #aaaaaa;
|
||||
}
|
||||
|
||||
.ui-select-container input.ui-select-search {
|
||||
padding: 0px !important;
|
||||
margin: 2px !important;
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
}
|
||||
|
||||
.ui-select-bootstrap .ui-select-choices-row > a {
|
||||
padding: 3px !important;
|
||||
}
|
||||
|
||||
.ui-select-choices-row-inner {
|
||||
margin-bottom: 2px;
|
||||
width: 100%;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.ui-select-choices-row-inner span {
|
||||
padding: 3px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* ui-select disabled */
|
||||
.ui-select-container[disabled] {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.ui-select-container[disabled] .ui-select-match-item .select-label {
|
||||
padding: 4px;
|
||||
min-width: 26px !important;
|
||||
height: 100%;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.ui-select-container[disabled] .ui-select-match-item {
|
||||
margin-right: 0px !important;
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
/* hide board actions on mobile */
|
||||
#board-actions {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
@media only screen and (max-width: 768px) {
|
||||
#board-header h1 {
|
||||
margin-left: 50px;
|
||||
}
|
||||
}
|
||||
|
||||
#markdown {
|
||||
width:100% !important;
|
||||
}
|
||||
#markdown p {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
#markdown * {
|
||||
white-space: normal;
|
||||
word-wrap:break-word;
|
||||
word-wrap: break-word; /* All browsers since IE 5.5+ */
|
||||
overflow-wrap: break-word; /* Renamed property in CSS3 draft spec */
|
||||
}
|
||||
|
||||
#markdown a {
|
||||
color: #666666;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
#markdown ol, #markdown ul {
|
||||
margin-left: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
#markdown ul {
|
||||
list-style-type: disc;
|
||||
}
|
||||
|
||||
#markdown h1 {
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
#markdown h2 {
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#markdown h3 {
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#markdown h4 {
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#markdown h6 {
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#markdown pre {
|
||||
background-color: #eeeeee;
|
||||
padding: 3px;
|
||||
}
|
||||
|
||||
.shareWithList .username {
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
.shareWithList .icon {
|
||||
display: inline-block;
|
||||
background-size: 16px 16px;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
}
|
||||
|
||||
.shareWithList .fa {
|
||||
font-size: 12pt;
|
||||
width: 16px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.shareOption {
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.app-deck .icon {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.icon-group {
|
||||
background-image: url('../../../settings/img/users.svg');
|
||||
}
|
||||
.icon-add-white {
|
||||
background-image: url('../img/add-white.svg');
|
||||
}
|
||||
.icon-archive {
|
||||
background-image: url('../img/archive.svg');
|
||||
}
|
||||
.icon-archive-white {
|
||||
background-image: url('../img/archive-white.svg');
|
||||
}
|
||||
.icon-details {
|
||||
background-image: url('../img/details.svg');
|
||||
}
|
||||
.icon-details-white {
|
||||
background-image: url('../img/details-white.svg');
|
||||
}
|
||||
1245
css/style.scss
Normal file
1245
css/style.scss
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" id="svg2"><style id="style4">.st0{display:none}.st1{display:inline}.st2{fill:#0071bc}.st3{display:inline}.st3,.st4{fill:#fff}</style><g id="Ebene_3"><path class="st4" d="M432.3 448.1h-348c-13.2 0-24-10.8-24-24V264.6c0-13.2 10.8-24 24-24h348c13.2 0 24 10.8 24 24v159.5c0 13.2-10.8 24-24 24zM380.4 89.8H127.8c-7.7 0-14-6.3-14-14v-6.3c0-7.7 6.3-14 14-14h252.6c7.7 0 14 6.3 14 14v6.3c0 7.7-6.3 14-14 14zm19.4 61.8H110.6c-7.7 0-14-6.3-14-14v-6.3c0-7.7 6.3-14 14-14h289.2c7.7 0 14 6.3 14 14v6.3c0 7.7-6.3 14-14 14zm21.6 61.4H94.6c-7.7 0-14-6.3-14-14v-6.3c0-7.7 6.3-14 14-14h326.8c7.7 0 14 6.3 14 14v6.3c0 7.7-6.3 14-14 14z" id="path12" fill="#fff"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 715 B |
1
img/calendar-white.svg
Normal file
1
img/calendar-white.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="32" version="1.1" height="32" viewbox="0 0 32 32"><path fill="#fff" d="m8 2c-1.108 0-2 0.892-2 2v4c0 1.108 0.892 2 2 2s2-0.892 2-2v-4c0-1.108-0.892-2-2-2zm16 0c-1.108 0-2 0.892-2 2v4c0 1.108 0.892 2 2 2s2-0.892 2-2v-4c0-1.108-0.892-2-2-2zm-13 4v2c0 1.662-1.338 3-3 3s-3-1.338-3-3v-1.875a3.993 3.993 0 0 0 -3 3.875v16c0 2.216 1.784 4 4 4h20c2.216 0 4-1.784 4-4v-16a3.993 3.993 0 0 0 -3 -3.875v1.875c0 1.662-1.338 3-3 3s-3-1.338-3-3v-2zm-4.906 10h19.812a0.09 0.09 0 0 1 0.094 0.094v9.812a0.09 0.09 0 0 1 -0.094 0.094h-19.812a0.09 0.09 0 0 1 -0.094 -0.094v-9.812a0.09 0.09 0 0 1 0.094 -0.094z"/></svg>
|
||||
|
After Width: | Height: | Size: 646 B |
6
img/deck-dark.svg
Normal file
6
img/deck-dark.svg
Normal file
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" viewBox="0 0 16 16">
|
||||
<rect ry="1" height="8" width="14" y="7" x="1"/>
|
||||
<rect ry=".5" height="1" width="12" y="5" x="2"/>
|
||||
<rect ry=".5" height="1" width="10" y="3" x="3"/>
|
||||
<rect ry=".5" height="1" width="8" y="1" x="4"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 311 B |
8
img/deck.svg
Normal file
8
img/deck.svg
Normal file
@@ -0,0 +1,8 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" viewBox="0 0 16 16">
|
||||
<g fill="#fff">
|
||||
<rect ry="1" height="8" width="14" y="7" x="1"/>
|
||||
<rect ry=".5" height="1" width="12" y="5" x="2"/>
|
||||
<rect ry=".5" height="1" width="10" y="3" x="3"/>
|
||||
<rect ry=".5" height="1" width="8" y="1" x="4"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 364 B |
79
issue_template.md
Normal file
79
issue_template.md
Normal file
@@ -0,0 +1,79 @@
|
||||
### Steps to reproduce
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
### Expected behaviour
|
||||
Tell us what should happen
|
||||
|
||||
### Actual behaviour
|
||||
Tell us what happens instead
|
||||
|
||||
### Server configuration
|
||||
<!--
|
||||
You can use the Issue Template application to prefill most of the required information: https://apps.nextcloud.com/apps/issuetemplate
|
||||
-->
|
||||
|
||||
**Operating system**:
|
||||
|
||||
**Web server:**
|
||||
|
||||
**Database:**
|
||||
|
||||
**PHP version:**
|
||||
|
||||
**Nextcloud version:** (see Nextcloud admin page)
|
||||
|
||||
**Where did you install Nextcloud from:**
|
||||
|
||||
**Signing status:**
|
||||
|
||||
```
|
||||
Login as admin user into your Nextcloud and access
|
||||
http://example.com/index.php/settings/integrity/failed
|
||||
paste the results here.
|
||||
```
|
||||
|
||||
**List of activated apps:**
|
||||
|
||||
```
|
||||
If you have access to your command line run e.g.:
|
||||
sudo -u www-data php occ app:list
|
||||
from within your Nextcloud installation folder
|
||||
```
|
||||
|
||||
**Nextcloud configuration:**
|
||||
|
||||
```
|
||||
If you have access to your command line run e.g.:
|
||||
sudo -u www-data php occ config:list system
|
||||
from within your Nextcloud installation folder
|
||||
|
||||
or
|
||||
|
||||
Insert your config.php content here
|
||||
Make sure to remove all sensitive content such as passwords. (e.g. database password, passwordsalt, secret, smtp password, …)
|
||||
```
|
||||
|
||||
**Are you using an external user-backend, if yes which one:** LDAP/ActiveDirectory/Webdav/...
|
||||
|
||||
### Client configuration
|
||||
**Browser:**
|
||||
|
||||
**Operating system:**
|
||||
|
||||
### Logs
|
||||
|
||||
#### Nextcloud log (data/nextcloud.log)
|
||||
```
|
||||
Insert your Nextcloud log here
|
||||
```
|
||||
|
||||
#### Browser log
|
||||
```
|
||||
Insert your browser log here, this could for example include:
|
||||
|
||||
a) The javascript console log
|
||||
b) The network log
|
||||
c) ...
|
||||
```
|
||||
@@ -20,9 +20,10 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/* global module */
|
||||
|
||||
module.exports = function(grunt) {
|
||||
'use strict';
|
||||
'use strict';
|
||||
|
||||
grunt.loadNpmTasks('grunt-contrib-concat');
|
||||
grunt.loadNpmTasks('grunt-contrib-watch');
|
||||
@@ -37,13 +38,13 @@ module.exports = function(grunt) {
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
version: '<%= meta.pkg.version %>',
|
||||
configJS: 'config/',
|
||||
buildJS: [
|
||||
'app/**/*.js',
|
||||
'controller/**/*.js',
|
||||
'filters/**/*.js',
|
||||
'directive/**/*.js',
|
||||
'service/**/*.js'
|
||||
],
|
||||
buildJS: [
|
||||
'app/**/*.js',
|
||||
'controller/**/*.js',
|
||||
'filters/**/*.js',
|
||||
'directive/**/*.js',
|
||||
'service/**/*.js'
|
||||
],
|
||||
productionJS: 'public/',
|
||||
testsJS: '../tests/js/'
|
||||
},
|
||||
|
||||
10
js/Makefile
10
js/Makefile
@@ -1,10 +0,0 @@
|
||||
build:
|
||||
grunt build
|
||||
|
||||
watch:
|
||||
grunt watch
|
||||
|
||||
install:
|
||||
npm install
|
||||
bower install
|
||||
|
||||
@@ -20,6 +20,9 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/* global angular */
|
||||
|
||||
|
||||
angular.module('markdown', [])
|
||||
.provider('markdown', [function () {
|
||||
var opts = {};
|
||||
|
||||
@@ -20,53 +20,61 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/* global app oc_requesttoken markdownitLinkTarget */
|
||||
|
||||
app.config(function ($provide, $routeProvider, $interpolateProvider, $httpProvider, $urlRouterProvider, $stateProvider, $compileProvider, markdownItConverterProvider) {
|
||||
'use strict';
|
||||
$httpProvider.defaults.headers.common.requesttoken = oc_requesttoken;
|
||||
'use strict';
|
||||
$httpProvider.defaults.headers.common.requesttoken = oc_requesttoken;
|
||||
|
||||
$compileProvider.debugInfoEnabled(true);
|
||||
$compileProvider.debugInfoEnabled(true);
|
||||
|
||||
markdownItConverterProvider.config({
|
||||
breaks: true,
|
||||
linkify: true,
|
||||
xhtmlOut: true
|
||||
});
|
||||
markdownItConverterProvider.use(markdownitLinkTarget);
|
||||
markdownItConverterProvider.config({
|
||||
breaks: true,
|
||||
linkify: true,
|
||||
xhtmlOut: true
|
||||
});
|
||||
markdownItConverterProvider.use(markdownitLinkTarget);
|
||||
|
||||
$urlRouterProvider.otherwise("/");
|
||||
$urlRouterProvider.otherwise('/');
|
||||
|
||||
$stateProvider
|
||||
.state('list', {
|
||||
url: "/",
|
||||
templateUrl: "/boardlist.mainView.html",
|
||||
controller: 'ListController'
|
||||
$stateProvider
|
||||
.state('list', {
|
||||
url: '/:filter',
|
||||
templateUrl: '/boardlist.mainView.html',
|
||||
controller: 'ListController',
|
||||
reloadOnSearch: false,
|
||||
params: {
|
||||
filter: {value: '', dynamic: true}
|
||||
}
|
||||
})
|
||||
.state('board', {
|
||||
url: "/board/:boardId/:filter",
|
||||
templateUrl: "/board.html",
|
||||
controller: 'BoardController',
|
||||
params: {
|
||||
filter: { value: '', dynamic: true }
|
||||
}
|
||||
})
|
||||
.state('board.detail', {
|
||||
url: "/detail/",
|
||||
reloadOnSearch : false,
|
||||
views: {
|
||||
"sidebarView": {
|
||||
templateUrl: "/board.sidebarView.html"
|
||||
.state('board', {
|
||||
url: '/board/:boardId/:filter',
|
||||
templateUrl: '/board.html',
|
||||
controller: 'BoardController',
|
||||
params: {
|
||||
filter: {value: '', dynamic: true}
|
||||
}
|
||||
})
|
||||
.state('board.detail', {
|
||||
url: '/detail/',
|
||||
reloadOnSearch: false,
|
||||
params: {
|
||||
tab: {value: 0, dynamic: true},
|
||||
},
|
||||
views: {
|
||||
'sidebarView': {
|
||||
templateUrl: '/board.sidebarView.html'
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
.state('board.card', {
|
||||
url: "/card/:cardId",
|
||||
views: {
|
||||
"sidebarView": {
|
||||
templateUrl: "/card.sidebarView.html",
|
||||
controller: 'CardController'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
.state('board.card', {
|
||||
url: '/card/:cardId',
|
||||
views: {
|
||||
'sidebarView': {
|
||||
templateUrl: '/card.sidebarView.html',
|
||||
controller: 'CardController'
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
@@ -20,33 +20,63 @@
|
||||
*
|
||||
*/
|
||||
|
||||
app.run(function ($document, $rootScope, $transitions) {
|
||||
'use strict';
|
||||
$document.click(function (event) {
|
||||
$rootScope.$broadcast('documentClicked', event);
|
||||
});
|
||||
$transitions.onEnter({to: 'board.card'}, function ($state, $transition$) {
|
||||
$rootScope.sidebar.show = true;
|
||||
});
|
||||
$transitions.onEnter({to: 'board.detail'}, function ($state, $transition$) {
|
||||
$rootScope.sidebar.show = true;
|
||||
});
|
||||
$transitions.onEnter({to: 'board'}, function ($state) {
|
||||
$rootScope.sidebar.show = false;
|
||||
});
|
||||
$transitions.onExit({from: 'board.card'}, function ($state) {
|
||||
$rootScope.sidebar.show = false;
|
||||
});
|
||||
$transitions.onExit({from: 'board.detail'}, function ($state) {
|
||||
$rootScope.sidebar.show = false;
|
||||
});
|
||||
$transitions.onEnter({to: 'board.archive'}, function ($state) {
|
||||
//BoardController.loadArchived();
|
||||
});
|
||||
/* global Snap */
|
||||
app.run(function ($document, $rootScope, $transitions, BoardService) {
|
||||
'use strict';
|
||||
$document.click(function (event) {
|
||||
$rootScope.$broadcast('documentClicked', event);
|
||||
});
|
||||
$transitions.onEnter({from: 'list'}, function ($state, $transition$) {
|
||||
BoardService.unsetCurrrent();
|
||||
});
|
||||
$transitions.onEnter({to: 'list'}, function ($state, $transition$) {
|
||||
BoardService.unsetCurrrent();
|
||||
document.title = "Deck - " + oc_defaults.name;
|
||||
});
|
||||
$transitions.onEnter({to: 'board.card'}, function ($state, $transition$) {
|
||||
$rootScope.sidebar.show = true;
|
||||
});
|
||||
$transitions.onEnter({to: 'board.detail'}, function ($state, $transition$) {
|
||||
$rootScope.sidebar.show = true;
|
||||
});
|
||||
$transitions.onEnter({to: 'board'}, function ($state) {
|
||||
$rootScope.sidebar.show = false;
|
||||
});
|
||||
$transitions.onExit({from: 'board.card'}, function ($state) {
|
||||
$rootScope.sidebar.show = false;
|
||||
});
|
||||
$transitions.onExit({from: 'board.detail'}, function ($state) {
|
||||
$rootScope.sidebar.show = false;
|
||||
});
|
||||
|
||||
$('link[rel="shortcut icon"]').attr(
|
||||
'href',
|
||||
OC.filePath('deck', 'img', 'app-512.png')
|
||||
);
|
||||
$('link[rel="shortcut icon"]').attr(
|
||||
'href',
|
||||
OC.filePath('deck', 'img', 'app-512.png')
|
||||
);
|
||||
|
||||
$('#app-navigation-toggle').off('click');
|
||||
// App sidebar on mobile
|
||||
var snapper = new Snap({
|
||||
element: document.getElementById('app-content'),
|
||||
disable: 'right',
|
||||
maxPosition: 250,
|
||||
touchToDrag: false
|
||||
});
|
||||
|
||||
$('#app-navigation-toggle').click(function () {
|
||||
if ($(window).width() > 768) {
|
||||
$('#app-navigation').toggle('hidden');
|
||||
} else {
|
||||
if (snapper.state().state === 'left') {
|
||||
snapper.close();
|
||||
} else {
|
||||
snapper.open('left');
|
||||
}
|
||||
}
|
||||
});
|
||||
// Select all elements with data-toggle="tooltips" in the document
|
||||
$('body').tooltip({
|
||||
selector: '[data-toggle="tooltip"]'
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
@@ -7,14 +7,15 @@
|
||||
"angular-mocks": "~1.6.1",
|
||||
"angular-sanitize": "~1.6.1",
|
||||
"angular-animate": "~1.6.1",
|
||||
"ng-sortable": "1.3.6",
|
||||
"jquery": "3.1.x",
|
||||
"ng-sortable": "1.3.8",
|
||||
"jquery": "3.2.x",
|
||||
"es6-shim": "~0.*",
|
||||
"js-url": "~2.*",
|
||||
"angular-ui-select": "~0.19.6",
|
||||
"angular-markdown-it": "~0.6.1",
|
||||
"angular-ui-router": "~1.0.0",
|
||||
"markdown-it-link-target": "~1.0.1"
|
||||
"markdown-it-link-target": "~1.0.1",
|
||||
"jquery-timepicker": "883bb2cd94"
|
||||
},
|
||||
"license": "AGPL-3.0",
|
||||
"private": true,
|
||||
|
||||
@@ -20,10 +20,11 @@
|
||||
*
|
||||
*/
|
||||
|
||||
app.controller('AppController', function ($scope, $location, $http, $route, $log, $rootScope, $stateParams) {
|
||||
$rootScope.sidebar = {
|
||||
show: false
|
||||
};
|
||||
$scope.sidebar = $rootScope.sidebar;
|
||||
$scope.user = oc_current_user;
|
||||
/** global: OC */
|
||||
app.controller('AppController', function ($scope, $location, $http, $route, $log, $rootScope) {
|
||||
$rootScope.sidebar = {
|
||||
show: false
|
||||
};
|
||||
$scope.sidebar = $rootScope.sidebar;
|
||||
$scope.user = oc_current_user;
|
||||
});
|
||||
@@ -20,6 +20,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/* global oc_defaults OC */
|
||||
app.controller('BoardController', function ($rootScope, $scope, $stateParams, StatusService, BoardService, StackService, CardService, LabelService, $state, $transitions, $filter) {
|
||||
|
||||
$scope.sidebar = $rootScope.sidebar;
|
||||
@@ -29,65 +30,87 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
|
||||
addCard: [],
|
||||
};
|
||||
$scope.newLabel = {};
|
||||
$scope.status.boardtab = $stateParams.detailTab;
|
||||
|
||||
$scope.OC = OC;
|
||||
$scope.stackservice = StackService;
|
||||
$scope.boardservice = BoardService;
|
||||
$scope.cardservice = CardService;
|
||||
$scope.statusservice = StatusService.getInstance();
|
||||
$scope.labelservice = LabelService;
|
||||
$scope.defaultColors = ['31CC7C', '317CCC', 'FF7A66', 'F1DB50', '7C31CC', 'CC317C', '3A3B3D', 'CACBCD'];
|
||||
$scope.board = BoardService.getCurrent();
|
||||
|
||||
// workaround for $stateParams changes not being propagated
|
||||
$scope.$watch(function() {
|
||||
return $state.params;
|
||||
}, function (params) {
|
||||
$scope.params = params;
|
||||
}, true);
|
||||
$scope.params = $state;
|
||||
|
||||
|
||||
$scope.search = function (searchText) {
|
||||
$scope.searchText = searchText;
|
||||
$scope.refreshData();
|
||||
};
|
||||
|
||||
$scope.board = BoardService.getCurrent();
|
||||
StackService.clear(); //FIXME: Is this still needed?
|
||||
$scope.$watch(function () {
|
||||
if (typeof BoardService.getCurrent() !== 'undefined') {
|
||||
return BoardService.getCurrent().title;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}, function () {
|
||||
$scope.setPageTitle();
|
||||
});
|
||||
$scope.setPageTitle = function () {
|
||||
if (BoardService.getCurrent()) {
|
||||
document.title = BoardService.getCurrent().title + ' | Deck - ' + oc_defaults.name;
|
||||
} else {
|
||||
document.title = 'Deck - ' + oc_defaults.name;
|
||||
}
|
||||
};
|
||||
|
||||
$scope.statusservice.retainWaiting();
|
||||
$scope.statusservice.retainWaiting();
|
||||
|
||||
// FIXME: ugly solution for archive
|
||||
$scope.$state = $stateParams;
|
||||
$scope.filter = $stateParams.filter;
|
||||
$scope.$watch('$state.filter', function (name) {
|
||||
$scope.filter = name;
|
||||
});
|
||||
// handle filter parameter for switching between archived/unarchived cards
|
||||
$scope.switchFilter = function (filter) {
|
||||
$state.go('.', {filter: filter}, {notify: false});
|
||||
$scope.filter = filter;
|
||||
$state.go('.', {filter: filter});
|
||||
};
|
||||
$scope.$watch('filter', function (name) {
|
||||
if (name === "archive") {
|
||||
$scope.$watch(function() {
|
||||
return $scope.params.filter;
|
||||
}, function (filter) {
|
||||
if (filter === 'archive') {
|
||||
$scope.loadArchived();
|
||||
} else {
|
||||
$scope.loadDefault();
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$scope.stacksData = StackService;
|
||||
$scope.stacks = {};
|
||||
$scope.$watch('stacksData', function (value) {
|
||||
$scope.stacks = [];
|
||||
$scope.$watch('stacksData', function () {
|
||||
$scope.refreshData();
|
||||
}, true);
|
||||
$scope.refreshData = function () {
|
||||
if ($scope.filter === "archive") {
|
||||
if ($scope.params.filter === 'archive') {
|
||||
$scope.filterData('-lastModified', $scope.searchText);
|
||||
} else {
|
||||
$scope.filterData('order', $scope.searchText);
|
||||
}
|
||||
};
|
||||
$scope.checkCanEdit = function () {
|
||||
return !$scope.archived;
|
||||
return !BoardService.getCurrent().archived;
|
||||
};
|
||||
|
||||
// filter cards here, as ng-sortable will not work nicely with html-inline filters
|
||||
$scope.filterData = function (order, text) {
|
||||
if ($scope.stacks === undefined)
|
||||
if ($scope.stacks === undefined) {
|
||||
return;
|
||||
angular.copy(StackService.getAll(), $scope.stacks);
|
||||
}
|
||||
angular.copy(StackService.getData(), $scope.stacks);
|
||||
$scope.stacks = $filter('orderBy')($scope.stacks, 'order');
|
||||
angular.forEach($scope.stacks, function (value, key) {
|
||||
var cards = $filter('cardSearchFilter')(value.cards, text);
|
||||
cards = $filter('orderBy')(cards, order);
|
||||
@@ -113,18 +136,13 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
|
||||
|
||||
// Handle initial Loading
|
||||
BoardService.fetchOne($scope.id).then(function (data) {
|
||||
BoardService.getPermissions();
|
||||
$scope.statusservice.releaseWaiting();
|
||||
$scope.setPageTitle();
|
||||
}, function (error) {
|
||||
$scope.statusservice.setError('Error occured', error);
|
||||
});
|
||||
|
||||
BoardService.searchUsers('%25');
|
||||
|
||||
$scope.searchForUser = function (search) {
|
||||
if (search == "") {
|
||||
search = "%25";
|
||||
}
|
||||
BoardService.searchUsers(search);
|
||||
};
|
||||
|
||||
@@ -151,8 +169,14 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
|
||||
};
|
||||
|
||||
$scope.cardDelete = function (card) {
|
||||
CardService.delete(card.id);
|
||||
StackService.removeCard(card);
|
||||
OC.dialogs.confirm(t('deck', 'Are you sure you want to delete this card with all of its data?'), t('deck', 'Delete'), function(state) {
|
||||
if (!state) {
|
||||
return;
|
||||
}
|
||||
CardService.delete(card.id).then(function () {
|
||||
StackService.removeCard(card);
|
||||
});
|
||||
});
|
||||
};
|
||||
$scope.cardArchive = function (card) {
|
||||
CardService.archive(card);
|
||||
@@ -172,10 +196,12 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
|
||||
};
|
||||
$scope.labelCreate = function (label) {
|
||||
label.boardId = $scope.id;
|
||||
LabelService.create(label);
|
||||
BoardService.getCurrent().labels.push(label);
|
||||
$scope.status.createLabel = false;
|
||||
$scope.newLabel = {};
|
||||
LabelService.create(label).then(function (data) {
|
||||
$scope.newStack.title = "";
|
||||
BoardService.getCurrent().labels.push(data);
|
||||
$scope.status.createLabel = false;
|
||||
$scope.newLabel = {};
|
||||
});
|
||||
};
|
||||
$scope.labelUpdate = function (label) {
|
||||
label.edit = false;
|
||||
@@ -188,15 +214,32 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
|
||||
$scope.status.addSharee = null;
|
||||
};
|
||||
$scope.aclDelete = function (acl) {
|
||||
BoardService.deleteAcl(acl);
|
||||
BoardService.deleteAcl(acl).then(function(data) {
|
||||
$scope.loadDefault();
|
||||
$scope.refreshData();
|
||||
});
|
||||
};
|
||||
$scope.aclUpdate = function (acl) {
|
||||
BoardService.updateAcl(acl);
|
||||
};
|
||||
|
||||
$scope.aclTypeString = function (acl) {
|
||||
if (typeof acl === 'undefined') {
|
||||
return '';
|
||||
}
|
||||
switch (acl.type) {
|
||||
case OC.Share.SHARE_TYPE_USER:
|
||||
return 'user';
|
||||
case OC.Share.SHARE_TYPE_GROUP:
|
||||
return 'group';
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
};
|
||||
|
||||
// settings for card sorting
|
||||
$scope.sortOptions = {
|
||||
id: 'card',
|
||||
itemMoved: function (event) {
|
||||
event.source.itemScope.modelValue.status = event.dest.sortableScope.$parent.column;
|
||||
var order = event.dest.index;
|
||||
@@ -207,7 +250,7 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
|
||||
CardService.update(card);
|
||||
CardService.reorder(card, order).then(function (data) {
|
||||
StackService.addCard(card);
|
||||
StackService.reorder(card, order);
|
||||
StackService.reorderCard(card, order);
|
||||
StackService.removeCard({
|
||||
id: card.id,
|
||||
stackId: oldStack
|
||||
@@ -219,14 +262,50 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
|
||||
var card = event.source.itemScope.c;
|
||||
var stack = event.dest.sortableScope.$parent.s.id;
|
||||
CardService.reorder(card, order).then(function (data) {
|
||||
StackService.reorder(card, order);
|
||||
StackService.reorderCard(card, order);
|
||||
$scope.refreshData();
|
||||
});
|
||||
},
|
||||
scrollableContainer: '#innerBoard',
|
||||
containerPositioning: 'relative',
|
||||
containment: '#innerBoard',
|
||||
longTouch: true,
|
||||
// auto scroll on drag
|
||||
dragMove: function (itemPosition, containment, eventObj) {
|
||||
if (eventObj) {
|
||||
var container = $("#board");
|
||||
var offset = container.offset();
|
||||
var targetX = eventObj.pageX - (offset.left || container.scrollLeft());
|
||||
var targetY = eventObj.pageY - (offset.top || container.scrollTop());
|
||||
if (targetX < offset.left) {
|
||||
container.scrollLeft(container.scrollLeft() - 25);
|
||||
} else if (targetX > container.width()) {
|
||||
container.scrollLeft(container.scrollLeft() + 25);
|
||||
}
|
||||
if (targetY < offset.top) {
|
||||
container.scrollTop(container.scrollTop() - 25);
|
||||
} else if (targetY > container.height()) {
|
||||
container.scrollTop(container.scrollTop() + 25);
|
||||
}
|
||||
}
|
||||
},
|
||||
accept: function (sourceItemHandleScope, destSortableScope, destItemScope) {
|
||||
return sourceItemHandleScope.sortableScope.options.id === 'card';
|
||||
}
|
||||
};
|
||||
|
||||
$scope.sortOptionsStack = {
|
||||
id: 'stack',
|
||||
orderChanged: function (event) {
|
||||
var order = event.dest.index;
|
||||
var stack = event.source.itemScope.s;
|
||||
StackService.reorder(stack, order).then(function (data) {
|
||||
$scope.refreshData();
|
||||
});
|
||||
},
|
||||
scrollableContainer: '#board',
|
||||
containerPositioning: 'relative',
|
||||
containment: '#board',
|
||||
// auto scroll on drag
|
||||
containment: '#innerBoard',
|
||||
dragMove: function (itemPosition, containment, eventObj) {
|
||||
if (eventObj) {
|
||||
var container = $("#board");
|
||||
@@ -244,7 +323,17 @@ app.controller('BoardController', function ($rootScope, $scope, $stateParams, St
|
||||
container.scrollTop(container.scrollTop() + 50);
|
||||
}
|
||||
}
|
||||
},
|
||||
accept: function (sourceItemHandleScope, destSortableScope, destItemScope) {
|
||||
return sourceItemHandleScope.sortableScope.options.id === 'stack';
|
||||
}
|
||||
};
|
||||
|
||||
$scope.labelStyle = function (color) {
|
||||
return {
|
||||
'background-color': '#' + color,
|
||||
'color': $filter('textColorFilter')(color)
|
||||
};
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
|
||||
|
||||
/*
|
||||
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
@@ -22,65 +20,168 @@
|
||||
*
|
||||
*/
|
||||
|
||||
app.controller('CardController', function ($scope, $rootScope, $routeParams, $location, $stateParams, BoardService, CardService, StackService, StatusService) {
|
||||
$scope.sidebar = $rootScope.sidebar;
|
||||
$scope.status = {};
|
||||
/* global app moment */
|
||||
|
||||
$scope.cardservice = CardService;
|
||||
$scope.cardId = $stateParams.cardId;
|
||||
app.controller('CardController', function ($scope, $rootScope, $routeParams, $location, $stateParams, $interval, $timeout, $filter, BoardService, CardService, StackService, StatusService) {
|
||||
$scope.sidebar = $rootScope.sidebar;
|
||||
$scope.status = {
|
||||
lastEdit: 0,
|
||||
lastSave: Date.now()
|
||||
};
|
||||
|
||||
$scope.statusservice = StatusService.getInstance();
|
||||
$scope.boardservice = BoardService;
|
||||
$scope.cardservice = CardService;
|
||||
$scope.cardId = $stateParams.cardId;
|
||||
|
||||
$scope.statusservice.retainWaiting();
|
||||
$scope.statusservice = StatusService.getInstance();
|
||||
$scope.boardservice = BoardService;
|
||||
|
||||
CardService.fetchOne($scope.cardId).then(function(data) {
|
||||
$scope.statusservice.releaseWaiting();
|
||||
$scope.archived = CardService.getCurrent().archived;
|
||||
}, function(error) {
|
||||
});
|
||||
$scope.statusservice.retainWaiting();
|
||||
|
||||
$scope.cardRenameShow = function() {
|
||||
if($scope.archived || !BoardService.canEdit())
|
||||
return false;
|
||||
else {
|
||||
$scope.status.cardRename=true;
|
||||
}
|
||||
};
|
||||
$scope.cardEditDescriptionShow = function($event) {
|
||||
var node = $event.target.nodeName;
|
||||
console.log($event);
|
||||
console.log(BoardService);
|
||||
if($scope.card.archived || !$scope.boardservice.canEdit()) {
|
||||
console.log(node);
|
||||
} else {
|
||||
console.log("edit");
|
||||
$scope.status.cardEditDescription=true;
|
||||
}
|
||||
console.log($scope.status.canEditDescription);
|
||||
};
|
||||
// handle rename to update information on the board as well
|
||||
$scope.cardRename = function(card) {
|
||||
CardService.rename(card).then(function(data) {
|
||||
StackService.updateCard(card);
|
||||
$scope.status.renameCard = false;
|
||||
});
|
||||
};
|
||||
$scope.cardUpdate = function(card) {
|
||||
CardService.update(CardService.getCurrent()).then(function(data) {
|
||||
$scope.status.cardEditDescription = false;
|
||||
$('#card-description').find('.save-indicator').fadeIn(500).fadeOut(1000);
|
||||
});
|
||||
};
|
||||
CardService.fetchOne($scope.cardId).then(function (data) {
|
||||
$scope.statusservice.releaseWaiting();
|
||||
$scope.archived = CardService.getCurrent().archived;
|
||||
}, function (error) {
|
||||
});
|
||||
|
||||
$scope.labelAssign = function(element, model) {
|
||||
CardService.assignLabel($scope.cardId, element.id);
|
||||
var card = CardService.getCurrent();
|
||||
StackService.updateCard(card);
|
||||
};
|
||||
|
||||
$scope.labelRemove = function(element, model) {
|
||||
CardService.removeLabel($scope.cardId, element.id)
|
||||
}
|
||||
$scope.cardRenameShow = function () {
|
||||
if ($scope.archived || !BoardService.canEdit())
|
||||
{return false;}
|
||||
else {
|
||||
$scope.status.cardRename = true;
|
||||
}
|
||||
};
|
||||
$scope.cardEditDescriptionShow = function ($event) {
|
||||
if (BoardService.isArchived() || CardService.getCurrent().archived) {
|
||||
return false;
|
||||
}
|
||||
if ($scope.card.archived || !$scope.boardservice.canEdit()) {
|
||||
return false;
|
||||
}
|
||||
$scope.status.cardEditDescription = true;
|
||||
$scope.status.edit = angular.copy(CardService.getCurrent());
|
||||
return true;
|
||||
};
|
||||
$scope.cardEditDescriptionChanged = function ($event) {
|
||||
$scope.status.lastEdit = Date.now();
|
||||
var header = $('.section-header.card-description');
|
||||
header.find('.save-indicator.unsaved').show();
|
||||
header.find('.save-indicator.saved').hide();
|
||||
};
|
||||
$interval(function() {
|
||||
var currentTime = Date.now();
|
||||
var timeSinceEdit = currentTime-$scope.status.lastEdit;
|
||||
if (timeSinceEdit > 1000 && $scope.status.lastEdit > $scope.status.lastSave) {
|
||||
$scope.status.lastSave = currentTime;
|
||||
var header = $('.section-header.card-description');
|
||||
header.find('.save-indicator.unsaved').fadeIn(500);
|
||||
CardService.update($scope.status.edit).then(function (data) {
|
||||
var header = $('.section-header.card-description');
|
||||
header.find('.save-indicator.unsaved').hide();
|
||||
header.find('.save-indicator.saved').fadeIn(250).fadeOut(1000);
|
||||
StackService.updateCard($scope.status.edit);
|
||||
});
|
||||
}
|
||||
}, 500, 0, false);
|
||||
|
||||
});
|
||||
// handle rename to update information on the board as well
|
||||
$scope.cardRename = function (card) {
|
||||
CardService.rename(card).then(function (data) {
|
||||
StackService.updateCard(card);
|
||||
$scope.status.renameCard = false;
|
||||
});
|
||||
};
|
||||
$scope.cardUpdate = function (card) {
|
||||
CardService.update(card).then(function (data) {
|
||||
$scope.status.cardEditDescription = false;
|
||||
var header = $('.section-content.card-description');
|
||||
header.find('.save-indicator.unsaved').hide();
|
||||
header.find('.save-indicator.saved').fadeIn(500).fadeOut(1000);
|
||||
StackService.updateCard(card);
|
||||
});
|
||||
};
|
||||
|
||||
$scope.labelAssign = function (element, model) {
|
||||
CardService.assignLabel($scope.cardId, element.id).then(function (data) {
|
||||
StackService.updateCard(CardService.getCurrent());
|
||||
});
|
||||
};
|
||||
|
||||
$scope.labelRemove = function (element, model) {
|
||||
CardService.removeLabel($scope.cardId, element.id).then(function (data) {
|
||||
StackService.updateCard(CardService.getCurrent());
|
||||
});
|
||||
};
|
||||
|
||||
$scope.setDuedate = function (duedate) {
|
||||
var element = CardService.getCurrent();
|
||||
var newDate = moment(element.duedate);
|
||||
if(!newDate.isValid()) {
|
||||
newDate = moment();
|
||||
}
|
||||
newDate.date(duedate.date());
|
||||
newDate.month(duedate.month());
|
||||
newDate.year(duedate.year());
|
||||
element.duedate = newDate.toISOString();
|
||||
CardService.update(element);
|
||||
StackService.updateCard(element);
|
||||
};
|
||||
$scope.setDuedateTime = function (time) {
|
||||
var element = CardService.getCurrent();
|
||||
var newDate = moment(element.duedate);
|
||||
if(!newDate.isValid()) {
|
||||
newDate = moment();
|
||||
}
|
||||
newDate.hour(time.hour());
|
||||
newDate.minute(time.minute());
|
||||
element.duedate = newDate.toISOString();
|
||||
CardService.update(element);
|
||||
StackService.updateCard(element);
|
||||
};
|
||||
|
||||
$scope.resetDuedate = function () {
|
||||
var element = CardService.getCurrent();
|
||||
element.duedate = null;
|
||||
CardService.update(element);
|
||||
StackService.updateCard(element);
|
||||
};
|
||||
|
||||
/**
|
||||
* Show ui-select field when clicking the add button
|
||||
*/
|
||||
$scope.toggleAssignUser = function() {
|
||||
$scope.status.showAssignUser = !$scope.status.showAssignUser;
|
||||
if ($scope.status.showAssignUser === true) {
|
||||
$timeout(function () {
|
||||
$('#assignUserSelect').find('a').click();
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Hide ui-select when select list is closed
|
||||
*/
|
||||
$scope.assingUserOpenClose = function(isOpen) {
|
||||
$scope.status.showAssignUser = isOpen;
|
||||
};
|
||||
|
||||
$scope.addAssignedUser = function(item) {
|
||||
CardService.assignUser(CardService.getCurrent(), item.uid).then(function (data) {
|
||||
StackService.updateCard(CardService.getCurrent());
|
||||
});
|
||||
$scope.status.showAssignUser = false;
|
||||
};
|
||||
|
||||
$scope.removeAssignedUser = function(uid) {
|
||||
CardService.unassignUser(CardService.getCurrent(), uid).then(function (data) {
|
||||
StackService.updateCard(CardService.getCurrent());
|
||||
});
|
||||
};
|
||||
|
||||
$scope.labelStyle = function (color) {
|
||||
return {
|
||||
'background-color': '#' + color,
|
||||
'color': $filter('textColorFilter')(color)
|
||||
};
|
||||
};
|
||||
|
||||
});
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
/*
|
||||
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
@@ -21,58 +20,178 @@
|
||||
*
|
||||
*/
|
||||
|
||||
app.controller('ListController', function ($scope, $location, $filter, BoardService, $element) {
|
||||
$scope.boards = [];
|
||||
$scope.newBoard = {};
|
||||
$scope.status = {};
|
||||
$scope.colors = ['0082c9', '00c9c6','00c906', 'c92b00', 'F1DB50', '7C31CC', '3A3B3D', 'CACBCD'];
|
||||
$scope.boardservice = BoardService;
|
||||
/* global app angular */
|
||||
|
||||
// FIXME: not nice, but we want to load this only once
|
||||
if($element.attr('id') === 'app-navigation') {
|
||||
BoardService.fetchAll().then(function(data) {
|
||||
$scope.filterData();
|
||||
}, function (error) {
|
||||
// TODO: show error when loading fails
|
||||
});
|
||||
}
|
||||
app.controller('ListController', function ($scope, $location, $filter, BoardService, $element, $timeout, $stateParams, $state, StatusService) {
|
||||
|
||||
$scope.filterData = function () {
|
||||
angular.copy($scope.boardservice.getData(), $scope.boardservice.sorted);
|
||||
$scope.boardservice.sorted = $filter('orderBy')($scope.boardservice.sorted, 'title');
|
||||
};
|
||||
function calculateNewColor() {
|
||||
var boards = BoardService.getAll();
|
||||
var boardKeys = Object.keys(boards);
|
||||
var colorOccurrences = [];
|
||||
|
||||
$scope.selectColor = function(color) {
|
||||
$scope.newBoard.color = color;
|
||||
};
|
||||
for (var i = 0; i < $scope.colors.length; i++) {
|
||||
colorOccurrences.push(0);
|
||||
}
|
||||
|
||||
$scope.boardCreate = function() {
|
||||
if(!$scope.newBoard.title || !$scope.newBoard.color) {
|
||||
$scope.status.addBoard=false;
|
||||
return;
|
||||
}
|
||||
BoardService.create($scope.newBoard)
|
||||
.then(function (response) {
|
||||
$scope.newBoard = {};
|
||||
$scope.status.addBoard=false;
|
||||
$scope.filterData();
|
||||
}, function(error) {
|
||||
$scope.status.createBoard = 'Unable to insert board: ' + error.message;
|
||||
});
|
||||
};
|
||||
for (var j = 0; j < boardKeys.length; j++) {
|
||||
var key = boardKeys[j];
|
||||
var board = boards[key];
|
||||
|
||||
$scope.boardUpdate = function(board) {
|
||||
BoardService.update(board).then(function(data) {
|
||||
$scope.filterData();
|
||||
});
|
||||
board.status.edit = false;
|
||||
};
|
||||
if (board && $scope.colors.indexOf(board.color) !== -1) {
|
||||
colorOccurrences[$scope.colors.indexOf(board.color)]++;
|
||||
}
|
||||
}
|
||||
|
||||
$scope.boardDelete = function(board) {
|
||||
BoardService.delete(board.id).then(function (data) {
|
||||
$scope.filterData();
|
||||
});
|
||||
};
|
||||
return $scope.colors[colorOccurrences.indexOf(Math.min.apply(Math, colorOccurrences))];
|
||||
}
|
||||
|
||||
$scope.boards = [];
|
||||
$scope.newBoard = {};
|
||||
$scope.status = {
|
||||
deleteUndo: [],
|
||||
filter: $stateParams.filter ? $stateParams.filter : '',
|
||||
sidebar: false
|
||||
};
|
||||
$scope.colors = ['0082c9', '00c9c6','00c906', 'c92b00', 'F1DB50', '7C31CC', '3A3B3D', 'CACBCD'];
|
||||
$scope.boardservice = BoardService;
|
||||
$scope.updatingBoard = null;
|
||||
|
||||
var filterData = function () {
|
||||
if($element.attr('id') === 'app-navigation') {
|
||||
$scope.boardservice.sidebar = $scope.boardservice.getData();
|
||||
$scope.boardservice.sidebar = $filter('orderBy')($scope.boardservice.sidebar, 'title');
|
||||
$scope.boardservice.sidebar = $filter('cardFilter')($scope.boardservice.sidebar, {archived: false});
|
||||
} else {
|
||||
$scope.boardservice.sorted = $scope.boardservice.getData();
|
||||
if ($scope.status.filter === 'archived') {
|
||||
var filter = {};
|
||||
filter[$scope.status.filter] = true;
|
||||
$scope.boardservice.sorted = $filter('cardFilter')($scope.boardservice.sorted, filter);
|
||||
} else if ($scope.status.filter === 'shared') {
|
||||
$scope.boardservice.sorted = $filter('cardFilter')($scope.boardservice.sorted, {archived: false});
|
||||
$scope.boardservice.sorted = $filter('boardFilterAcl')($scope.boardservice.sorted);
|
||||
} else {
|
||||
$scope.boardservice.sorted = $filter('cardFilter')($scope.boardservice.sorted, {archived: false});
|
||||
}
|
||||
$scope.boardservice.sorted = $filter('orderBy')($scope.boardservice.sorted, ['deletedAt', 'title']);
|
||||
}
|
||||
};
|
||||
|
||||
var finishedLoading = function() {
|
||||
filterData();
|
||||
$scope.newBoard.color = calculateNewColor();
|
||||
};
|
||||
|
||||
var initialize = function () {
|
||||
$scope.statusservice = StatusService.listStatus;
|
||||
|
||||
if($element.attr('id') === 'app-navigation') {
|
||||
$scope.statusservice.retainWaiting();
|
||||
BoardService.fetchAll().then(function(data) {
|
||||
finishedLoading();
|
||||
$scope.statusservice.releaseWaiting();
|
||||
BoardService.loaded = true;
|
||||
}, function (error) {
|
||||
$scope.statusservice.setError('Error occured', error);
|
||||
});
|
||||
} else {
|
||||
/* initialize main list controller when board list is loaded */
|
||||
var boardDataWatch = $scope.$watch(function () {
|
||||
return $scope.boardservice.loaded;
|
||||
}, function () {
|
||||
if (BoardService.loaded === true) {
|
||||
boardDataWatch();
|
||||
finishedLoading();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
$scope.$watch(function () {
|
||||
return $scope.boardservice.data;
|
||||
}, function () {
|
||||
filterData();
|
||||
}, true);
|
||||
|
||||
/* Watch for board filter change */
|
||||
$scope.$watchCollection(function(){
|
||||
return $state.params;
|
||||
}, function(){
|
||||
$scope.status.filter = $state.params.filter;
|
||||
filterData();
|
||||
});
|
||||
};
|
||||
initialize();
|
||||
|
||||
$scope.selectColor = function(color) {
|
||||
$scope.newBoard.color = color;
|
||||
};
|
||||
|
||||
$scope.gotoBoard = function(board) {
|
||||
if(board.deletedAt > 0) {
|
||||
return false;
|
||||
}
|
||||
return $state.go('board', {boardId: board.id});
|
||||
};
|
||||
|
||||
$scope.boardCreate = function() {
|
||||
if(!$scope.newBoard.title || !$scope.newBoard.color) {
|
||||
$scope.status.addBoard=false;
|
||||
return;
|
||||
}
|
||||
BoardService.create($scope.newBoard)
|
||||
.then(function (response) {
|
||||
$scope.newBoard = {};
|
||||
$scope.newBoard.color = calculateNewColor();
|
||||
$scope.status.addBoard=false;
|
||||
filterData();
|
||||
}, function(error) {
|
||||
$scope.status.createBoard = 'Unable to insert board: ' + error.message;
|
||||
});
|
||||
};
|
||||
|
||||
$scope.boardUpdate = function(board) {
|
||||
BoardService.update(board).then(function(data) {
|
||||
board.status.edit = false;
|
||||
filterData();
|
||||
});
|
||||
};
|
||||
|
||||
$scope.boardUpdateBegin = function(board) {
|
||||
$scope.updatingBoard = angular.copy(board);
|
||||
};
|
||||
|
||||
$scope.boardUpdateReset = function(board) {
|
||||
board.title = $scope.updatingBoard.title;
|
||||
board.color = $scope.updatingBoard.color;
|
||||
filterData();
|
||||
board.status.edit = false;
|
||||
};
|
||||
|
||||
$scope.boardArchive = function (board) {
|
||||
board.archived = true;
|
||||
BoardService.update(board).then(function(data) {
|
||||
filterData();
|
||||
});
|
||||
};
|
||||
|
||||
$scope.boardUnarchive = function (board) {
|
||||
board.archived = false;
|
||||
BoardService.update(board).then(function(data) {
|
||||
filterData();
|
||||
});
|
||||
};
|
||||
|
||||
$scope.boardDelete = function(board) {
|
||||
BoardService.delete(board.id).then(function (data) {
|
||||
filterData();
|
||||
});
|
||||
};
|
||||
|
||||
$scope.boardDeleteUndo = function (board) {
|
||||
BoardService.deleteUndo(board.id).then(function (data) {
|
||||
filterData();
|
||||
});
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
|
||||
@@ -4,45 +4,44 @@
|
||||
* @author Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
app.directive('appPopoverMenuUtils', function () {
|
||||
'use strict';
|
||||
return {
|
||||
restrict: 'C',
|
||||
link: function (scope, elm) {
|
||||
var menu = elm.find('.popovermenu');
|
||||
var button = elm.find('button');
|
||||
button.click(function (e) {
|
||||
menu.toggleClass('hidden');
|
||||
if(!menu.hasClass('hidden')) {
|
||||
button.css('display','block');
|
||||
} else {
|
||||
button.css('display','');
|
||||
}
|
||||
'use strict';
|
||||
return {
|
||||
restrict: 'C',
|
||||
link: function (scope, elm) {
|
||||
var menu = elm.find('.popovermenu');
|
||||
var button = elm.find('button');
|
||||
button.click(function (e) {
|
||||
var popovermenus = $('.popovermenu');
|
||||
var shouldShow = menu.hasClass('hidden');
|
||||
popovermenus.addClass('hidden');
|
||||
if (shouldShow) {
|
||||
menu.toggleClass('hidden');
|
||||
}
|
||||
e.stopPropagation();
|
||||
});
|
||||
scope.$on('documentClicked', function (scope, event) {
|
||||
if (event.target !== button) {
|
||||
menu.addClass('hidden');
|
||||
}
|
||||
button.css('display','');
|
||||
});
|
||||
}
|
||||
};
|
||||
scope.$on('documentClicked', function (scope, event) {
|
||||
/* prevent closing popover if target has no-close class */
|
||||
if (event.target !== button && !$(event.target).hasClass('no-close')) {
|
||||
menu.addClass('hidden');
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
@@ -23,24 +23,24 @@
|
||||
// OwnCloud Click Handling
|
||||
// https://doc.owncloud.org/server/8.0/developer_manual/app/css.html
|
||||
app.directive('appNavigationEntryUtils', function () {
|
||||
'use strict';
|
||||
return {
|
||||
restrict: 'C',
|
||||
link: function (scope, elm) {
|
||||
'use strict';
|
||||
return {
|
||||
restrict: 'C',
|
||||
link: function (scope, elm) {
|
||||
|
||||
var menu = elm.siblings('.app-navigation-entry-menu');
|
||||
var button = $(elm)
|
||||
.find('.app-navigation-entry-utils-menu-button button');
|
||||
var menu = elm.siblings('.app-navigation-entry-menu');
|
||||
var button = $(elm)
|
||||
.find('.app-navigation-entry-utils-menu-button button');
|
||||
|
||||
button.click(function () {
|
||||
menu.toggleClass('open');
|
||||
});
|
||||
scope.$on('documentClicked', function (scope, event) {
|
||||
if (event.target !== button[0]) {
|
||||
menu.removeClass('open');
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
button.click(function () {
|
||||
menu.toggleClass('open');
|
||||
});
|
||||
scope.$on('documentClicked', function (scope, event) {
|
||||
if (event.target !== button[0]) {
|
||||
menu.removeClass('open');
|
||||
}
|
||||
});
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
*/
|
||||
|
||||
app.directive('autofocusOnInsert', function () {
|
||||
'use strict';
|
||||
return function (scope, elm) {
|
||||
elm.focus();
|
||||
};
|
||||
'use strict';
|
||||
return function (scope, elm) {
|
||||
elm.focus();
|
||||
};
|
||||
});
|
||||
@@ -23,14 +23,28 @@
|
||||
app.directive('avatar', function() {
|
||||
'use strict';
|
||||
return {
|
||||
restrict: 'A',
|
||||
scope: true,
|
||||
restrict: 'AEC',
|
||||
transclude: true,
|
||||
replace: true,
|
||||
template: '<div class="avatardiv-container"><div class="avatardiv" data-toggle="tooltip" ng-transclude></div></div>',
|
||||
scope: { attr: '=' },
|
||||
link: function(scope, element, attr){
|
||||
attr.$observe('displayname', function(value){
|
||||
if(value!==undefined) {
|
||||
$(element).avatar(value, 32);
|
||||
}
|
||||
});
|
||||
}
|
||||
scope.uid = attr.displayname;
|
||||
scope.displayname = attr.displayname;
|
||||
var value = attr.user;
|
||||
var avatardiv = $(element).find('.avatardiv');
|
||||
if(typeof attr.contactsmenu !== 'undefined' && attr.contactsmenu !== 'false') {
|
||||
avatardiv.contactsMenu(value, 0, $(element));
|
||||
avatardiv.addClass('has-contactsmenu');
|
||||
}
|
||||
if(typeof attr.tooltip !== 'undefined' && attr.tooltip !== 'false') {
|
||||
$(element).tooltip({
|
||||
title: scope.displayname,
|
||||
placement: 'top'
|
||||
});
|
||||
}
|
||||
avatardiv.avatar(value, 32, false, false, false, attr.displayname);
|
||||
},
|
||||
controller: function () {}
|
||||
};
|
||||
});
|
||||
41
js/directive/contactsmenudelete.js
Normal file
41
js/directive/contactsmenudelete.js
Normal file
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* @copyright Copyright (c) 2018 Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @author Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
app.directive('contactsmenudelete', function() {
|
||||
'use strict';
|
||||
return {
|
||||
restrict: 'A',
|
||||
priority: 1,
|
||||
link: function(scope, element, attr){
|
||||
var user = attr.user;
|
||||
var menu = $(element).parent().find('.contactsmenu-popover');
|
||||
if (oc_current_user === user) {
|
||||
menu.children(':first').remove();
|
||||
}
|
||||
var menuEntry = $('<li><a><span class="icon icon-delete"></span><span>' + t('deck', 'Remove user from card') + '</span></a></li>');
|
||||
menuEntry.on('click', function () {
|
||||
scope.removeAssignedUser(user);
|
||||
});
|
||||
$(menu).append(menuEntry);
|
||||
}
|
||||
};
|
||||
});
|
||||
53
js/directive/datepicker.js
Normal file
53
js/directive/datepicker.js
Normal file
@@ -0,0 +1,53 @@
|
||||
/*
|
||||
* @copyright Copyright (c) 2017 Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @author Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/* global app */
|
||||
/* gloabl t */
|
||||
/* global moment */
|
||||
|
||||
app.directive('datepicker', function () {
|
||||
'use strict';
|
||||
return {
|
||||
link: function (scope, elm, attr) {
|
||||
return elm.datepicker({
|
||||
dateFormat: 'yy-mm-dd',
|
||||
onSelect: function(date, inst) {
|
||||
scope.setDuedate(moment(date));
|
||||
scope.$apply();
|
||||
},
|
||||
beforeShow: function(input, inst) {
|
||||
var dp, marginLeft;
|
||||
dp = $(inst).datepicker('widget');
|
||||
marginLeft = -Math.abs($(input).outerWidth() - dp.outerWidth()) / 2 + 'px';
|
||||
dp.css({
|
||||
'margin-left': marginLeft
|
||||
});
|
||||
$('div.ui-datepicker:before').css({
|
||||
'left': 100 + 'px'
|
||||
});
|
||||
return $('.hasDatepicker').datepicker();
|
||||
},
|
||||
minDate: null
|
||||
});
|
||||
}
|
||||
};
|
||||
});
|
||||
45
js/directive/timepicker.js
Normal file
45
js/directive/timepicker.js
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* @copyright Copyright (c) 2017 Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @author Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/* global app */
|
||||
/* global t */
|
||||
/* global moment */
|
||||
|
||||
app.directive('timepicker', function() {
|
||||
'use strict';
|
||||
return {
|
||||
restrict: 'A',
|
||||
link: function(scope, elm, attr) {
|
||||
return elm.timepicker({
|
||||
onSelect: function(date, inst) {
|
||||
scope.setDuedateTime(moment('2000-01-01 ' + date));
|
||||
scope.$apply();
|
||||
},
|
||||
myPosition: 'center top',
|
||||
atPosition: 'center bottom',
|
||||
hourText: t('deck', 'Hours'),
|
||||
minuteText: t('deck', 'Minutes'),
|
||||
showPeriodLabels: false
|
||||
});
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -1,27 +1,33 @@
|
||||
/*
|
||||
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
|
||||
* @copyright Copyright (c) 2017 Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @author Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
app.filter('relativeDateFilter', function() {
|
||||
return function (timestamp) {
|
||||
return OC.Util.relativeModifiedDate(timestamp*1000);
|
||||
}
|
||||
});
|
||||
app.filter('boardFilterAcl', function() {
|
||||
return function(boards) {
|
||||
var _result = [];
|
||||
angular.forEach(boards, function(board){
|
||||
if(board.acl !== null && Object.keys(board.acl).length > 0) {
|
||||
_result.push(board);
|
||||
}
|
||||
});
|
||||
return _result;
|
||||
};
|
||||
});
|
||||
@@ -23,16 +23,17 @@
|
||||
// usage | cardFilter({ member: 'admin'})
|
||||
|
||||
app.filter('cardFilter', function() {
|
||||
return function(cards, rules) {
|
||||
var _result = {};
|
||||
return function(cards, rules) {
|
||||
var _result = [];
|
||||
angular.forEach(cards, function(card){
|
||||
var _card = card;
|
||||
angular.some(rules, function(rule, condition) {
|
||||
if(_card[rule]===condition) {
|
||||
var keys = Object.keys(rules);
|
||||
keys.some(function(key, condition) {
|
||||
if(_card[key]===rules[key]) {
|
||||
_result.push(_card);
|
||||
}
|
||||
});
|
||||
});
|
||||
return result;
|
||||
};
|
||||
return _result;
|
||||
};
|
||||
});
|
||||
61
js/filters/dateFilters.js
Normal file
61
js/filters/dateFilters.js
Normal file
@@ -0,0 +1,61 @@
|
||||
/*
|
||||
* @copyright Copyright (c) 2016 Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @author Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/* global app */
|
||||
/* global OC */
|
||||
/* global moment */
|
||||
|
||||
app.filter('relativeDateFilter', function() {
|
||||
return function (timestamp) {
|
||||
return OC.Util.relativeModifiedDate(timestamp*1000);
|
||||
};
|
||||
});
|
||||
|
||||
app.filter('relativeDateFilterString', function() {
|
||||
return function (date) {
|
||||
return OC.Util.relativeModifiedDate(Date.parse(date));
|
||||
};
|
||||
});
|
||||
|
||||
app.filter('dateToTimestamp', function() {
|
||||
return function (date) {
|
||||
return Date.parse(date);
|
||||
};
|
||||
});
|
||||
|
||||
app.filter('parseDate', function() {
|
||||
return function (date) {
|
||||
if(moment(date).isValid()) {
|
||||
return moment(date).format('YYYY-MM-DD');
|
||||
}
|
||||
return '';
|
||||
};
|
||||
});
|
||||
|
||||
app.filter('parseTime', function() {
|
||||
return function (date) {
|
||||
if(moment(date).isValid()) {
|
||||
return moment(date).format('HH:mm');
|
||||
}
|
||||
return '';
|
||||
};
|
||||
});
|
||||
@@ -20,7 +20,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
app.filter('iconWhiteFilter', function() {
|
||||
app.filter('iconWhiteFilter', function () {
|
||||
return function (hex) {
|
||||
// RGB2HLS by Garry Tan
|
||||
// http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c
|
||||
@@ -30,36 +30,37 @@ app.filter('iconWhiteFilter', function() {
|
||||
g: parseInt(result[2], 16),
|
||||
b: parseInt(result[3], 16)
|
||||
} : null;
|
||||
if(result !== null) {
|
||||
var r = color.r/255;
|
||||
var g = color.g/255;
|
||||
var b = color.b/255;
|
||||
var max = Math.max(r, g, b), min = Math.min(r, g, b);
|
||||
var h, s, l = (max + min) / 2;
|
||||
if (result === null) {
|
||||
return "";
|
||||
}
|
||||
var r = color.r / 255;
|
||||
var g = color.g / 255;
|
||||
var b = color.b / 255;
|
||||
var max = Math.max(r, g, b), min = Math.min(r, g, b);
|
||||
var h, s, l = (max + min) / 2;
|
||||
|
||||
if(max == min){
|
||||
h = s = 0; // achromatic
|
||||
}else{
|
||||
var d = max - min;
|
||||
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
||||
switch(max){
|
||||
case r: h = (g - b) / d + (g < b ? 6 : 0); break;
|
||||
case g: h = (b - r) / d + 2; break;
|
||||
case b: h = (r - g) / d + 4; break;
|
||||
}
|
||||
h /= 6;
|
||||
if (max === min) {
|
||||
h = s = 0; // achromatic
|
||||
} else {
|
||||
var d = max - min;
|
||||
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
||||
switch (max) {
|
||||
case r:
|
||||
h = (g - b) / d + (g < b ? 6 : 0);
|
||||
break;
|
||||
case g:
|
||||
h = (b - r) / d + 2;
|
||||
break;
|
||||
case b:
|
||||
h = (r - g) / d + 4;
|
||||
break;
|
||||
}
|
||||
// TODO: Maybe just darken/lighten the color
|
||||
if(l<0.5) {
|
||||
return "-white";
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
//var rgba = "rgba(" + color.r + "," + color.g + "," + color.b + ",0.7)";
|
||||
//return rgba;
|
||||
h /= 6;
|
||||
}
|
||||
if (l < 0.5) {
|
||||
return "-white";
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
@@ -33,5 +33,5 @@ app.filter('lightenColorFilter', function() {
|
||||
} else {
|
||||
return "#" + hex;
|
||||
}
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -22,10 +22,14 @@
|
||||
|
||||
app.filter('orderObjectBy', function(){
|
||||
return function(input, attribute) {
|
||||
if (!angular.isObject(input)) return input;
|
||||
if (!angular.isObject(input)) {
|
||||
return input;
|
||||
}
|
||||
var array = [];
|
||||
for(var objectKey in input) {
|
||||
array.push(input[objectKey]);
|
||||
if ({}.hasOwnProperty.call(input, objectKey)) {
|
||||
array.push(input[objectKey]);
|
||||
}
|
||||
}
|
||||
|
||||
array.sort(function(a, b){
|
||||
@@ -34,5 +38,5 @@ app.filter('orderObjectBy', function(){
|
||||
return a < b;
|
||||
});
|
||||
return array;
|
||||
}
|
||||
};
|
||||
});
|
||||
@@ -20,36 +20,42 @@
|
||||
*
|
||||
*/
|
||||
|
||||
app.filter('textColorFilter', function() {
|
||||
app.filter('textColorFilter', function () {
|
||||
return function (hex) {
|
||||
// RGB2HLS by Garry Tan
|
||||
// http://axonflux.com/handy-rgb-to-hsl-and-rgb-to-hsv-color-model-c
|
||||
var result = /^([A-Fa-f\d]{2})([A-Fa-f\d]{2})([A-Fa-f\d]{2})$/i.exec(hex);
|
||||
var result = /^#?([A-Fa-f\d]{2})([A-Fa-f\d]{2})([A-Fa-f\d]{2})$/i.exec(hex);
|
||||
var color = result ? {
|
||||
r: parseInt(result[1], 16),
|
||||
g: parseInt(result[2], 16),
|
||||
b: parseInt(result[3], 16)
|
||||
} : null;
|
||||
if(result !== null) {
|
||||
var r = color.r/255;
|
||||
var g = color.g/255;
|
||||
var b = color.b/255;
|
||||
if (result !== null) {
|
||||
var r = color.r / 255;
|
||||
var g = color.g / 255;
|
||||
var b = color.b / 255;
|
||||
var max = Math.max(r, g, b), min = Math.min(r, g, b);
|
||||
var h, s, l = (max + min) / 2;
|
||||
|
||||
if(max == min){
|
||||
if (max === min) {
|
||||
h = s = 0; // achromatic
|
||||
}else{
|
||||
} else {
|
||||
var d = max - min;
|
||||
s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
||||
switch(max){
|
||||
case r: h = (g - b) / d + (g < b ? 6 : 0); break;
|
||||
case g: h = (b - r) / d + 2; break;
|
||||
case b: h = (r - g) / d + 4; break;
|
||||
switch (max) {
|
||||
case r:
|
||||
h = (g - b) / d + (g < b ? 6 : 0);
|
||||
break;
|
||||
case g:
|
||||
h = (b - r) / d + 2;
|
||||
break;
|
||||
case b:
|
||||
h = (r - g) / d + 4;
|
||||
break;
|
||||
}
|
||||
h /= 6;
|
||||
}
|
||||
if(l<0.5) {
|
||||
if (l < 0.5) {
|
||||
return "#ffffff";
|
||||
} else {
|
||||
return "#000000";
|
||||
@@ -58,5 +64,5 @@ app.filter('textColorFilter', function() {
|
||||
return "#000000";
|
||||
}
|
||||
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
45
js/filters/withoutAssignedUsers.js
Normal file
45
js/filters/withoutAssignedUsers.js
Normal file
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* @copyright Copyright (c) 2017 Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @author Julius Härtl <jus@bitgrid.net>
|
||||
*
|
||||
* @license GNU AGPL version 3 or any later version
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
/* global app */
|
||||
/* global angular */
|
||||
|
||||
/*
|
||||
* Remove all assignedUsers from users list
|
||||
*/
|
||||
app.filter('withoutAssignedUsers', function () {
|
||||
return function (users, assignedUsers) {
|
||||
var _result = [];
|
||||
angular.forEach(users, function (user) {
|
||||
var _found = false;
|
||||
angular.forEach(assignedUsers, function (assignedUser) {
|
||||
if (assignedUser.participant.uid === user.uid) {
|
||||
_found = true;
|
||||
}
|
||||
});
|
||||
if (_found === false) {
|
||||
_result.push(user);
|
||||
}
|
||||
});
|
||||
return _result;
|
||||
};
|
||||
});
|
||||
@@ -16,7 +16,8 @@
|
||||
"grunt-phpunit": "^0.3.6",
|
||||
"grunt-wrap": "^0.3.0",
|
||||
"jshint-stylish": "^2.2.1",
|
||||
"karma": "^1.4.1"
|
||||
"karma": "^1.4.1",
|
||||
"node-sass": "^4.5.3"
|
||||
},
|
||||
"scripts": {
|
||||
"test": "echo \"Warning: no test specified\" && exit 0"
|
||||
|
||||
@@ -20,147 +20,154 @@
|
||||
*
|
||||
*/
|
||||
|
||||
app.factory('ApiService', function($http, $q){
|
||||
var ApiService = function(http, endpoint) {
|
||||
this.endpoint = endpoint;
|
||||
this.baseUrl = OC.generateUrl('/apps/deck/' + endpoint);
|
||||
this.http = http;
|
||||
this.q = $q;
|
||||
this.data = {};
|
||||
this.id = null;
|
||||
this.sorted = [];
|
||||
};
|
||||
/** global: oc_defaults */
|
||||
app.factory('ApiService', function ($http, $q) {
|
||||
var ApiService = function (http, endpoint) {
|
||||
this.endpoint = endpoint;
|
||||
this.baseUrl = OC.generateUrl('/apps/deck/' + endpoint);
|
||||
this.http = http;
|
||||
this.q = $q;
|
||||
this.data = {};
|
||||
this.id = null;
|
||||
this.sorted = [];
|
||||
};
|
||||
|
||||
ApiService.prototype.fetchAll = function(){
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.get(this.baseUrl).then(function (response) {
|
||||
var objects = response.data;
|
||||
objects.forEach(function (obj) {
|
||||
self.data[obj.id] = obj;
|
||||
});
|
||||
deferred.resolve(self.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Fetching ' + self.endpoint + ' failed');
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
ApiService.prototype.fetchAll = function () {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.get(this.baseUrl).then(function (response) {
|
||||
var objects = response.data;
|
||||
objects.forEach(function (obj) {
|
||||
self.data[obj.id] = obj;
|
||||
});
|
||||
deferred.resolve(self.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Fetching ' + self.endpoint + ' failed');
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
ApiService.prototype.fetchOne = function (id) {
|
||||
ApiService.prototype.fetchOne = function (id) {
|
||||
|
||||
this.id = id;
|
||||
var deferred = $q.defer();
|
||||
this.id = id;
|
||||
var deferred = $q.defer();
|
||||
|
||||
if(id===undefined) {
|
||||
return deferred.promise;
|
||||
}
|
||||
if (id === undefined) {
|
||||
return deferred.promise;
|
||||
}
|
||||
|
||||
var self = this;
|
||||
$http.get(this.baseUrl + '/' + id).then(function (response) {
|
||||
data = response.data;
|
||||
if(self.data[data.id]===undefined) {
|
||||
self.data[data.id] = response.data;
|
||||
}
|
||||
$.each(response.data, function(key, value) {
|
||||
self.data[data.id][key] = value;
|
||||
});
|
||||
deferred.resolve(response.data);
|
||||
var self = this;
|
||||
$http.get(this.baseUrl + '/' + id).then(function (response) {
|
||||
var data = response.data;
|
||||
if (self.data[data.id] === undefined) {
|
||||
self.data[data.id] = response.data;
|
||||
}
|
||||
$.each(response.data, function (key, value) {
|
||||
self.data[data.id][key] = value;
|
||||
});
|
||||
deferred.resolve(response.data);
|
||||
|
||||
}, function (error) {
|
||||
deferred.reject('Fetching ' + self.endpoint + ' failed');
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
}, function (error) {
|
||||
deferred.reject('Fetching ' + self.endpoint + ' failed');
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
ApiService.prototype.create = function (entity) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.post(this.baseUrl, entity).then(function (response) {
|
||||
self.add(response.data);
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Fetching' + self.endpoint + ' failed');
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
ApiService.prototype.create = function (entity) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.post(this.baseUrl, entity).then(function (response) {
|
||||
self.add(response.data);
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Fetching' + self.endpoint + ' failed');
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
ApiService.prototype.update = function (entity) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.put(this.baseUrl + '/' + entity.id, entity).then(function (response) {
|
||||
self.add(response.data);
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Updating ' + self.endpoint + ' failed');
|
||||
});
|
||||
return deferred.promise;
|
||||
ApiService.prototype.update = function (entity) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.put(this.baseUrl + '/' + entity.id, entity).then(function (response) {
|
||||
self.add(response.data);
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Updating ' + self.endpoint + ' failed');
|
||||
});
|
||||
return deferred.promise;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
ApiService.prototype.delete = function (id) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
ApiService.prototype.delete = function (id) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
|
||||
$http.delete(this.baseUrl + '/' + id).then(function (response) {
|
||||
self.remove(id);
|
||||
deferred.resolve(response.data);
|
||||
$http.delete(this.baseUrl + '/' + id).then(function (response) {
|
||||
self.remove(id);
|
||||
deferred.resolve(response.data);
|
||||
|
||||
}, function (error) {
|
||||
deferred.reject('Deleting ' + self.endpoint + ' failed');
|
||||
});
|
||||
return deferred.promise;
|
||||
}, function (error) {
|
||||
deferred.reject('Deleting ' + self.endpoint + ' failed');
|
||||
});
|
||||
return deferred.promise;
|
||||
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
// methods for managing data
|
||||
ApiService.prototype.clear = function() {
|
||||
this.data = {};
|
||||
};
|
||||
ApiService.prototype.add = function (entity) {
|
||||
var element = this.data[entity.id];
|
||||
if(element===undefined) {
|
||||
this.data[entity.id] = entity;
|
||||
} else {
|
||||
Object.keys(entity).forEach(function (key) {
|
||||
element[key] = entity[key];
|
||||
if(element[key]!==null)
|
||||
element[key].status = {};
|
||||
});
|
||||
}
|
||||
};
|
||||
ApiService.prototype.remove = function(id) {
|
||||
if (this.data[id] !== undefined) {
|
||||
delete this.data[id];
|
||||
}
|
||||
};
|
||||
ApiService.prototype.addAll = function (entities) {
|
||||
var self = this;
|
||||
angular.forEach(entities, function(entity) {
|
||||
self.add(entity);
|
||||
});
|
||||
};
|
||||
|
||||
ApiService.prototype.getCurrent = function () {
|
||||
return this.data[this.id];
|
||||
};
|
||||
// methods for managing data
|
||||
ApiService.prototype.clear = function () {
|
||||
this.data = {};
|
||||
};
|
||||
ApiService.prototype.add = function (entity) {
|
||||
var element = this.data[entity.id];
|
||||
if (element === undefined) {
|
||||
this.data[entity.id] = entity;
|
||||
} else {
|
||||
Object.keys(entity).forEach(function (key) {
|
||||
if (entity[key] !== null) {
|
||||
element[key] = entity[key];
|
||||
}
|
||||
});
|
||||
element.status = {};
|
||||
}
|
||||
};
|
||||
ApiService.prototype.remove = function (id) {
|
||||
if (this.data[id] !== undefined) {
|
||||
delete this.data[id];
|
||||
}
|
||||
};
|
||||
ApiService.prototype.addAll = function (entities) {
|
||||
var self = this;
|
||||
angular.forEach(entities, function (entity) {
|
||||
self.add(entity);
|
||||
});
|
||||
};
|
||||
|
||||
ApiService.prototype.getData = function() {
|
||||
return $.map(this.data, function(value, index) {
|
||||
return [value];
|
||||
});
|
||||
};
|
||||
ApiService.prototype.getCurrent = function () {
|
||||
return this.data[this.id];
|
||||
};
|
||||
|
||||
ApiService.prototype.getAll = function () {
|
||||
return this.data;
|
||||
};
|
||||
ApiService.prototype.unsetCurrrent = function () {
|
||||
this.id = null;
|
||||
};
|
||||
|
||||
ApiService.prototype.getName = function() {
|
||||
var funcNameRegex = /function (.{1,})\(/;
|
||||
var results = (funcNameRegex).exec((this).constructor.toString());
|
||||
return (results && results.length > 1) ? results[1] : "";
|
||||
};
|
||||
|
||||
return ApiService;
|
||||
ApiService.prototype.getData = function () {
|
||||
return $.map(this.data, function (value, index) {
|
||||
return [value];
|
||||
});
|
||||
};
|
||||
|
||||
ApiService.prototype.getAll = function () {
|
||||
return this.data;
|
||||
};
|
||||
|
||||
ApiService.prototype.getName = function () {
|
||||
var funcNameRegex = /function (.{1,})\(/;
|
||||
var results = (funcNameRegex).exec((this).constructor.toString());
|
||||
return (results && results.length > 1) ? results[1] : "";
|
||||
};
|
||||
|
||||
return ApiService;
|
||||
|
||||
});
|
||||
|
||||
@@ -20,127 +20,238 @@
|
||||
*
|
||||
*/
|
||||
|
||||
app.factory('BoardService', function(ApiService, $http, $q){
|
||||
var BoardService = function($http, ep, $q) {
|
||||
ApiService.call(this, $http, ep, $q);
|
||||
};
|
||||
BoardService.prototype = angular.copy(ApiService.prototype);
|
||||
/* global app OC */
|
||||
app.factory('BoardService', function (ApiService, $http, $q) {
|
||||
var BoardService = function ($http, ep, $q) {
|
||||
ApiService.call(this, $http, ep, $q);
|
||||
};
|
||||
BoardService.prototype = angular.copy(ApiService.prototype);
|
||||
|
||||
BoardService.prototype.searchUsers = function(search) {
|
||||
var url = OC.generateUrl('/apps/deck/share/search/'+search);
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.get(url).then(function (response) {
|
||||
BoardService.prototype.delete = function (id) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
|
||||
self.sharees = [];
|
||||
// filter out everyone who is already in the share list
|
||||
angular.forEach(response.data, function(item) {
|
||||
var exists = false;
|
||||
angular.forEach(self.getCurrent().acl, function(acl) {
|
||||
if (acl.participant === item.participant) {
|
||||
exists = true;
|
||||
}
|
||||
});
|
||||
if(!exists) {
|
||||
self.sharees.push(item);
|
||||
}
|
||||
});
|
||||
$http.delete(this.baseUrl + '/' + id).then(function (response) {
|
||||
self.data[id].deletedAt = response.data.deletedAt;
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Deleting ' + self.endpoint + ' failed');
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while update ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
BoardService.prototype.deleteUndo = function (id) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
var _id = id;
|
||||
$http.post(this.baseUrl + '/' + id + '/deleteUndo').then(function (response) {
|
||||
self.data[_id].deletedAt = 0;
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Deleting ' + self.endpoint + ' failed');
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
BoardService.prototype.addAcl = function(acl) {
|
||||
var board = this.getCurrent();
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
var _acl = acl;
|
||||
$http.post(this.baseUrl + '/' + acl.boardId + '/acl', _acl).then(function (response) {
|
||||
if(!board.acl) {
|
||||
board.acl = {};
|
||||
}
|
||||
board.acl[response.data.id] = response.data;
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error creating ACL ' + _acl);
|
||||
});
|
||||
acl = null;
|
||||
return deferred.promise;
|
||||
};
|
||||
BoardService.prototype.searchUsers = function (search) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
var searchData = {
|
||||
format: 'json',
|
||||
perPage: 4,
|
||||
itemType: [0, 1]
|
||||
};
|
||||
if (search !== "") {
|
||||
searchData.search = search;
|
||||
}
|
||||
$http({
|
||||
method: 'GET',
|
||||
url: OC.linkToOCS('apps/files_sharing/api/v1') + 'sharees',
|
||||
params: searchData
|
||||
})
|
||||
.then(function (result) {
|
||||
var response = result.data;
|
||||
if (response.ocs.meta.statuscode !== 100) {
|
||||
deferred.reject('Error while searching for sharees');
|
||||
return;
|
||||
}
|
||||
self.sharees = [];
|
||||
|
||||
BoardService.prototype.deleteAcl = function(acl) {
|
||||
var board = this.getCurrent();
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.delete(this.baseUrl + '/' + acl.boardId + '/acl/' + acl.id).then(function (response) {
|
||||
delete board.acl[response.data.id];
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error deleting ACL ' + acl.id);
|
||||
});
|
||||
acl = null;
|
||||
return deferred.promise;
|
||||
};
|
||||
var users = response.ocs.data.exact.users.concat(response.ocs.data.users.slice(0, 4));
|
||||
var groups = response.ocs.data.exact.groups.concat(response.ocs.data.groups.slice(0, 4));
|
||||
|
||||
BoardService.prototype.updateAcl = function(acl) {
|
||||
var board = this.getCurrent();
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
var _acl = acl;
|
||||
$http.put(this.baseUrl + '/' + acl.boardId + '/acl', _acl).then(function (response) {
|
||||
board.acl[_acl.id] = response.data;
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error updating ACL ' + _acl);
|
||||
});
|
||||
acl = null;
|
||||
return deferred.promise;
|
||||
};
|
||||
// filter out everyone who is already in the share list
|
||||
angular.forEach(users, function (item) {
|
||||
var acl = self.generateAcl(OC.Share.SHARE_TYPE_USER, item);
|
||||
var exists = false;
|
||||
angular.forEach(self.getCurrent().acl, function (acl) {
|
||||
if (acl.participant.primaryKey === item.value.shareWith) {
|
||||
exists = true;
|
||||
}
|
||||
});
|
||||
if (!exists && OC.getCurrentUser().uid !== item.value.shareWith) {
|
||||
self.sharees.push(acl);
|
||||
}
|
||||
});
|
||||
angular.forEach(groups, function (item) {
|
||||
var acl = self.generateAcl(OC.Share.SHARE_TYPE_GROUP, item);
|
||||
var exists = false;
|
||||
angular.forEach(self.getCurrent().acl, function (acl) {
|
||||
if (acl.participant.primaryKey === item.value.shareWith) {
|
||||
exists = true;
|
||||
}
|
||||
});
|
||||
if (!exists) {
|
||||
self.sharees.push(acl);
|
||||
}
|
||||
});
|
||||
|
||||
BoardService.prototype.getPermissions = function() {
|
||||
var board = this.getCurrent();
|
||||
var deferred = $q.defer();
|
||||
$http.get(this.baseUrl + '/' + board.id + '/permissions').then(function (response) {
|
||||
board.permissions = response.data;
|
||||
console.log(board.permissions);
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error fetching board permissions ' + board);
|
||||
});
|
||||
};
|
||||
deferred.resolve(self.sharees);
|
||||
}, function () {
|
||||
deferred.reject('Error while searching for sharees');
|
||||
});
|
||||
|
||||
BoardService.prototype.canRead = function() {
|
||||
if(!this.getCurrent() || !this.getCurrent().permissions) {
|
||||
return false;
|
||||
}
|
||||
return this.getCurrent().permissions['PERMISSION_READ'];
|
||||
}
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
BoardService.prototype.canEdit = function() {
|
||||
if(!this.getCurrent() || !this.getCurrent().permissions) {
|
||||
return false;
|
||||
}
|
||||
return this.getCurrent().permissions['PERMISSION_EDIT'];
|
||||
}
|
||||
BoardService.prototype.generateAcl = function (type, ocsItem) {
|
||||
return {
|
||||
boardId: null,
|
||||
id: null,
|
||||
owner: false,
|
||||
participant: {
|
||||
primaryKey: ocsItem.value.shareWith,
|
||||
uid: ocsItem.value.shareWith,
|
||||
displayname: ocsItem.label
|
||||
},
|
||||
permissionEdit: true,
|
||||
permissionManage: true,
|
||||
permissionShare: true,
|
||||
type: type
|
||||
};
|
||||
};
|
||||
|
||||
BoardService.prototype.canManage = function() {
|
||||
if(!this.getCurrent() || !this.getCurrent().permissions) {
|
||||
return false;
|
||||
}
|
||||
return this.getCurrent().permissions['PERMISSION_MANAGE'];
|
||||
}
|
||||
BoardService.prototype.addAcl = function (acl) {
|
||||
var board = this.getCurrent();
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
var _acl = acl;
|
||||
$http.post(this.baseUrl + '/' + acl.boardId + '/acl', _acl).then(function (response) {
|
||||
if (!board.acl || board.acl.length === 0) {
|
||||
board.acl = {};
|
||||
}
|
||||
board.acl[response.data.id] = response.data;
|
||||
if (response.data.type === OC.Share.SHARE_TYPE_USER) {
|
||||
self._updateUsers();
|
||||
} else {
|
||||
self.fetchOne(response.data.boardId);
|
||||
}
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error creating ACL ' + _acl);
|
||||
});
|
||||
acl = null;
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
BoardService.prototype.canShare = function() {
|
||||
if(!this.getCurrent() || !this.getCurrent().permissions) {
|
||||
return false;
|
||||
}
|
||||
return this.getCurrent().permissions['PERMISSION_SHARE'];
|
||||
}
|
||||
BoardService.prototype.deleteAcl = function (acl) {
|
||||
var board = this.getCurrent();
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.delete(this.baseUrl + '/' + acl.boardId + '/acl/' + acl.id).then(function (response) {
|
||||
delete board.acl[response.data.id];
|
||||
if (response.data.type === OC.Share.SHARE_TYPE_USER) {
|
||||
self._updateUsers();
|
||||
} else {
|
||||
self.fetchOne(response.data.boardId);
|
||||
}
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error deleting ACL ' + acl.id);
|
||||
});
|
||||
acl = null;
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
service = new BoardService($http, 'boards', $q);
|
||||
return service;
|
||||
|
||||
});
|
||||
BoardService.prototype.updateAcl = function (acl) {
|
||||
var board = this.getCurrent();
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
var _acl = acl;
|
||||
$http.put(this.baseUrl + '/' + acl.boardId + '/acl', _acl).then(function (response) {
|
||||
board.acl[_acl.id] = response.data;
|
||||
if (response.data.type === OC.Share.SHARE_TYPE_USER) {
|
||||
self._updateUsers();
|
||||
} else {
|
||||
self.fetchOne(response.data.boardId);
|
||||
}
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error updating ACL ' + _acl);
|
||||
});
|
||||
acl = null;
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
BoardService.prototype._updateUsers = function () {
|
||||
if (!this.getCurrent() || !this.getCurrent().acl) {
|
||||
return [];
|
||||
}
|
||||
|
||||
var result = [this.getCurrent().owner];
|
||||
angular.forEach(this.getCurrent().acl, function(value, key) {
|
||||
if (value.type === OC.Share.SHARE_TYPE_USER) {
|
||||
result.push(value.participant);
|
||||
}
|
||||
});
|
||||
this.getCurrent().users = result;
|
||||
};
|
||||
|
||||
BoardService.prototype.getUsers = function () {
|
||||
if (this.getCurrent() && !this.getCurrent().users) {
|
||||
this._updateUsers();
|
||||
}
|
||||
return this.getCurrent().users;
|
||||
};
|
||||
|
||||
BoardService.prototype.canRead = function () {
|
||||
if (!this.getCurrent() || !this.getCurrent().permissions) {
|
||||
return false;
|
||||
}
|
||||
return this.getCurrent().permissions['PERMISSION_READ'];
|
||||
};
|
||||
|
||||
BoardService.prototype.canEdit = function () {
|
||||
if (!this.getCurrent() || !this.getCurrent().permissions) {
|
||||
return false;
|
||||
}
|
||||
return this.getCurrent().permissions['PERMISSION_EDIT'];
|
||||
};
|
||||
|
||||
BoardService.prototype.canManage = function (board) {
|
||||
if (board !== null && board !== undefined) {
|
||||
return board.permissions['PERMISSION_MANAGE'];
|
||||
}
|
||||
if (!this.getCurrent() || !this.getCurrent().permissions) {
|
||||
return false;
|
||||
}
|
||||
return this.getCurrent().permissions['PERMISSION_MANAGE'];
|
||||
};
|
||||
|
||||
BoardService.prototype.canShare = function () {
|
||||
if (!this.getCurrent() || !this.getCurrent().permissions) {
|
||||
return false;
|
||||
}
|
||||
return this.getCurrent().permissions['PERMISSION_SHARE'];
|
||||
};
|
||||
|
||||
BoardService.prototype.isArchived = function () {
|
||||
if (!this.getCurrent() || this.getCurrent().archived) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
return new BoardService($http, 'boards', $q);
|
||||
|
||||
});
|
||||
|
||||
@@ -20,82 +20,118 @@
|
||||
*
|
||||
*/
|
||||
|
||||
app.factory('CardService', function(ApiService, $http, $q){
|
||||
var CardService = function($http, ep, $q) {
|
||||
ApiService.call(this, $http, ep, $q);
|
||||
};
|
||||
CardService.prototype = angular.copy(ApiService.prototype);
|
||||
app.factory('CardService', function (ApiService, $http, $q) {
|
||||
var CardService = function ($http, ep, $q) {
|
||||
ApiService.call(this, $http, ep, $q);
|
||||
};
|
||||
CardService.prototype = angular.copy(ApiService.prototype);
|
||||
|
||||
CardService.prototype.reorder = function(card, order) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.put(this.baseUrl + '/' + card.id + '/reorder', {cardId: card.id, order: order, stackId: card.stackId}).then(function (response) {
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while update ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
CardService.prototype.reorder = function (card, order) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.put(this.baseUrl + '/' + card.id + '/reorder', {
|
||||
cardId: card.id,
|
||||
order: order,
|
||||
stackId: card.stackId
|
||||
}).then(function (response) {
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while update ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
CardService.prototype.rename = function(card) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.put(this.baseUrl + '/' + card.id + '/rename', {cardId: card.id, title: card.title}).then(function (response) {
|
||||
self.data[card.id].title = card.title;
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while renaming ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
CardService.prototype.rename = function (card) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.put(this.baseUrl + '/' + card.id + '/rename', {
|
||||
cardId: card.id,
|
||||
title: card.title
|
||||
}).then(function (response) {
|
||||
self.data[card.id].title = card.title;
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while renaming ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
CardService.prototype.assignLabel = function(card, label) {
|
||||
var url = this.baseUrl + '/' + card + '/label/' + label;
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.post(url).then(function (response) {
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while update ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
CardService.prototype.removeLabel = function(card, label) {
|
||||
var url = this.baseUrl + '/' + card + '/label/' + label;
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.delete(url).then(function (response) {
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while update ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
CardService.prototype.assignLabel = function (card, label) {
|
||||
var url = this.baseUrl + '/' + card + '/label/' + label;
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.post(url).then(function (response) {
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while update ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
CardService.prototype.removeLabel = function (card, label) {
|
||||
var url = this.baseUrl + '/' + card + '/label/' + label;
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.delete(url).then(function (response) {
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while update ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
CardService.prototype.archive = function (card) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.put(this.baseUrl + '/' + card.id + '/archive', {}).then(function (response) {
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while update ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
CardService.prototype.archive = function (card) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.put(this.baseUrl + '/' + card.id + '/archive', {}).then(function (response) {
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while update ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
CardService.prototype.unarchive = function (card) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.put(this.baseUrl + '/' + card.id + '/unarchive', {}).then(function (response) {
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while update ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
CardService.prototype.unarchive = function (card) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.put(this.baseUrl + '/' + card.id + '/unarchive', {}).then(function (response) {
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while update ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
};
|
||||
CardService.prototype.assignUser = function (card, user) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
if (self.getCurrent().assignedUsers === null) {
|
||||
self.getCurrent().assignedUsers = [];
|
||||
}
|
||||
$http.post(this.baseUrl + '/' + card.id + '/assign', {'userId': user}).then(function (response) {
|
||||
self.getCurrent().assignedUsers.push(response.data);
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while update ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
|
||||
service = new CardService($http, 'cards', $q);
|
||||
return service;
|
||||
};
|
||||
|
||||
CardService.prototype.unassignUser = function (card, user) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.delete(this.baseUrl + '/' + card.id + '/assign/' + user, {}).then(function (response) {
|
||||
self.getCurrent().assignedUsers = self.getCurrent().assignedUsers.filter(function (obj) {
|
||||
return obj.participant.uid !== user;
|
||||
});
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while update ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
var service = new CardService($http, 'cards', $q);
|
||||
return service;
|
||||
});
|
||||
@@ -20,11 +20,10 @@
|
||||
*
|
||||
*/
|
||||
|
||||
app.factory('LabelService', function(ApiService, $http, $q){
|
||||
var LabelService = function($http, ep, $q) {
|
||||
ApiService.call(this, $http, ep, $q);
|
||||
};
|
||||
LabelService.prototype = angular.copy(ApiService.prototype);
|
||||
service = new LabelService($http, 'labels', $q);
|
||||
return service;
|
||||
app.factory('LabelService', function (ApiService, $http, $q) {
|
||||
var LabelService = function ($http, ep, $q) {
|
||||
ApiService.call(this, $http, ep, $q);
|
||||
};
|
||||
LabelService.prototype = angular.copy(ApiService.prototype);
|
||||
return new LabelService($http, 'labels', $q);
|
||||
});
|
||||
@@ -20,87 +20,125 @@
|
||||
*
|
||||
*/
|
||||
|
||||
app.factory('StackService', function(ApiService, $http, $q){
|
||||
var StackService = function($http, ep, $q) {
|
||||
ApiService.call(this, $http, ep, $q);
|
||||
};
|
||||
StackService.prototype = angular.copy(ApiService.prototype);
|
||||
StackService.prototype.fetchAll = function(boardId) {
|
||||
var deferred = $q.defer();
|
||||
var self=this;
|
||||
$http.get(this.baseUrl +'/'+boardId).then(function (response) {
|
||||
self.clear();
|
||||
self.addAll(response.data);
|
||||
deferred.resolve(self.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while loading stacks');
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
app.factory('StackService', function (ApiService, $http, $q) {
|
||||
var StackService = function ($http, ep, $q) {
|
||||
ApiService.call(this, $http, ep, $q);
|
||||
};
|
||||
StackService.prototype = angular.copy(ApiService.prototype);
|
||||
StackService.prototype.fetchAll = function (boardId) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.get(this.baseUrl + '/' + boardId).then(function (response) {
|
||||
self.clear();
|
||||
self.addAll(response.data);
|
||||
deferred.resolve(self.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while loading stacks');
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
StackService.prototype.fetchArchived = function(boardId) {
|
||||
var deferred = $q.defer();
|
||||
var self=this;
|
||||
$http.get(this.baseUrl +'/'+boardId+'/archived').then(function (response) {
|
||||
self.clear();
|
||||
self.addAll(response.data);
|
||||
deferred.resolve(self.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while loading stacks');
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
StackService.prototype.fetchArchived = function (boardId) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.get(this.baseUrl + '/' + boardId + '/archived').then(function (response) {
|
||||
self.clear();
|
||||
self.addAll(response.data);
|
||||
deferred.resolve(self.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while loading stacks');
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
StackService.prototype.addCard = function(entity) {
|
||||
if(!this.data[entity.stackId].cards) {
|
||||
this.data[entity.stackId].cards = [];
|
||||
}
|
||||
this.data[entity.stackId].cards.push(entity);
|
||||
};
|
||||
StackService.prototype.addCard = function (entity) {
|
||||
if (!this.data[entity.stackId].cards) {
|
||||
this.data[entity.stackId].cards = [];
|
||||
}
|
||||
this.data[entity.stackId].cards.push(entity);
|
||||
};
|
||||
|
||||
StackService.prototype.reorder = function(entity, order) {
|
||||
// assign new order
|
||||
for(var i=0, j=0;i<this.data[entity.stackId].cards.length;i++) {
|
||||
if(this.data[entity.stackId].cards[i].id === entity.id) {
|
||||
this.data[entity.stackId].cards[i].order = order;
|
||||
}
|
||||
if(j === order) {
|
||||
j++;
|
||||
}
|
||||
if(this.data[entity.stackId].cards[i].id !== entity.id) {
|
||||
this.data[entity.stackId].cards[i].order = j++;
|
||||
}
|
||||
}
|
||||
// sort array by order
|
||||
this.data[entity.stackId].cards.sort(function(a,b) {
|
||||
if (a.order < b.order)
|
||||
return -1;
|
||||
if (a.order > b.order)
|
||||
return 1;
|
||||
return 0;
|
||||
});
|
||||
};
|
||||
StackService.prototype.reorder = function (stack, order) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
$http.put(this.baseUrl + '/' + stack.id + '/reorder', {
|
||||
stackId: stack.id,
|
||||
order: order
|
||||
}).then(function (response) {
|
||||
angular.forEach(response.data, function (value, key) {
|
||||
var id = value.id;
|
||||
self.data[id].order = value.order;
|
||||
});
|
||||
deferred.resolve(response.data);
|
||||
}, function (error) {
|
||||
deferred.reject('Error while update ' + self.endpoint);
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
StackService.prototype.updateCard = function(entity) {
|
||||
var self = this;
|
||||
var cards = this.data[entity.stackId].cards;
|
||||
for(var i=0;i<cards.length;i++) {
|
||||
if(cards[i].id == entity.id) {
|
||||
cards[i] = entity;
|
||||
}
|
||||
}
|
||||
};
|
||||
StackService.prototype.removeCard = function(entity) {
|
||||
var self = this;
|
||||
var cards = this.data[entity.stackId].cards;
|
||||
for(var i=0;i<cards.length;i++) {
|
||||
if(cards[i].id == entity.id) {
|
||||
cards.splice(i, 1);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
service = new StackService($http, 'stacks', $q);
|
||||
return service;
|
||||
StackService.prototype.reorderCard = function (entity, order) {
|
||||
// assign new order
|
||||
for (var i = 0, j = 0; i < this.data[entity.stackId].cards.length; i++) {
|
||||
if (this.data[entity.stackId].cards[i].id === entity.id) {
|
||||
this.data[entity.stackId].cards[i].order = order;
|
||||
}
|
||||
if (j === order) {
|
||||
j++;
|
||||
}
|
||||
if (this.data[entity.stackId].cards[i].id !== entity.id) {
|
||||
this.data[entity.stackId].cards[i].order = j++;
|
||||
}
|
||||
}
|
||||
// sort array by order
|
||||
this.data[entity.stackId].cards.sort(function (a, b) {
|
||||
if (a.order < b.order)
|
||||
{return -1;}
|
||||
if (a.order > b.order)
|
||||
{return 1;}
|
||||
return 0;
|
||||
});
|
||||
};
|
||||
|
||||
StackService.prototype.updateCard = function (entity) {
|
||||
var self = this;
|
||||
var cards = this.data[entity.stackId].cards;
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
if (cards[i].id === entity.id) {
|
||||
cards[i] = entity;
|
||||
}
|
||||
}
|
||||
};
|
||||
StackService.prototype.removeCard = function (entity) {
|
||||
var self = this;
|
||||
var cards = this.data[entity.stackId].cards;
|
||||
for (var i = 0; i < cards.length; i++) {
|
||||
if (cards[i].id === entity.id) {
|
||||
cards.splice(i, 1);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// FIXME: Should not sure popup but proper undo mechanism
|
||||
StackService.prototype.delete = function (id) {
|
||||
var deferred = $q.defer();
|
||||
var self = this;
|
||||
|
||||
OC.dialogs.confirm(t('deck', 'Are you sure you want to delete the stack with all of its data?'), t('deck', 'Delete'), function(state) {
|
||||
if (!state) {
|
||||
return;
|
||||
}
|
||||
$http.delete(self.baseUrl + '/' + id).then(function (response) {
|
||||
self.remove(id);
|
||||
deferred.resolve(response.data);
|
||||
|
||||
}, function (error) {
|
||||
deferred.reject('Deleting ' + self.endpoint + ' failed');
|
||||
});
|
||||
});
|
||||
return deferred.promise;
|
||||
};
|
||||
|
||||
var service = new StackService($http, 'stacks', $q);
|
||||
return service;
|
||||
});
|
||||
|
||||
|
||||
@@ -20,58 +20,61 @@
|
||||
*
|
||||
*/
|
||||
|
||||
app.factory('StatusService', function(){
|
||||
// Status Helper
|
||||
var StatusService = function() {
|
||||
this.active = true;
|
||||
this.icon = 'loading';
|
||||
this.title = '';
|
||||
this.text = '';
|
||||
this.counter = 0;
|
||||
};
|
||||
app.factory('StatusService', function () {
|
||||
// Status Helper
|
||||
var StatusService = function () {
|
||||
this.active = true;
|
||||
this.icon = 'loading';
|
||||
this.title = '';
|
||||
this.text = '';
|
||||
this.counter = 0;
|
||||
};
|
||||
|
||||
|
||||
StatusService.prototype.setStatus = function($icon, $title, $text) {
|
||||
this.active = true;
|
||||
this.icon = $icon;
|
||||
this.title = $title;
|
||||
this.text = $text;
|
||||
};
|
||||
StatusService.prototype.setStatus = function ($icon, $title, $text) {
|
||||
this.active = true;
|
||||
this.icon = $icon;
|
||||
this.title = $title;
|
||||
this.text = $text;
|
||||
};
|
||||
|
||||
StatusService.prototype.setError = function($title, $text) {
|
||||
this.active = true;
|
||||
this.icon = 'error';
|
||||
this.title = $title;
|
||||
this.text = $text;
|
||||
this.counter = 0;
|
||||
};
|
||||
StatusService.prototype.setError = function ($title, $text) {
|
||||
this.active = true;
|
||||
this.icon = 'error';
|
||||
this.title = $title;
|
||||
this.text = $text;
|
||||
this.counter = 0;
|
||||
};
|
||||
|
||||
StatusService.prototype.releaseWaiting = function() {
|
||||
if(this.counter>0)
|
||||
this.counter--;
|
||||
if(this.counter<=0) {
|
||||
this.active = false;
|
||||
this.counter = 0;
|
||||
}
|
||||
};
|
||||
StatusService.prototype.releaseWaiting = function () {
|
||||
if (this.counter > 0) {
|
||||
this.counter--;
|
||||
}
|
||||
if (this.counter <= 0) {
|
||||
this.active = false;
|
||||
this.counter = 0;
|
||||
}
|
||||
};
|
||||
|
||||
StatusService.prototype.retainWaiting = function() {
|
||||
this.active = true;
|
||||
this.icon = 'loading';
|
||||
this.title = '';
|
||||
this.text = '';
|
||||
this.counter++;
|
||||
};
|
||||
StatusService.prototype.retainWaiting = function () {
|
||||
this.active = true;
|
||||
this.icon = 'loading';
|
||||
this.title = '';
|
||||
this.text = '';
|
||||
this.counter++;
|
||||
};
|
||||
|
||||
StatusService.prototype.unsetStatus = function() {
|
||||
this.active = false;
|
||||
};
|
||||
StatusService.prototype.unsetStatus = function () {
|
||||
this.active = false;
|
||||
};
|
||||
|
||||
return {
|
||||
getInstance: function() {
|
||||
return new StatusService();
|
||||
}
|
||||
}
|
||||
return {
|
||||
getInstance: function () {
|
||||
return new StatusService();
|
||||
},
|
||||
/* Shared StatusService instance between both ListController instances */
|
||||
listStatus: new StatusService()
|
||||
};
|
||||
|
||||
});
|
||||
|
||||
|
||||
33
krankerl.toml
Normal file
33
krankerl.toml
Normal file
@@ -0,0 +1,33 @@
|
||||
[package]
|
||||
exclude = [
|
||||
"build/",
|
||||
".git",
|
||||
"js/node_modules",
|
||||
"js/tests",
|
||||
"js/bower.json",
|
||||
"js/.bowerrc",
|
||||
"js/.jshintrc",
|
||||
"js/Gruntfile.js",
|
||||
"js/package.json",
|
||||
"js/package-lock.json",
|
||||
"js/vendor/jquery",
|
||||
"tests",
|
||||
".codecov.yml",
|
||||
"composer.json",
|
||||
"composer.lock",
|
||||
"_config.yml",
|
||||
".drone.yml",
|
||||
".travis.yml",
|
||||
".eslintignore",
|
||||
".eslintrc.yml",
|
||||
".gitignore",
|
||||
"issue_template.md",
|
||||
"krankerl.toml",
|
||||
"Makefile",
|
||||
"run-eslint.sh"
|
||||
]
|
||||
|
||||
before_cmds = [
|
||||
'make clean-build',
|
||||
'make build'
|
||||
]
|
||||
0
l10n/.gitkeep
Normal file
0
l10n/.gitkeep
Normal file
30
l10n/ast.js
Normal file
30
l10n/ast.js
Normal file
@@ -0,0 +1,30 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Desaniciar",
|
||||
"Hours" : "Hores",
|
||||
"Minutes" : "Minutos",
|
||||
"Finished" : "Finó",
|
||||
"Action needed" : "Precísase aición",
|
||||
"Later" : "Más sero",
|
||||
"Deck" : "Deck",
|
||||
"Submit" : "Unviar",
|
||||
"Show archived cards" : "Amosar tarxetes archivaes",
|
||||
"Close" : "Zarrar",
|
||||
"Tags" : "Etiquetes",
|
||||
"Select users or groups to share with" : "Esbilla usuarios o grupos colos que compartir",
|
||||
"No matching user or group found." : "Nun s'alcontró dengún usuariu o grupu que concasara.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Xestionar",
|
||||
"Discard share" : "Escartar compartición",
|
||||
"Title" : "Títulu",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más aiciones",
|
||||
"by" : "por",
|
||||
"Click to set" : "Primi p'afitar",
|
||||
"Description" : "Descripción",
|
||||
"Saved" : "Guardóse"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
28
l10n/ast.json
Normal file
28
l10n/ast.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Desaniciar",
|
||||
"Hours" : "Hores",
|
||||
"Minutes" : "Minutos",
|
||||
"Finished" : "Finó",
|
||||
"Action needed" : "Precísase aición",
|
||||
"Later" : "Más sero",
|
||||
"Deck" : "Deck",
|
||||
"Submit" : "Unviar",
|
||||
"Show archived cards" : "Amosar tarxetes archivaes",
|
||||
"Close" : "Zarrar",
|
||||
"Tags" : "Etiquetes",
|
||||
"Select users or groups to share with" : "Esbilla usuarios o grupos colos que compartir",
|
||||
"No matching user or group found." : "Nun s'alcontró dengún usuariu o grupu que concasara.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Xestionar",
|
||||
"Discard share" : "Escartar compartición",
|
||||
"Title" : "Títulu",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más aiciones",
|
||||
"by" : "por",
|
||||
"Click to set" : "Primi p'afitar",
|
||||
"Description" : "Descripción",
|
||||
"Saved" : "Guardóse"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
24
l10n/bg.js
Normal file
24
l10n/bg.js
Normal file
@@ -0,0 +1,24 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Изтриване",
|
||||
"Finished" : "Завършен",
|
||||
"To review" : "За преглед",
|
||||
"Action needed" : "Необходимо е действие",
|
||||
"Later" : "По-късно",
|
||||
"Archive" : "Архивиране",
|
||||
"Unarchive" : "Разархивиране",
|
||||
"Sharing" : "Споделяне",
|
||||
"Select users or groups to share with" : "Избор на потребители и групи за споделяне",
|
||||
"No matching user or group found." : "Не са намерени съвпадащи потребители или групи",
|
||||
"Share" : "Сподели",
|
||||
"Edit" : "Редакция",
|
||||
"Manage" : "Управление",
|
||||
"Discard share" : "Отхвърляне на споделяне",
|
||||
"Members" : "Членове",
|
||||
"Modified:" : "Променен на:",
|
||||
"Created:" : "Създаден на:",
|
||||
"by" : "от",
|
||||
"Saved" : "Запазено"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
22
l10n/bg.json
Normal file
22
l10n/bg.json
Normal file
@@ -0,0 +1,22 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Изтриване",
|
||||
"Finished" : "Завършен",
|
||||
"To review" : "За преглед",
|
||||
"Action needed" : "Необходимо е действие",
|
||||
"Later" : "По-късно",
|
||||
"Archive" : "Архивиране",
|
||||
"Unarchive" : "Разархивиране",
|
||||
"Sharing" : "Споделяне",
|
||||
"Select users or groups to share with" : "Избор на потребители и групи за споделяне",
|
||||
"No matching user or group found." : "Не са намерени съвпадащи потребители или групи",
|
||||
"Share" : "Сподели",
|
||||
"Edit" : "Редакция",
|
||||
"Manage" : "Управление",
|
||||
"Discard share" : "Отхвърляне на споделяне",
|
||||
"Members" : "Членове",
|
||||
"Modified:" : "Променен на:",
|
||||
"Created:" : "Създаден на:",
|
||||
"by" : "от",
|
||||
"Saved" : "Запазено"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
53
l10n/ca.js
Normal file
53
l10n/ca.js
Normal file
@@ -0,0 +1,53 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Esborra",
|
||||
"Hours" : "Hores",
|
||||
"Minutes" : "Minuts",
|
||||
"Finished" : "Acabat",
|
||||
"To review" : "Per revisar",
|
||||
"Action needed" : "Acció necessaria",
|
||||
"Later" : "Més tard",
|
||||
"Deck" : "Coberta",
|
||||
"Add a new stack" : "Afegeix una nova pila",
|
||||
"Show archived cards" : "Mostra les targetes arxivades",
|
||||
"Hide archived cards" : "Amaga les targetes arxivades",
|
||||
"Board details" : "Detalls de la junta",
|
||||
"All Boards" : "Totes les juntes",
|
||||
"Archived boards" : "Taulers arxivats",
|
||||
"Archive" : "Arxiu",
|
||||
"Unarchive" : "Desbloquejar",
|
||||
"Enter a card title" : "Introduïu un títol de la targeta",
|
||||
"Sharing" : "Compartir",
|
||||
"Tags" : "Etiquetes",
|
||||
"Select users or groups to share with" : "Seleccioneu usuaris o grups per compartir",
|
||||
"No matching user or group found." : "No s'ha trobat cap usuari o grup coincident.",
|
||||
"Share" : "Comparteix",
|
||||
"Edit" : "Edita",
|
||||
"Manage" : "Gestor",
|
||||
"Discard share" : "Descarta la compartició",
|
||||
"Create a new tag" : "Crea una nova etiqueta",
|
||||
"Title" : "Title",
|
||||
"Members" : "Membres",
|
||||
"More actions" : "Més accions",
|
||||
"Edit board" : "Edita el tauler",
|
||||
"Archive board" : "Arxiu",
|
||||
"Unarchive board" : "Desbloquejar",
|
||||
"Delete board" : "Eliminat",
|
||||
"Create new board" : "Crear nova",
|
||||
"New board title" : "Nou títol",
|
||||
"Modified:" : "Modificat:",
|
||||
"Created:" : "Creat:",
|
||||
"by" : "per",
|
||||
"Due date" : "Per la data",
|
||||
"Click to set" : "Feu clic per configurar",
|
||||
"Remove due date" : "Elimina la data de venciment",
|
||||
"Description" : "Descripció",
|
||||
"Formatting help" : "Format d'ajuda",
|
||||
"Saved" : "Desat",
|
||||
"Add a card description…" : "Afegeix una descripció de la targeta ...",
|
||||
"Shared boards" : "Taulers compartits",
|
||||
"Move board to archive" : "Mou la placa a l'arxiu",
|
||||
"Create a new board" : "Crear nova"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
51
l10n/ca.json
Normal file
51
l10n/ca.json
Normal file
@@ -0,0 +1,51 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Esborra",
|
||||
"Hours" : "Hores",
|
||||
"Minutes" : "Minuts",
|
||||
"Finished" : "Acabat",
|
||||
"To review" : "Per revisar",
|
||||
"Action needed" : "Acció necessaria",
|
||||
"Later" : "Més tard",
|
||||
"Deck" : "Coberta",
|
||||
"Add a new stack" : "Afegeix una nova pila",
|
||||
"Show archived cards" : "Mostra les targetes arxivades",
|
||||
"Hide archived cards" : "Amaga les targetes arxivades",
|
||||
"Board details" : "Detalls de la junta",
|
||||
"All Boards" : "Totes les juntes",
|
||||
"Archived boards" : "Taulers arxivats",
|
||||
"Archive" : "Arxiu",
|
||||
"Unarchive" : "Desbloquejar",
|
||||
"Enter a card title" : "Introduïu un títol de la targeta",
|
||||
"Sharing" : "Compartir",
|
||||
"Tags" : "Etiquetes",
|
||||
"Select users or groups to share with" : "Seleccioneu usuaris o grups per compartir",
|
||||
"No matching user or group found." : "No s'ha trobat cap usuari o grup coincident.",
|
||||
"Share" : "Comparteix",
|
||||
"Edit" : "Edita",
|
||||
"Manage" : "Gestor",
|
||||
"Discard share" : "Descarta la compartició",
|
||||
"Create a new tag" : "Crea una nova etiqueta",
|
||||
"Title" : "Title",
|
||||
"Members" : "Membres",
|
||||
"More actions" : "Més accions",
|
||||
"Edit board" : "Edita el tauler",
|
||||
"Archive board" : "Arxiu",
|
||||
"Unarchive board" : "Desbloquejar",
|
||||
"Delete board" : "Eliminat",
|
||||
"Create new board" : "Crear nova",
|
||||
"New board title" : "Nou títol",
|
||||
"Modified:" : "Modificat:",
|
||||
"Created:" : "Creat:",
|
||||
"by" : "per",
|
||||
"Due date" : "Per la data",
|
||||
"Click to set" : "Feu clic per configurar",
|
||||
"Remove due date" : "Elimina la data de venciment",
|
||||
"Description" : "Descripció",
|
||||
"Formatting help" : "Format d'ajuda",
|
||||
"Saved" : "Desat",
|
||||
"Add a card description…" : "Afegeix una descripció de la targeta ...",
|
||||
"Shared boards" : "Taulers compartits",
|
||||
"Move board to archive" : "Mou la placa a l'arxiu",
|
||||
"Create a new board" : "Crear nova"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
73
l10n/cs.js
Normal file
73
l10n/cs.js
Normal file
@@ -0,0 +1,73 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Smazat",
|
||||
"Hours" : "Hodiny",
|
||||
"Minutes" : "Minuty",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "U karty \"%s\" z tabule \"%s\" nastalo plánované datum dokončení.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Tabule \"%s\" s vámi byla nasdílena uživatelem %s.",
|
||||
"{user} has shared the board %s with you." : "{user} s vámi nasdílel tabuli %s.",
|
||||
"Finished" : "Dokončeno",
|
||||
"To review" : "K revizi",
|
||||
"Action needed" : "Nutná akce",
|
||||
"Later" : "Později",
|
||||
"Deck" : "Balík",
|
||||
"Add a new stack" : "Přidat nový zásobník",
|
||||
"Submit" : "Odeslat",
|
||||
"Show archived cards" : "Zobrazit archivované karty",
|
||||
"Hide archived cards" : "Skrýt archivované karty",
|
||||
"Board details" : "Detaily desky",
|
||||
"All Boards" : "Všechny desky",
|
||||
"Archived boards" : "Archivované desky",
|
||||
"Archive" : "Archiv",
|
||||
"Unarchive" : "Zrušit archivování",
|
||||
"Enter a card title" : "Zadejte nadpis karty",
|
||||
"Add card" : "Přidat kartu",
|
||||
"Close" : "Zavřít",
|
||||
"Sharing" : "Sdílení",
|
||||
"Tags" : "Značky",
|
||||
"Select users or groups to share with" : "Vyberte uživatele nebo skupiny pro sdílení",
|
||||
"Access for" : "Přístup pro",
|
||||
"No matching user or group found." : "Nevyhovuje žádný uživatel ani skupina",
|
||||
"Loading" : "Načítání",
|
||||
"Share" : "Sdílet",
|
||||
"Edit" : "Upravit",
|
||||
"Manage" : "Spravovat",
|
||||
"Discard share" : "Zrušit sdílení",
|
||||
"Update" : "Aktualizovat",
|
||||
"Create" : "Vytvořit",
|
||||
"Create a new tag" : "Vytvořit novou značku",
|
||||
"Status" : "Stav",
|
||||
"Title" : "Název",
|
||||
"Members" : "Členové",
|
||||
"More actions" : "Více akcí",
|
||||
"Edit board" : "Upravit desku",
|
||||
"Archive board" : "Archivovaná deska",
|
||||
"Unarchive board" : "Odarchivovat desku",
|
||||
"Delete board" : "Smazat desku",
|
||||
"Reset" : "Obnovit",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Vrátit smazání tabule - Tabule bude jinak trvale odstraněna během příštího běhu cronjobu.",
|
||||
"Create new board" : "VYtvořit ovou desku",
|
||||
"New board title" : "Nadpis nové desky",
|
||||
"Modified:" : "Upraveno:",
|
||||
"Created:" : "Vytvořeno:",
|
||||
"by" : "od",
|
||||
"Choose a tag" : "Vyberte štítek",
|
||||
"Add a tag" : "Přidat štítek",
|
||||
"Select tags" : "Výběr štítků",
|
||||
"Assign users" : "Přiřadit uživatele",
|
||||
"Assign this card to a user" : "Přiřadit kartu uživateli",
|
||||
"Due date" : "Termín",
|
||||
"Click to set" : "Klikněte pro výběr",
|
||||
"Remove due date" : "Odstranit termín",
|
||||
"Description" : "Popis",
|
||||
"Formatting help" : "Nápověda k formátování",
|
||||
"Saved" : "Uloženo",
|
||||
"Unsaved changes" : "Neuložené změny",
|
||||
"Add a card description…" : "Přidat popis karty...",
|
||||
"Shared boards" : "Sdílené desky",
|
||||
"View more" : "Ukázat více",
|
||||
"Move board to archive" : "Přesunout desku do archivu",
|
||||
"Create a new board" : "Vytvořit novou desku"
|
||||
},
|
||||
"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;");
|
||||
71
l10n/cs.json
Normal file
71
l10n/cs.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Smazat",
|
||||
"Hours" : "Hodiny",
|
||||
"Minutes" : "Minuty",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "U karty \"%s\" z tabule \"%s\" nastalo plánované datum dokončení.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Tabule \"%s\" s vámi byla nasdílena uživatelem %s.",
|
||||
"{user} has shared the board %s with you." : "{user} s vámi nasdílel tabuli %s.",
|
||||
"Finished" : "Dokončeno",
|
||||
"To review" : "K revizi",
|
||||
"Action needed" : "Nutná akce",
|
||||
"Later" : "Později",
|
||||
"Deck" : "Balík",
|
||||
"Add a new stack" : "Přidat nový zásobník",
|
||||
"Submit" : "Odeslat",
|
||||
"Show archived cards" : "Zobrazit archivované karty",
|
||||
"Hide archived cards" : "Skrýt archivované karty",
|
||||
"Board details" : "Detaily desky",
|
||||
"All Boards" : "Všechny desky",
|
||||
"Archived boards" : "Archivované desky",
|
||||
"Archive" : "Archiv",
|
||||
"Unarchive" : "Zrušit archivování",
|
||||
"Enter a card title" : "Zadejte nadpis karty",
|
||||
"Add card" : "Přidat kartu",
|
||||
"Close" : "Zavřít",
|
||||
"Sharing" : "Sdílení",
|
||||
"Tags" : "Značky",
|
||||
"Select users or groups to share with" : "Vyberte uživatele nebo skupiny pro sdílení",
|
||||
"Access for" : "Přístup pro",
|
||||
"No matching user or group found." : "Nevyhovuje žádný uživatel ani skupina",
|
||||
"Loading" : "Načítání",
|
||||
"Share" : "Sdílet",
|
||||
"Edit" : "Upravit",
|
||||
"Manage" : "Spravovat",
|
||||
"Discard share" : "Zrušit sdílení",
|
||||
"Update" : "Aktualizovat",
|
||||
"Create" : "Vytvořit",
|
||||
"Create a new tag" : "Vytvořit novou značku",
|
||||
"Status" : "Stav",
|
||||
"Title" : "Název",
|
||||
"Members" : "Členové",
|
||||
"More actions" : "Více akcí",
|
||||
"Edit board" : "Upravit desku",
|
||||
"Archive board" : "Archivovaná deska",
|
||||
"Unarchive board" : "Odarchivovat desku",
|
||||
"Delete board" : "Smazat desku",
|
||||
"Reset" : "Obnovit",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Vrátit smazání tabule - Tabule bude jinak trvale odstraněna během příštího běhu cronjobu.",
|
||||
"Create new board" : "VYtvořit ovou desku",
|
||||
"New board title" : "Nadpis nové desky",
|
||||
"Modified:" : "Upraveno:",
|
||||
"Created:" : "Vytvořeno:",
|
||||
"by" : "od",
|
||||
"Choose a tag" : "Vyberte štítek",
|
||||
"Add a tag" : "Přidat štítek",
|
||||
"Select tags" : "Výběr štítků",
|
||||
"Assign users" : "Přiřadit uživatele",
|
||||
"Assign this card to a user" : "Přiřadit kartu uživateli",
|
||||
"Due date" : "Termín",
|
||||
"Click to set" : "Klikněte pro výběr",
|
||||
"Remove due date" : "Odstranit termín",
|
||||
"Description" : "Popis",
|
||||
"Formatting help" : "Nápověda k formátování",
|
||||
"Saved" : "Uloženo",
|
||||
"Unsaved changes" : "Neuložené změny",
|
||||
"Add a card description…" : "Přidat popis karty...",
|
||||
"Shared boards" : "Sdílené desky",
|
||||
"View more" : "Ukázat více",
|
||||
"Move board to archive" : "Přesunout desku do archivu",
|
||||
"Create a new board" : "Vytvořit novou desku"
|
||||
},"pluralForm" :"nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;"
|
||||
}
|
||||
73
l10n/da.js
Normal file
73
l10n/da.js
Normal file
@@ -0,0 +1,73 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Slet",
|
||||
"Hours" : "Timer",
|
||||
"Minutes" : "Minutter",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Kortet \"%s\" på \"%s\" har nået sin udløbsdato.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Brættet \"%s\" er blevet delt med dig af %s.",
|
||||
"{user} has shared the board %s with you." : "{user} har delt brættet %s med dig.",
|
||||
"Finished" : "Færdiggjort",
|
||||
"To review" : "Efterse",
|
||||
"Action needed" : "Handling påkrævet",
|
||||
"Later" : "Senere",
|
||||
"Deck" : "Tavle",
|
||||
"Add a new stack" : "Tilføj en ny stak",
|
||||
"Submit" : "Tilføj",
|
||||
"Show archived cards" : "Vis arkiverede kort",
|
||||
"Hide archived cards" : "Skjul arkiverede kort",
|
||||
"Board details" : "Liste detaljer",
|
||||
"All Boards" : "Alle lister",
|
||||
"Archived boards" : "Arkiverede lister",
|
||||
"Archive" : "Arkivér",
|
||||
"Unarchive" : "Annuller arkivering",
|
||||
"Enter a card title" : "Angiv titel på kort",
|
||||
"Add card" : "Tilføj kort",
|
||||
"Close" : "Luk",
|
||||
"Sharing" : "Deling",
|
||||
"Tags" : "Mærkat",
|
||||
"Select users or groups to share with" : "Vælg brugere eller grupper og dele med",
|
||||
"Access for" : "Adgang for",
|
||||
"No matching user or group found." : "Ingen bruger eller gruppe fundet",
|
||||
"Loading" : "Loader",
|
||||
"Share" : "Del",
|
||||
"Edit" : "Redigér",
|
||||
"Manage" : "Administrer ",
|
||||
"Discard share" : "Kasser deling",
|
||||
"Update" : "Opdatér",
|
||||
"Create" : "Opret",
|
||||
"Create a new tag" : "Opret et nyt mærkat",
|
||||
"Status" : "Status",
|
||||
"Title" : "Titel",
|
||||
"Members" : "Medlemmer",
|
||||
"More actions" : "Flere handlinger",
|
||||
"Edit board" : "Rediger liste",
|
||||
"Archive board" : "Arkivér liste",
|
||||
"Unarchive board" : "Annuller arkivering af liste",
|
||||
"Delete board" : "Slet liste",
|
||||
"Reset" : "Nulstil",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Fortryd sletning af board - Ellers vil boardet blive slettet ved næste cronjob kørsel.",
|
||||
"Create new board" : "Opret ny liste",
|
||||
"New board title" : "Ny titel på liste",
|
||||
"Modified:" : "Ændret:",
|
||||
"Created:" : "Oprettet:",
|
||||
"by" : "af",
|
||||
"Choose a tag" : "Vælg et tag",
|
||||
"Add a tag" : "Tilføj et tag",
|
||||
"Select tags" : "Vælg tags",
|
||||
"Assign users" : "Tildel brugere",
|
||||
"Assign this card to a user" : "Tildel dette kort til en bruger",
|
||||
"Due date" : "Forfaldsdato",
|
||||
"Click to set" : "Klik for at sætte",
|
||||
"Remove due date" : "Fjern forfaldsdato",
|
||||
"Description" : "Beskrivelse",
|
||||
"Formatting help" : "Hjælp til formatering",
|
||||
"Saved" : "Gemt",
|
||||
"Unsaved changes" : "Ikke gemte ændringer",
|
||||
"Add a card description…" : "Tilføj en beskrivelse...",
|
||||
"Shared boards" : "Delte lister",
|
||||
"View more" : "Vis mere",
|
||||
"Move board to archive" : "Flyt liste til arkiv",
|
||||
"Create a new board" : "Opret ny liste"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
71
l10n/da.json
Normal file
71
l10n/da.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Slet",
|
||||
"Hours" : "Timer",
|
||||
"Minutes" : "Minutter",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Kortet \"%s\" på \"%s\" har nået sin udløbsdato.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Brættet \"%s\" er blevet delt med dig af %s.",
|
||||
"{user} has shared the board %s with you." : "{user} har delt brættet %s med dig.",
|
||||
"Finished" : "Færdiggjort",
|
||||
"To review" : "Efterse",
|
||||
"Action needed" : "Handling påkrævet",
|
||||
"Later" : "Senere",
|
||||
"Deck" : "Tavle",
|
||||
"Add a new stack" : "Tilføj en ny stak",
|
||||
"Submit" : "Tilføj",
|
||||
"Show archived cards" : "Vis arkiverede kort",
|
||||
"Hide archived cards" : "Skjul arkiverede kort",
|
||||
"Board details" : "Liste detaljer",
|
||||
"All Boards" : "Alle lister",
|
||||
"Archived boards" : "Arkiverede lister",
|
||||
"Archive" : "Arkivér",
|
||||
"Unarchive" : "Annuller arkivering",
|
||||
"Enter a card title" : "Angiv titel på kort",
|
||||
"Add card" : "Tilføj kort",
|
||||
"Close" : "Luk",
|
||||
"Sharing" : "Deling",
|
||||
"Tags" : "Mærkat",
|
||||
"Select users or groups to share with" : "Vælg brugere eller grupper og dele med",
|
||||
"Access for" : "Adgang for",
|
||||
"No matching user or group found." : "Ingen bruger eller gruppe fundet",
|
||||
"Loading" : "Loader",
|
||||
"Share" : "Del",
|
||||
"Edit" : "Redigér",
|
||||
"Manage" : "Administrer ",
|
||||
"Discard share" : "Kasser deling",
|
||||
"Update" : "Opdatér",
|
||||
"Create" : "Opret",
|
||||
"Create a new tag" : "Opret et nyt mærkat",
|
||||
"Status" : "Status",
|
||||
"Title" : "Titel",
|
||||
"Members" : "Medlemmer",
|
||||
"More actions" : "Flere handlinger",
|
||||
"Edit board" : "Rediger liste",
|
||||
"Archive board" : "Arkivér liste",
|
||||
"Unarchive board" : "Annuller arkivering af liste",
|
||||
"Delete board" : "Slet liste",
|
||||
"Reset" : "Nulstil",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Fortryd sletning af board - Ellers vil boardet blive slettet ved næste cronjob kørsel.",
|
||||
"Create new board" : "Opret ny liste",
|
||||
"New board title" : "Ny titel på liste",
|
||||
"Modified:" : "Ændret:",
|
||||
"Created:" : "Oprettet:",
|
||||
"by" : "af",
|
||||
"Choose a tag" : "Vælg et tag",
|
||||
"Add a tag" : "Tilføj et tag",
|
||||
"Select tags" : "Vælg tags",
|
||||
"Assign users" : "Tildel brugere",
|
||||
"Assign this card to a user" : "Tildel dette kort til en bruger",
|
||||
"Due date" : "Forfaldsdato",
|
||||
"Click to set" : "Klik for at sætte",
|
||||
"Remove due date" : "Fjern forfaldsdato",
|
||||
"Description" : "Beskrivelse",
|
||||
"Formatting help" : "Hjælp til formatering",
|
||||
"Saved" : "Gemt",
|
||||
"Unsaved changes" : "Ikke gemte ændringer",
|
||||
"Add a card description…" : "Tilføj en beskrivelse...",
|
||||
"Shared boards" : "Delte lister",
|
||||
"View more" : "Vis mere",
|
||||
"Move board to archive" : "Flyt liste til arkiv",
|
||||
"Create a new board" : "Opret ny liste"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
77
l10n/de.js
Normal file
77
l10n/de.js
Normal file
@@ -0,0 +1,77 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Are you sure you want to delete this card with all of its data?" : "Möchtest Du wirklich diese Karte mit all ihren Daten löschen?",
|
||||
"Delete" : "Löschen",
|
||||
"Remove user from card" : "Benutzer von Karte entfernen",
|
||||
"Hours" : "Stunden",
|
||||
"Minutes" : "Minuten",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Möchtest du diesen Stapel mit allen Daten wirklich löschen?",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Dir geteilt.",
|
||||
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Dir geteilt.",
|
||||
"Finished" : "Abgeschlossen",
|
||||
"To review" : "Zu überprüfen",
|
||||
"Action needed" : "Handlung erforderlich",
|
||||
"Later" : "Später",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Stapel hinzufügen",
|
||||
"Submit" : "Übermitteln",
|
||||
"Show archived cards" : "Archivierte Karten anzeigen",
|
||||
"Hide archived cards" : "Archivierte Karten ausblenden",
|
||||
"Board details" : "Board-Details",
|
||||
"All Boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
"Archive" : "Archivieren",
|
||||
"Unarchive" : "Dearchivieren",
|
||||
"Enter a card title" : "Kartentitel eingeben",
|
||||
"Add card" : "Karte hinzufügen",
|
||||
"Close" : "Schließen",
|
||||
"Sharing" : "Teilen",
|
||||
"Tags" : "Etiketten",
|
||||
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
|
||||
"Access for" : "Zugriff für",
|
||||
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
|
||||
"Loading" : "Lade",
|
||||
"Share" : "Teilen",
|
||||
"Edit" : "Bearbeiten",
|
||||
"Manage" : "Verwalten",
|
||||
"Discard share" : "Teilen beenden",
|
||||
"Update" : "Aktualisieren",
|
||||
"Create" : "Erstellen",
|
||||
"Create a new tag" : "Neues Etikett erstellen",
|
||||
"Status" : "Status",
|
||||
"Title" : "Titel",
|
||||
"Members" : "Mitglieder",
|
||||
"More actions" : "Weitere Aktionen",
|
||||
"Edit board" : "Board bearbeiten",
|
||||
"Archive board" : "Board archivieren",
|
||||
"Unarchive board" : "Board dearchivieren",
|
||||
"Delete board" : "Board löschen",
|
||||
"Reset" : "Zurücksetzen",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.",
|
||||
"Create new board" : "Neues Board erstellen",
|
||||
"New board title" : "Neuer Board-Titel",
|
||||
"Modified:" : "Geändert:",
|
||||
"Created:" : "Erstellt:",
|
||||
"by" : "von",
|
||||
"Choose a tag" : "Schlagwort auswählen",
|
||||
"Add a tag" : "Schlagwort hinzufügen",
|
||||
"Select tags" : "Schlagwörter auswählen",
|
||||
"Assign users" : "Nutzer zuweisen",
|
||||
"Choose a user to assign" : "Wähle einen Benutzer zum Zuweisen",
|
||||
"Assign this card to a user" : "Diese Karte einem Benutzer zuweisen",
|
||||
"Due date" : "Fälligkeitsdatum",
|
||||
"Click to set" : "Klicken zum Übernehmen",
|
||||
"Remove due date" : "Ablaufdatum löschen",
|
||||
"Description" : "Beschreibung",
|
||||
"Formatting help" : "Formatierungshilfe",
|
||||
"Saved" : "Gespeichert",
|
||||
"Unsaved changes" : "Ungesicherte Änderungen",
|
||||
"Add a card description…" : "Eine Kartenbeschreibung hinzufügen…",
|
||||
"Shared boards" : "Geteilte Boards",
|
||||
"View more" : "Mehr anzeigen",
|
||||
"Move board to archive" : "Board ins Archiv verschieben",
|
||||
"Create a new board" : "Neues Board erstellen"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
75
l10n/de.json
Normal file
75
l10n/de.json
Normal file
@@ -0,0 +1,75 @@
|
||||
{ "translations": {
|
||||
"Are you sure you want to delete this card with all of its data?" : "Möchtest Du wirklich diese Karte mit all ihren Daten löschen?",
|
||||
"Delete" : "Löschen",
|
||||
"Remove user from card" : "Benutzer von Karte entfernen",
|
||||
"Hours" : "Stunden",
|
||||
"Minutes" : "Minuten",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Möchtest du diesen Stapel mit allen Daten wirklich löschen?",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Dir geteilt.",
|
||||
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Dir geteilt.",
|
||||
"Finished" : "Abgeschlossen",
|
||||
"To review" : "Zu überprüfen",
|
||||
"Action needed" : "Handlung erforderlich",
|
||||
"Later" : "Später",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Stapel hinzufügen",
|
||||
"Submit" : "Übermitteln",
|
||||
"Show archived cards" : "Archivierte Karten anzeigen",
|
||||
"Hide archived cards" : "Archivierte Karten ausblenden",
|
||||
"Board details" : "Board-Details",
|
||||
"All Boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
"Archive" : "Archivieren",
|
||||
"Unarchive" : "Dearchivieren",
|
||||
"Enter a card title" : "Kartentitel eingeben",
|
||||
"Add card" : "Karte hinzufügen",
|
||||
"Close" : "Schließen",
|
||||
"Sharing" : "Teilen",
|
||||
"Tags" : "Etiketten",
|
||||
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
|
||||
"Access for" : "Zugriff für",
|
||||
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
|
||||
"Loading" : "Lade",
|
||||
"Share" : "Teilen",
|
||||
"Edit" : "Bearbeiten",
|
||||
"Manage" : "Verwalten",
|
||||
"Discard share" : "Teilen beenden",
|
||||
"Update" : "Aktualisieren",
|
||||
"Create" : "Erstellen",
|
||||
"Create a new tag" : "Neues Etikett erstellen",
|
||||
"Status" : "Status",
|
||||
"Title" : "Titel",
|
||||
"Members" : "Mitglieder",
|
||||
"More actions" : "Weitere Aktionen",
|
||||
"Edit board" : "Board bearbeiten",
|
||||
"Archive board" : "Board archivieren",
|
||||
"Unarchive board" : "Board dearchivieren",
|
||||
"Delete board" : "Board löschen",
|
||||
"Reset" : "Zurücksetzen",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.",
|
||||
"Create new board" : "Neues Board erstellen",
|
||||
"New board title" : "Neuer Board-Titel",
|
||||
"Modified:" : "Geändert:",
|
||||
"Created:" : "Erstellt:",
|
||||
"by" : "von",
|
||||
"Choose a tag" : "Schlagwort auswählen",
|
||||
"Add a tag" : "Schlagwort hinzufügen",
|
||||
"Select tags" : "Schlagwörter auswählen",
|
||||
"Assign users" : "Nutzer zuweisen",
|
||||
"Choose a user to assign" : "Wähle einen Benutzer zum Zuweisen",
|
||||
"Assign this card to a user" : "Diese Karte einem Benutzer zuweisen",
|
||||
"Due date" : "Fälligkeitsdatum",
|
||||
"Click to set" : "Klicken zum Übernehmen",
|
||||
"Remove due date" : "Ablaufdatum löschen",
|
||||
"Description" : "Beschreibung",
|
||||
"Formatting help" : "Formatierungshilfe",
|
||||
"Saved" : "Gespeichert",
|
||||
"Unsaved changes" : "Ungesicherte Änderungen",
|
||||
"Add a card description…" : "Eine Kartenbeschreibung hinzufügen…",
|
||||
"Shared boards" : "Geteilte Boards",
|
||||
"View more" : "Mehr anzeigen",
|
||||
"Move board to archive" : "Board ins Archiv verschieben",
|
||||
"Create a new board" : "Neues Board erstellen"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
77
l10n/de_DE.js
Normal file
77
l10n/de_DE.js
Normal file
@@ -0,0 +1,77 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Are you sure you want to delete this card with all of its data?" : "Möchten Sie wirklich diese Karte mit all ihren Daten löschen?",
|
||||
"Delete" : "Löschen",
|
||||
"Remove user from card" : "Benutzer von Karte entfernen",
|
||||
"Hours" : "Stunden",
|
||||
"Minutes" : "Minuten",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Möchten Sie diesen Stapel mit allen Daten wirklich löschen?",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Ihnen geteilt.",
|
||||
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Ihnen geteilt.",
|
||||
"Finished" : "Abgeschlossen",
|
||||
"To review" : "Zu überprüfen",
|
||||
"Action needed" : "Handlung erforderlich",
|
||||
"Later" : "Später",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Neuen Stapel hinzufügen",
|
||||
"Submit" : "Übermitteln",
|
||||
"Show archived cards" : "Archivierte Karten anzeigen",
|
||||
"Hide archived cards" : "Archivierte Karten ausblenden",
|
||||
"Board details" : "Board-Details",
|
||||
"All Boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
"Archive" : "Archivieren",
|
||||
"Unarchive" : "Dearchivieren",
|
||||
"Enter a card title" : "Kartentitel eingeben",
|
||||
"Add card" : "Karte hinzufügen",
|
||||
"Close" : "Schließen",
|
||||
"Sharing" : "Teilen",
|
||||
"Tags" : "Tags",
|
||||
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
|
||||
"Access for" : "Zugriff für",
|
||||
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
|
||||
"Loading" : "Lade",
|
||||
"Share" : "Teilen",
|
||||
"Edit" : "Bearbeiten",
|
||||
"Manage" : "Verwalten",
|
||||
"Discard share" : "Teilen beenden",
|
||||
"Update" : "Aktualisieren",
|
||||
"Create" : "Erstellen",
|
||||
"Create a new tag" : "Tag erstellen",
|
||||
"Status" : "Status",
|
||||
"Title" : "Titel",
|
||||
"Members" : "Mitglieder",
|
||||
"More actions" : "Weitere Aktionen",
|
||||
"Edit board" : "Board bearbeiten",
|
||||
"Archive board" : "Board archivieren",
|
||||
"Unarchive board" : "Board dearchivieren",
|
||||
"Delete board" : "Board löschen",
|
||||
"Reset" : "Zurücksetzen",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.",
|
||||
"Create new board" : "Neues Board erstellen",
|
||||
"New board title" : "Neuer Board-Titel",
|
||||
"Modified:" : "Geändert:",
|
||||
"Created:" : "Erstellt:",
|
||||
"by" : "von",
|
||||
"Choose a tag" : "Schlagwort auswählen",
|
||||
"Add a tag" : "Schlagwort hinzufügen",
|
||||
"Select tags" : "Schlagwörter auswählen",
|
||||
"Assign users" : "Benutzer zuordnen",
|
||||
"Choose a user to assign" : "Wählen Sie einen Benutzer zum Zuweisen",
|
||||
"Assign this card to a user" : "Diese Karte einem Benutzer zuordnen",
|
||||
"Due date" : "Zieltermin",
|
||||
"Click to set" : "Setzen",
|
||||
"Remove due date" : "Zieltermin entfernen",
|
||||
"Description" : "Beschreibung",
|
||||
"Formatting help" : "Formatierungshilfe",
|
||||
"Saved" : "Gespeichert",
|
||||
"Unsaved changes" : "Ungesicherte Änderungen",
|
||||
"Add a card description…" : "Beschreibung hinzufügen…",
|
||||
"Shared boards" : "Geteilte Boards",
|
||||
"View more" : "Mehr anzeigen",
|
||||
"Move board to archive" : "Board ins Archiv verschieben",
|
||||
"Create a new board" : "Neues Board erstellen"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
75
l10n/de_DE.json
Normal file
75
l10n/de_DE.json
Normal file
@@ -0,0 +1,75 @@
|
||||
{ "translations": {
|
||||
"Are you sure you want to delete this card with all of its data?" : "Möchten Sie wirklich diese Karte mit all ihren Daten löschen?",
|
||||
"Delete" : "Löschen",
|
||||
"Remove user from card" : "Benutzer von Karte entfernen",
|
||||
"Hours" : "Stunden",
|
||||
"Minutes" : "Minuten",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Möchten Sie diesen Stapel mit allen Daten wirklich löschen?",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Die Karte \"%s\" auf \"%s\" ist überfällig.",
|
||||
"The board \"%s\" has been shared with you by %s." : "Das Board \"%s\" wurde von %s mit Ihnen geteilt.",
|
||||
"{user} has shared the board %s with you." : "{user} hat das Board %s mit Ihnen geteilt.",
|
||||
"Finished" : "Abgeschlossen",
|
||||
"To review" : "Zu überprüfen",
|
||||
"Action needed" : "Handlung erforderlich",
|
||||
"Later" : "Später",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Neuen Stapel hinzufügen",
|
||||
"Submit" : "Übermitteln",
|
||||
"Show archived cards" : "Archivierte Karten anzeigen",
|
||||
"Hide archived cards" : "Archivierte Karten ausblenden",
|
||||
"Board details" : "Board-Details",
|
||||
"All Boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
"Archive" : "Archivieren",
|
||||
"Unarchive" : "Dearchivieren",
|
||||
"Enter a card title" : "Kartentitel eingeben",
|
||||
"Add card" : "Karte hinzufügen",
|
||||
"Close" : "Schließen",
|
||||
"Sharing" : "Teilen",
|
||||
"Tags" : "Tags",
|
||||
"Select users or groups to share with" : "Benutzer oder Gruppen auswählen, mit denen das Board geteilt werden soll",
|
||||
"Access for" : "Zugriff für",
|
||||
"No matching user or group found." : "Keine passenden Benutzer oder Gruppen gefunden.",
|
||||
"Loading" : "Lade",
|
||||
"Share" : "Teilen",
|
||||
"Edit" : "Bearbeiten",
|
||||
"Manage" : "Verwalten",
|
||||
"Discard share" : "Teilen beenden",
|
||||
"Update" : "Aktualisieren",
|
||||
"Create" : "Erstellen",
|
||||
"Create a new tag" : "Tag erstellen",
|
||||
"Status" : "Status",
|
||||
"Title" : "Titel",
|
||||
"Members" : "Mitglieder",
|
||||
"More actions" : "Weitere Aktionen",
|
||||
"Edit board" : "Board bearbeiten",
|
||||
"Archive board" : "Board archivieren",
|
||||
"Unarchive board" : "Board dearchivieren",
|
||||
"Delete board" : "Board löschen",
|
||||
"Reset" : "Zurücksetzen",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Löschen des Boards rückgängig machen - Andernfalls wird das Board beim nächsten CronJob-Lauf gelöscht.",
|
||||
"Create new board" : "Neues Board erstellen",
|
||||
"New board title" : "Neuer Board-Titel",
|
||||
"Modified:" : "Geändert:",
|
||||
"Created:" : "Erstellt:",
|
||||
"by" : "von",
|
||||
"Choose a tag" : "Schlagwort auswählen",
|
||||
"Add a tag" : "Schlagwort hinzufügen",
|
||||
"Select tags" : "Schlagwörter auswählen",
|
||||
"Assign users" : "Benutzer zuordnen",
|
||||
"Choose a user to assign" : "Wählen Sie einen Benutzer zum Zuweisen",
|
||||
"Assign this card to a user" : "Diese Karte einem Benutzer zuordnen",
|
||||
"Due date" : "Zieltermin",
|
||||
"Click to set" : "Setzen",
|
||||
"Remove due date" : "Zieltermin entfernen",
|
||||
"Description" : "Beschreibung",
|
||||
"Formatting help" : "Formatierungshilfe",
|
||||
"Saved" : "Gespeichert",
|
||||
"Unsaved changes" : "Ungesicherte Änderungen",
|
||||
"Add a card description…" : "Beschreibung hinzufügen…",
|
||||
"Shared boards" : "Geteilte Boards",
|
||||
"View more" : "Mehr anzeigen",
|
||||
"Move board to archive" : "Board ins Archiv verschieben",
|
||||
"Create a new board" : "Neues Board erstellen"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
57
l10n/el.js
Normal file
57
l10n/el.js
Normal file
@@ -0,0 +1,57 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Διαγραφή",
|
||||
"Remove user from card" : "Αφαίρεση χρήστη από την κάρτα",
|
||||
"Hours" : "Ώρες",
|
||||
"Minutes" : "Λεπτά",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Η κάρτα \"1%s\" στο \"1%s\" έχει λήξει.",
|
||||
"Finished" : "Ολοκληρώθηκε",
|
||||
"To review" : "Προς επισκόπηση",
|
||||
"Action needed" : "Απαιτείται ενέργεια",
|
||||
"Later" : "Αργότερα",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Πρόσθεσε νέα συστοιχία",
|
||||
"Submit" : "Υποβολή",
|
||||
"Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν",
|
||||
"Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν",
|
||||
"Board details" : "Λεπτομέριες πίνακα",
|
||||
"All Boards" : "Όλοι οι πίνακες",
|
||||
"Archived boards" : "Αρχειοθέτηση πινάκων ",
|
||||
"Archive" : "Αρχειοθέτηση",
|
||||
"Unarchive" : "Αναίρεση αρχειοθέτησης",
|
||||
"Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας",
|
||||
"Add card" : "Προσθήκη κάρτας",
|
||||
"Sharing" : "Διαμοιρασμός",
|
||||
"Tags" : "Ετικέτες",
|
||||
"Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε",
|
||||
"No matching user or group found." : "Δεν βρέθηκε χρήστης ή ομάδα να ταιριάζει.",
|
||||
"Share" : "Διαμοιρασμός",
|
||||
"Edit" : "Επεξεργασία",
|
||||
"Manage" : "Διαχείριση",
|
||||
"Discard share" : "Απόρριψη διαμοιρασμού",
|
||||
"Create a new tag" : "Δημιούργησε νέα ετικέτα",
|
||||
"Title" : "Τίτλος",
|
||||
"Members" : "Μέλη",
|
||||
"More actions" : "Περισσότερες ενέργειες",
|
||||
"Edit board" : "Επεξεργασία πίνακα",
|
||||
"Archive board" : "Αρχειοθέτηση πίνακα",
|
||||
"Unarchive board" : "Αναίρεση αρχειοθέτησης πίνακα",
|
||||
"Delete board" : "Διαγραφή πίνακα",
|
||||
"Create new board" : "Δημιουργία νέου πίνακα",
|
||||
"New board title" : "Νέος τίτλος πίνακα",
|
||||
"Modified:" : "Τροποποιήθηκε:",
|
||||
"Created:" : "Δημιουργήθηκε:",
|
||||
"by" : "από",
|
||||
"Due date" : "Ημερομηνία λήξης",
|
||||
"Click to set" : "Κλικ για να ορίσετε",
|
||||
"Remove due date" : "Αφαίρεση ημερομηνίας λήξης",
|
||||
"Description" : "Περιγραφή",
|
||||
"Formatting help" : "Βοήθεια μορφοποίησης",
|
||||
"Saved" : "Αποθηκεύτηκε",
|
||||
"Add a card description…" : "Προσθήκη περιγραφής κάρτας...",
|
||||
"Shared boards" : "Διαμοιρασμένοι πίνακες",
|
||||
"Move board to archive" : "Μετακίνηση πίνακα στην αρχειοθήκη",
|
||||
"Create a new board" : "Δημιουργία νέου πίνακα"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
55
l10n/el.json
Normal file
55
l10n/el.json
Normal file
@@ -0,0 +1,55 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Διαγραφή",
|
||||
"Remove user from card" : "Αφαίρεση χρήστη από την κάρτα",
|
||||
"Hours" : "Ώρες",
|
||||
"Minutes" : "Λεπτά",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "Η κάρτα \"1%s\" στο \"1%s\" έχει λήξει.",
|
||||
"Finished" : "Ολοκληρώθηκε",
|
||||
"To review" : "Προς επισκόπηση",
|
||||
"Action needed" : "Απαιτείται ενέργεια",
|
||||
"Later" : "Αργότερα",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Πρόσθεσε νέα συστοιχία",
|
||||
"Submit" : "Υποβολή",
|
||||
"Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν",
|
||||
"Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν",
|
||||
"Board details" : "Λεπτομέριες πίνακα",
|
||||
"All Boards" : "Όλοι οι πίνακες",
|
||||
"Archived boards" : "Αρχειοθέτηση πινάκων ",
|
||||
"Archive" : "Αρχειοθέτηση",
|
||||
"Unarchive" : "Αναίρεση αρχειοθέτησης",
|
||||
"Enter a card title" : "Καταχωρίστε έναν τίτλο κάρτας",
|
||||
"Add card" : "Προσθήκη κάρτας",
|
||||
"Sharing" : "Διαμοιρασμός",
|
||||
"Tags" : "Ετικέτες",
|
||||
"Select users or groups to share with" : "Επιλέξτε χρήστες ή ομάδες με τις οποίες θα μοιραστείτε",
|
||||
"No matching user or group found." : "Δεν βρέθηκε χρήστης ή ομάδα να ταιριάζει.",
|
||||
"Share" : "Διαμοιρασμός",
|
||||
"Edit" : "Επεξεργασία",
|
||||
"Manage" : "Διαχείριση",
|
||||
"Discard share" : "Απόρριψη διαμοιρασμού",
|
||||
"Create a new tag" : "Δημιούργησε νέα ετικέτα",
|
||||
"Title" : "Τίτλος",
|
||||
"Members" : "Μέλη",
|
||||
"More actions" : "Περισσότερες ενέργειες",
|
||||
"Edit board" : "Επεξεργασία πίνακα",
|
||||
"Archive board" : "Αρχειοθέτηση πίνακα",
|
||||
"Unarchive board" : "Αναίρεση αρχειοθέτησης πίνακα",
|
||||
"Delete board" : "Διαγραφή πίνακα",
|
||||
"Create new board" : "Δημιουργία νέου πίνακα",
|
||||
"New board title" : "Νέος τίτλος πίνακα",
|
||||
"Modified:" : "Τροποποιήθηκε:",
|
||||
"Created:" : "Δημιουργήθηκε:",
|
||||
"by" : "από",
|
||||
"Due date" : "Ημερομηνία λήξης",
|
||||
"Click to set" : "Κλικ για να ορίσετε",
|
||||
"Remove due date" : "Αφαίρεση ημερομηνίας λήξης",
|
||||
"Description" : "Περιγραφή",
|
||||
"Formatting help" : "Βοήθεια μορφοποίησης",
|
||||
"Saved" : "Αποθηκεύτηκε",
|
||||
"Add a card description…" : "Προσθήκη περιγραφής κάρτας...",
|
||||
"Shared boards" : "Διαμοιρασμένοι πίνακες",
|
||||
"Move board to archive" : "Μετακίνηση πίνακα στην αρχειοθήκη",
|
||||
"Create a new board" : "Δημιουργία νέου πίνακα"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
77
l10n/en_GB.js
Normal file
77
l10n/en_GB.js
Normal file
@@ -0,0 +1,77 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Are you sure you want to delete this card with all of its data?" : "Are you sure you want to delete this card with all of its data?",
|
||||
"Delete" : "Delete",
|
||||
"Remove user from card" : "Remove user from card",
|
||||
"Hours" : "Hours",
|
||||
"Minutes" : "Minutes",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Are you sure you want to delete the stack with all of its data?",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "The card \"%s\" on \"%s\" has reached its due date.",
|
||||
"The board \"%s\" has been shared with you by %s." : "The board \"%s\" has been shared with you by %s.",
|
||||
"{user} has shared the board %s with you." : "{user} has shared the board %s with you.",
|
||||
"Finished" : "Finished",
|
||||
"To review" : "To review",
|
||||
"Action needed" : "Action needed",
|
||||
"Later" : "Later",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Add a new stack",
|
||||
"Submit" : "Submit",
|
||||
"Show archived cards" : "Show archived cards",
|
||||
"Hide archived cards" : "Hide archived cards",
|
||||
"Board details" : "Board details",
|
||||
"All Boards" : "All Boards",
|
||||
"Archived boards" : "Archived boards",
|
||||
"Archive" : "Archive",
|
||||
"Unarchive" : "Unarchive",
|
||||
"Enter a card title" : "Enter a card title",
|
||||
"Add card" : "Add card",
|
||||
"Close" : "Close",
|
||||
"Sharing" : "Sharing",
|
||||
"Tags" : "Tags",
|
||||
"Select users or groups to share with" : "Select users or groups to share with",
|
||||
"Access for" : "Access for",
|
||||
"No matching user or group found." : "No matching user or group found.",
|
||||
"Loading" : "Loading",
|
||||
"Share" : "Share",
|
||||
"Edit" : "Edit",
|
||||
"Manage" : "Manage",
|
||||
"Discard share" : "Discard share",
|
||||
"Update" : "Update",
|
||||
"Create" : "Create",
|
||||
"Create a new tag" : "Create a new tag",
|
||||
"Status" : "Status",
|
||||
"Title" : "Title",
|
||||
"Members" : "Members",
|
||||
"More actions" : "More actions",
|
||||
"Edit board" : "Edit board",
|
||||
"Archive board" : "Archive board",
|
||||
"Unarchive board" : "Unarchive board",
|
||||
"Delete board" : "Delete board",
|
||||
"Reset" : "Reset",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Undo board deletion - Otherwise the board will be deleted during the next cronjob run.",
|
||||
"Create new board" : "Create new board",
|
||||
"New board title" : "New board title",
|
||||
"Modified:" : "Modified:",
|
||||
"Created:" : "Created:",
|
||||
"by" : "by",
|
||||
"Choose a tag" : "Choose a tag",
|
||||
"Add a tag" : "Add a tag",
|
||||
"Select tags" : "Select tags",
|
||||
"Assign users" : "Assign users",
|
||||
"Choose a user to assign" : "Choose a user to assign",
|
||||
"Assign this card to a user" : "Assign this card to a user",
|
||||
"Due date" : "Due date",
|
||||
"Click to set" : "Click to set",
|
||||
"Remove due date" : "Remove due date",
|
||||
"Description" : "Description",
|
||||
"Formatting help" : "Formatting help",
|
||||
"Saved" : "Saved",
|
||||
"Unsaved changes" : "Unsaved changes",
|
||||
"Add a card description…" : "Add a card description…",
|
||||
"Shared boards" : "Shared boards",
|
||||
"View more" : "View more",
|
||||
"Move board to archive" : "Move board to archive",
|
||||
"Create a new board" : "Create a new board"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
75
l10n/en_GB.json
Normal file
75
l10n/en_GB.json
Normal file
@@ -0,0 +1,75 @@
|
||||
{ "translations": {
|
||||
"Are you sure you want to delete this card with all of its data?" : "Are you sure you want to delete this card with all of its data?",
|
||||
"Delete" : "Delete",
|
||||
"Remove user from card" : "Remove user from card",
|
||||
"Hours" : "Hours",
|
||||
"Minutes" : "Minutes",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "Are you sure you want to delete the stack with all of its data?",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "The card \"%s\" on \"%s\" has reached its due date.",
|
||||
"The board \"%s\" has been shared with you by %s." : "The board \"%s\" has been shared with you by %s.",
|
||||
"{user} has shared the board %s with you." : "{user} has shared the board %s with you.",
|
||||
"Finished" : "Finished",
|
||||
"To review" : "To review",
|
||||
"Action needed" : "Action needed",
|
||||
"Later" : "Later",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Add a new stack",
|
||||
"Submit" : "Submit",
|
||||
"Show archived cards" : "Show archived cards",
|
||||
"Hide archived cards" : "Hide archived cards",
|
||||
"Board details" : "Board details",
|
||||
"All Boards" : "All Boards",
|
||||
"Archived boards" : "Archived boards",
|
||||
"Archive" : "Archive",
|
||||
"Unarchive" : "Unarchive",
|
||||
"Enter a card title" : "Enter a card title",
|
||||
"Add card" : "Add card",
|
||||
"Close" : "Close",
|
||||
"Sharing" : "Sharing",
|
||||
"Tags" : "Tags",
|
||||
"Select users or groups to share with" : "Select users or groups to share with",
|
||||
"Access for" : "Access for",
|
||||
"No matching user or group found." : "No matching user or group found.",
|
||||
"Loading" : "Loading",
|
||||
"Share" : "Share",
|
||||
"Edit" : "Edit",
|
||||
"Manage" : "Manage",
|
||||
"Discard share" : "Discard share",
|
||||
"Update" : "Update",
|
||||
"Create" : "Create",
|
||||
"Create a new tag" : "Create a new tag",
|
||||
"Status" : "Status",
|
||||
"Title" : "Title",
|
||||
"Members" : "Members",
|
||||
"More actions" : "More actions",
|
||||
"Edit board" : "Edit board",
|
||||
"Archive board" : "Archive board",
|
||||
"Unarchive board" : "Unarchive board",
|
||||
"Delete board" : "Delete board",
|
||||
"Reset" : "Reset",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Undo board deletion - Otherwise the board will be deleted during the next cronjob run.",
|
||||
"Create new board" : "Create new board",
|
||||
"New board title" : "New board title",
|
||||
"Modified:" : "Modified:",
|
||||
"Created:" : "Created:",
|
||||
"by" : "by",
|
||||
"Choose a tag" : "Choose a tag",
|
||||
"Add a tag" : "Add a tag",
|
||||
"Select tags" : "Select tags",
|
||||
"Assign users" : "Assign users",
|
||||
"Choose a user to assign" : "Choose a user to assign",
|
||||
"Assign this card to a user" : "Assign this card to a user",
|
||||
"Due date" : "Due date",
|
||||
"Click to set" : "Click to set",
|
||||
"Remove due date" : "Remove due date",
|
||||
"Description" : "Description",
|
||||
"Formatting help" : "Formatting help",
|
||||
"Saved" : "Saved",
|
||||
"Unsaved changes" : "Unsaved changes",
|
||||
"Add a card description…" : "Add a card description…",
|
||||
"Shared boards" : "Shared boards",
|
||||
"View more" : "View more",
|
||||
"Move board to archive" : "Move board to archive",
|
||||
"Create a new board" : "Create a new board"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
76
l10n/es.js
Normal file
76
l10n/es.js
Normal file
@@ -0,0 +1,76 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro de que quieres eliminar esta tarjeta con todos sus datos?",
|
||||
"Delete" : "Eliminar",
|
||||
"Remove user from card" : "Eliminar usuario de la tarjeta",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo.",
|
||||
"Finished" : "Finalizado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción necesaria",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Añadir nuevo montón",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Introducir título de tarjeta",
|
||||
"Add card" : "Añadir tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartir",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Seleccionar usuarios o grupos con los que compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron usuarios o grupos coincidentes.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Organizar",
|
||||
"Discard share" : "Descartar compartición",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una etiqueta nueva",
|
||||
"Status" : "Estado",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Eliminar tablero",
|
||||
"Reset" : "Resetear",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado del tablero. Si no, el tablero será eliminado durante la próxima ejecución del cronjob.",
|
||||
"Create new board" : "Crear nuevo tablero",
|
||||
"New board title" : "Nuevo título de tablero",
|
||||
"Modified:" : "Modificado: ",
|
||||
"Created:" : "Creado: ",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Escoge una etiqueta",
|
||||
"Add a tag" : "Añade una etiqueta",
|
||||
"Select tags" : "Selecciona etiquetas",
|
||||
"Assign users" : "Asignar usuarios",
|
||||
"Choose a user to assign" : "Escoge un usuario al que asignar",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta a un usuario",
|
||||
"Due date" : "Fecha límite",
|
||||
"Click to set" : "Pinchar para establecer",
|
||||
"Remove due date" : "Eliminar fecha límite",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Añadir una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover tablero al archivo",
|
||||
"Create a new board" : "Crear un tablero nuevo"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
74
l10n/es.json
Normal file
74
l10n/es.json
Normal file
@@ -0,0 +1,74 @@
|
||||
{ "translations": {
|
||||
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro de que quieres eliminar esta tarjeta con todos sus datos?",
|
||||
"Delete" : "Eliminar",
|
||||
"Remove user from card" : "Eliminar usuario de la tarjeta",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alcanzado su fecha límite.",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo.",
|
||||
"Finished" : "Finalizado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción necesaria",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Añadir nuevo montón",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Introducir título de tarjeta",
|
||||
"Add card" : "Añadir tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartir",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Seleccionar usuarios o grupos con los que compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron usuarios o grupos coincidentes.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Organizar",
|
||||
"Discard share" : "Descartar compartición",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una etiqueta nueva",
|
||||
"Status" : "Estado",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Eliminar tablero",
|
||||
"Reset" : "Resetear",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado del tablero. Si no, el tablero será eliminado durante la próxima ejecución del cronjob.",
|
||||
"Create new board" : "Crear nuevo tablero",
|
||||
"New board title" : "Nuevo título de tablero",
|
||||
"Modified:" : "Modificado: ",
|
||||
"Created:" : "Creado: ",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Escoge una etiqueta",
|
||||
"Add a tag" : "Añade una etiqueta",
|
||||
"Select tags" : "Selecciona etiquetas",
|
||||
"Assign users" : "Asignar usuarios",
|
||||
"Choose a user to assign" : "Escoge un usuario al que asignar",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta a un usuario",
|
||||
"Due date" : "Fecha límite",
|
||||
"Click to set" : "Pinchar para establecer",
|
||||
"Remove due date" : "Eliminar fecha límite",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Añadir una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover tablero al archivo",
|
||||
"Create a new board" : "Crear un tablero nuevo"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
73
l10n/es_419.js
Normal file
73
l10n/es_419.js
Normal file
@@ -0,0 +1,73 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
71
l10n/es_419.json
Normal file
71
l10n/es_419.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
36
l10n/es_AR.js
Normal file
36
l10n/es_AR.js
Normal file
@@ -0,0 +1,36 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Borrar",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tablero",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingrese el títilo de la tarjeta",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Select users or groups to share with" : "Seleccione los usuarios o grupos con los cuales compartir",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Members" : "Miembros",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título de tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Create a new board" : "Crear nuevo tablero"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
34
l10n/es_AR.json
Normal file
34
l10n/es_AR.json
Normal file
@@ -0,0 +1,34 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Borrar",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tablero",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingrese el títilo de la tarjeta",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Select users or groups to share with" : "Seleccione los usuarios o grupos con los cuales compartir",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Members" : "Miembros",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título de tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Create a new board" : "Crear nuevo tablero"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
73
l10n/es_CL.js
Normal file
73
l10n/es_CL.js
Normal file
@@ -0,0 +1,73 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
71
l10n/es_CL.json
Normal file
71
l10n/es_CL.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
73
l10n/es_CO.js
Normal file
73
l10n/es_CO.js
Normal file
@@ -0,0 +1,73 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
71
l10n/es_CO.json
Normal file
71
l10n/es_CO.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
73
l10n/es_CR.js
Normal file
73
l10n/es_CR.js
Normal file
@@ -0,0 +1,73 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
71
l10n/es_CR.json
Normal file
71
l10n/es_CR.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
73
l10n/es_DO.js
Normal file
73
l10n/es_DO.js
Normal file
@@ -0,0 +1,73 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
71
l10n/es_DO.json
Normal file
71
l10n/es_DO.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
73
l10n/es_EC.js
Normal file
73
l10n/es_EC.js
Normal file
@@ -0,0 +1,73 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
71
l10n/es_EC.json
Normal file
71
l10n/es_EC.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
73
l10n/es_GT.js
Normal file
73
l10n/es_GT.js
Normal file
@@ -0,0 +1,73 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
71
l10n/es_GT.json
Normal file
71
l10n/es_GT.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
73
l10n/es_HN.js
Normal file
73
l10n/es_HN.js
Normal file
@@ -0,0 +1,73 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
71
l10n/es_HN.json
Normal file
71
l10n/es_HN.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
77
l10n/es_MX.js
Normal file
77
l10n/es_MX.js
Normal file
@@ -0,0 +1,77 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro que deseas borrar esta tarjeta con todos sus datos? ",
|
||||
"Delete" : "Borrar",
|
||||
"Remove user from card" : "Eliminar usuario de la tarjeta",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro que deseas borrar la pila con todos sus datos?",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Choose a user to assign" : "Elige un usuario a asignar",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
75
l10n/es_MX.json
Normal file
75
l10n/es_MX.json
Normal file
@@ -0,0 +1,75 @@
|
||||
{ "translations": {
|
||||
"Are you sure you want to delete this card with all of its data?" : "¿Estás seguro que deseas borrar esta tarjeta con todos sus datos? ",
|
||||
"Delete" : "Borrar",
|
||||
"Remove user from card" : "Eliminar usuario de la tarjeta",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"Are you sure you want to delete the stack with all of its data?" : "¿Estás seguro que deseas borrar la pila con todos sus datos?",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Choose a user to assign" : "Elige un usuario a asignar",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
73
l10n/es_NI.js
Normal file
73
l10n/es_NI.js
Normal file
@@ -0,0 +1,73 @@
|
||||
OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
71
l10n/es_NI.json
Normal file
71
l10n/es_NI.json
Normal file
@@ -0,0 +1,71 @@
|
||||
{ "translations": {
|
||||
"Delete" : "Borrar",
|
||||
"Hours" : "Horas",
|
||||
"Minutes" : "Minutos",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"{user} has shared the board %s with you." : "{user} ha compartido el tablero %s contigo. ",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
"Action needed" : "Acción requerida",
|
||||
"Later" : "Después",
|
||||
"Deck" : "Deck",
|
||||
"Add a new stack" : "Agregar una nueva pila",
|
||||
"Submit" : "Enviar",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Board details" : "Detalles del tablero",
|
||||
"All Boards" : "Todos los Tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Archive" : "Archivar",
|
||||
"Unarchive" : "Desarchivar",
|
||||
"Enter a card title" : "Ingresa el título de la tarjeta",
|
||||
"Add card" : "Agregar tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"Sharing" : "Compartiendo",
|
||||
"Tags" : "Etiquetas",
|
||||
"Select users or groups to share with" : "Selecciona los usuarios o grupos con los cuales compartir",
|
||||
"Access for" : "Acceso para",
|
||||
"No matching user or group found." : "No se encontraron coincidencias de usuarios o grupos.",
|
||||
"Loading" : "Cargando",
|
||||
"Share" : "Compartir",
|
||||
"Edit" : "Editar",
|
||||
"Manage" : "Administrar",
|
||||
"Discard share" : "Descartar elemento compartido",
|
||||
"Update" : "Actualizar",
|
||||
"Create" : "Crear",
|
||||
"Create a new tag" : "Crear una nueva etiqueta",
|
||||
"Status" : "Estatus",
|
||||
"Title" : "Título",
|
||||
"Members" : "Miembros",
|
||||
"More actions" : "Más acciones",
|
||||
"Edit board" : "Editar el tablero",
|
||||
"Archive board" : "Archivar tablero",
|
||||
"Unarchive board" : "Desarchivar tablero",
|
||||
"Delete board" : "Borrar tableros",
|
||||
"Reset" : "Reiniciar",
|
||||
"Undo board deletion - Otherwise the board will be deleted during the next cronjob run." : "Deshacer borrado de tablero - De lo contrario el tablero se borrará durante la siguiente ejecución del cronjob. ",
|
||||
"Create new board" : "Crear un nuevo tablero",
|
||||
"New board title" : "Nuevo título del tablero",
|
||||
"Modified:" : "Modificado:",
|
||||
"Created:" : "Creado:",
|
||||
"by" : "por",
|
||||
"Choose a tag" : "Elije una etiqueta",
|
||||
"Add a tag" : "Agrega una etiqueta",
|
||||
"Select tags" : "Selecciona las etiquetas",
|
||||
"Assign users" : "Asingar usuarios",
|
||||
"Assign this card to a user" : "Asignar esta tarjeta al usuario",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Click to set" : "Da click aquí para establecer",
|
||||
"Remove due date" : "Eliminar fecha de expiración",
|
||||
"Description" : "Descripción",
|
||||
"Formatting help" : "Ayuda de formato",
|
||||
"Saved" : "Guardado",
|
||||
"Unsaved changes" : "Cambios no guardados",
|
||||
"Add a card description…" : "Agregar una descripción de tarjeta...",
|
||||
"Shared boards" : "Tableros compartidos",
|
||||
"View more" : "Ver más",
|
||||
"Move board to archive" : "Mover el tablero al archivo",
|
||||
"Create a new board" : "Crear un nuevo tablero"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user