Compare commits
539 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5801565486 | ||
|
|
c69b1c6814 | ||
|
|
d0780557f6 | ||
|
|
8915c143ad | ||
|
|
e56b278383 | ||
|
|
8efa30ddd2 | ||
|
|
ce84bd6e88 | ||
|
|
6e3762ec10 | ||
|
|
aa7430bde9 | ||
|
|
e75ff1c1a0 | ||
|
|
037469352e | ||
|
|
8f589236af | ||
|
|
041f3e6eb8 | ||
|
|
23901ff0b0 | ||
|
|
8ded6e43c0 | ||
|
|
e4186cd9f1 | ||
|
|
585d2de7f7 | ||
|
|
9b785502b5 | ||
|
|
8568bb127e | ||
|
|
c2783186c0 | ||
|
|
4a2d54ab97 | ||
|
|
472018b2d6 | ||
|
|
2159e6e9d4 | ||
|
|
a66713f1ae | ||
|
|
571b08f42b | ||
|
|
b94d373c1b | ||
|
|
244580c29b | ||
|
|
7c45424d0d | ||
|
|
090f1c6cda | ||
|
|
e4072d0e49 | ||
|
|
7aa5d55def | ||
|
|
893a2ed5f3 | ||
|
|
57d6ebc1eb | ||
|
|
4c5102041b | ||
|
|
ff32a1583f | ||
|
|
284afbfa2f | ||
|
|
f290a9fe42 | ||
|
|
a87e0d841b | ||
|
|
4d936e98f0 | ||
|
|
f788ad1c51 | ||
|
|
74bc5551fe | ||
|
|
f7a8acb3d5 | ||
|
|
ecd60afe1e | ||
|
|
608d0f554e | ||
|
|
4944be2082 | ||
|
|
ee282c9afb | ||
|
|
3448acc920 | ||
|
|
1e002ca3bf | ||
|
|
a7d137f8cb | ||
|
|
b3f16d64cc | ||
|
|
d76477177f | ||
|
|
2ff5b502b9 | ||
|
|
d5617d96fa | ||
|
|
bfdb9bcdfc | ||
|
|
7564b1dcda | ||
|
|
889b5cc143 | ||
|
|
ee954b9fa2 | ||
|
|
b7a37f5ec0 | ||
|
|
3bbf62cf48 | ||
|
|
3289d474d4 | ||
|
|
e508ae1fbb | ||
|
|
1c621e11c0 | ||
|
|
23eabf4945 | ||
|
|
f1389318ad | ||
|
|
61e8e7eacb | ||
|
|
d4cdfd952b | ||
|
|
fdc2336c7a | ||
|
|
8a914a3c47 | ||
|
|
c5d004c5b1 | ||
|
|
048583a777 | ||
|
|
aa98e632fa | ||
|
|
a703374044 | ||
|
|
1128c05511 | ||
|
|
9f78510c7a | ||
|
|
aead228d58 | ||
|
|
146b68d7c7 | ||
|
|
659fa3f65c | ||
|
|
ad2ac29450 | ||
|
|
4e24a4b8b3 | ||
|
|
922ed01233 | ||
|
|
210a859063 | ||
|
|
d975216362 | ||
|
|
0e382cc340 | ||
|
|
3992210b14 | ||
|
|
736a98b174 | ||
|
|
8216329331 | ||
|
|
36e483dad2 | ||
|
|
50d4301c86 | ||
|
|
384f6f3058 | ||
|
|
3670be4980 | ||
|
|
8e81deceae | ||
|
|
66f924ba35 | ||
|
|
0475920aeb | ||
|
|
161fe371a3 | ||
|
|
982bbdf03e | ||
|
|
32e7fce7b8 | ||
|
|
e42d6dfed0 | ||
|
|
bbaf98ea3e | ||
|
|
fd6d7cc45e | ||
|
|
6cfe8a32ff | ||
|
|
5cd8e98601 | ||
|
|
c70e5d3568 | ||
|
|
e62206635b | ||
|
|
c399fb0fc0 | ||
|
|
a71cad1dfe | ||
|
|
4ca01ebd12 | ||
|
|
d12afd4bed | ||
|
|
22d62f4222 | ||
|
|
72f764e5c8 | ||
|
|
8dedd83381 | ||
|
|
6cc41da920 | ||
|
|
0584d4a2a3 | ||
|
|
688b810de2 | ||
|
|
32365cba13 | ||
|
|
6672d32985 | ||
|
|
097c59d14f | ||
|
|
dbbc8281cd | ||
|
|
a6d455e267 | ||
|
|
845a1c7122 | ||
|
|
18583db84d | ||
|
|
7067a9208d | ||
|
|
d14e40b454 | ||
|
|
4d32390409 | ||
|
|
8c18b5dea6 | ||
|
|
9ea84bbeff | ||
|
|
c424ca5a9b | ||
|
|
bc4dc7efc1 | ||
|
|
e591853055 | ||
|
|
56b7a5d89f | ||
|
|
5ec18f9386 | ||
|
|
f82696a1ec | ||
|
|
06c70c4eda | ||
|
|
0a7bc8958d | ||
|
|
e4df2bdccc | ||
|
|
34a4ae0777 | ||
|
|
96fcd13ad6 | ||
|
|
a4ba8460d6 | ||
|
|
db06e1cce7 | ||
|
|
dbc1667172 | ||
|
|
7f187487d6 | ||
|
|
1297064b4a | ||
|
|
90c54d29bb | ||
|
|
f57b88d0ad | ||
|
|
cc540953b0 | ||
|
|
dd3e67d554 | ||
|
|
c3125c06c2 | ||
|
|
2dbc6afdc5 | ||
|
|
fe2bc80658 | ||
|
|
8a6c934903 | ||
|
|
83ef278374 | ||
|
|
6c2ae9d2ec | ||
|
|
0854643e95 | ||
|
|
b1dc05be87 | ||
|
|
1cd3b37dee | ||
|
|
b80524b727 | ||
|
|
964f9cd98a | ||
|
|
db4cf929de | ||
|
|
1fc1683c72 | ||
|
|
a5c700a812 | ||
|
|
15107c2cae | ||
|
|
e2175ff107 | ||
|
|
3ce0bfe650 | ||
|
|
487b0b1fc7 | ||
|
|
34904f9a8a | ||
|
|
ff35f31b02 | ||
|
|
8f6efd6594 | ||
|
|
f6cc0231fc | ||
|
|
f6d0bb5255 | ||
|
|
a8b3df6370 | ||
|
|
df28ab764b | ||
|
|
17b7f9d18e | ||
|
|
56ae66ac13 | ||
|
|
b2791e0982 | ||
|
|
6641f1d970 | ||
|
|
628cad6926 | ||
|
|
36514c6bd5 | ||
|
|
ef6350a8a9 | ||
|
|
b98586a0e4 | ||
|
|
271a6cba65 | ||
|
|
207037cd9b | ||
|
|
90307158f6 | ||
|
|
4869acbde5 | ||
|
|
ddbf1046c5 | ||
|
|
e6ee110554 | ||
|
|
0c84d13181 | ||
|
|
44bdf5f86e | ||
|
|
b62376e39e | ||
|
|
6e7169f1e1 | ||
|
|
989b6a54f4 | ||
|
|
3b1c8dec9e | ||
|
|
e84980406c | ||
|
|
e359fb070f | ||
|
|
19d85c7864 | ||
|
|
0e13176d0b | ||
|
|
8aaf5fdb10 | ||
|
|
867762a8d5 | ||
|
|
2931d252ec | ||
|
|
e9dd4aaaa8 | ||
|
|
7af9d71027 | ||
|
|
826acdd0fd | ||
|
|
075aeb00cc | ||
|
|
ae9bf21296 | ||
|
|
8c0a15ed2a | ||
|
|
d08b56ae16 | ||
|
|
0141cc4cc9 | ||
|
|
6d1d4951bd | ||
|
|
14d3b0ffd7 | ||
|
|
1326fbfa38 | ||
|
|
1365f99887 | ||
|
|
27be8991a6 | ||
|
|
3badc73e5e | ||
|
|
fd9e7acb0a | ||
|
|
3c9e3b5b23 | ||
|
|
2851791f9a | ||
|
|
f62c3ec2be | ||
|
|
bf8c0498f6 | ||
|
|
cddf5fe9ad | ||
|
|
921d7e5f31 | ||
|
|
a4b7223ddc | ||
|
|
76a84245d4 | ||
|
|
963f569099 | ||
|
|
f0619912ff | ||
|
|
8946e150bd | ||
|
|
8c10cada1d | ||
|
|
dbd3eaeb79 | ||
|
|
5ba5c3df88 | ||
|
|
909472b9a0 | ||
|
|
d416a05bc7 | ||
|
|
8cb662541f | ||
|
|
b5a76bc555 | ||
|
|
5dba15261d | ||
|
|
0f122c2a26 | ||
|
|
a0dd54df35 | ||
|
|
9fe82e9179 | ||
|
|
4d59a12db3 | ||
|
|
94e57979e3 | ||
|
|
0e66110401 | ||
|
|
29a9744060 | ||
|
|
bbfb471e41 | ||
|
|
445660b0e5 | ||
|
|
d8c3c835d4 | ||
|
|
631b01f000 | ||
|
|
89603b6f4a | ||
|
|
c88a6109b8 | ||
|
|
a3ca766a81 | ||
|
|
4fbded42b8 | ||
|
|
9a5dd487a2 | ||
|
|
1e0adff1ef | ||
|
|
65f5101e78 | ||
|
|
275c4574e2 | ||
|
|
b0ebb34fb8 | ||
|
|
e72b654bc6 | ||
|
|
d5ae69afce | ||
|
|
5dfe12a302 | ||
|
|
103a2c8508 | ||
|
|
4120f2e7ee | ||
|
|
9f9ef99a31 | ||
|
|
7ce6e1779a | ||
|
|
5cc075cbf9 | ||
|
|
150e663283 | ||
|
|
2bdaba5c85 | ||
|
|
3c3837c8d3 | ||
|
|
c30e253f83 | ||
|
|
c3acf91184 | ||
|
|
4e513264c5 | ||
|
|
f470ed4848 | ||
|
|
396b725442 | ||
|
|
5c8b48faa0 | ||
|
|
5141d463fc | ||
|
|
5360b8552e | ||
|
|
c93b837754 | ||
|
|
9ca7a2fc2c | ||
|
|
f5e733362e | ||
|
|
c3697295e6 | ||
|
|
cffe0f708e | ||
|
|
ca96096617 | ||
|
|
baea5d83d3 | ||
|
|
14e37c4392 | ||
|
|
be39fb3b7c | ||
|
|
7a262c5188 | ||
|
|
d97fe80e48 | ||
|
|
88b4fd0756 | ||
|
|
c8878d4497 | ||
|
|
68c1faabaa | ||
|
|
60d8370dbe | ||
|
|
685db5a4fe | ||
|
|
c190832287 | ||
|
|
2740d2145e | ||
|
|
58ed490c7d | ||
|
|
372878b318 | ||
|
|
d055b44fa2 | ||
|
|
deb63d4a9a | ||
|
|
66fda2265d | ||
|
|
44037cfd18 | ||
|
|
b450d96d4b | ||
|
|
9f1597a2f3 | ||
|
|
a0a929bdec | ||
|
|
deffd3adaa | ||
|
|
cd7ade1eaf | ||
|
|
e568d79bbe | ||
|
|
1ddb3cdac9 | ||
|
|
a982a0dbed | ||
|
|
bebbb046ea | ||
|
|
37f305aba2 | ||
|
|
dcc42f7613 | ||
|
|
bea851009c | ||
|
|
6a5e72bf6d | ||
|
|
b5c6b54fab | ||
|
|
61a801502b | ||
|
|
54c5cbbef1 | ||
|
|
6956551e3c | ||
|
|
62a54481e5 | ||
|
|
9d9b333152 | ||
|
|
0179b99f24 | ||
|
|
342003ea2e | ||
|
|
20d4476843 | ||
|
|
cc1b30be54 | ||
|
|
c1e52fd168 | ||
|
|
81d8748e96 | ||
|
|
06e3272b79 | ||
|
|
b71d8e2090 | ||
|
|
302ec1c44e | ||
|
|
28c031a68e | ||
|
|
b938c3b2bf | ||
|
|
78fea30e39 | ||
|
|
fcbc0cf092 | ||
|
|
dbdbb00fd5 | ||
|
|
dcccd63864 | ||
|
|
cf52359e7a | ||
|
|
cf7f231047 | ||
|
|
8449d91656 | ||
|
|
4126e4dd43 | ||
|
|
566778be58 | ||
|
|
063c4cbfef | ||
|
|
8d03a03b27 | ||
|
|
46f76f2dbc | ||
|
|
9f68a58407 | ||
|
|
58a5275e78 | ||
|
|
c644fc9680 | ||
|
|
7eb078d0a8 | ||
|
|
6126cc53a2 | ||
|
|
38344cee55 | ||
|
|
3e0baf9330 | ||
|
|
2899927efe | ||
|
|
4ce2265f5e | ||
|
|
2872cd39d9 | ||
|
|
73752472ac | ||
|
|
508ded19ba | ||
|
|
57e8698f3b | ||
|
|
abf00984f4 | ||
|
|
b53c10c47d | ||
|
|
5e2d8ac24a | ||
|
|
5db87329ac | ||
|
|
d12ccc0208 | ||
|
|
d67b1e4ba9 | ||
|
|
81c0e37ba0 | ||
|
|
f44eb87d77 | ||
|
|
55b75e16a0 | ||
|
|
020b16a33d | ||
|
|
fef75fa169 | ||
|
|
4547e1ae3d | ||
|
|
0e0ff7e16c | ||
|
|
6329da3d4d | ||
|
|
c37cae0a5c | ||
|
|
9d852b93ce | ||
|
|
5035be90f0 | ||
|
|
6a07581508 | ||
|
|
84b1de5308 | ||
|
|
3533388c37 | ||
|
|
43fa69aa65 | ||
|
|
ab051171ed | ||
|
|
72de3f257a | ||
|
|
186fc572b3 | ||
|
|
ea95fcaaf3 | ||
|
|
e4e474235e | ||
|
|
64f406355e | ||
|
|
d523e4f64e | ||
|
|
81f8423218 | ||
|
|
2d1f39eb82 | ||
|
|
d601b0300b | ||
|
|
eb8b94328f | ||
|
|
e29fc0f320 | ||
|
|
165c8ebc1c | ||
|
|
527be16719 | ||
|
|
cc86209179 | ||
|
|
c7de8c4590 | ||
|
|
68acd38421 | ||
|
|
54e298d00f | ||
|
|
ba20c1a9eb | ||
|
|
49cb27d576 | ||
|
|
7320a48dce | ||
|
|
3c834b79f5 | ||
|
|
4637024240 | ||
|
|
440f2710f0 | ||
|
|
0ebd55890c | ||
|
|
3409a9f13f | ||
|
|
7fae8e0928 | ||
|
|
609c975de4 | ||
|
|
64615a3e14 | ||
|
|
fb72a0f24d | ||
|
|
54c5a7f963 | ||
|
|
8d46fbbd04 | ||
|
|
0d787f9989 | ||
|
|
f19f22737a | ||
|
|
687f5c933c | ||
|
|
fd95e77d4e | ||
|
|
fba52536d0 | ||
|
|
cfcbc94006 | ||
|
|
9643f0581e | ||
|
|
c02a24f85b | ||
|
|
728c7916be | ||
|
|
1af1c7f581 | ||
|
|
87439dbaad | ||
|
|
c79ec72b79 | ||
|
|
beff26500a | ||
|
|
6df2e2b755 | ||
|
|
4b793d3738 | ||
|
|
399a85ce9f | ||
|
|
673222d37e | ||
|
|
eced4dd2d3 | ||
|
|
293f241aa6 | ||
|
|
5a79c61732 | ||
|
|
c28a877d0b | ||
|
|
484b9df8c9 | ||
|
|
db7403acc0 | ||
|
|
8c8788eab3 | ||
|
|
0f4ad52ca9 | ||
|
|
8b156958f8 | ||
|
|
88ba778e55 | ||
|
|
192314fb02 | ||
|
|
0bfb983a1c | ||
|
|
c3a8f797d1 | ||
|
|
b67ed2057c | ||
|
|
234ba20eba | ||
|
|
88097f98e8 | ||
|
|
4c3c483011 | ||
|
|
5a9cba00ed | ||
|
|
8f822cfd84 | ||
|
|
45c19c1c2d | ||
|
|
369749bb46 | ||
|
|
5ec04ac670 | ||
|
|
69b8ed2486 | ||
|
|
74d8fba022 | ||
|
|
2ca8863b5d | ||
|
|
63e57f2667 | ||
|
|
165ef3adf6 | ||
|
|
8ccdc6a2ed | ||
|
|
a04f2004bd | ||
|
|
ad00818bd1 | ||
|
|
138087b296 | ||
|
|
cd5500ee50 | ||
|
|
cda8a40607 | ||
|
|
84e6679704 | ||
|
|
7d8bc27d73 | ||
|
|
566de0f9e7 | ||
|
|
146fbbcb6f | ||
|
|
d2dd0d2914 | ||
|
|
6010e839d0 | ||
|
|
2895f563cd | ||
|
|
7663a4a346 | ||
|
|
864272c1a2 | ||
|
|
4f75064ba4 | ||
|
|
ffd6d4dedc | ||
|
|
891139f682 | ||
|
|
496304c896 | ||
|
|
9cfde4d80c | ||
|
|
eba4453728 | ||
|
|
f36a2a11a6 | ||
|
|
6c9af9cc12 | ||
|
|
de6604ad5f | ||
|
|
d4ebfc7ab1 | ||
|
|
2a2f578c13 | ||
|
|
f04cf33c78 | ||
|
|
6d89bbacf7 | ||
|
|
0010255391 | ||
|
|
50de5610b9 | ||
|
|
8def56fd8b | ||
|
|
bdbcb236a1 | ||
|
|
70fa18f186 | ||
|
|
43a7255c2a | ||
|
|
8c24def8d8 | ||
|
|
937f285689 | ||
|
|
a66c960b21 | ||
|
|
81d922c8bd | ||
|
|
347364543d | ||
|
|
6bc703a9b0 | ||
|
|
ee99a768f4 | ||
|
|
beee212fcb | ||
|
|
33145e377b | ||
|
|
5552a9d538 | ||
|
|
4fcdb6f304 | ||
|
|
0e4d345fc1 | ||
|
|
ee0092e7ca | ||
|
|
c3f0a1edc4 | ||
|
|
a8b46ad10f | ||
|
|
daa65b40fb | ||
|
|
fa6027f7ba | ||
|
|
f26a085b13 | ||
|
|
9d09916c17 | ||
|
|
f250d9956b | ||
|
|
93994bb39c | ||
|
|
17f7d19624 | ||
|
|
7e0c1a8024 | ||
|
|
f6dc22c545 | ||
|
|
d196956519 | ||
|
|
4769c69ba7 | ||
|
|
f322b6191e | ||
|
|
e076c76b3f | ||
|
|
df8257a18f | ||
|
|
e7f22ca0d3 | ||
|
|
a9921ecdf0 | ||
|
|
a5da643513 | ||
|
|
8c68b7ce83 | ||
|
|
a4137a4edd | ||
|
|
cb5a181993 | ||
|
|
46972646d8 | ||
|
|
8549d4a13f | ||
|
|
47077af838 | ||
|
|
6cc589539b | ||
|
|
2237745c09 | ||
|
|
b74569abef | ||
|
|
de67847ef1 | ||
|
|
a430eaf41f | ||
|
|
31b68ae5e5 | ||
|
|
fa1877ef7b | ||
|
|
5851c4a5f1 | ||
|
|
4fadb9a633 | ||
|
|
d021559d7c | ||
|
|
7f22925063 | ||
|
|
e65fa778cb | ||
|
|
003ee7a926 | ||
|
|
8b344a653f | ||
|
|
7403aafe16 | ||
|
|
f7b6e8a3bc | ||
|
|
ad051c5e0e | ||
|
|
7ceb23f7a2 | ||
|
|
9760c838aa | ||
|
|
8002cecda4 | ||
|
|
27b1c6a2f2 |
@@ -1,29 +0,0 @@
|
||||
{
|
||||
"image": "ghcr.io/juliushaertl/nextcloud-dev-php80:latest",
|
||||
"forwardPorts": [80],
|
||||
"containerEnv": {
|
||||
"NEXTCLOUD_AUTOINSTALL_APPS": "deck",
|
||||
"XDEBUG_MODE": "debug"
|
||||
},
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"felixfbecker.php-intellisense",
|
||||
"octref.vetur"
|
||||
],
|
||||
"settings": {
|
||||
"php.suggest.basic": false,
|
||||
"git.alwaysSignOff": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"workspaceMount": "source=${localWorkspaceFolder},target=/var/www/html/apps-extra/deck,type=bind",
|
||||
"workspaceFolder": "/var/www/html/apps-extra/deck",
|
||||
"overrideCommand": true,
|
||||
"postAttachCommand": "bash ./.devcontainer/setup.sh",
|
||||
"portsAttributes": {
|
||||
"80": {
|
||||
"label": "Webserver"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
(
|
||||
cd /tmp && /usr/local/bin/bootstrap.sh apache2ctl start
|
||||
)
|
||||
|
||||
composer install --no-dev
|
||||
npm ci
|
||||
npm run dev
|
||||
@@ -9,6 +9,6 @@ module.exports = {
|
||||
'jsdoc/check-param-names': ['off'],
|
||||
'jsdoc/no-undefined-types': ['off'],
|
||||
'jsdoc/require-property-description': ['off'],
|
||||
'import/no-named-as-default-member': ['off'],
|
||||
'import/no-named-as-default-member': ['off']
|
||||
},
|
||||
}
|
||||
|
||||
37
.github/dependabot.yml
vendored
37
.github/dependabot.yml
vendored
@@ -2,7 +2,7 @@ version: 2
|
||||
updates:
|
||||
- package-ecosystem: npm
|
||||
directory: "/"
|
||||
target-branch: "main"
|
||||
target-branch: "master"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
@@ -11,41 +11,6 @@ updates:
|
||||
open-pull-requests-limit: 10
|
||||
reviewers:
|
||||
- juliushaertl
|
||||
|
||||
- package-ecosystem: npm
|
||||
target-branch: stable27
|
||||
versioning-strategy: lockfile-only
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major"]
|
||||
open-pull-requests-limit: 30
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
|
||||
- package-ecosystem: npm
|
||||
target-branch: stable26
|
||||
versioning-strategy: lockfile-only
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: weekly
|
||||
day: saturday
|
||||
time: "03:00"
|
||||
timezone: Europe/Paris
|
||||
ignore:
|
||||
- dependency-name: "*"
|
||||
update-types: ["version-update:semver-major"]
|
||||
open-pull-requests-limit: 30
|
||||
labels:
|
||||
- 3. to review
|
||||
- dependencies
|
||||
|
||||
- package-ecosystem: composer
|
||||
directory: "/"
|
||||
schedule:
|
||||
|
||||
2
.github/pull_request_template.md
vendored
2
.github/pull_request_template.md
vendored
@@ -1,6 +1,6 @@
|
||||
|
||||
* Resolves: # <!-- related github issue -->
|
||||
* Target version: main
|
||||
* Target version: master
|
||||
|
||||
### Summary
|
||||
|
||||
|
||||
43
.github/workflows/appbuild.yml
vendored
43
.github/workflows/appbuild.yml
vendored
@@ -1,43 +0,0 @@
|
||||
name: Package build
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [16.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Set up npm7
|
||||
run: npm i -g npm@7
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@2.27.1
|
||||
with:
|
||||
php-version: '7.4'
|
||||
tools: composer
|
||||
- name: install dependencies
|
||||
run: |
|
||||
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb
|
||||
sudo dpkg -i krankerl_0.14.0_amd64.deb
|
||||
- name: package
|
||||
run: |
|
||||
uname -a
|
||||
RUST_BACKTRACE=1 krankerl --version
|
||||
RUST_BACKTRACE=1 krankerl package
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: Deck app tarball
|
||||
path: build/artifacts/deck.tar.gz
|
||||
54
.github/workflows/appstore-build-publish.yml
vendored
54
.github/workflows/appstore-build-publish.yml
vendored
@@ -10,7 +10,7 @@ on:
|
||||
types: [published]
|
||||
|
||||
env:
|
||||
PHP_VERSION: 8.1
|
||||
PHP_VERSION: 7.4
|
||||
|
||||
jobs:
|
||||
build_and_publish:
|
||||
@@ -21,42 +21,42 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Check actor permission
|
||||
uses: skjnldsv/check-actor-permission@e591dbfe838300c007028e1219ca82cc26e8d7c5 # v2.1
|
||||
uses: skjnldsv/check-actor-permission@v2
|
||||
with:
|
||||
require: write
|
||||
|
||||
- name: Set app env
|
||||
run: |
|
||||
# Split and keep last
|
||||
# Split and keep last
|
||||
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
||||
echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4 # v3.5.2
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: ${{ env.APP_NAME }}
|
||||
|
||||
- name: Get appinfo data
|
||||
id: appinfo
|
||||
uses: skjnldsv/xpath-action@7e6a7c379d0e9abc8acaef43df403ab4fc4f770c # master
|
||||
uses: skjnldsv/xpath-action@master
|
||||
with:
|
||||
filename: ${{ env.APP_NAME }}/appinfo/info.xml
|
||||
expression: "//info//dependencies//nextcloud/@min-version"
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
|
||||
uses: skjnldsv/read-package-engines-version-actions@v1.2
|
||||
id: versions
|
||||
# Continue if no package.json
|
||||
continue-on-error: true
|
||||
with:
|
||||
path: ${{ env.APP_NAME }}
|
||||
fallbackNode: "^16"
|
||||
fallbackNpm: "^7"
|
||||
fallbackNode: "^12"
|
||||
fallbackNpm: "^6"
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
# Skip if no package.json
|
||||
if: ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v3
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -66,16 +66,14 @@ jobs:
|
||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Set up php ${{ env.PHP_VERSION }}
|
||||
uses: shivammathur/setup-php@2.27.1 # v2
|
||||
uses: shivammathur/setup-php@2.21.2
|
||||
with:
|
||||
php-version: ${{ env.PHP_VERSION }}
|
||||
coverage: none
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Check composer.json
|
||||
id: check_composer
|
||||
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
|
||||
uses: andstor/file-existence-action@v1
|
||||
with:
|
||||
files: "${{ env.APP_NAME }}/composer.json"
|
||||
|
||||
@@ -93,29 +91,16 @@ jobs:
|
||||
npm ci
|
||||
npm run build
|
||||
|
||||
- name: Check Krankerl config
|
||||
id: krankerl
|
||||
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
|
||||
with:
|
||||
files: ${{ env.APP_NAME }}/krankerl.toml
|
||||
|
||||
- name: Install Krankerl
|
||||
if: steps.krankerl.outputs.files_exists == 'true'
|
||||
run: |
|
||||
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.14.0/krankerl_0.14.0_amd64.deb
|
||||
sudo dpkg -i krankerl_0.14.0_amd64.deb
|
||||
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.13.0/krankerl_0.13.0_amd64.deb
|
||||
sudo dpkg -i krankerl_0.13.0_amd64.deb
|
||||
|
||||
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with krankerl
|
||||
if: steps.krankerl.outputs.files_exists == 'true'
|
||||
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }}
|
||||
# Try krankerl, fallback to makefile
|
||||
run: |
|
||||
cd ${{ env.APP_NAME }}
|
||||
krankerl package
|
||||
|
||||
- name: Package ${{ env.APP_NAME }} ${{ env.APP_VERSION }} with makefile
|
||||
if: steps.krankerl.outputs.files_exists != 'true'
|
||||
run: |
|
||||
cd ${{ env.APP_NAME }}
|
||||
make appstore
|
||||
krankerl package || make appstore
|
||||
|
||||
- name: Checkout server ${{ fromJSON(steps.appinfo.outputs.result).nextcloud.min-version }}
|
||||
continue-on-error: true
|
||||
@@ -126,10 +111,9 @@ jobs:
|
||||
unzip latest-$NCVERSION.zip
|
||||
|
||||
- name: Checkout server master fallback
|
||||
uses: actions/checkout@v4 # v3.5.2
|
||||
uses: actions/checkout@v3
|
||||
if: ${{ steps.server-checkout.outcome != 'success' }}
|
||||
with:
|
||||
submodules: true
|
||||
repository: nextcloud/server
|
||||
path: nextcloud
|
||||
|
||||
@@ -149,7 +133,7 @@ jobs:
|
||||
tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }}
|
||||
|
||||
- name: Attach tarball to github release
|
||||
uses: svenstaro/upload-release-action@1beeb572c19a9242f4361f4cee78f8e0d9aec5df # v2
|
||||
uses: svenstaro/upload-release-action@v2
|
||||
id: attach_to_release
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -159,7 +143,7 @@ jobs:
|
||||
overwrite: true
|
||||
|
||||
- name: Upload app to Nextcloud appstore
|
||||
uses: nextcloud-releases/nextcloud-appstore-push-action@a011fe619bcf6e77ddebc96f9908e1af4071b9c1 # v1
|
||||
uses: nextcloud-releases/nextcloud-appstore-push-action@v1
|
||||
with:
|
||||
app_name: ${{ env.APP_NAME }}
|
||||
appstore_token: ${{ secrets.APPSTORE_TOKEN }}
|
||||
|
||||
12
.github/workflows/command-rebase.yml
vendored
12
.github/workflows/command-rebase.yml
vendored
@@ -9,8 +9,8 @@ on:
|
||||
issue_comment:
|
||||
types: created
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
rebase:
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0
|
||||
uses: peter-evans/create-or-update-comment@v2
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
repository: ${{ github.event.repository.full_name }}
|
||||
@@ -31,18 +31,18 @@ jobs:
|
||||
reaction-type: "+1"
|
||||
|
||||
- name: Checkout the latest code
|
||||
uses: actions/checkout@v4 # v3.5.2
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Automatic Rebase
|
||||
uses: cirrus-actions/rebase@b87d48154a87a85666003575337e27b8cd65f691 # 1.8
|
||||
uses: cirrus-actions/rebase@1.7
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@23ff15729ef2fc348714a3bb66d2f655ca9066f2 # v3.1.0
|
||||
uses: peter-evans/create-or-update-comment@v2
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
26
.github/workflows/cypress.yml
vendored
26
.github/workflows/cypress.yml
vendored
@@ -14,22 +14,24 @@ env:
|
||||
jobs:
|
||||
cypress:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: self-hosted
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version: [20.x]
|
||||
node-version: [14.x]
|
||||
# containers: [1, 2, 3]
|
||||
php-versions: [ '8.0' ]
|
||||
php-versions: [ '7.4' ]
|
||||
databases: [ 'sqlite' ]
|
||||
server-versions: [ 'stable28' ]
|
||||
server-versions: [ 'stable25' ]
|
||||
|
||||
steps:
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Set up npm7
|
||||
run: npm i -g npm@7
|
||||
|
||||
- name: Register text Git reference
|
||||
run: |
|
||||
@@ -37,7 +39,7 @@ jobs:
|
||||
echo "text_app_ref=$text_app_ref" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: nextcloud/server
|
||||
ref: ${{ matrix.server-versions }}
|
||||
@@ -50,22 +52,22 @@ jobs:
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
|
||||
- name: Checkout ${{ env.APP_NAME }}
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Checkout text
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: nextcloud/text
|
||||
ref: ${{ env.text_app_ref }}
|
||||
path: apps/text
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@2.27.1
|
||||
uses: shivammathur/setup-php@2.25.4
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd, apcu
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite, apcu
|
||||
ini-values:
|
||||
apc.enable_cli=on
|
||||
coverage: none
|
||||
@@ -94,9 +96,9 @@ jobs:
|
||||
curl -v http://localhost:8081/index.php/login
|
||||
|
||||
- name: Cypress run
|
||||
uses: cypress-io/github-action@v6
|
||||
uses: cypress-io/github-action@v5
|
||||
with:
|
||||
record: false
|
||||
record: true
|
||||
parallel: false
|
||||
wait-on: '${{ env.CYPRESS_baseUrl }}'
|
||||
working-directory: 'apps/${{ env.APP_NAME }}'
|
||||
|
||||
10
.github/workflows/dependabot-approve-merge.yml
vendored
10
.github/workflows/dependabot-approve-merge.yml
vendored
@@ -15,26 +15,22 @@ on:
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: dependabot-approve-merge-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
auto-approve-merge:
|
||||
if: github.actor == 'dependabot[bot]'
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
# for hmarr/auto-approve-action to approve PRs
|
||||
pull-requests: write
|
||||
pull-requests: write
|
||||
|
||||
steps:
|
||||
# Github actions bot approve
|
||||
- uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
|
||||
- uses: hmarr/auto-approve-action@v2
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# Nextcloud bot approve and merge request
|
||||
- uses: ahmadnassri/action-dependabot-auto-merge@45fc124d949b19b6b8bf6645b6c9d55f4f9ac61a # v2
|
||||
- uses: ahmadnassri/action-dependabot-auto-merge@v2
|
||||
with:
|
||||
target: minor
|
||||
github-token: ${{ secrets.DEPENDABOT_AUTOMERGE_TOKEN }}
|
||||
|
||||
19
.github/workflows/fixup.yml
vendored
19
.github/workflows/fixup.yml
vendored
@@ -3,31 +3,18 @@
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Block fixup and squash commits
|
||||
name: Pull request checks
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
types: [opened, ready_for_review, reopened, synchronize]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: fixup-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
on: pull_request
|
||||
|
||||
jobs:
|
||||
commit-message-check:
|
||||
if: github.event.pull_request.draft == false
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
name: Block fixup and squash commits
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Run check
|
||||
uses: skjnldsv/block-fixup-merge-action@42d26e1b536ce61e5cf467d65fb76caf4aa85acf # v1
|
||||
uses: xt0rted/block-autosquash-commits-action@v2
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
23
.github/workflows/integration.yml
vendored
23
.github/workflows/integration.yml
vendored
@@ -26,9 +26,9 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.1']
|
||||
php-versions: ['7.4']
|
||||
databases: ['sqlite', 'mysql', 'pgsql']
|
||||
server-versions: ['stable28']
|
||||
server-versions: ['stable25']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
|
||||
|
||||
@@ -52,7 +52,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: nextcloud/server
|
||||
ref: ${{ matrix.server-versions }}
|
||||
@@ -66,15 +66,22 @@ jobs:
|
||||
cd build/integration && composer require --dev phpunit/phpunit:~9
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Checkout activity
|
||||
uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
|
||||
with:
|
||||
repository: nextcloud/activity
|
||||
ref: ${{ matrix.server-versions }}
|
||||
path: apps/activity
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@2.27.1
|
||||
uses: shivammathur/setup-php@2.25.4
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql, apcu
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql, apcu
|
||||
ini-values:
|
||||
apc.enable_cli=on
|
||||
coverage: none
|
||||
@@ -107,7 +114,7 @@ jobs:
|
||||
|
||||
- name: Query count
|
||||
if: ${{ matrix.databases == 'mysql' }}
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v6
|
||||
with:
|
||||
github-token: ${{secrets.GITHUB_TOKEN}}
|
||||
script: |
|
||||
@@ -151,4 +158,4 @@ jobs:
|
||||
repo: context.repo.repo,
|
||||
body: comment
|
||||
})
|
||||
}
|
||||
}
|
||||
62
.github/workflows/lint-eslint.yml
vendored
62
.github/workflows/lint-eslint.yml
vendored
@@ -1,62 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
#
|
||||
# Use lint-eslint together with lint-eslint-when-unrelated to make eslint a required check for GitHub actions
|
||||
# https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/defining-the-mergeability-of-pull-requests/troubleshooting-required-status-checks#handling-skipped-but-required-checks
|
||||
|
||||
name: Lint eslint
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/workflows/**'
|
||||
- 'src/**'
|
||||
- 'appinfo/info.xml'
|
||||
- 'package.json'
|
||||
- 'package-lock.json'
|
||||
- 'tsconfig.json'
|
||||
- '.eslintrc.*'
|
||||
- '.eslintignore'
|
||||
- '**.js'
|
||||
- '**.ts'
|
||||
- '**.vue'
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: lint-eslint-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
name: eslint
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4 # v3.5.2
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^16'
|
||||
fallbackNpm: '^7'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v3
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
|
||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Lint
|
||||
run: npm run lint
|
||||
40
.github/workflows/lint-php-cs.yml
vendored
40
.github/workflows/lint-php-cs.yml
vendored
@@ -1,40 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Lint php-cs
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: lint-php-cs-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
name: php-cs
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4 # v3.5.2
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@2.27.1 # v2
|
||||
with:
|
||||
php-version: 8.1
|
||||
coverage: none
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer i
|
||||
|
||||
- name: Lint
|
||||
run: composer run cs:check || ( echo 'Please run `composer run cs:fix` to format your code' && exit 1 )
|
||||
60
.github/workflows/lint-php.yml
vendored
60
.github/workflows/lint-php.yml
vendored
@@ -1,60 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Lint php
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- stable*
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: lint-php-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
php-lint:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: [ "8.0", "8.1", "8.2", "8.3" ]
|
||||
|
||||
name: php-lint
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4 # v3.5.2
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@2.27.1 # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
coverage: none
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Lint
|
||||
run: composer run lint
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: php-lint
|
||||
|
||||
if: always()
|
||||
|
||||
name: php-lint-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.php-lint.result != 'success' && needs.php-lint.result != 'skipped' }}; then exit 1; fi
|
||||
46
.github/workflows/lint-stylelint.yml
vendored
46
.github/workflows/lint-stylelint.yml
vendored
@@ -1,46 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Lint stylelint
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: lint-stylelint-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
name: stylelint
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4 # v3.5.2
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^16'
|
||||
fallbackNpm: '^7'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v3
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
|
||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Lint
|
||||
run: npm run stylelint
|
||||
88
.github/workflows/lint.yml
vendored
Normal file
88
.github/workflows/lint.yml
vendored
Normal file
@@ -0,0 +1,88 @@
|
||||
name: Lint
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
jobs:
|
||||
php:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
|
||||
name: php${{ matrix.php-versions }} lint
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up php${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@2.21.2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
coverage: none
|
||||
- name: Lint
|
||||
run: composer run lint
|
||||
|
||||
php-cs-fixer:
|
||||
name: php-cs check
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@2.21.2
|
||||
with:
|
||||
php-version: 7.4
|
||||
coverage: none
|
||||
- name: Install dependencies
|
||||
run: composer i
|
||||
- name: Run coding standards check
|
||||
run: composer run cs:check
|
||||
|
||||
node:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [14.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use node ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Set up npm7
|
||||
run: npm i -g npm@7
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
- name: ESLint
|
||||
run: npm run lint
|
||||
|
||||
stylelint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [14.x]
|
||||
|
||||
name: stylelint node${{ matrix.node-version }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Set up node ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
|
||||
- name: Set up npm7
|
||||
run: npm i -g npm@7
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
|
||||
- name: Lint
|
||||
run: npm run stylelint
|
||||
4
.github/workflows/nodejs.yml
vendored
4
.github/workflows/nodejs.yml
vendored
@@ -12,9 +12,9 @@ jobs:
|
||||
node-version: [14.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Set up npm7
|
||||
|
||||
71
.github/workflows/npm-audit-fix.yml
vendored
71
.github/workflows/npm-audit-fix.yml
vendored
@@ -1,71 +0,0 @@
|
||||
# This workflow is provided via the organization template repository
|
||||
#
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Npm audit fix and compile
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# At 2:30 on Sundays
|
||||
- cron: '30 2 * * 0'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
branches: ["main", "master", "stable27", "stable26", "stable25", "stable24"]
|
||||
|
||||
name: npm-audit-fix-${{ matrix.branches }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4 # v3.5.2
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
|
||||
- name: Read package.json node and npm engines version
|
||||
uses: skjnldsv/read-package-engines-version-actions@8205673bab74a63eb9b8093402fd9e0e018663a1 # v2.2
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^16'
|
||||
fallbackNpm: '^7'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@8f152de45cc393bb48ce5d89d36b731f54556e65 # v3
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
- name: Set up npm ${{ steps.versions.outputs.npmVersion }}
|
||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Fix npm audit
|
||||
run: |
|
||||
npm audit fix
|
||||
|
||||
- name: Run npm ci and npm run build
|
||||
if: always()
|
||||
run: |
|
||||
npm ci
|
||||
npm run build --if-present
|
||||
|
||||
- name: Create Pull Request
|
||||
if: always()
|
||||
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 # v5
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
commit-message: "chore(deps): fix npm audit"
|
||||
committer: GitHub <noreply@github.com>
|
||||
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
|
||||
signoff: true
|
||||
branch: automated/noid/${{ matrix.branches }}-fix-npm-audit
|
||||
title: "[${{ matrix.branches }}] Fix npm audit"
|
||||
body: |
|
||||
Auto-generated fix of npm audit
|
||||
labels: |
|
||||
dependencies
|
||||
3. to review
|
||||
11
.github/workflows/phpunit.yml
vendored
11
.github/workflows/phpunit.yml
vendored
@@ -26,9 +26,9 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1', '8.2', '8.3']
|
||||
php-versions: ['7.4', '8.0', '8.1']
|
||||
databases: ['sqlite', 'mysql', 'pgsql']
|
||||
server-versions: ['stable28']
|
||||
server-versions: ['stable25']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
|
||||
|
||||
@@ -52,7 +52,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: nextcloud/server
|
||||
ref: ${{ matrix.server-versions }}
|
||||
@@ -65,16 +65,17 @@ jobs:
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@2.27.1
|
||||
uses: shivammathur/setup-php@2.24.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
tools: phpunit
|
||||
extensions: zip, gd, mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql
|
||||
ini-file: development
|
||||
coverage: none
|
||||
|
||||
- name: Set up PHPUnit
|
||||
|
||||
29
.github/workflows/pr-feedback.yml
vendored
29
.github/workflows/pr-feedback.yml
vendored
@@ -1,29 +0,0 @@
|
||||
name: 'Ask for feedback on PRs'
|
||||
on:
|
||||
schedule:
|
||||
- cron: '30 1 * * *'
|
||||
|
||||
jobs:
|
||||
pr-feedback:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: The get-github-handles-from-website action
|
||||
uses: marcelklehr/get-github-handles-from-website-action@a739600f6b91da4957f51db0792697afbb2f143c # v1.0.0
|
||||
id: scrape
|
||||
with:
|
||||
website: 'https://nextcloud.com/team/'
|
||||
- uses: marcelklehr/pr-feedback-action@601109aa729eb4c8d6d0ece7567b9d4901db4aef
|
||||
with:
|
||||
feedback-message: |
|
||||
Hello there,
|
||||
Thank you so much for taking the time and effort to create a pull request to our Nextcloud project.
|
||||
|
||||
We hope that the reviewing process is going smooth and is helpful for you. We want to ensure your pull request is reviewed to your satisfaction. If you have a moment, our community management team would very much appreciate your feedback on your experience with this PR reviewing process.
|
||||
|
||||
Your feedback is valuable to us as we continuously strive to improve our community developer experience. Please take a moment to complete our short survey by clicking on the following link: https://cloud.nextcloud.com/apps/forms/s/i9Ago4EQRZ7TWxjfmeEpPkf6
|
||||
|
||||
Thank you for contributing to Nextcloud and we hope to hear from you soon!
|
||||
days-before-feedback: 14
|
||||
start-date: "2023-07-10"
|
||||
exempt-authors: "${{ steps.scrape.outputs.users }}"
|
||||
exempt-bots: true
|
||||
13
.github/workflows/psalm.yml
vendored
13
.github/workflows/psalm.yml
vendored
@@ -13,10 +13,6 @@ on:
|
||||
- main
|
||||
- stable*
|
||||
|
||||
concurrency:
|
||||
group: psalm-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
static-analysis:
|
||||
runs-on: ubuntu-latest
|
||||
@@ -24,16 +20,13 @@ jobs:
|
||||
name: Nextcloud
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4 # v3.5.2
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@2.27.1 # v2
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: 8.1
|
||||
php-version: 7.4
|
||||
coverage: none
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Install dependencies
|
||||
run: composer i
|
||||
|
||||
40
.github/workflows/update-nextcloud-ocp.yml
vendored
40
.github/workflows/update-nextcloud-ocp.yml
vendored
@@ -17,60 +17,42 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
branches: ["main", "master", "stable27", "stable26", "stable25"]
|
||||
branches: ["master", "stable25", "stable24", "stable23"]
|
||||
|
||||
name: update-nextcloud-ocp-${{ matrix.branches }}
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4 # v3.5.2
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
submodules: true
|
||||
|
||||
- name: Set up php8.1
|
||||
uses: shivammathur/setup-php@2.27.1 # v2
|
||||
- name: Set up php7.4
|
||||
uses: shivammathur/setup-php@v2
|
||||
with:
|
||||
php-version: 8.1
|
||||
# https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html#prerequisites-for-manual-installation
|
||||
extensions: bz2, ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring, openssl, pcntl, posix, session, simplexml, xmlreader, xmlwriter, zip, zlib, sqlite, pdo_sqlite
|
||||
php-version: 7.4
|
||||
extensions: ctype,curl,dom,fileinfo,gd,intl,json,mbstring,openssl,pdo_sqlite,posix,sqlite,xml,zip
|
||||
coverage: none
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Composer install
|
||||
run: composer install
|
||||
|
||||
- name: Composer update nextcloud/ocp
|
||||
if: matrix.branches != 'main'
|
||||
run: composer require --dev nextcloud/ocp:dev-${{ matrix.branches }}
|
||||
continue-on-error: true
|
||||
|
||||
- name: Composer update nextcloud/ocp
|
||||
if: matrix.branches == 'main'
|
||||
run: composer require --dev nextcloud/ocp:dev-master
|
||||
|
||||
- name: Reset checkout 3rdparty
|
||||
- name: Reset checkout dirs
|
||||
run: |
|
||||
git clean -f 3rdparty
|
||||
git checkout 3rdparty
|
||||
continue-on-error: true
|
||||
|
||||
- name: Reset checkout vendor
|
||||
run: |
|
||||
git clean -f vendor
|
||||
git checkout vendor
|
||||
continue-on-error: true
|
||||
|
||||
- name: Reset checkout vendor-bin
|
||||
run: |
|
||||
git clean -f vendor-bin
|
||||
git checkout vendor-bin
|
||||
git checkout 3rdparty vendor
|
||||
continue-on-error: true
|
||||
|
||||
- name: Create Pull Request
|
||||
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38 # v3
|
||||
uses: peter-evans/create-pull-request@v3
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
commit-message: "chore(dev-deps): Bump nextcloud/ocp package"
|
||||
commit-message: Update psalm baseline
|
||||
committer: GitHub <noreply@github.com>
|
||||
author: nextcloud-command <nextcloud-command@users.noreply.github.com>
|
||||
signoff: true
|
||||
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -3,11 +3,9 @@ js/
|
||||
build/
|
||||
css/style.css
|
||||
css/vendor.css
|
||||
cypress/videos/
|
||||
tests/integration/vendor/
|
||||
tests/integration/composer.lock
|
||||
tests/.phpunit.result.cache
|
||||
vendor/
|
||||
.php_cs.cache
|
||||
\.idea/
|
||||
settings.json
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
lang_map = hu_HU: hu, nb_NO: nb, sk_SK: sk, th_TH: th, ja_JP: ja, bg_BG: bg, cs_CZ: cs, fi_FI: fi
|
||||
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
|
||||
|
||||
[o:nextcloud:p:nextcloud:r:deck]
|
||||
file_filter = translationfiles/<lang>/deck.po
|
||||
|
||||
260
CHANGELOG.md
260
CHANGELOG.md
@@ -1,226 +1,74 @@
|
||||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## 1.12.0
|
||||
|
||||
### Added
|
||||
|
||||
- Added ability to mark a card as done @TehThanos [#4137](https://github.com/nextcloud/deck/pull/4137)
|
||||
- Card Cover Images @jszeibert [#5035](https://github.com/nextcloud/deck/pull/5035)
|
||||
- Upcoming/Today/Tomorrow dashboard widgets @BKapelari [#2658](https://github.com/nextcloud/deck/pull/2658)
|
||||
- Enabled advanced fields option on tag color picker @faab007nl [#4362](https://github.com/nextcloud/deck/pull/4362)
|
||||
- Remember last board, list for new card dialog @luka-nextcloud [#5046](https://github.com/nextcloud/deck/pull/5046)
|
||||
- Add support for bidirectional text @jamazi [#5258](https://github.com/nextcloud/deck/pull/5258)
|
||||
- Card layout polishing @juliushaertl [#5264](https://github.com/nextcloud/deck/pull/5264)
|
||||
- feat: Move to contenteditable for inline title editing @juliushaertl [#5282](https://github.com/nextcloud/deck/pull/5282)
|
||||
- scroll board by dragging @shoetten [#5293](https://github.com/nextcloud/deck/pull/5293)
|
||||
- Keyboard shortcuts [#5358](https://github.com/nextcloud/deck/pull/5358)
|
||||
## 1.8.7
|
||||
|
||||
### Fixed
|
||||
|
||||
- fix: allow null label colors in trello json importer [#5355](https://github.com/nextcloud/deck/pull/5355)
|
||||
- fix: Get proper rich object for card actions [#5352](https://github.com/nextcloud/deck/pull/5352)
|
||||
- fix: Use text content as result for comments @juliushaertl [#5294](https://github.com/nextcloud/deck/pull/5294)
|
||||
- fix: Bring back due date indicator to compact mode @juliushaertl [#5292](https://github.com/nextcloud/deck/pull/5292)
|
||||
- Fix small issues around delete/undo @juliushaertl [#5296](https://github.com/nextcloud/deck/pull/5296)
|
||||
- fix(controls): use primary when filter is active @fitrahfm [#5299](https://github.com/nextcloud/deck/pull/5299)
|
||||
- fix: Properly get done state for dav @juliushaertl [#5287](https://github.com/nextcloud/deck/pull/5287)
|
||||
- Fix upcoming cards and label input @juliushaertl [#5290](https://github.com/nextcloud/deck/pull/5290)
|
||||
- fix: Properly handle adding new tags through multiselect @juliushaertl [#5285](https://github.com/nextcloud/deck/pull/5285)
|
||||
- fix: Avoid throwing errors if no token provided on close @juliushaertl [#5284](https://github.com/nextcloud/deck/pull/5284)
|
||||
- fix: Expose card actions in the card menu (fix #3180) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Use full card menu everywhere (fix #3993) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Detect end of the activity responses (fix #3395) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Add title with absolute date time to activity (fix #4508, fix #2122) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Disable dragging archived cards (fix #3271) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Hide unavailable card menu entries for archived card view [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Use localCompare to sort labels (fix #2736) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: More fitting click target for title editing [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Always load proper dashboard js (fixes a log error) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Set fixed height for card modal (fix #4296) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Make sure to always update card description when navigating away (fix #5254 #2705) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- perf: Already pass board list as initial state @juliushaertl [#5281](https://github.com/nextcloud/deck/pull/5281)
|
||||
- Deck card comment notification label improvement @Jerome-Herbinet [#4748](https://github.com/nextcloud/deck/pull/4748)
|
||||
- update smart picker links @luka-nextcloud [#5047](https://github.com/nextcloud/deck/pull/5047)
|
||||
- feat: Enhance dark mode @juliushaertl [#5045](https://github.com/nextcloud/deck/pull/5045)
|
||||
- fix: export doesn't handle lists with no cards @magikmw [#5096](https://github.com/nextcloud/deck/pull/5096)
|
||||
- add attributes aria-label= and title= to Filters & View Modes buttons @privatemaker [#5133](https://github.com/nextcloud/deck/pull/5133)
|
||||
- fix: Check both card reference url patterns @juliushaertl [#5262](https://github.com/nextcloud/deck/pull/5262)
|
||||
- fix: Avoid too large index on postgres as indexing just the last_editor column is enough @juliushaertl [#5260](https://github.com/nextcloud/deck/pull/5260)
|
||||
- feat: error msg on CreateNewCardCustomPicker & only show available bo… @luka-nextcloud [#5029](https://github.com/nextcloud/deck/pull/5029)
|
||||
- test: add cypress tests for create new deck card @luka-nextcloud [#5025](https://github.com/nextcloud/deck/pull/5025)
|
||||
- Remove duplicate button @solracsf [#4850](https://github.com/nextcloud/deck/pull/4850)
|
||||
- [stable27] fix cypress for new file picker [#5088](https://github.com/nextcloud/deck/pull/5088)
|
||||
- Replace "Timeline" wording with "Activity" in order to be consistent with equivalent contexts throughout Nextcloud @Jerome-Herbinet [#5164](https://github.com/nextcloud/deck/pull/5164)
|
||||
- Board creation limitation : More understandable wordings @Jerome-Herbinet [#5168](https://github.com/nextcloud/deck/pull/5168)
|
||||
- ci(cypress): Fix file picker selector @juliushaertl [#5212](https://github.com/nextcloud/deck/pull/5212)
|
||||
- Switch to native date picker @juliushaertl [#4668](https://github.com/nextcloud/deck/pull/4668)
|
||||
- fixes minor spelling error @FundreasFrohsinn [#5216](https://github.com/nextcloud/deck/pull/5216)
|
||||
- feat(card): tooltip for comment timestamp @fitrahfm [#5253](https://github.com/nextcloud/deck/pull/5253)
|
||||
- Fix small issues around delete/undo @juliushaertl [#5440](https://github.com/nextcloud/deck/pull/5440)
|
||||
- Fix deleted card/board issues @juliushaertl [#5444](https://github.com/nextcloud/deck/pull/5444)
|
||||
|
||||
## 1.12.0-beta.5
|
||||
|
||||
### Added
|
||||
|
||||
- Keyboard shortcuts [#5358](https://github.com/nextcloud/deck/pull/5358)
|
||||
## 1.8.6
|
||||
|
||||
### Fixed
|
||||
|
||||
- fix: allow null label colors in trello json importer [#5355](https://github.com/nextcloud/deck/pull/5355)
|
||||
- fix: Get proper rich object for card actions [#5352](https://github.com/nextcloud/deck/pull/5352)
|
||||
- Prevent tag itself being edit button if user lacks permissions [#4767](https://github.com/nextcloud/deck/pull/4767)
|
||||
- Fix(occ): set user id for permission sevice from board service [#4815](https://github.com/nextcloud/deck/pull/4815)
|
||||
- fix(notification): Prevent null in parameters [#4911](https://github.com/nextcloud/deck/pull/4911)
|
||||
- fix: Allow dynamic autoloading for classes added during upgrade [#4806](https://github.com/nextcloud/deck/pull/4806)
|
||||
- Ensure `$boardId` is an integer [#4775](https://github.com/nextcloud/deck/pull/4775)
|
||||
- fix: crash when leaving out system parameter [#4833](https://github.com/nextcloud/deck/pull/4833)
|
||||
- Fix CI @juliushaertl [#4912](https://github.com/nextcloud/deck/pull/4912)
|
||||
- fix: Split query to fetch board ids to avoid slow query join @juliushaertl [#4963](https://github.com/nextcloud/deck/pull/4963)
|
||||
- Dependency updates
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Update nextcloud/ocp dependency @nextcloud-command [#5343](https://github.com/nextcloud/deck/pull/5343)
|
||||
- Chore(deps): Bump @babel/runtime from 7.23.4 to 7.23.5 @dependabot[bot] [#5338](https://github.com/nextcloud/deck/pull/5338)
|
||||
|
||||
|
||||
## 1.12.0-beta.4
|
||||
|
||||
### Added
|
||||
|
||||
- scroll board by dragging @shoetten [#5293](https://github.com/nextcloud/deck/pull/5293)
|
||||
## 1.8.5
|
||||
|
||||
### Fixed
|
||||
|
||||
- fix: Use text content as result for comments @juliushaertl [#5294](https://github.com/nextcloud/deck/pull/5294)
|
||||
- fix: Bring back due date indicator to compact mode @juliushaertl [#5292](https://github.com/nextcloud/deck/pull/5292)
|
||||
- Fix small issues around delete/undo @juliushaertl [#5296](https://github.com/nextcloud/deck/pull/5296)
|
||||
- fix(controls): use primary when filter is active @fitrahfm [#5299](https://github.com/nextcloud/deck/pull/5299)
|
||||
- fix: Properly overwrite z-index of datepicker above modal [#4667](https://github.com/nextcloud/deck/pull/4667)
|
||||
|
||||
## 1.12.0-beta.3
|
||||
|
||||
### Added
|
||||
|
||||
- feat: Move to contenteditable for inline title editing @juliushaertl [#5282](https://github.com/nextcloud/deck/pull/5282)
|
||||
## 1.8.4
|
||||
|
||||
### Fixed
|
||||
|
||||
- fix: Properly get done state for dav @juliushaertl [#5287](https://github.com/nextcloud/deck/pull/5287)
|
||||
- Fix upcoming cards and label input @juliushaertl [#5290](https://github.com/nextcloud/deck/pull/5290)
|
||||
- fix: Use passed userid when getting attachment folder [#4540](https://github.com/nextcloud/deck/pull/4540)
|
||||
- fix: Adapt NcEmptyContent usages to new slots [#4563](https://github.com/nextcloud/deck/pull/4563)
|
||||
- Gracefully handle not found card for a share [#4568](https://github.com/nextcloud/deck/pull/4568)
|
||||
- allow user to toggle visibility of the calendar for a deck board [#4626](https://github.com/nextcloud/deck/pull/4626)
|
||||
- fix: Append datetime picker to body to avoid cut off [#4645](https://github.com/nextcloud/deck/pull/4645)
|
||||
- Fix : Overlapping expiry dates on tags [#4536](https://github.com/nextcloud/deck/pull/4536)
|
||||
- Better display of card dates (creation and change dates) [#4620](https://github.com/nextcloud/deck/pull/4620)
|
||||
- Dependency updates
|
||||
|
||||
## 1.12.0-beta.2
|
||||
|
||||
### Added
|
||||
|
||||
- Card layout polishing @juliushaertl [#5264](https://github.com/nextcloud/deck/pull/5264)
|
||||
## 1.8.3
|
||||
|
||||
### Fixed
|
||||
|
||||
- fix: Properly handle adding new tags through multiselect @juliushaertl [#5285](https://github.com/nextcloud/deck/pull/5285)
|
||||
- fix: Avoid throwing errors if no token provided on close @juliushaertl [#5284](https://github.com/nextcloud/deck/pull/5284)
|
||||
- fix: Expose card actions in the card menu (fix #3180) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Use full card menu everywhere (fix #3993) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Detect end of the activity responses (fix #3395) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Add title with absolute date time to activity (fix #4508, fix #2122) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Disable dragging archived cards (fix #3271) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Hide unavailable card menu entries for archived card view [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Use localCompare to sort labels (fix #2736) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: More fitting click target for title editing [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Always load proper dashboard js (fixes a log error) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Set fixed height for card modal (fix #4296) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- fix: Make sure to always update card description when navigating away (fix #5254 #2705) [#5280](https://github.com/nextcloud/deck/pull/5280)
|
||||
- perf: Already pass board list as initial state @juliushaertl [#5281](https://github.com/nextcloud/deck/pull/5281)
|
||||
|
||||
### Dependencies
|
||||
|
||||
- Fix npm audit @nextcloud-command [#5277](https://github.com/nextcloud/deck/pull/5277)
|
||||
- Update nextcloud/ocp dependency @nextcloud-command [#5275](https://github.com/nextcloud/deck/pull/5275)
|
||||
- Chore(deps): Bump @nextcloud/dialogs from 4.2.1 to 4.2.2 @dependabot[bot] [#5266](https://github.com/nextcloud/deck/pull/5266)
|
||||
- Chore(deps-dev): Bump cypress from 13.4.0 to 13.5.0 @dependabot[bot] [#5267](https://github.com/nextcloud/deck/pull/5267)
|
||||
- Chore(deps): Bump shivammathur/setup-php from 2.27.0 to 2.27.1 @dependabot[bot] [#5268](https://github.com/nextcloud/deck/pull/5268)
|
||||
|
||||
|
||||
## 1.12.0-beta.1
|
||||
|
||||
### Added
|
||||
|
||||
- Added ability to mark a card as done @TehThanos [#4137](https://github.com/nextcloud/deck/pull/4137)
|
||||
- Card Cover Images @jszeibert [#5035](https://github.com/nextcloud/deck/pull/5035)
|
||||
- Upcoming/Today/Tomorrow dashboard widgets @BKapelari [#2658](https://github.com/nextcloud/deck/pull/2658)
|
||||
- Enabled advanced fields option on tag color picker @faab007nl [#4362](https://github.com/nextcloud/deck/pull/4362)
|
||||
- Remember last board, list for new card dialog @luka-nextcloud [#5046](https://github.com/nextcloud/deck/pull/5046)
|
||||
- Add support for bidirectional text @jamazi [#5258](https://github.com/nextcloud/deck/pull/5258)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Deck card comment notification label improvement @Jerome-Herbinet [#4748](https://github.com/nextcloud/deck/pull/4748)
|
||||
- update smart picker links @luka-nextcloud [#5047](https://github.com/nextcloud/deck/pull/5047)
|
||||
- feat: Enhance dark mode @juliushaertl [#5045](https://github.com/nextcloud/deck/pull/5045)
|
||||
- fix: export doesn't handle lists with no cards @magikmw [#5096](https://github.com/nextcloud/deck/pull/5096)
|
||||
- add attributes aria-label= and title= to Filters & View Modes buttons @privatemaker [#5133](https://github.com/nextcloud/deck/pull/5133)
|
||||
- fix: Check both card reference url patterns @juliushaertl [#5262](https://github.com/nextcloud/deck/pull/5262)
|
||||
- fix: Avoid too large index on postgres as indexing just the last_editor column is enough @juliushaertl [#5260](https://github.com/nextcloud/deck/pull/5260)
|
||||
- feat: error msg on CreateNewCardCustomPicker & only show available bo… @luka-nextcloud [#5029](https://github.com/nextcloud/deck/pull/5029)
|
||||
- test: add cypress tests for create new deck card @luka-nextcloud [#5025](https://github.com/nextcloud/deck/pull/5025)
|
||||
- Remove duplicate button @solracsf [#4850](https://github.com/nextcloud/deck/pull/4850)
|
||||
- [stable27] fix cypress for new file picker [#5088](https://github.com/nextcloud/deck/pull/5088)
|
||||
- Replace "Timeline" wording with "Activity" in order to be consistent with equivalent contexts throughout Nextcloud @Jerome-Herbinet [#5164](https://github.com/nextcloud/deck/pull/5164)
|
||||
- Board creation limitation : More understandable wordings @Jerome-Herbinet [#5168](https://github.com/nextcloud/deck/pull/5168)
|
||||
- ci(cypress): Fix file picker selector @juliushaertl [#5212](https://github.com/nextcloud/deck/pull/5212)
|
||||
- Switch to native date picker @juliushaertl [#4668](https://github.com/nextcloud/deck/pull/4668)
|
||||
- fixes minor spelling error @FundreasFrohsinn [#5216](https://github.com/nextcloud/deck/pull/5216)
|
||||
- feat(card): tooltip for comment timestamp @fitrahfm [#5253](https://github.com/nextcloud/deck/pull/5253)
|
||||
|
||||
## 1.10.0-beta.1
|
||||
|
||||
### Added
|
||||
|
||||
- Compatibility with Nextcloud 27
|
||||
|
||||
### Fixed
|
||||
|
||||
- fix(references): Mute NoPermissionException as it is expected to happen for references @juliushaertl [#4514](https://github.com/nextcloud/deck/pull/4514)
|
||||
- fix(cards): Fix card sizing by limiting too wide style rules @juliushaertl [#4512](https://github.com/nextcloud/deck/pull/4512)
|
||||
- fix: Adapt NcEmptyContent usages to new slots @juliushaertl [#4561](https://github.com/nextcloud/deck/pull/4561)
|
||||
- Gracefully handle not found card for a share @mejo- [#4566](https://github.com/nextcloud/deck/pull/4566)
|
||||
- Prevent tag itself being edit button if user lacks permissions @joshtrichards [#4574](https://github.com/nextcloud/deck/pull/4574)
|
||||
- chore: Remove unused @nextcloud/vue-dashboard @juliushaertl [#4586](https://github.com/nextcloud/deck/pull/4586)
|
||||
- Update Description.vue: Fixes the issue of hidden text by menu bar @pschopen [#4617](https://github.com/nextcloud/deck/pull/4617)
|
||||
- allow user to toggle visibility of the calendar for a deck board @schiessle [#4622](https://github.com/nextcloud/deck/pull/4622)
|
||||
- fix: Append datetime picker to body to avoid cut off @juliushaertl [#4643](https://github.com/nextcloud/deck/pull/4643)
|
||||
- fix: Bring back overdue column by removing faulty condition @juliushaertl [#4660](https://github.com/nextcloud/deck/pull/4660)
|
||||
- fix(sessions): Do not send close request without token @juliushaertl [#4510](https://github.com/nextcloud/deck/pull/4510)
|
||||
- tests(integration): Add test for multiple board shares to the same user @juliushaertl [#4494](https://github.com/nextcloud/deck/pull/4494)
|
||||
- fix(API): Fix board API details parameter to work as expected @nickvergessen [#4518](https://github.com/nextcloud/deck/pull/4518)
|
||||
- Fix : Overlapping expiry dates on tags @Jerome-Herbinet [#4535](https://github.com/nextcloud/deck/pull/4535)
|
||||
- Fix consistency of a "Create card" wording with its equivalent for Notes ("New card") @Jerome-Herbinet [#4534](https://github.com/nextcloud/deck/pull/4534)
|
||||
- tests(integration): Add integration tests for due dates @juliushaertl [#4489](https://github.com/nextcloud/deck/pull/4489)
|
||||
- Better display of card dates (creation and change dates) @Jerome-Herbinet [#4604](https://github.com/nextcloud/deck/pull/4604)
|
||||
- Refactors lib\Activity\DeckProvider.php to improve code readability. @fsamapoor [#4648](https://github.com/nextcloud/deck/pull/4648)
|
||||
- Converts 'strpos()' calls to improve code readability. @fsamapoor [#4657](https://github.com/nextcloud/deck/pull/4657)
|
||||
|
||||
|
||||
## 1.9.0-beta.1
|
||||
|
||||
### Added
|
||||
|
||||
- Export Board @david-loe [#3065](https://github.com/nextcloud/deck/pull/3065)
|
||||
- basic notify_push usage with session handling @alangecker [#3876](https://github.com/nextcloud/deck/pull/3876)
|
||||
- feat(Description): Use text as editor if available @juliushaertl [#4399](https://github.com/nextcloud/deck/pull/4399)
|
||||
- Improve reference provider and add reference widgets @julien-nc [#4422](https://github.com/nextcloud/deck/pull/4422)
|
||||
- live updates 🎉 @alangecker [#4273](https://github.com/nextcloud/deck/pull/4273)
|
||||
- Tag creation from card view @juliushaertl [#4344](https://github.com/nextcloud/deck/pull/4344)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix component renaming so that acl works on shares again @small1 [#4315](https://github.com/nextcloud/deck/pull/4315)
|
||||
- fix(Sidebar): Only close sidebar on v-click-outside for specific targets @juliushaertl [#4350](https://github.com/nextcloud/deck/pull/4350)
|
||||
- add basic e2e tests for stack title @shoetten [#4206](https://github.com/nextcloud/deck/pull/4206)
|
||||
- App metadata: add links to user and developer documentation @p-bo [#4356](https://github.com/nextcloud/deck/pull/4356)
|
||||
- Update signature of Entity::markFieldUpdated @nickvergessen [#4398](https://github.com/nextcloud/deck/pull/4398)
|
||||
- Remove updated nightly information @xf- [#4419](https://github.com/nextcloud/deck/pull/4419)
|
||||
- perf: Register notifier and resource listener lazy @juliushaertl [#4439](https://github.com/nextcloud/deck/pull/4439)
|
||||
- perf: Lazy load dashboard components @juliushaertl [#4440](https://github.com/nextcloud/deck/pull/4440)
|
||||
- Optimise upcomming overview creation @Raudius [#3793](https://github.com/nextcloud/deck/pull/3793)
|
||||
- Performance boost @juliushaertl [#4452](https://github.com/nextcloud/deck/pull/4452)
|
||||
|
||||
### Other
|
||||
- Fix component renaming so that acl works on shares again [#4328](https://github.com/nextcloud/deck/pull/4328)
|
||||
- Permanently delete deck cards marked as deleted after 5 min in a cron job [#4301](https://github.com/nextcloud/deck/pull/4301)
|
||||
- Dependency updates
|
||||
|
||||
|
||||
## 1.8.0-beta.1
|
||||
### Enhancements
|
||||
## 1.8.2
|
||||
|
||||
### Fixed
|
||||
|
||||
- minor style fixes [#4201](https://github.com/nextcloud/deck/pull/4201)
|
||||
- feat: add validators to check values in services [#4174](https://github.com/nextcloud/deck/pull/4174)
|
||||
- Add integration test for attachment handling on cards [#4179](https://github.com/nextcloud/deck/pull/4179)
|
||||
- Add missing userId property [#4198](https://github.com/nextcloud/deck/pull/4198)
|
||||
|
||||
## 1.8.1
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix Duedate activity @nickvergessen [#4155](https://github.com/nextcloud/deck/pull/4155)
|
||||
|
||||
## 1.8.0
|
||||
|
||||
### Added
|
||||
|
||||
- Nextcloud 25 compatibility
|
||||
- Performance improvements
|
||||
@@ -232,10 +80,26 @@ All notable changes to this project will be documented in this file.
|
||||
- Improve filter popover accessibility @juliushaertl [#3820](https://github.com/nextcloud/deck/pull/3820)
|
||||
- Set ids to skip to content/navigation @juliushaertl [#3924](https://github.com/nextcloud/deck/pull/3924)
|
||||
- Invert icons properly in dark mode @juliushaertl [#3939](https://github.com/nextcloud/deck/pull/3939)
|
||||
- Bump dependencies
|
||||
- Implement card reference widget @eneiluj [#4031](https://github.com/nextcloud/deck/pull/4031)
|
||||
- Implement new dashboard widget interfaces @eneiluj [#4033](https://github.com/nextcloud/deck/pull/4033)
|
||||
- Add related resources panel to board sharing tab sidebar @Pytal [#4000](https://github.com/nextcloud/deck/pull/4000)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix sorting stacks [#4116](https://github.com/nextcloud/deck/pull/4116)
|
||||
- Fix issue with duedate format [#4140](https://github.com/nextcloud/deck/pull/4140)
|
||||
- Fix missing icon for activity rendering [#4090](https://github.com/nextcloud/deck/pull/4090)
|
||||
- disables autocomplete on card creation [#4142](https://github.com/nextcloud/deck/pull/4142)
|
||||
- Set event link also for notifications that get emitted from activities [#4117](https://github.com/nextcloud/deck/pull/4117)
|
||||
- Fix attachment creator name: show display name @eneiluj [#4036](https://github.com/nextcloud/deck/pull/4036)
|
||||
- Fix reference provider when caching @eneiluj [#4056](https://github.com/nextcloud/deck/pull/4056)
|
||||
- Use global import for nextcloud-vue [#4072](https://github.com/nextcloud/deck/pull/4072)
|
||||
- Disable Create card button while no stack is chosen @icewind1991 [#4014](https://github.com/nextcloud/deck/pull/4014)
|
||||
- Adjust testing matrix for Nextcloud 25 on stable25 @nickvergessen [#4068](https://github.com/nextcloud/deck/pull/4068)
|
||||
- Fix Card menu not displaying when description is not set @marcelklehr [#4105](https://github.com/nextcloud/deck/pull/4105)
|
||||
- Reference widget adjustments for Text [#4075](https://github.com/nextcloud/deck/pull/4075)
|
||||
- use OCP\Collaboration\Reference\Reference [#4078](https://github.com/nextcloud/deck/pull/4078)
|
||||
- Cache user membership for circles [#4141](https://github.com/nextcloud/deck/pull/4141)
|
||||
- set last modified when the card was found. Fixes #3763 @ylebre [#3796](https://github.com/nextcloud/deck/pull/3796)
|
||||
- Increase file count after sharing @luka-nextcloud [#3682](https://github.com/nextcloud/deck/pull/3682)
|
||||
- Align Duedate-delete icon properly - fixes nextcloud/deck#3791 @Ben-Ro [#3811](https://github.com/nextcloud/deck/pull/3811)
|
||||
|
||||
10
Makefile
10
Makefile
@@ -30,16 +30,6 @@ build: clean-dist install-deps build-js
|
||||
|
||||
release: clean-dist install-deps-nodev build-js
|
||||
|
||||
lint: lint-js lint-php
|
||||
|
||||
lint-js:
|
||||
npm run lint
|
||||
npm run stylelint
|
||||
|
||||
lint-php:
|
||||
composer run lint 1>/dev/null
|
||||
composer run cs:check
|
||||
|
||||
build-js: install-deps-js
|
||||
npm run build
|
||||
|
||||
|
||||
83
README.md
83
README.md
@@ -1,6 +1,6 @@
|
||||
# Deck
|
||||
|
||||
[](https://travis-ci.org/nextcloud/deck) [](https://codecov.io/github/nextcloud/deck) [](https://www.codacy.com/app/juliushaertl/deck?utm_source=github.com&utm_medium=referral&utm_content=nextcloud/deck&utm_campaign=Badge_Grade) [](https://scrutinizer-ci.com/g/nextcloud/deck/?branch=main) [](https://webchat.freenode.net/?channels=nextcloud-deck)
|
||||
[](https://travis-ci.org/nextcloud/deck) [](https://codecov.io/github/nextcloud/deck) [](https://www.codacy.com/app/juliushaertl/deck?utm_source=github.com&utm_medium=referral&utm_content=nextcloud/deck&utm_campaign=Badge_Grade) [](https://scrutinizer-ci.com/g/nextcloud/deck/?branch=master) [](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.
|
||||
@@ -20,18 +20,37 @@ Deck is a kanban style organization tool aimed at personal planning and project
|
||||
### Mobile apps
|
||||
|
||||
- [Nextcloud Deck app for Android](https://github.com/stefan-niedermann/nextcloud-deck) - It is available in [F-Droid](https://f-droid.org/de/packages/it.niedermann.nextcloud.deck/) and the [Google Play Store](https://play.google.com/store/apps/details?id=it.niedermann.nextcloud.deck.play)
|
||||
- [deck NG for Android and iOS](https://github.com/meltzow/deck-ng) - It is available in [Google Play Store](https://play.google.com/store/apps/details?id=net.meltzow.deckng) and [Apple App Store](https://apps.apple.com/us/app/deck-ng/id6443334702)
|
||||
|
||||
### 3rd-Party Integrations
|
||||
|
||||
- [trello-to-deck](https://github.com/maxammann/trello-to-deck) - Migrates cards from Trello
|
||||
- [mail2deck](https://github.com/newroco/mail2deck) - Provides an "email in" solution
|
||||
- [A-deck](https://github.com/leoossa/A-deck) - Chrome Extension that allows to create new card in selected stack based on current tab
|
||||
- [QOwnNotes](https://github.com/pbek/QOwnNotes) - Quickly creates cards and links to them in Markdown notes
|
||||
|
||||
## Installation/Update
|
||||
|
||||
The app can be installed through the app store within Nextcloud. You can also download the latest release from the [release page](https://github.com/nextcloud-releases/deck/releases).
|
||||
This app is supposed to work on the two latest Nextcloud versions.
|
||||
|
||||
### Install latest release
|
||||
|
||||
You can download and install the latest release from the [Nextcloud app store](https://apps.nextcloud.com/apps/deck)
|
||||
|
||||
### 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/nextcloud/deck.git
|
||||
cd deck
|
||||
make install-deps
|
||||
make build
|
||||
```
|
||||
|
||||
Please make sure you have installed the following dependencies: `make, which, tar, npm, curl, composer`
|
||||
|
||||
### Install the nightly builds
|
||||
|
||||
Instead of setting everything up manually, you can just [download the nightly build](https://github.com/nextcloud/deck/releases/tag/nightly) instead. These builds are updated every 24 hours, and are pre-configured with all the needed dependencies.
|
||||
|
||||
## Performance limitations
|
||||
|
||||
@@ -46,54 +65,36 @@ Improvements on Nextcloud server and Deck itself will improve the situation.
|
||||
|
||||
## Developing
|
||||
|
||||
There are multiple ways to develop on Deck. As you will need a Nextcloud server running, the individual options are described below.
|
||||
### PHP
|
||||
|
||||
### General build instructions
|
||||
Nothing to prepare, just dig into the code.
|
||||
|
||||
General build instructions for the app itself are the same for all options.
|
||||
### JavaScript
|
||||
|
||||
To build you will need to have [Node.js](https://nodejs.org/en/) and [Composer](https://getcomposer.org/) installed.
|
||||
This requires at least Node 14 and npm 7 to be installed.
|
||||
|
||||
- Install PHP dependencies: `composer install --no-dev`
|
||||
- Install JS dependencies: `npm ci`
|
||||
- Build JavaScript for the frontend
|
||||
- Development build `npm run dev`
|
||||
- Watch for changes `npm run watch`
|
||||
- Production build `npm run build`
|
||||
Deck requires running a `make build-js` to install npm dependencies and build the JavaScript code using webpack. While developing you can also use `make watch` to rebuild everytime the code changes.
|
||||
|
||||
### Faster frontend developing with HMR
|
||||
#### Hot reloading
|
||||
|
||||
You can enable HMR (Hot module replacement) to avoid page reloads when working on the frontend:
|
||||
|
||||
1. ☑️ Install and enable [`hmr_enabler` app](https://github.com/nextcloud/hmr_enabler)
|
||||
2. 🏁 Run `npm run serve`
|
||||
3. 🌍 Open the normal Nextcloud server URL (not the URL given by above command)
|
||||
|
||||
### GitHub Codespaces / VS Code devcontainer
|
||||
|
||||
- Open code spaces or the repository in VS Code to start the dev container
|
||||
- The container will automatically install all dependencies and build the app
|
||||
- Nextcloud will be installed from the master development branch and be available on a port exposed by the container
|
||||
|
||||
### Docker: Simple app development container
|
||||
|
||||
- Fork the app
|
||||
- Clone the repository: `git clone https://github.com/nextcloud/deck.git`
|
||||
- Go into deck directory: `cd deck`
|
||||
- Build the app as described in the general build instructions
|
||||
- Run Nextcloud development container and mount the apps source code into it
|
||||
Enable debug mode in your config.php `'debug' => true,`
|
||||
|
||||
Without SSL:
|
||||
```
|
||||
docker run --rm \
|
||||
-p 8080:80 \
|
||||
-v ~/path/to/app:/var/www/html/apps-extra/app \
|
||||
ghcr.io/juliushaertl/nextcloud-dev-php80:latest
|
||||
npx webpack-dev-server --config webpack.hot.js \
|
||||
--public localhost:3000 \
|
||||
--output-public-path 'http://localhost:3000/js/'
|
||||
```
|
||||
|
||||
### Full Nextcloud development environment
|
||||
With SSL:
|
||||
```
|
||||
npx webpack-dev-server --config webpack.dev.js --https \
|
||||
--cert ~/repos/nextcloud/nc-dev/data/ssl/nextcloud.local.crt \
|
||||
--key ~/repos/nextcloud/nc-dev/data/ssl/nextcloud.local.key \
|
||||
--public nextcloud.local:3000 \
|
||||
--output-public-path 'https://nextcloud.local:3000/js/'
|
||||
```
|
||||
|
||||
You need to setup a [development environment](https://docs.nextcloud.com/server/latest/developer_manual//getting_started/devenv.html) of the current Nextcloud version. You can also alternatively install & run the [nextcloud docker container](https://github.com/juliushaertl/nextcloud-docker-dev).
|
||||
After the finished installation, you can clone the deck project directly in the `/[nextcloud-docker-dev-dir]/workspace/server/apps/` folder.
|
||||
|
||||
### Running tests
|
||||
You can use the provided Makefile to run all tests by using:
|
||||
|
||||
@@ -20,7 +20,7 @@ Your report should include:
|
||||
- Reproduction steps
|
||||
|
||||
A member of the security team will confirm the vulnerability, determine its impact, and develop a fix.
|
||||
The fix will be applied to the main branch, tested, and packaged in the next security release.
|
||||
The fix will be applied to the master branch, tested, and packaged in the next security release.
|
||||
The vulnerability will be publicly announced after the release. Finally, your name will be added
|
||||
to the [hall of fame](https://hackerone.com/nextcloud/thanks) as a thank you from the entire Nextcloud community. Note our
|
||||
[threat model](https://nextcloud.com/security/threat-model) to know what is expected behavior.
|
||||
|
||||
@@ -16,13 +16,9 @@
|
||||
- 🚀 Get your project organized
|
||||
|
||||
</description>
|
||||
<version>1.12.0</version>
|
||||
<version>1.8.7</version>
|
||||
<licence>agpl</licence>
|
||||
<author>Julius Härtl</author>
|
||||
<documentation>
|
||||
<user>https://deck.readthedocs.io/en/latest/User_documentation_en/</user>
|
||||
<developer>https://deck.readthedocs.io/en/latest/API/</developer>
|
||||
</documentation>
|
||||
<namespace>Deck</namespace>
|
||||
<types>
|
||||
<dav/>
|
||||
@@ -38,19 +34,13 @@
|
||||
<database min-version="9.4">pgsql</database>
|
||||
<database>sqlite</database>
|
||||
<database min-version="8.0">mysql</database>
|
||||
<nextcloud min-version="28" max-version="28"/>
|
||||
<nextcloud min-version="25" max-version="25"/>
|
||||
</dependencies>
|
||||
<background-jobs>
|
||||
<job>OCA\Deck\Cron\DeleteCron</job>
|
||||
<job>OCA\Deck\Cron\ScheduledNotifications</job>
|
||||
<job>OCA\Deck\Cron\CardDescriptionActivity</job>
|
||||
<job>OCA\Deck\Cron\SessionsCleanup</job>
|
||||
</background-jobs>
|
||||
<repair-steps>
|
||||
<live-migration>
|
||||
<step>OCA\Deck\Migration\DeletedCircleCleanup</step>
|
||||
</live-migration>
|
||||
</repair-steps>
|
||||
<commands>
|
||||
<command>OCA\Deck\Command\UserExport</command>
|
||||
<command>OCA\Deck\Command\BoardImport</command>
|
||||
@@ -58,9 +48,9 @@
|
||||
</commands>
|
||||
<activity>
|
||||
<settings>
|
||||
<setting>OCA\Deck\Activity\SettingChanges</setting>
|
||||
<setting>OCA\Deck\Activity\SettingDescription</setting>
|
||||
<setting>OCA\Deck\Activity\Setting</setting>
|
||||
<setting>OCA\Deck\Activity\SettingComment</setting>
|
||||
<setting>OCA\Deck\Activity\DescriptionSetting</setting>
|
||||
</settings>
|
||||
<filters>
|
||||
<filter>OCA\Deck\Activity\Filter</filter>
|
||||
|
||||
@@ -25,11 +25,6 @@
|
||||
return [
|
||||
'routes' => [
|
||||
['name' => 'page#index', 'url' => '/', 'verb' => 'GET'],
|
||||
['name' => 'page#indexList', 'url' => '/board', 'verb' => 'GET'],
|
||||
['name' => 'page#indexBoard', 'url' => '/board/{boardId}', 'verb' => 'GET'],
|
||||
['name' => 'page#indexBoardDetails', 'url' => '/board/{boardId}/details', 'verb' => 'GET'],
|
||||
['name' => 'page#indexCard', 'url' => '/board/{boardId}/card/{cardId}', 'verb' => 'GET'],
|
||||
|
||||
['name' => 'page#redirectToCard', 'url' => '/card/{cardId}', 'verb' => 'GET'],
|
||||
|
||||
// boards
|
||||
@@ -45,7 +40,6 @@ return [
|
||||
['name' => 'board#deleteAcl', 'url' => '/boards/{boardId}/acl/{aclId}', 'verb' => 'DELETE'],
|
||||
['name' => 'board#clone', 'url' => '/boards/{boardId}/clone', 'verb' => 'POST'],
|
||||
['name' => 'board#transferOwner', 'url' => '/boards/{boardId}/transferOwner', 'verb' => 'PUT'],
|
||||
['name' => 'board#export', 'url' => '/boards/{boardId}/export', 'verb' => 'GET'],
|
||||
|
||||
// stacks
|
||||
['name' => 'stack#index', 'url' => '/stacks/{boardId}', 'verb' => 'GET'],
|
||||
@@ -66,8 +60,6 @@ return [
|
||||
['name' => 'card#reorder', 'url' => '/cards/{cardId}/reorder', 'verb' => 'PUT'],
|
||||
['name' => 'card#archive', 'url' => '/cards/{cardId}/archive', 'verb' => 'PUT'],
|
||||
['name' => 'card#unarchive', 'url' => '/cards/{cardId}/unarchive', 'verb' => 'PUT'],
|
||||
['name' => 'card#done', 'url' => '/cards/{cardId}/done', 'verb' => 'PUT'],
|
||||
['name' => 'card#undone', 'url' => '/cards/{cardId}/undone', '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'],
|
||||
@@ -157,10 +149,5 @@ return [
|
||||
['name' => 'overview_api#upcomingCards', 'url' => '/api/v{apiVersion}/overview/upcoming', 'verb' => 'GET'],
|
||||
|
||||
['name' => 'search#search', 'url' => '/api/v{apiVersion}/search', 'verb' => 'GET'],
|
||||
|
||||
// sessions
|
||||
['name' => 'Session#create', 'url' => '/api/v{apiVersion}/session/create', 'verb' => 'PUT'],
|
||||
['name' => 'Session#sync', 'url' => '/api/v{apiVersion}/session/sync', 'verb' => 'POST'],
|
||||
['name' => 'Session#close', 'url' => '/api/v{apiVersion}/session/close', 'verb' => 'POST'],
|
||||
]
|
||||
];
|
||||
|
||||
@@ -9,14 +9,17 @@
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"cogpowered/finediff": "0.3.*",
|
||||
"justinrainbow/json-schema": "^5.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"roave/security-advisories": "dev-master",
|
||||
"phpunit/phpunit": "^9",
|
||||
"nextcloud/coding-standard": "^1.1",
|
||||
"nextcloud/ocp": "dev-stable28",
|
||||
"psalm/phar": "^5.13"
|
||||
"nextcloud/coding-standard": "^1.0.0",
|
||||
"symfony/event-dispatcher": "^4.0",
|
||||
"vimeo/psalm": "^4.3",
|
||||
"php-parallel-lint/php-parallel-lint": "^1.2",
|
||||
"nextcloud/ocp": "dev-stable25"
|
||||
},
|
||||
"config": {
|
||||
"optimize-autoloader": true,
|
||||
@@ -24,22 +27,23 @@
|
||||
"composer/package-versions-deprecated": true
|
||||
},
|
||||
"platform": {
|
||||
"php": "8.0"
|
||||
"php": "7.4"
|
||||
}
|
||||
},
|
||||
"scripts": {
|
||||
"lint": "find . -name \\*.php -not -path './vendor/*' -print0 | xargs -0 -n1 php -l",
|
||||
"cs:check": "php-cs-fixer fix --dry-run --diff",
|
||||
"cs:fix": "php-cs-fixer fix",
|
||||
"psalm": "psalm.phar",
|
||||
"psalm:update-baseline": "psalm.phar --update-baseline",
|
||||
"psalm:fix": "psalm.phar --alter --issues=InvalidReturnType,InvalidNullableReturnType,MismatchingDocblockParamType,MismatchingDocblockReturnType,MissingParamType,InvalidFalsableReturnType",
|
||||
"psalm": "psalm",
|
||||
"psalm:update-baseline": "psalm --update-baseline",
|
||||
"psalm:fix": "psalm --alter --issues=InvalidReturnType,InvalidNullableReturnType,MismatchingDocblockParamType,MismatchingDocblockReturnType,MissingParamType,InvalidFalsableReturnType",
|
||||
"test": [
|
||||
"@test:unit",
|
||||
"@test:integration"
|
||||
],
|
||||
"test:unit": "vendor/bin/phpunit -c tests/phpunit.xml",
|
||||
"test:integration": "vendor/bin/phpunit -c tests/phpunit.integration.xml && cd tests/integration && ./run.sh"
|
||||
"test:unit": "phpunit -c tests/phpunit.xml",
|
||||
"test:integration": "phpunit -c tests/phpunit.integration.xml",
|
||||
"test:api": "cd tests/integration && ./run.sh"
|
||||
},
|
||||
"autoload-dev": {
|
||||
"psr-4": {
|
||||
|
||||
3634
composer.lock
generated
3634
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -1,16 +1,17 @@
|
||||
const { defineConfig } = require('cypress')
|
||||
|
||||
module.exports = defineConfig({
|
||||
projectId: '1s7wkc',
|
||||
viewportWidth: 1280,
|
||||
viewportHeight: 720,
|
||||
e2e: {
|
||||
// We've imported your old cypress plugins here.
|
||||
// You may want to clean this up later by importing these.
|
||||
setupNodeEvents(on, config) {
|
||||
return require('./cypress/plugins/index.js')(on, config)
|
||||
},
|
||||
baseUrl: 'http://nextcloud.local/index.php',
|
||||
specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}',
|
||||
},
|
||||
projectId: '1s7wkc',
|
||||
viewportWidth: 1280,
|
||||
viewportHeight: 720,
|
||||
e2e: {
|
||||
// We've imported your old cypress plugins here.
|
||||
// You may want to clean this up later by importing these.
|
||||
setupNodeEvents(on, config) {
|
||||
return require('./cypress/plugins/index.js')(on, config)
|
||||
},
|
||||
baseUrl: 'http://nextcloud.local/index.php',
|
||||
experimentalSessionAndOrigin: true,
|
||||
specPattern: 'cypress/e2e/**/*.{js,jsx,ts,tsx}',
|
||||
},
|
||||
})
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
module.exports = {
|
||||
extends: [
|
||||
'plugin:cypress/recommended',
|
||||
],
|
||||
}
|
||||
@@ -1,17 +1,15 @@
|
||||
import { randUser } from '../utils/index.js'
|
||||
const user = randUser()
|
||||
const recipient = randUser()
|
||||
import { randHash } from '../utils'
|
||||
const randUser = randHash()
|
||||
|
||||
describe('Board', function() {
|
||||
const password = 'pass123'
|
||||
|
||||
before(function() {
|
||||
cy.createUser(user)
|
||||
cy.createUser(recipient)
|
||||
cy.nextcloudCreateUser(randUser, password)
|
||||
})
|
||||
|
||||
beforeEach(function() {
|
||||
cy.login(user)
|
||||
cy.visit('/apps/deck')
|
||||
cy.login(randUser, password)
|
||||
})
|
||||
|
||||
it('Can create a board', function() {
|
||||
@@ -23,6 +21,7 @@ describe('Board', function() {
|
||||
}).as('createBoardRequest')
|
||||
|
||||
// Click "Add board"
|
||||
cy.openLeftSidebar()
|
||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
||||
.eq(3).find('a').first().click({ force: true })
|
||||
|
||||
@@ -39,18 +38,4 @@ describe('Board', function() {
|
||||
cy.get('.app-navigation__list .app-navigation-entry__children .app-navigation-entry')
|
||||
.contains(board).should('be.visible')
|
||||
})
|
||||
|
||||
it('Shows and hides the navigation', () => {
|
||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
||||
.contains('Upcoming cards')
|
||||
.should('be.visible')
|
||||
cy.openLeftSidebar()
|
||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
||||
.contains('Upcoming cards')
|
||||
.should('not.be.visible')
|
||||
cy.openLeftSidebar()
|
||||
cy.get('#app-navigation-vue .app-navigation__list .app-navigation-entry')
|
||||
.contains('Upcoming cards')
|
||||
.should('be.visible')
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,48 +1,53 @@
|
||||
import { randUser } from '../utils/index.js'
|
||||
import { sampleBoard } from '../utils/sampleBoard'
|
||||
import moment from '@nextcloud/moment'
|
||||
import { randHash } from '../utils'
|
||||
const randUser = randHash()
|
||||
|
||||
const user = randUser()
|
||||
const boardData = sampleBoard()
|
||||
|
||||
const auth = {
|
||||
user: user.userId,
|
||||
password: user.password,
|
||||
}
|
||||
|
||||
const useModal = (useModal) => {
|
||||
return cy.request({
|
||||
method: 'POST',
|
||||
url: `${Cypress.env('baseUrl')}/ocs/v2.php/apps/deck/api/v1.0/config/cardDetailsInModal?format=json`,
|
||||
auth,
|
||||
body: { value: useModal },
|
||||
}).then((response) => {
|
||||
expect(response.status).to.eq(200)
|
||||
})
|
||||
const testBoardData = {
|
||||
title: 'MyBoardTest',
|
||||
color: '00ff00',
|
||||
stacks: [
|
||||
{
|
||||
title: 'TestList',
|
||||
cards: [
|
||||
{
|
||||
title: 'Hello world',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
||||
|
||||
describe('Card', function() {
|
||||
let boardId
|
||||
before(function() {
|
||||
cy.createUser(user)
|
||||
cy.login(user)
|
||||
cy.nextcloudCreateUser(randUser, randUser)
|
||||
cy.createExampleBoard({
|
||||
user,
|
||||
board: boardData,
|
||||
}).then((board) => {
|
||||
boardId = board.id
|
||||
user: randUser,
|
||||
password: randUser,
|
||||
board: testBoardData,
|
||||
})
|
||||
})
|
||||
|
||||
beforeEach(function() {
|
||||
cy.login(user)
|
||||
cy.login(randUser, randUser)
|
||||
})
|
||||
|
||||
it('Can show card details modal', function() {
|
||||
cy.openLeftSidebar()
|
||||
cy.getNavigationEntry(testBoardData.title)
|
||||
.first().click({ force: true })
|
||||
|
||||
cy.get('.board .stack').eq(0).within(() => {
|
||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
||||
})
|
||||
|
||||
cy.get('.modal__card').should('be.visible')
|
||||
cy.get('.app-sidebar-header__maintitle').contains('Hello world')
|
||||
})
|
||||
|
||||
it('Can add a card', function() {
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
const newCardTitle = 'Write some cypress tests'
|
||||
|
||||
cy.getNavigationEntry(boardData.title)
|
||||
cy.openLeftSidebar()
|
||||
cy.getNavigationEntry(testBoardData.title)
|
||||
.first().click({ force: true })
|
||||
|
||||
cy.get('.board .stack').eq(0).within(() => {
|
||||
@@ -59,245 +64,4 @@ describe('Card', function() {
|
||||
})
|
||||
})
|
||||
|
||||
it('Create card from overview', function() {
|
||||
cy.visit(`/apps/deck/#/`)
|
||||
const newCardTitle = 'Test create from overview'
|
||||
cy.intercept({ method: 'POST', url: '**/apps/deck/cards' }).as('save')
|
||||
cy.intercept({ method: 'GET', url: '**/apps/deck/boards/*' }).as('getBoard')
|
||||
|
||||
cy.get('.button-vue[aria-label*="Add card"]')
|
||||
.first().click()
|
||||
cy.get('.modal-mask.card-selector .card-title').should('be.visible').click().type(newCardTitle)
|
||||
cy.get('.modal-mask.card-selector .multiselect-board').should('be.visible').click()
|
||||
cy.get('.modal-mask.card-selector .multiselect-board li:contains("' + boardData.title + '")').should('be.visible').click()
|
||||
cy.wait('@getBoard', { timeout: 7000 })
|
||||
|
||||
cy.get('.modal-mask.card-selector .multiselect-list').should('be.visible').click()
|
||||
cy.get('.modal-mask.card-selector .multiselect-list li').eq(0).should('be.visible').click()
|
||||
cy.get('.modal-mask.card-selector button.button-vue--vue-primary').should('be.visible').click()
|
||||
cy.wait('@save', { timeout: 7000 })
|
||||
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
cy.reload()
|
||||
cy.get('.board .stack').eq(0).within(() => {
|
||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible')
|
||||
})
|
||||
})
|
||||
|
||||
describe('Modal', () => {
|
||||
beforeEach(function() {
|
||||
cy.login(user)
|
||||
useModal(true).then(() => {
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
})
|
||||
})
|
||||
|
||||
it('Can show card details modal', function() {
|
||||
cy.getNavigationEntry(boardData.title)
|
||||
.first().click({ force: true })
|
||||
|
||||
cy.get('.board .stack').eq(0).within(() => {
|
||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
||||
})
|
||||
|
||||
cy.get('.modal__card').should('be.visible')
|
||||
cy.get('.app-sidebar-header__maintitle').contains('Hello world')
|
||||
})
|
||||
|
||||
it('Attachment from files app', () => {
|
||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
||||
cy.get('.modal__card').should('be.visible')
|
||||
cy.get('.app-sidebar-tabs__tab [data-id="attachments"]').click()
|
||||
cy.get('button.icon-upload').should('be.visible')
|
||||
cy.get('button.icon-folder').should('be.visible')
|
||||
.click()
|
||||
cy.get('.file-picker__main').should('be.visible')
|
||||
cy.get('.file-picker__main [data-filename="welcome.txt"]', { timeout: 30000 }).should('be.visible')
|
||||
.click()
|
||||
cy.get('.dialog__actions button.button-vue--vue-primary').click()
|
||||
cy.get('.attachment-list .basename').contains('welcome.txt')
|
||||
})
|
||||
|
||||
it('Shows the modal with the editor', () => {
|
||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
||||
cy.intercept({ method: 'PUT', url: '**/apps/deck/cards/*' }).as('save')
|
||||
cy.get('.modal__card').should('be.visible')
|
||||
cy.get('.app-sidebar-header__maintitle').contains('Hello world')
|
||||
cy.get('.modal__card .ProseMirror h1').contains('Hello world').should('be.visible')
|
||||
cy.get('.modal__card .ProseMirror h1')
|
||||
.click()
|
||||
.type(' writing more text{enter}- List item{enter}with entries{enter}{enter}Paragraph')
|
||||
cy.wait('@save', { timeout: 7000 })
|
||||
|
||||
cy.reload()
|
||||
cy.get('.modal__card').should('be.visible')
|
||||
cy.get('.modal__card .ProseMirror h1').contains('Hello world writing more text').should('be.visible')
|
||||
cy.get('.modal__card .ProseMirror li').eq(0).contains('List item').should('be.visible')
|
||||
cy.get('.modal__card .ProseMirror li').eq(1).contains('with entries').should('be.visible')
|
||||
cy.get('.modal__card .ProseMirror p').contains('Paragraph').should('be.visible')
|
||||
})
|
||||
|
||||
it('Smart picker', () => {
|
||||
const newCardTitle = 'Test smart picker'
|
||||
cy.intercept({ method: 'POST', url: '**/apps/deck/cards' }).as('save')
|
||||
cy.intercept({ method: 'GET', url: '**/apps/deck/boards/*' }).as('getBoard')
|
||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
||||
cy.get('.modal__card').should('be.visible')
|
||||
cy.get('.modal__card .ProseMirror h1')
|
||||
.click()
|
||||
.type('{enter}/create')
|
||||
cy.get('.suggestion-list__item.is-selected').should('be.visible').contains('Create a new deck card')
|
||||
cy.get('.suggestion-list__item.is-selected .link-picker__item').click()
|
||||
cy.get('.reference-picker-modal--content .reference-picker').should('be.visible')
|
||||
cy.get('.reference-picker-modal--content .reference-picker').contains('Create a new card')
|
||||
cy.get('.reference-picker-modal--content .reference-picker .card-title').should('be.visible').click().type(newCardTitle)
|
||||
cy.get('.reference-picker-modal--content .reference-picker .multiselect-board').should('be.visible').contains(boardData.title)
|
||||
cy.get('.reference-picker-modal--content .reference-picker .multiselect-list').should('be.visible').contains(boardData.stacks[0].title)
|
||||
cy.get('.reference-picker-modal--content .reference-picker button.button-vue--vue-primary').should('be.visible').click()
|
||||
cy.wait('@save', { timeout: 7000 })
|
||||
cy.get('.modal__card .ProseMirror').contains('/index.php/apps/deck/card/').should('be.visible')
|
||||
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
cy.reload()
|
||||
cy.get('.board .stack').eq(0).within(() => {
|
||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
describe('Sidebar', () => {
|
||||
beforeEach(function() {
|
||||
cy.login(user)
|
||||
useModal(false).then(() => {
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
})
|
||||
})
|
||||
|
||||
it('Show the sidebar', () => {
|
||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
||||
cy.get('#app-sidebar-vue')
|
||||
.find('.ProseMirror h1').contains('Hello world writing more text').should('be.visible')
|
||||
})
|
||||
|
||||
it('Set a due date', function() {
|
||||
const newCardTitle = 'Card with a due date'
|
||||
|
||||
cy.get('.button-vue[aria-label*="Add card"]')
|
||||
.first().click()
|
||||
cy.get('.stack__card-add form input#new-stack-input-main')
|
||||
.type(newCardTitle)
|
||||
cy.get('.stack__card-add form input[type=submit]')
|
||||
.first().click()
|
||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible')
|
||||
|
||||
cy.get('.card:contains("Card with a due date")').should('be.visible').click()
|
||||
|
||||
cy.get('#app-sidebar-vue [data-cy-due-date-actions]').should('be.visible').click()
|
||||
|
||||
// Set a due date through shortcut
|
||||
cy.get('[data-cy-due-date-shortcut="tomorrow"] button').should('be.visible').click()
|
||||
|
||||
const tomorrow = moment().add(1, 'days').hour(8).minutes(0).seconds(0)
|
||||
cy.get('#card-duedate-picker').should('have.value', tomorrow.format('YYYY-MM-DDTHH:mm'))
|
||||
|
||||
const now = moment().hour(11).minutes(0).seconds(0).toDate()
|
||||
cy.clock(now)
|
||||
cy.log(now)
|
||||
cy.tick(60_000)
|
||||
|
||||
cy.get(`.card:contains("${newCardTitle}")`).find('[data-due-state="Now"]').should('be.visible').should('contain', '21 hours')
|
||||
|
||||
|
||||
// Remove the due date again
|
||||
cy.get('#app-sidebar-vue [data-cy-due-date-actions]').should('be.visible').click()
|
||||
// tick needed to show the popover menu
|
||||
cy.tick(1_000)
|
||||
cy.get('[data-cy-due-date-remove] button').should('be.visible').click()
|
||||
|
||||
cy.get(`.card:contains("${newCardTitle}")`).find('[data-due-state]').should('not.exist')
|
||||
})
|
||||
|
||||
it('Add a label', function() {
|
||||
const newCardTitle = 'Card with labels'
|
||||
|
||||
cy.get('.button-vue[aria-label*="Add card"]')
|
||||
.first().click()
|
||||
cy.get('.stack__card-add form input#new-stack-input-main')
|
||||
.type(newCardTitle)
|
||||
cy.get('.stack__card-add form input[type=submit]')
|
||||
.first().click()
|
||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible').click()
|
||||
|
||||
cy.get('#app-sidebar-vue [data-test="tag-selector"]').should('be.visible').click()
|
||||
cy.get('.multiselect__option:contains("Action needed")').should('be.visible').click()
|
||||
|
||||
cy.get('[data-test="tag-selector"] .selector-wrapper--icon').click()
|
||||
cy.get('.multiselect__option:contains("Action needed")').should('not.be.visible')
|
||||
|
||||
cy.get('[data-test="tag-selector"] .multiselect__tags .tag:contains("Action needed")')
|
||||
.should('be.visible')
|
||||
|
||||
cy.get(`.card:contains("${newCardTitle}")`).find('.labels li:contains("Action needed")')
|
||||
.should('be.visible')
|
||||
|
||||
cy.get('#app-sidebar-vue [data-test="tag-selector"]').should('be.visible').click()
|
||||
cy.get('.multiselect__option:contains("Later")').should('be.visible').click()
|
||||
cy.get('.multiselect__option:contains("Action needed")').should('be.visible').click()
|
||||
|
||||
cy.get(`.card:contains("${newCardTitle}")`).find('.labels li:contains("Later")')
|
||||
.should('be.visible')
|
||||
cy.get(`.card:contains("${newCardTitle}")`).find('.labels li:contains("Action needed")')
|
||||
.should('not.exist')
|
||||
})
|
||||
|
||||
})
|
||||
|
||||
describe('Card actions', () => {
|
||||
beforeEach(function() {
|
||||
cy.login(user)
|
||||
useModal(false).then(() => {
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
})
|
||||
})
|
||||
|
||||
it('Custom card actions', () => {
|
||||
const myAction = {
|
||||
label: 'Test action',
|
||||
icon: 'icon-user',
|
||||
callback(card) {
|
||||
console.log('Called callback', card)
|
||||
},
|
||||
}
|
||||
cy.spy(myAction, 'callback').as('myAction.callback')
|
||||
|
||||
cy.window().then(win => {
|
||||
win.OCA.Deck.registerCardAction(myAction)
|
||||
})
|
||||
|
||||
cy.get('.card:contains("Hello world")').should('be.visible').click()
|
||||
cy.get('#app-sidebar-vue')
|
||||
.find('.ProseMirror h1').contains('Hello world').should('be.visible')
|
||||
|
||||
cy.get('.app-sidebar-header .action-item__menutoggle').click()
|
||||
cy.get('.v-popper__popper button:contains("Test action")').click()
|
||||
|
||||
cy.get('@myAction.callback')
|
||||
.should('be.called')
|
||||
.its('firstCall.args.0')
|
||||
.as('args')
|
||||
|
||||
cy.url().then(url => {
|
||||
const cardId = url.split('/').pop()
|
||||
cy.get('@args').should('have.property', 'name', 'Hello world')
|
||||
cy.get('@args').should('have.property', 'stackname', 'TestList')
|
||||
cy.get('@args').should('have.property', 'boardname', 'MyTestBoard')
|
||||
cy.get('@args').its('link').then((url) => {
|
||||
expect(url.split('/').pop() === cardId).to.be.true
|
||||
cy.visit(url)
|
||||
cy.get('#app-sidebar-vue')
|
||||
.find('.ProseMirror h1').contains('Hello world').should('be.visible')
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,57 +1,31 @@
|
||||
import { randUser } from '../utils/index.js'
|
||||
import { sampleBoard } from '../utils/sampleBoard'
|
||||
const user = randUser()
|
||||
import { randHash } from '../utils'
|
||||
const randUser = randHash()
|
||||
|
||||
describe('Deck dashboard', function() {
|
||||
const password = 'pass123'
|
||||
|
||||
before(function() {
|
||||
cy.createUser(user)
|
||||
cy.nextcloudCreateUser(randUser, password)
|
||||
})
|
||||
|
||||
beforeEach(function() {
|
||||
cy.login(user)
|
||||
cy.login(randUser, password)
|
||||
})
|
||||
|
||||
it('Can show the right title on the dashboard', function() {
|
||||
cy.visit('/apps/deck')
|
||||
cy.get('.board-title h2')
|
||||
.should('have.length', 1).first()
|
||||
.should($el => expect($el.text().trim()).to.equal('Upcoming cards'))
|
||||
.should('have.length', 1).first()
|
||||
.should('have.text', 'Upcoming cards')
|
||||
})
|
||||
|
||||
it('Can see the default "Personal Board" created for user by default', function() {
|
||||
cy.visit('/apps/deck')
|
||||
|
||||
const defaultBoard = 'Personal'
|
||||
|
||||
cy.openLeftSidebar()
|
||||
cy.get('.app-navigation-entry-wrapper[icon=icon-deck]')
|
||||
.find('ul.app-navigation-entry__children .app-navigation-entry:contains(' + defaultBoard + ')')
|
||||
.first()
|
||||
.contains(defaultBoard)
|
||||
.should('be.visible')
|
||||
})
|
||||
|
||||
it('Shows a card with due date on the overview', function() {
|
||||
cy.createExampleBoard({
|
||||
user,
|
||||
board: sampleBoard(),
|
||||
}).then((board) => {
|
||||
cy.visit(`/apps/deck/#/board/${board.id}`)
|
||||
|
||||
cy.intercept({ method: 'PUT', url: '**/apps/deck/cards/**' }).as('updateCard')
|
||||
|
||||
const newCardTitle = 'Hello world'
|
||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible').click()
|
||||
cy.get('#app-sidebar-vue [data-cy-due-date-actions]').should('be.visible').click()
|
||||
cy.get('[data-cy-due-date-shortcut="tomorrow"] button').should('be.visible').click()
|
||||
|
||||
cy.wait('@updateCard')
|
||||
|
||||
cy.get('button[title="Close sidebar"]').click()
|
||||
cy.get('.app-navigation-entry:contains("Upcoming cards") a').click()
|
||||
|
||||
cy.get(`.card:contains("${newCardTitle}")`).should('be.visible')
|
||||
cy.get('.dashboard-column:contains("Tomorrow")').should('be.visible')
|
||||
cy.get('.dashboard-column:contains("Tomorrow") .card:contains("Hello world")').should('be.visible')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
import { randUser } from '../utils/index.js'
|
||||
import { sampleBoard } from '../utils/sampleBoard'
|
||||
const user = randUser()
|
||||
const recipient = randUser()
|
||||
|
||||
describe('Board', function() {
|
||||
before(function() {
|
||||
cy.createUser(user)
|
||||
cy.createUser(recipient)
|
||||
})
|
||||
|
||||
beforeEach(function() {
|
||||
cy.login(user)
|
||||
})
|
||||
|
||||
it('Share a board to a user', function() {
|
||||
const board = sampleBoard('Read only board')
|
||||
cy.createExampleBoard({ user, board }).then((board) => {
|
||||
const boardId = board.id
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
cy.get('.board-title').contains(board.title)
|
||||
|
||||
cy.shareBoardWithUi(recipient.userId)
|
||||
|
||||
cy.login(recipient)
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
cy.get('.board-title').contains(board.title)
|
||||
cy.get('.button-vue[aria-label*="Add card"]')
|
||||
.should('not.exist')
|
||||
})
|
||||
})
|
||||
|
||||
it('Share a board to a user as writable', function() {
|
||||
const board = sampleBoard('Editable board')
|
||||
cy.createExampleBoard({ user, board }).then((board) => {
|
||||
const boardId = board.id
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
cy.get('.board-title').contains(board.title)
|
||||
|
||||
cy.shareBoardWithUi(recipient.userId)
|
||||
cy.get(`[data-cy="acl-participant:${recipient.userId}"]`).find('[data-cy="action:permission-edit"]').click()
|
||||
|
||||
cy.login(recipient)
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
cy.get('.board-title').contains(board.title)
|
||||
cy.get('.button-vue[aria-label*="Add card"]')
|
||||
.first().click()
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -1,68 +1,30 @@
|
||||
import { randUser } from '../utils/index.js'
|
||||
const user = randUser()
|
||||
|
||||
const boardTitle = 'TestBoard'
|
||||
const testBoardData = {
|
||||
title: boardTitle,
|
||||
stacks: [
|
||||
{ title: 'Existing Stack1' },
|
||||
{ title: 'Existing Stack2' },
|
||||
],
|
||||
}
|
||||
import { randHash } from '../utils'
|
||||
const randUser = randHash()
|
||||
|
||||
describe('Stack', function() {
|
||||
const board = 'TestBoard'
|
||||
const password = 'pass123'
|
||||
const stack = 'List 1'
|
||||
|
||||
before(function() {
|
||||
cy.createUser(user)
|
||||
cy.login(user)
|
||||
cy.createExampleBoard({
|
||||
user,
|
||||
board: testBoardData,
|
||||
})
|
||||
cy.nextcloudCreateUser(randUser, password)
|
||||
cy.deckCreateBoard({ user: randUser, password }, board)
|
||||
})
|
||||
|
||||
beforeEach(function() {
|
||||
cy.login(user)
|
||||
cy.visit('/apps/deck')
|
||||
|
||||
cy.openLeftSidebar()
|
||||
cy.getNavigationEntry(boardTitle)
|
||||
.click({ force: true })
|
||||
cy.logout()
|
||||
cy.login(randUser, password)
|
||||
})
|
||||
|
||||
it('Can create a stack', function() {
|
||||
cy.openLeftSidebar()
|
||||
cy.getNavigationEntry(board)
|
||||
.click({ force: true })
|
||||
|
||||
cy.get('#stack-add button').first().click()
|
||||
cy.focused().type('List 1')
|
||||
cy.get('#stack-add form input#new-stack-input-main').type(stack)
|
||||
cy.get('#stack-add form input[type=submit]').first().click()
|
||||
|
||||
cy.contains('List 1').should('be.visible')
|
||||
})
|
||||
|
||||
it('Can edit a stack title', function() {
|
||||
cy.contains('Existing Stack1')
|
||||
cy.get('[data-cy-stack="Existing Stack1"]').within(() => {
|
||||
cy.contains('Existing Stack1').click()
|
||||
cy.focused().type(' renamed')
|
||||
cy.get('[data-cy="editStackTitleForm"] input[type="submit"]').click()
|
||||
})
|
||||
cy.contains('Existing Stack1 renamed').should('be.visible')
|
||||
})
|
||||
|
||||
it('Can abort a stack title edit via esc', function() {
|
||||
cy.contains('Existing Stack2').click()
|
||||
cy.focused().type(' with a new title, maybe?')
|
||||
cy.focused().type('{esc}')
|
||||
|
||||
cy.contains('Existing Stack2').should('be.visible')
|
||||
cy.contains('Existing Stack2 with a new title, maybe?').should('not.exist')
|
||||
})
|
||||
|
||||
it('Can abort a stack title edit via click outside', function() {
|
||||
cy.contains('Existing Stack2').click()
|
||||
cy.focused().type(' with a new title, maybe?')
|
||||
cy.get('[data-cy-stack="Existing Stack2"]').click('bottom')
|
||||
|
||||
cy.contains('Existing Stack2').should('be.visible')
|
||||
cy.contains('Existing Stack2 with a new title, maybe?').should('not.exist')
|
||||
cy.get('.board .stack').eq(0).contains(stack).should('be.visible')
|
||||
})
|
||||
})
|
||||
|
||||
@@ -20,13 +20,61 @@
|
||||
*
|
||||
*/
|
||||
|
||||
import { addCommands } from '@nextcloud/cypress'
|
||||
|
||||
addCommands()
|
||||
|
||||
const url = Cypress.config('baseUrl').replace(/\/index.php\/?$/g, '')
|
||||
Cypress.env('baseUrl', url)
|
||||
|
||||
Cypress.Commands.add('login', (user, password, route = '/apps/deck/') => {
|
||||
const session = `${user}-${Date.now()}`
|
||||
cy.session(session, function() {
|
||||
cy.visit(route)
|
||||
cy.get('input[name=user]').type(user)
|
||||
cy.get('input[name=password]').type(password)
|
||||
cy.get('form[name=login] [type=submit]').click()
|
||||
cy.url().should('include', route)
|
||||
})
|
||||
cy.visit(route)
|
||||
})
|
||||
|
||||
Cypress.Commands.add('logout', (route = '/') => {
|
||||
cy.session('_guest', function() {})
|
||||
})
|
||||
|
||||
Cypress.Commands.add('nextcloudCreateUser', (user, password) => {
|
||||
cy.clearCookies()
|
||||
cy.request({
|
||||
method: 'POST',
|
||||
url: `${Cypress.env('baseUrl')}/ocs/v1.php/cloud/users?format=json`,
|
||||
form: true,
|
||||
body: {
|
||||
userid: user,
|
||||
password,
|
||||
},
|
||||
auth: { user: 'admin', pass: 'admin' },
|
||||
headers: {
|
||||
'OCS-ApiRequest': 'true',
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
},
|
||||
}).then((response) => {
|
||||
cy.log(`Created user ${user}`, response.status)
|
||||
})
|
||||
})
|
||||
|
||||
Cypress.Commands.add('nextcloudUpdateUser', (user, password, key, value) => {
|
||||
cy.request({
|
||||
method: 'PUT',
|
||||
url: `${Cypress.env('baseUrl')}/ocs/v2.php/cloud/users/${user}`,
|
||||
form: true,
|
||||
body: { key, value },
|
||||
auth: { user, pass: password },
|
||||
headers: {
|
||||
'OCS-ApiRequest': 'true',
|
||||
'Content-Type': 'application/x-www-form-urlencoded',
|
||||
},
|
||||
}).then((response) => {
|
||||
cy.log(`Updated user ${user} ${key} to ${value}`, response.status)
|
||||
})
|
||||
})
|
||||
|
||||
Cypress.Commands.add('openLeftSidebar', () => {
|
||||
cy.get('.app-navigation button.app-navigation-toggle').click()
|
||||
})
|
||||
@@ -63,15 +111,14 @@ Cypress.Commands.add('deckCreateList', ({ user, password }, title) => {
|
||||
cy.get('#stack-add form input[type=submit]').first().click()
|
||||
})
|
||||
|
||||
Cypress.Commands.add('createExampleBoard', ({ user, board }) => {
|
||||
const auth = {
|
||||
user: user.userId,
|
||||
password: user.password,
|
||||
}
|
||||
Cypress.Commands.add('createExampleBoard', ({ user, password, board }) => {
|
||||
cy.request({
|
||||
method: 'POST',
|
||||
url: `${Cypress.env('baseUrl')}/index.php/apps/deck/api/v1.0/boards`,
|
||||
auth,
|
||||
auth: {
|
||||
user,
|
||||
password,
|
||||
},
|
||||
body: { title: board.title, color: board.color ?? 'ff0000' },
|
||||
}).then((boardResponse) => {
|
||||
expect(boardResponse.status).to.eq(200)
|
||||
@@ -81,7 +128,10 @@ Cypress.Commands.add('createExampleBoard', ({ user, board }) => {
|
||||
cy.request({
|
||||
method: 'POST',
|
||||
url: `${Cypress.env('baseUrl')}/index.php/apps/deck/api/v1.0/boards/${boardData.id}/stacks`,
|
||||
auth,
|
||||
auth: {
|
||||
user,
|
||||
password,
|
||||
},
|
||||
body: { title: stack.title, order: 0 },
|
||||
}).then((stackResponse) => {
|
||||
const stackData = stackResponse.body
|
||||
@@ -90,13 +140,15 @@ Cypress.Commands.add('createExampleBoard', ({ user, board }) => {
|
||||
cy.request({
|
||||
method: 'POST',
|
||||
url: `${Cypress.env('baseUrl')}/index.php/apps/deck/api/v1.0/boards/${boardData.id}/stacks/${stackData.id}/cards`,
|
||||
auth,
|
||||
body: { title: card.title, description: card.description ?? '' },
|
||||
auth: {
|
||||
user,
|
||||
password,
|
||||
},
|
||||
body: { title: card.title },
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
cy.wrap(boardData)
|
||||
})
|
||||
})
|
||||
|
||||
@@ -105,13 +157,3 @@ Cypress.Commands.add('getNavigationEntry', (boardTitle) => {
|
||||
.find('ul.app-navigation-entry__children .app-navigation-entry:contains(' + boardTitle + ')')
|
||||
.find('a.app-navigation-entry-link')
|
||||
})
|
||||
|
||||
Cypress.Commands.add('shareBoardWithUi', (userId) => {
|
||||
cy.get('[aria-label="Open details"]').click()
|
||||
cy.get('.app-sidebar').should('be.visible')
|
||||
cy.get('.multiselect__input').type(`${userId}`)
|
||||
cy.get('.multiselect__content .multiselect__element').first().contains(userId)
|
||||
cy.get('.multiselect__input').type('{enter}')
|
||||
|
||||
cy.get('.shareWithList').contains(userId)
|
||||
})
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>Components App</title>
|
||||
</head>
|
||||
<body>
|
||||
<div data-cy-root></div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,27 +0,0 @@
|
||||
// ***********************************************************
|
||||
// This example support/component.js is processed and
|
||||
// loaded automatically before your test files.
|
||||
//
|
||||
// This is a great place to put global configuration and
|
||||
// behavior that modifies Cypress.
|
||||
//
|
||||
// You can change the location of this file or turn off
|
||||
// automatically serving support files with the
|
||||
// 'supportFile' configuration option.
|
||||
//
|
||||
// You can read more here:
|
||||
// https://on.cypress.io/configuration
|
||||
// ***********************************************************
|
||||
|
||||
// Import commands.js using ES2015 syntax:
|
||||
import './commands'
|
||||
|
||||
// Alternatively you can use CommonJS syntax:
|
||||
// require('./commands')
|
||||
|
||||
import { mount } from 'cypress/vue2'
|
||||
|
||||
Cypress.Commands.add('mount', mount)
|
||||
|
||||
// Example use:
|
||||
// cy.mount(MyComponent)
|
||||
@@ -14,11 +14,7 @@
|
||||
// ***********************************************************
|
||||
|
||||
// Import commands.js using ES2015 syntax:
|
||||
import './commands.js'
|
||||
|
||||
Cypress.on('uncaught:exception', (err) => {
|
||||
return !err.message.includes('ResizeObserver loop limit exceeded')
|
||||
})
|
||||
import './commands'
|
||||
|
||||
// Alternatively you can use CommonJS syntax:
|
||||
// require('./commands')
|
||||
|
||||
@@ -1,4 +1 @@
|
||||
import { User } from '@nextcloud/cypress'
|
||||
|
||||
export const randHash = () => Math.random().toString(36).replace(/[^a-z]+/g, '').slice(0, 10)
|
||||
export const randUser = () => new User(randHash(), randHash())
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
/*
|
||||
* @copyright Copyright (c) 2022 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/>.
|
||||
*/
|
||||
|
||||
export const sampleBoard = (title = 'MyTestBoard') => {
|
||||
return {
|
||||
title: title,
|
||||
color: '00ff00',
|
||||
stacks: [
|
||||
{
|
||||
title: 'TestList',
|
||||
cards: [
|
||||
{
|
||||
title: 'Hello world',
|
||||
description: '# Hello world',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
||||
}
|
||||
154
docs/API.md
154
docs/API.md
@@ -80,7 +80,7 @@ An ETag header is returned in order to determine if further child elements have
|
||||
- Fetch a single card of a board `GET /api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}`
|
||||
- Fetch attachments of a card `GET /api/v1.0/boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments`
|
||||
|
||||
If a `If-None-Match` header is provided and the requested element has not changed a `304` Not Modified response will be returned.
|
||||
If a `If-None-Match` header is provided and the requested element has not changed a `304` Not Modified response will be returned.
|
||||
|
||||
Changes of child elements will propagate to their parents and also cause an update of the ETag which will be useful for determining if a sync is necessary on any client integration side. As an example, if a label is added to a card, the ETag of all related entities (the card, stack and board) will change.
|
||||
|
||||
@@ -117,7 +117,6 @@ This API version has become available with **Deck 1.3.0**.
|
||||
- [GET /boards/import/getSystems - Import a board](#get-boardsimportgetsystems-import-a-board)
|
||||
- [GET /boards/import/config/system/{schema} - Import a board](#get-boardsimportconfigsystemschema-import-a-board)
|
||||
- [POST /boards/import - Import a board](#post-boardsimport-import-a-board)
|
||||
- The `done` property was added to cards
|
||||
|
||||
# Endpoints
|
||||
|
||||
@@ -588,7 +587,7 @@ The board list endpoint supports setting an `If-Modified-Since` header to limit
|
||||
#### Response
|
||||
|
||||
```json
|
||||
{
|
||||
{
|
||||
"title":"Test",
|
||||
"description":null,
|
||||
"stackId":6,
|
||||
@@ -602,7 +601,6 @@ The board list endpoint supports setting an `If-Modified-Since` header to limit
|
||||
"owner":"admin",
|
||||
"order":999,
|
||||
"archived":false,
|
||||
"done":null,
|
||||
"duedate": "2019-12-24T19:29:30+00:00",
|
||||
"deletedAt":0,
|
||||
"commentsUnread":0,
|
||||
@@ -625,28 +623,22 @@ The board list endpoint supports setting an `If-Modified-Since` header to limit
|
||||
|
||||
#### Request data
|
||||
|
||||
| Parameter | Type | Description |
|
||||
|-------------|-----------------|-----------------------------------------------------------------------------------------------------|
|
||||
| title | String | The title of the card, maximum length is limited to 255 characters |
|
||||
| description | String | The markdown description of the card |
|
||||
| type | String | Type of the card (for later use) use 'plain' for now |
|
||||
| owner | String | The user that owns the card |
|
||||
| order | Integer | Order for sorting the stacks |
|
||||
| duedate | timestamp | The ISO-8601 formatted duedate of the card or null |
|
||||
| archived | bool | Whether the card is archived or not |
|
||||
| done | timestamp\|null | The ISO-8601 formatted date when the card is marked as done (optional, null indicates undone state) |
|
||||
| Parameter | Type | Description |
|
||||
|-------------|-----------|------------------------------------------------------|
|
||||
| title | String | The title of the card, maximum length is limited to 255 characters |
|
||||
| description | String | The markdown description of the card |
|
||||
| type | String | Type of the card (for later use) use 'plain' for now |
|
||||
| order | Integer | Order for sorting the stacks |
|
||||
| duedate | timestamp | The ISO-8601 formatted duedate of the card or null |
|
||||
|
||||
|
||||
```
|
||||
{
|
||||
{
|
||||
"title": "Test card",
|
||||
"description": "A card description",
|
||||
"type": "plain",
|
||||
"owner": "admin",
|
||||
"order": 999,
|
||||
"duedate": "2019-12-24T19:29:30+00:00",
|
||||
"archived": false,
|
||||
"done": null,
|
||||
}
|
||||
```
|
||||
|
||||
@@ -985,7 +977,7 @@ For now only `deck_file` is supported as an attachment type.
|
||||
|
||||
### DELETE /boards/{boardId}/stacks/{stackId}/cards/{cardId}/attachments/{attachmentId} - Delete an attachment
|
||||
|
||||
|
||||
|
||||
#### Request parameters
|
||||
|
||||
| Parameter | Type | Description |
|
||||
@@ -1059,12 +1051,12 @@ Make a request to see the json schema of system
|
||||
|
||||
# OCS API
|
||||
|
||||
The following endpoints are available through the Nextcloud OCS endpoint, which is available at `/ocs/v2.php/apps/deck/api/v1.0/`.
|
||||
The following endpoints are available through the Nextcloud OCS endpoint, which is available at `/ocs/v2.php/apps/deck/api/v1.0/`.
|
||||
This has the benefit that both the web UI as well as external integrations can use the same API.
|
||||
|
||||
## Config
|
||||
|
||||
Deck stores user and app configuration values globally and per board. The GET endpoint allows to fetch the current global configuration while board settings will be exposed through the board element on the regular API endpoints.
|
||||
Deck stores user and app configuration values globally and per board. The GET endpoint allows to fetch the current global configuration while board settings will be exposed through the board element on the regular API endpoints.
|
||||
|
||||
### GET /api/v1.0/config - Fetch app configuration values
|
||||
|
||||
@@ -1072,10 +1064,9 @@ Deck stores user and app configuration values globally and per board. The GET en
|
||||
|
||||
| Config key | Description |
|
||||
| --- | --- |
|
||||
| calendar | Determines if the calendar/tasks integration through the CalDAV backend is enabled for the user (boolean) |
|
||||
| cardDetailsInModal | Determines if the bigger view is used (boolean) |
|
||||
| cardIdBadge | Determines if the ID badges are displayed on cards (boolean) |
|
||||
| groupLimit | Determines if creating new boards is limited to certain groups of the instance. The resulting output is an array of group objects with the id and the displayname (Admin only)|
|
||||
| calendar | Determines if the calendar/tasks integration through the CalDAV backend is enabled for the user (boolean) |
|
||||
| cardDetailsInModal | Determines if the bigger view is used (boolean) |
|
||||
| groupLimit | Determines if creating new boards is limited to certain groups of the instance. The resulting output is an array of group objects with the id and the displayname (Admin only)|
|
||||
|
||||
```
|
||||
{
|
||||
@@ -1088,7 +1079,6 @@ Deck stores user and app configuration values globally and per board. The GET en
|
||||
"data": {
|
||||
"calendar": true,
|
||||
"cardDetailsInModal": true,
|
||||
"cardIdBadge": true,
|
||||
"groupLimit": [
|
||||
{
|
||||
"id": "admin",
|
||||
@@ -1119,8 +1109,7 @@ Deck stores user and app configuration values globally and per board. The GET en
|
||||
| notify-due | `off`, `assigned` or `all` |
|
||||
| calendar | Boolean |
|
||||
| cardDetailsInModal | Boolean |
|
||||
| cardIdBadge | Boolean |
|
||||
|
||||
|
||||
#### Example request
|
||||
|
||||
```
|
||||
@@ -1194,7 +1183,7 @@ A list of comments will be provided under the `ocs.data` key. If no or no more c
|
||||
}
|
||||
```
|
||||
|
||||
In case a comment is marked as a reply to another comment object, the parent comment will be added as `replyTo` entry to the response. Only the next parent node is added, nested replies are not exposed directly.
|
||||
In case a comment is marked as a reply to another comment object, the parent comment will be added as `replyTo` entry to the response. Only the next parent node is added, nested replies are not exposed directly.
|
||||
|
||||
```json
|
||||
[
|
||||
@@ -1402,110 +1391,3 @@ A bad request response is returned if invalid input values are provided. The res
|
||||
A not found response might be returned if:
|
||||
- The card for the given cardId could not be found
|
||||
- The comment could not be found
|
||||
|
||||
|
||||
## Sessions
|
||||
|
||||
### PUT /session/create - creates a new session
|
||||
|
||||
#### Request parameters
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ------- | ---------------------------------------------------- |
|
||||
| boardId | Integer | The id of the opened board |
|
||||
|
||||
```
|
||||
curl -X PUT 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/session/create' \
|
||||
-H 'Accept: application/json' -H 'OCS-APIRequest: true' \
|
||||
-H 'Content-Type: application/json;charset=utf-8' \
|
||||
--data '{"boardId":1}'
|
||||
```
|
||||
|
||||
#### Response
|
||||
|
||||
##### 200 Success
|
||||
|
||||
```json
|
||||
{
|
||||
"ocs": {
|
||||
"meta": {
|
||||
"status": "ok",
|
||||
"statuscode": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"data": {
|
||||
"token": "+zcJHf4rC6dobVSbuNa3delkCSfTW8OvYWTyLFvSpIv80FjtgLIj0ARlxspsazNQ"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
### POST /session/sync - notifies the server, that the session is still open
|
||||
|
||||
#### Request body
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ------- | ---------------------------------------------------- |
|
||||
| boardId | Integer | The id of the opened board |
|
||||
| token | String | The session token from the /sessions/create response |
|
||||
|
||||
|
||||
```
|
||||
curl -X POST 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/session/create' \
|
||||
-H 'Accept: application/json' -H 'OCS-APIRequest: true' \
|
||||
-H 'Content-Type: application/json;charset=utf-8' \
|
||||
--data '{"boardId":1, "token":"X3DyyoFslArF0t0NBZXzZXzcy8feoX/OEytSNXZtPg9TpUgO5wrkJ38IW3T/FfpV"}'
|
||||
```
|
||||
|
||||
#### Response
|
||||
|
||||
##### 200 Success
|
||||
```json
|
||||
{
|
||||
"ocs": {
|
||||
"meta": {
|
||||
"status": "ok",
|
||||
"statuscode": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"data": []
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
##### 404 Not Found
|
||||
the provided token is invalid or expired
|
||||
|
||||
|
||||
### POST /session/close - closes the session
|
||||
|
||||
#### Request body
|
||||
|
||||
| Parameter | Type | Description |
|
||||
| --------- | ------- | ---------------------------------------------------- |
|
||||
| boardId | Integer | The id of the opened board |
|
||||
| token | String | The session token from the /sessions/create response |
|
||||
|
||||
```
|
||||
curl -X POST 'https://admin:admin@nextcloud/ocs/v2.php/apps/deck/api/v1.0/session/close' \
|
||||
-H 'Accept: application/json' -H 'OCS-APIRequest: true' \
|
||||
-H 'Content-Type: application/json;charset=utf-8' \
|
||||
--data '{"boardId":1, "token":"X3DyyoFslArF0t0NBZXzZXzcy8feoX/OEytSNXZtPg9TpUgO5wrkJ38IW3T/FfpV"}'
|
||||
```
|
||||
|
||||
#### Response
|
||||
|
||||
##### 200 Success
|
||||
```json
|
||||
{
|
||||
"ocs": {
|
||||
"meta": {
|
||||
"status": "ok",
|
||||
"statuscode": 200,
|
||||
"message": "OK"
|
||||
},
|
||||
"data": []
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
@@ -12,12 +12,11 @@ Overall, Deck is easy to use. You can create boards, add users, share the Deck,
|
||||
1. [Create my first board](#1-create-my-first-board)
|
||||
2. [Create stacks and cards](#2-create-stacks-and-cards)
|
||||
3. [Handle cards options](#3-handle-cards-options)
|
||||
4. [Mark task as done](#4-mark-as-done)
|
||||
5. [Archive old tasks](#5-archive-old-tasks)
|
||||
6. [Manage your board](#6-manage-your-board)
|
||||
7. [Import boards](#7-import-boards)
|
||||
8. [Search](#8-search)
|
||||
9. [New owner for the deck entities](#9-new-owner-for-the-deck-entities)
|
||||
4. [Archive old tasks](#4-archive-old-tasks)
|
||||
5. [Manage your board](#5-manage-your-board)
|
||||
6. [Import boards](#6-import-boards)
|
||||
7. [Search](#7-search)
|
||||
8. [New owner for the deck entities](#8-new-owner-for-the-deck-entities)
|
||||
|
||||
### 1. Create my first board
|
||||
In this example, we're going to create a board and share it with an other nextcloud user.
|
||||
@@ -26,7 +25,7 @@ In this example, we're going to create a board and share it with an other nextcl
|
||||
|
||||
|
||||
### 2. Create stacks and cards
|
||||
Stacks are simply columns with list of cards. It can represent a category of tasks or any step in your projects for example.
|
||||
Stacks are simply columns with list of cards. It can represent a category of tasks or an y step in your projects for example.
|
||||
**Check this out :**
|
||||
|
||||

|
||||
@@ -54,18 +53,12 @@ And even :
|
||||
|
||||

|
||||
|
||||
### 4. Mark as done
|
||||
Once a task has been completed, you can mark it as done. This will prevent it from becoming overdue and hide it from the upcoming cards.
|
||||
You can mark it as not done at any time.
|
||||
### 4. Archive old tasks
|
||||
Once finished or obsolete, a task could be archived. The tasks is not deleted, it's just archived, and you can retrieve it later
|
||||
|
||||

|
||||

|
||||
|
||||
### 5. Archive old tasks
|
||||
Once obsolete, a task could be archived. The task is not deleted, it's just archived, and you can retrieve it later
|
||||
|
||||

|
||||
|
||||
### 6. Manage your board
|
||||
### 5. Manage your board
|
||||
You can manage the settings of your Deck once you are inside it, by clicking on the small wheel at the top right.
|
||||
Once in this menu, you have access to several things:
|
||||
|
||||
@@ -79,7 +72,7 @@ The **sharing tab** allows you to add users or even groups to your boards.
|
||||
**Deleted objects** allows you to return previously deleted stacks or cards.
|
||||
The **Timeline** allows you to see everything that happened in your boards. Everything!
|
||||
|
||||
### 7. Import boards
|
||||
### 6. Import boards
|
||||
|
||||
Importing can be done using the API or the `occ` `deck:import` command.
|
||||
|
||||
@@ -97,7 +90,7 @@ Steps:
|
||||
* Create the configuration file
|
||||
* Execute the import informing the import file path, data file and source as `Trello JSON`
|
||||
|
||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloJson-schema.json) for import `Trello JSON`
|
||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/master/lib/Service/Importer/fixtures/config-trelloJson-schema.json) for import `Trello JSON`
|
||||
|
||||
Example configuration file:
|
||||
```json
|
||||
@@ -127,7 +120,7 @@ https://api.trello.com/1/members/me/boards?key={yourKey}&token={yourToken}&field
|
||||
This ID you will use in the configuration file in the `board` property
|
||||
* Create the configuration file
|
||||
|
||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloApi-schema.json) for import `Trello JSON`
|
||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/master/lib/Service/Importer/fixtures/config-trelloApi-schema.json) for import `Trello JSON`
|
||||
|
||||
Example configuration file:
|
||||
```json
|
||||
@@ -145,7 +138,7 @@ Example configuration file:
|
||||
}
|
||||
```
|
||||
|
||||
### 8. Search
|
||||
### 7. Search
|
||||
|
||||
Deck provides a global search either through the unified search in the Nextcloud header or with the inline search next to the board controls.
|
||||
This search allows advanced filtering of cards across all board of the logged in user.
|
||||
@@ -168,7 +161,7 @@ Other text tokens will be used to perform a case-insensitive search on the card
|
||||
|
||||
In addition, quotes can be used to pass a query with spaces, e.g. `"Exact match with spaces"` or `title:"My card"`.
|
||||
|
||||
### 9. New owner for the deck entities
|
||||
### 8. New owner for the deck entities
|
||||
You can transfer ownership of boards, cards, etc to a new user, using `occ` command `deck:transfer-ownership`
|
||||
|
||||
```bash
|
||||
|
||||
@@ -1,98 +0,0 @@
|
||||
## Export
|
||||
|
||||
Deck currently supports exporting all boards a user owns in a single JSON file. The format is based on the database schema that deck uses. It can be used to re-import boards on the same or other instances.
|
||||
|
||||
The export currently has some kown limitations in terms of specific data not included:
|
||||
- Activity information
|
||||
- File attachments to deck cards
|
||||
- Comments
|
||||
-
|
||||
```
|
||||
occ deck:export > my-file.json
|
||||
```
|
||||
|
||||
## Import boards
|
||||
|
||||
Importing can be done using the API or the `occ` `deck:import` command.
|
||||
|
||||
It is possible to import from the following sources:
|
||||
|
||||
### Deck JSON
|
||||
|
||||
A json file that has been obtained from the above described `occ deck:export [userid]` command can be imported.
|
||||
|
||||
```
|
||||
occ deck:import my-file.json
|
||||
```
|
||||
|
||||
In case you are importing from a different instance you may use an additional config file to provide custom user id mapping in case users have different identifiers.
|
||||
|
||||
```
|
||||
{
|
||||
"owner": "admin",
|
||||
"uidRelation": {
|
||||
"johndoe": "test-user-1"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
#### Trello JSON
|
||||
|
||||
Limitations:
|
||||
* Comments with more than 1000 characters are placed as attached files to the card.
|
||||
|
||||
Steps:
|
||||
* Create the data file
|
||||
* Access Trello
|
||||
* go to the board you want to export
|
||||
* Follow the steps in [Trello documentation](https://help.trello.com/article/747-exporting-data-from-trello-1) and export as JSON
|
||||
* Create the configuration file
|
||||
* Execute the import informing the import file path, data file and source as `Trello JSON`
|
||||
|
||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloJson-schema.json) for import `Trello JSON`
|
||||
|
||||
Example configuration file:
|
||||
```json
|
||||
{
|
||||
"owner": "admin",
|
||||
"color": "0800fd",
|
||||
"uidRelation": {
|
||||
"johndoe": "johndoe"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Limitations**:
|
||||
|
||||
Importing from a JSON file imports up to 1000 actions. To find out how many actions the board to be imported has, identify how many actions the JSON has.
|
||||
|
||||
#### Trello API
|
||||
|
||||
Import using API is recommended for boards with more than 1000 actions.
|
||||
|
||||
Trello makes it possible to attach links to a card. Deck does not have this feature. Attachments and attachment links are added in a markdown table at the end of the description for every imported card that has attachments in Trello.
|
||||
|
||||
* Get the API Key and API Token [here](https://developer.atlassian.com/cloud/trello/guides/rest-api/api-introduction/#authentication-and-authorization)
|
||||
* Get the ID of the board you want to import by making a request to:
|
||||
https://api.trello.com/1/members/me/boards?key={yourKey}&token={yourToken}&fields=id,name
|
||||
|
||||
This ID you will use in the configuration file in the `board` property
|
||||
* Create the configuration file
|
||||
|
||||
Create the configuration file respecting the [JSON Schema](https://github.com/nextcloud/deck/blob/main/lib/Service/Importer/fixtures/config-trelloApi-schema.json) for import `Trello JSON`
|
||||
|
||||
Example configuration file:
|
||||
```json
|
||||
{
|
||||
"owner": "admin",
|
||||
"color": "0800fd",
|
||||
"api": {
|
||||
"key": "0cc175b9c0f1b6a831c399e269772661",
|
||||
"token": "92eb5ffee6ae2fec3ad71c777531578f4a8a08f09d37b73795649038408b5f33"
|
||||
},
|
||||
"board": "8277e0910d750195b4487976",
|
||||
"uidRelation": {
|
||||
"johndoe": "johndoe"
|
||||
}
|
||||
}
|
||||
```
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 88 KiB |
@@ -1,3 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" style="height: 240px; width: 240px;" viewBox="0 0 24 24">
|
||||
<path fill="currentColor" d="M12,15H10V13H12V15M18,15H14V13H18V15M8,11H6V9H8V11M18,11H10V9H18V11M20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H20A2,2 0 0,1 22,6V18A2,2 0 0,1 20,20M4,6V18H20V6H4Z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 298 B |
@@ -35,9 +35,6 @@ OC.L10N.register(
|
||||
"Completed" : "Voltooid",
|
||||
"Select Date" : "Kies Datum",
|
||||
"seconds ago" : "sekondes gelede",
|
||||
"Keyboard shortcuts" : "Sneltoetse",
|
||||
"Keyboard shortcut" : "Snelsleutel",
|
||||
"Search" : "Soek",
|
||||
"Shared with you" : "Met u gedeel",
|
||||
"No notifications" : "Geen kennisgewings",
|
||||
"An error occurred" : "'n Fout het voorgekom",
|
||||
|
||||
@@ -33,9 +33,6 @@
|
||||
"Completed" : "Voltooid",
|
||||
"Select Date" : "Kies Datum",
|
||||
"seconds ago" : "sekondes gelede",
|
||||
"Keyboard shortcuts" : "Sneltoetse",
|
||||
"Keyboard shortcut" : "Snelsleutel",
|
||||
"Search" : "Soek",
|
||||
"Shared with you" : "Met u gedeel",
|
||||
"No notifications" : "Geen kennisgewings",
|
||||
"An error occurred" : "'n Fout het voorgekom",
|
||||
|
||||
@@ -17,7 +17,6 @@ OC.L10N.register(
|
||||
"Delete" : "Borrar",
|
||||
"Download" : "Escargar",
|
||||
"Modified" : "Modificau",
|
||||
"Search" : "Buscar",
|
||||
"Today" : "Hue",
|
||||
"Close" : "Zarrar",
|
||||
"Share" : "Compartir"
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
"Delete" : "Borrar",
|
||||
"Download" : "Escargar",
|
||||
"Modified" : "Modificau",
|
||||
"Search" : "Buscar",
|
||||
"Today" : "Hue",
|
||||
"Close" : "Zarrar",
|
||||
"Share" : "Compartir"
|
||||
|
||||
30
l10n/ar.js
30
l10n/ar.js
@@ -277,32 +277,6 @@ OC.L10N.register(
|
||||
"List is empty" : "القائمة فارغة",
|
||||
"Card deleted" : "البطاقة حٌذفت ",
|
||||
"seconds ago" : "ثوانٍ مضت",
|
||||
"Keyboard shortcuts" : "إختصارات لوحة المفاتيح",
|
||||
"Speed up using Deck with simple shortcuts." : "سرِّع التعامل مع الرقعة باستعمال الاختصارات البسيطة.",
|
||||
"Board actions" : "إجراءات الرقعة",
|
||||
"Keyboard shortcut" : "إختصار لوحة المفاتيح",
|
||||
"Action" : "الإجراء",
|
||||
"Shift" : "العالي shift",
|
||||
"Scroll" : "تحريك",
|
||||
"Scroll sideways" : "تحريك للجنب",
|
||||
"Navigate between cards" : "التنقُّل بين البطاقات",
|
||||
"Esc" : "خروج",
|
||||
"Close card details" : "أغلِق تفاصيل البطاقة",
|
||||
"Ctrl" : "تحكم Ctrl",
|
||||
"Search" : "بحث",
|
||||
"Show card filters" : "أظهِر فلاتر البطاقة",
|
||||
"Clear card filters" : "إمحُ فلاتر البطاقة",
|
||||
"Show help dialog" : "أظهِر نافذة حوار المساعدة",
|
||||
"Card actions" : "إجراءات البطاقة",
|
||||
"The following actions can be triggered on the currently highlighted card" : "الإجراءات التالية يمكن تنفيذها على البطاقات المُعلّمة حالياً",
|
||||
"Enter" : "إدخال",
|
||||
"Space" : "المدى",
|
||||
"Open card details" : "إفتَح تفاصيل البطاقة",
|
||||
"Edit the card title" : "عدِّل عنوان البطاقة",
|
||||
"Assign yourself to the current card" : "أسنِد هذه البطاقة إلى نفسِك",
|
||||
"Archive/unarchive the current card" : "أرشِف أو ألغِ ترشيف البطاقة الحالية",
|
||||
"Mark card as completed/not completed" : "علِّم بطاقة كـ\"منجزة\" أو \"غير منجزة\"",
|
||||
"Open card menu" : "إفتَح قائمة البطاقات",
|
||||
"All boards" : "جميع الالواح",
|
||||
"Archived boards" : "الالواح المؤرشفة",
|
||||
"Shared with you" : "تم مشاركتها معك",
|
||||
@@ -372,12 +346,12 @@ OC.L10N.register(
|
||||
"Share" : "مشاركة ",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>وصف البطاقة</strong>داخل تطبيق Deck قد تغيرت.",
|
||||
"Timeline" : "الجدول الزمني",
|
||||
"Add a new list" : "اضف قائمة جديدة",
|
||||
"Assign to users" : "انسب الى المتسخدمين",
|
||||
"Due date" : "تاريخ الانجاز",
|
||||
"Next week" : "الاسبوع القادم",
|
||||
"Next month" : "الشهر القادم",
|
||||
"Limit deck usage of groups" : "تقييد استخدام Deck للمجموعات",
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم.",
|
||||
"Assign yorself to the current card" : "أسنِد البطاقة الحالية إلى نفسك"
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم."
|
||||
},
|
||||
"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;");
|
||||
|
||||
30
l10n/ar.json
30
l10n/ar.json
@@ -275,32 +275,6 @@
|
||||
"List is empty" : "القائمة فارغة",
|
||||
"Card deleted" : "البطاقة حٌذفت ",
|
||||
"seconds ago" : "ثوانٍ مضت",
|
||||
"Keyboard shortcuts" : "إختصارات لوحة المفاتيح",
|
||||
"Speed up using Deck with simple shortcuts." : "سرِّع التعامل مع الرقعة باستعمال الاختصارات البسيطة.",
|
||||
"Board actions" : "إجراءات الرقعة",
|
||||
"Keyboard shortcut" : "إختصار لوحة المفاتيح",
|
||||
"Action" : "الإجراء",
|
||||
"Shift" : "العالي shift",
|
||||
"Scroll" : "تحريك",
|
||||
"Scroll sideways" : "تحريك للجنب",
|
||||
"Navigate between cards" : "التنقُّل بين البطاقات",
|
||||
"Esc" : "خروج",
|
||||
"Close card details" : "أغلِق تفاصيل البطاقة",
|
||||
"Ctrl" : "تحكم Ctrl",
|
||||
"Search" : "بحث",
|
||||
"Show card filters" : "أظهِر فلاتر البطاقة",
|
||||
"Clear card filters" : "إمحُ فلاتر البطاقة",
|
||||
"Show help dialog" : "أظهِر نافذة حوار المساعدة",
|
||||
"Card actions" : "إجراءات البطاقة",
|
||||
"The following actions can be triggered on the currently highlighted card" : "الإجراءات التالية يمكن تنفيذها على البطاقات المُعلّمة حالياً",
|
||||
"Enter" : "إدخال",
|
||||
"Space" : "المدى",
|
||||
"Open card details" : "إفتَح تفاصيل البطاقة",
|
||||
"Edit the card title" : "عدِّل عنوان البطاقة",
|
||||
"Assign yourself to the current card" : "أسنِد هذه البطاقة إلى نفسِك",
|
||||
"Archive/unarchive the current card" : "أرشِف أو ألغِ ترشيف البطاقة الحالية",
|
||||
"Mark card as completed/not completed" : "علِّم بطاقة كـ\"منجزة\" أو \"غير منجزة\"",
|
||||
"Open card menu" : "إفتَح قائمة البطاقات",
|
||||
"All boards" : "جميع الالواح",
|
||||
"Archived boards" : "الالواح المؤرشفة",
|
||||
"Shared with you" : "تم مشاركتها معك",
|
||||
@@ -370,12 +344,12 @@
|
||||
"Share" : "مشاركة ",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>وصف البطاقة</strong>داخل تطبيق Deck قد تغيرت.",
|
||||
"Timeline" : "الجدول الزمني",
|
||||
"Add a new list" : "اضف قائمة جديدة",
|
||||
"Assign to users" : "انسب الى المتسخدمين",
|
||||
"Due date" : "تاريخ الانجاز",
|
||||
"Next week" : "الاسبوع القادم",
|
||||
"Next month" : "الشهر القادم",
|
||||
"Limit deck usage of groups" : "تقييد استخدام Deck للمجموعات",
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم.",
|
||||
"Assign yorself to the current card" : "أسنِد البطاقة الحالية إلى نفسك"
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "سيؤدي تقييد Deck إلى منع المستخدمين الذين ليسوا جزءًا من تلك المجموعات من إنشاء لوحاتهم الخاصة. سيظل المستخدمون قادرين على العمل على اللوحات التي تمت مشاركتها معهم."
|
||||
},"pluralForm" :"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;"
|
||||
}
|
||||
@@ -21,9 +21,6 @@ OC.L10N.register(
|
||||
"Description" : "Descripción",
|
||||
"(Saving…)" : "(Guardando…)",
|
||||
"Completed" : "Completáu",
|
||||
"Keyboard shortcuts" : "Atayos del tecláu",
|
||||
"Action" : "Aición",
|
||||
"Search" : "Guetar",
|
||||
"All cards" : "Toles tarxetes",
|
||||
"An error occurred" : "Prodúxose un error",
|
||||
"Today" : "Güei",
|
||||
|
||||
@@ -19,9 +19,6 @@
|
||||
"Description" : "Descripción",
|
||||
"(Saving…)" : "(Guardando…)",
|
||||
"Completed" : "Completáu",
|
||||
"Keyboard shortcuts" : "Atayos del tecláu",
|
||||
"Action" : "Aición",
|
||||
"Search" : "Guetar",
|
||||
"All cards" : "Toles tarxetes",
|
||||
"An error occurred" : "Prodúxose un error",
|
||||
"Today" : "Güei",
|
||||
|
||||
@@ -26,7 +26,6 @@ OC.L10N.register(
|
||||
"Completed" : "Bitmişdir",
|
||||
"(group)" : "(qrup)",
|
||||
"seconds ago" : "saniyələr öncə",
|
||||
"Search" : "Axtarış",
|
||||
"Shared with you" : "Shared with you",
|
||||
"Today" : "Bu gün",
|
||||
"Tomorrow" : "Sabah",
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
"Completed" : "Bitmişdir",
|
||||
"(group)" : "(qrup)",
|
||||
"seconds ago" : "saniyələr öncə",
|
||||
"Search" : "Axtarış",
|
||||
"Shared with you" : "Shared with you",
|
||||
"Today" : "Bu gün",
|
||||
"Tomorrow" : "Sabah",
|
||||
|
||||
@@ -253,14 +253,6 @@ OC.L10N.register(
|
||||
"List is empty" : "Списъкът е празен",
|
||||
"Card deleted" : "Картата е изтрита",
|
||||
"seconds ago" : "преди секунди",
|
||||
"Keyboard shortcuts" : "Бързи клавиши",
|
||||
"Keyboard shortcut" : "Клавишни комбинации",
|
||||
"Action" : "Действие",
|
||||
"Shift" : "Shift /бутон/",
|
||||
"Ctrl" : "Ctrl /бутон/",
|
||||
"Search" : "Търсене",
|
||||
"Enter" : "Въвеждане",
|
||||
"Space" : "Пространство",
|
||||
"All boards" : "Всички табла",
|
||||
"Archived boards" : "Архивирани табла",
|
||||
"Shared with you" : "Споделени с вас",
|
||||
@@ -323,6 +315,7 @@ OC.L10N.register(
|
||||
"Share" : "Споделяне",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Описанието на картата</strong> в приложението Deck/набор/ е променено",
|
||||
"Timeline" : "Времева линия",
|
||||
"Add a new list" : "Добавяне на нов списък",
|
||||
"Assign to users" : "Зачисляване към потребители",
|
||||
"Due date" : "Крайна дата",
|
||||
"Next week" : "Следваща седмица",
|
||||
|
||||
@@ -251,14 +251,6 @@
|
||||
"List is empty" : "Списъкът е празен",
|
||||
"Card deleted" : "Картата е изтрита",
|
||||
"seconds ago" : "преди секунди",
|
||||
"Keyboard shortcuts" : "Бързи клавиши",
|
||||
"Keyboard shortcut" : "Клавишни комбинации",
|
||||
"Action" : "Действие",
|
||||
"Shift" : "Shift /бутон/",
|
||||
"Ctrl" : "Ctrl /бутон/",
|
||||
"Search" : "Търсене",
|
||||
"Enter" : "Въвеждане",
|
||||
"Space" : "Пространство",
|
||||
"All boards" : "Всички табла",
|
||||
"Archived boards" : "Архивирани табла",
|
||||
"Shared with you" : "Споделени с вас",
|
||||
@@ -321,6 +313,7 @@
|
||||
"Share" : "Споделяне",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Описанието на картата</strong> в приложението Deck/набор/ е променено",
|
||||
"Timeline" : "Времева линия",
|
||||
"Add a new list" : "Добавяне на нов списък",
|
||||
"Assign to users" : "Зачисляване към потребители",
|
||||
"Due date" : "Крайна дата",
|
||||
"Next week" : "Следваща седмица",
|
||||
|
||||
@@ -26,8 +26,6 @@ OC.L10N.register(
|
||||
"Completed" : "সুসম্পন্ন",
|
||||
"(group)" : "(গোষ্ঠি)",
|
||||
"seconds ago" : "সেকেন্ড পূর্বে",
|
||||
"Keyboard shortcuts" : "কী-বোর্ড শর্টকাট",
|
||||
"Search" : "Search",
|
||||
"Shared with you" : "Shared with you",
|
||||
"Today" : "আজ",
|
||||
"Tomorrow" : "আগামীকাল",
|
||||
|
||||
@@ -24,8 +24,6 @@
|
||||
"Completed" : "সুসম্পন্ন",
|
||||
"(group)" : "(গোষ্ঠি)",
|
||||
"seconds ago" : "সেকেন্ড পূর্বে",
|
||||
"Keyboard shortcuts" : "কী-বোর্ড শর্টকাট",
|
||||
"Search" : "Search",
|
||||
"Shared with you" : "Shared with you",
|
||||
"Today" : "আজ",
|
||||
"Tomorrow" : "আগামীকাল",
|
||||
|
||||
@@ -33,7 +33,6 @@ OC.L10N.register(
|
||||
"Completed" : "Achuet",
|
||||
"(group)" : "(strollad)",
|
||||
"seconds ago" : "eilenn zo",
|
||||
"Search" : "Klask",
|
||||
"Shared with you" : "Rannet ganeoc'h",
|
||||
"No notifications" : "Kemenaden ebet",
|
||||
"Today" : "Hiziv",
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
"Completed" : "Achuet",
|
||||
"(group)" : "(strollad)",
|
||||
"seconds ago" : "eilenn zo",
|
||||
"Search" : "Klask",
|
||||
"Shared with you" : "Rannet ganeoc'h",
|
||||
"No notifications" : "Kemenaden ebet",
|
||||
"Today" : "Hiziv",
|
||||
|
||||
@@ -22,8 +22,6 @@ OC.L10N.register(
|
||||
"Update" : "Ažuriraj",
|
||||
"Description" : "Opis",
|
||||
"Completed" : "Zavrženo",
|
||||
"Keyboard shortcuts" : "Tipkovni prečaci",
|
||||
"Search" : "Search",
|
||||
"Shared with you" : "Shared with you",
|
||||
"Today" : "Danas",
|
||||
"Tomorrow" : "Sutra",
|
||||
|
||||
@@ -20,8 +20,6 @@
|
||||
"Update" : "Ažuriraj",
|
||||
"Description" : "Opis",
|
||||
"Completed" : "Zavrženo",
|
||||
"Keyboard shortcuts" : "Tipkovni prečaci",
|
||||
"Search" : "Search",
|
||||
"Shared with you" : "Shared with you",
|
||||
"Today" : "Danas",
|
||||
"Tomorrow" : "Sutra",
|
||||
|
||||
@@ -256,13 +256,6 @@ OC.L10N.register(
|
||||
"List is empty" : "La llista és buida",
|
||||
"Card deleted" : "Targeta suprimida",
|
||||
"seconds ago" : "fa uns segons",
|
||||
"Keyboard shortcuts" : "Dreceres de teclat",
|
||||
"Keyboard shortcut" : "Drecera de teclat",
|
||||
"Action" : "Acció",
|
||||
"Shift" : "Maj",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Cercar",
|
||||
"Enter" : "Retorn",
|
||||
"All boards" : "Tots els taulers",
|
||||
"Archived boards" : "Taulers arxivats",
|
||||
"Shared with you" : "Us han compartit",
|
||||
@@ -328,6 +321,7 @@ OC.L10N.register(
|
||||
"Share" : "Compartir",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "S'ha canviat una <strong>descripció de targeta</strong> a l'aplicació Tauler",
|
||||
"Timeline" : "Línia de temps",
|
||||
"Add a new list" : "Afegeix una llista nova",
|
||||
"Assign to users" : "Assignació als usuaris",
|
||||
"Due date" : "Data de caducitat",
|
||||
"Next week" : "Setmana següent",
|
||||
|
||||
@@ -254,13 +254,6 @@
|
||||
"List is empty" : "La llista és buida",
|
||||
"Card deleted" : "Targeta suprimida",
|
||||
"seconds ago" : "fa uns segons",
|
||||
"Keyboard shortcuts" : "Dreceres de teclat",
|
||||
"Keyboard shortcut" : "Drecera de teclat",
|
||||
"Action" : "Acció",
|
||||
"Shift" : "Maj",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Cercar",
|
||||
"Enter" : "Retorn",
|
||||
"All boards" : "Tots els taulers",
|
||||
"Archived boards" : "Taulers arxivats",
|
||||
"Shared with you" : "Us han compartit",
|
||||
@@ -326,6 +319,7 @@
|
||||
"Share" : "Compartir",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "S'ha canviat una <strong>descripció de targeta</strong> a l'aplicació Tauler",
|
||||
"Timeline" : "Línia de temps",
|
||||
"Add a new list" : "Afegeix una llista nova",
|
||||
"Assign to users" : "Assignació als usuaris",
|
||||
"Due date" : "Data de caducitat",
|
||||
"Next week" : "Setmana següent",
|
||||
|
||||
@@ -277,14 +277,6 @@ OC.L10N.register(
|
||||
"List is empty" : "Seznam je prázdný",
|
||||
"Card deleted" : "Karta smazána",
|
||||
"seconds ago" : "před několika sekundami",
|
||||
"Keyboard shortcuts" : "Klávesové zkratky",
|
||||
"Keyboard shortcut" : "Klávesová zkratka",
|
||||
"Action" : "Akce",
|
||||
"Shift" : "Shift",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Hledat",
|
||||
"Enter" : "Konec řádku",
|
||||
"Space" : "Mezera",
|
||||
"All boards" : "Všechny tabule",
|
||||
"Archived boards" : "Archivované tabule",
|
||||
"Shared with you" : "Sdíleno s vámi",
|
||||
@@ -354,6 +346,7 @@ OC.L10N.register(
|
||||
"Share" : "Sdílet",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Popis karty</strong> v aplikaci Deck byl změněn",
|
||||
"Timeline" : "Časová osa",
|
||||
"Add a new list" : "Přidat nový sloupec",
|
||||
"Assign to users" : "Přiřadit k uživatelům",
|
||||
"Due date" : "Termín",
|
||||
"Next week" : "Příští týden",
|
||||
|
||||
@@ -275,14 +275,6 @@
|
||||
"List is empty" : "Seznam je prázdný",
|
||||
"Card deleted" : "Karta smazána",
|
||||
"seconds ago" : "před několika sekundami",
|
||||
"Keyboard shortcuts" : "Klávesové zkratky",
|
||||
"Keyboard shortcut" : "Klávesová zkratka",
|
||||
"Action" : "Akce",
|
||||
"Shift" : "Shift",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Hledat",
|
||||
"Enter" : "Konec řádku",
|
||||
"Space" : "Mezera",
|
||||
"All boards" : "Všechny tabule",
|
||||
"Archived boards" : "Archivované tabule",
|
||||
"Shared with you" : "Sdíleno s vámi",
|
||||
@@ -352,6 +344,7 @@
|
||||
"Share" : "Sdílet",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Popis karty</strong> v aplikaci Deck byl změněn",
|
||||
"Timeline" : "Časová osa",
|
||||
"Add a new list" : "Přidat nový sloupec",
|
||||
"Assign to users" : "Přiřadit k uživatelům",
|
||||
"Due date" : "Termín",
|
||||
"Next week" : "Příští týden",
|
||||
|
||||
@@ -25,8 +25,6 @@ OC.L10N.register(
|
||||
"Description" : "Disgrifiad",
|
||||
"Select Date" : "Dewis Dyddiad",
|
||||
"seconds ago" : "eiliad yn ôl",
|
||||
"Keyboard shortcuts" : "Llwybrau byr bysellfwrdd",
|
||||
"Search" : "Chwilio",
|
||||
"Shared with you" : "Shared with you",
|
||||
"No reminder" : "Dim nodyn atgoffa",
|
||||
"An error occurred" : "Digwyddodd gwall",
|
||||
|
||||
@@ -23,8 +23,6 @@
|
||||
"Description" : "Disgrifiad",
|
||||
"Select Date" : "Dewis Dyddiad",
|
||||
"seconds ago" : "eiliad yn ôl",
|
||||
"Keyboard shortcuts" : "Llwybrau byr bysellfwrdd",
|
||||
"Search" : "Chwilio",
|
||||
"Shared with you" : "Shared with you",
|
||||
"No reminder" : "Dim nodyn atgoffa",
|
||||
"An error occurred" : "Digwyddodd gwall",
|
||||
|
||||
@@ -188,12 +188,6 @@ OC.L10N.register(
|
||||
"Select a list" : "Vælg en kolonne",
|
||||
"Card deleted" : "Kort slettet",
|
||||
"seconds ago" : "få sekunder siden",
|
||||
"Keyboard shortcuts" : "Tastaturgenveje",
|
||||
"Keyboard shortcut" : "Tastaturgenvej",
|
||||
"Action" : "Handling",
|
||||
"Shift" : "Shift",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Søg",
|
||||
"All boards" : "Alle tavler",
|
||||
"Archived boards" : "Arkiverede lister",
|
||||
"Shared with you" : "Shared with you",
|
||||
@@ -235,6 +229,7 @@ OC.L10N.register(
|
||||
"Share {file} with a Deck card" : "Del {file} med et Deck kort",
|
||||
"Share" : "Del",
|
||||
"Timeline" : "Tidslinje",
|
||||
"Add a new list" : "Tilføj en ny kolonne",
|
||||
"Assign to users" : "Tildel til brugere",
|
||||
"Due date" : "Forfaldsdato",
|
||||
"Next week" : "Næste uge",
|
||||
|
||||
@@ -186,12 +186,6 @@
|
||||
"Select a list" : "Vælg en kolonne",
|
||||
"Card deleted" : "Kort slettet",
|
||||
"seconds ago" : "få sekunder siden",
|
||||
"Keyboard shortcuts" : "Tastaturgenveje",
|
||||
"Keyboard shortcut" : "Tastaturgenvej",
|
||||
"Action" : "Handling",
|
||||
"Shift" : "Shift",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Søg",
|
||||
"All boards" : "Alle tavler",
|
||||
"Archived boards" : "Arkiverede lister",
|
||||
"Shared with you" : "Shared with you",
|
||||
@@ -233,6 +227,7 @@
|
||||
"Share {file} with a Deck card" : "Del {file} med et Deck kort",
|
||||
"Share" : "Del",
|
||||
"Timeline" : "Tidslinje",
|
||||
"Add a new list" : "Tilføj en ny kolonne",
|
||||
"Assign to users" : "Tildel til brugere",
|
||||
"Due date" : "Forfaldsdato",
|
||||
"Next week" : "Næste uge",
|
||||
|
||||
34
l10n/de.js
34
l10n/de.js
@@ -265,7 +265,7 @@ OC.L10N.register(
|
||||
"Todo items" : "Aufgaben-Elemente",
|
||||
"{count} comments, {unread} unread" : "{count} Kommentare, {unread} ungelesen",
|
||||
"Edit card title" : "Kartentitel bearbeiten",
|
||||
"Card details" : "Kartendetails",
|
||||
"Card details" : "Karten-Details",
|
||||
"Assign to me" : "Mir zuweisen",
|
||||
"Unassign myself" : "Nicht mehr mir zuweisen",
|
||||
"Mark as not done" : "Als nicht erledigt markieren",
|
||||
@@ -277,32 +277,6 @@ OC.L10N.register(
|
||||
"List is empty" : "Liste ist leer",
|
||||
"Card deleted" : "Karte gelöscht",
|
||||
"seconds ago" : "Gerade eben",
|
||||
"Keyboard shortcuts" : "Tastaturkürzel",
|
||||
"Speed up using Deck with simple shortcuts." : "Beschleunige die Verwendung von Deck mit einfachen Tastaturkürzeln.",
|
||||
"Board actions" : "Boardaktionen",
|
||||
"Keyboard shortcut" : "Tastaturkürzel",
|
||||
"Action" : "Aktion",
|
||||
"Shift" : "Umschalttaste",
|
||||
"Scroll" : "Scrollen",
|
||||
"Scroll sideways" : "Seitwärts scrollen",
|
||||
"Navigate between cards" : "Zwischen Karten navigieren",
|
||||
"Esc" : "Esc",
|
||||
"Close card details" : "Kartendetails schließen",
|
||||
"Ctrl" : "Strg",
|
||||
"Search" : "Suche",
|
||||
"Show card filters" : "Kartenfilter anzeigen",
|
||||
"Clear card filters" : "Kartenfilter löschen",
|
||||
"Show help dialog" : "Hilfedialog anzeigen",
|
||||
"Card actions" : "Kartenaktionen",
|
||||
"The following actions can be triggered on the currently highlighted card" : "Die folgenden Aktionen können für die aktuell markierten Karte ausgelöst werden",
|
||||
"Enter" : "Enter",
|
||||
"Space" : "Leerzeichen",
|
||||
"Open card details" : "Kartendetails öffnen",
|
||||
"Edit the card title" : "Kartentitel bearbeiten",
|
||||
"Assign yourself to the current card" : "Aktuelle Karte dir zuweisen",
|
||||
"Archive/unarchive the current card" : "Aktuelle Karte archivieren/dearchivieren",
|
||||
"Mark card as completed/not completed" : "Karte als abgeschlossen/nicht abgeschlossen markieren",
|
||||
"Open card menu" : "Kartenmenü öffnen",
|
||||
"All boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
"Shared with you" : "Mit dir geteilt",
|
||||
@@ -312,7 +286,7 @@ OC.L10N.register(
|
||||
"Show boards in calendar/tasks" : "Board in Kalender/Aufgaben anzeigen",
|
||||
"Limit board creation to some groups" : "Erstellung von Boards auf einige Gruppen beschränken",
|
||||
"Users outside of those groups will not be able to create their own boards, but will still be able to work on boards that have been shared with them." : "Benutzer außerhalb dieser Gruppen können keine eigenen Boards erstellen, aber weiterhin an Boards arbeiten, die mit ihnen geteilt wurden.",
|
||||
"Board details" : "Boarddetails",
|
||||
"Board details" : "Board-Details",
|
||||
"Edit board" : "Board bearbeiten",
|
||||
"Clone board" : "Board klonen",
|
||||
"Unarchive board" : "Board dearchivieren",
|
||||
@@ -372,12 +346,12 @@ OC.L10N.register(
|
||||
"Share" : "Freigeben",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "Eine <strong>Kartenbeschreibung</strong> wurde innerhalb der Deck-App geändert",
|
||||
"Timeline" : "Zeitachse",
|
||||
"Add a new list" : "Eine neue Liste hinzufügen",
|
||||
"Assign to users" : "Benutzern zuweisen",
|
||||
"Due date" : "Fälligkeitsdatum",
|
||||
"Next week" : "Nächste Woche",
|
||||
"Next month" : "Nächster Monat",
|
||||
"Limit deck usage of groups" : "Nutzung auf Gruppen einschränken",
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Wenn du Deck einschränkst, können Benutzer, die nicht zu diesen Gruppen gehören, keine eigenen Boards erstellen. Die Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden.",
|
||||
"Assign yorself to the current card" : "Aktuelle Karte dir zuweisen"
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Wenn du Deck einschränkst, können Benutzer, die nicht zu diesen Gruppen gehören, keine eigenen Boards erstellen. Die Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden."
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
34
l10n/de.json
34
l10n/de.json
@@ -263,7 +263,7 @@
|
||||
"Todo items" : "Aufgaben-Elemente",
|
||||
"{count} comments, {unread} unread" : "{count} Kommentare, {unread} ungelesen",
|
||||
"Edit card title" : "Kartentitel bearbeiten",
|
||||
"Card details" : "Kartendetails",
|
||||
"Card details" : "Karten-Details",
|
||||
"Assign to me" : "Mir zuweisen",
|
||||
"Unassign myself" : "Nicht mehr mir zuweisen",
|
||||
"Mark as not done" : "Als nicht erledigt markieren",
|
||||
@@ -275,32 +275,6 @@
|
||||
"List is empty" : "Liste ist leer",
|
||||
"Card deleted" : "Karte gelöscht",
|
||||
"seconds ago" : "Gerade eben",
|
||||
"Keyboard shortcuts" : "Tastaturkürzel",
|
||||
"Speed up using Deck with simple shortcuts." : "Beschleunige die Verwendung von Deck mit einfachen Tastaturkürzeln.",
|
||||
"Board actions" : "Boardaktionen",
|
||||
"Keyboard shortcut" : "Tastaturkürzel",
|
||||
"Action" : "Aktion",
|
||||
"Shift" : "Umschalttaste",
|
||||
"Scroll" : "Scrollen",
|
||||
"Scroll sideways" : "Seitwärts scrollen",
|
||||
"Navigate between cards" : "Zwischen Karten navigieren",
|
||||
"Esc" : "Esc",
|
||||
"Close card details" : "Kartendetails schließen",
|
||||
"Ctrl" : "Strg",
|
||||
"Search" : "Suche",
|
||||
"Show card filters" : "Kartenfilter anzeigen",
|
||||
"Clear card filters" : "Kartenfilter löschen",
|
||||
"Show help dialog" : "Hilfedialog anzeigen",
|
||||
"Card actions" : "Kartenaktionen",
|
||||
"The following actions can be triggered on the currently highlighted card" : "Die folgenden Aktionen können für die aktuell markierten Karte ausgelöst werden",
|
||||
"Enter" : "Enter",
|
||||
"Space" : "Leerzeichen",
|
||||
"Open card details" : "Kartendetails öffnen",
|
||||
"Edit the card title" : "Kartentitel bearbeiten",
|
||||
"Assign yourself to the current card" : "Aktuelle Karte dir zuweisen",
|
||||
"Archive/unarchive the current card" : "Aktuelle Karte archivieren/dearchivieren",
|
||||
"Mark card as completed/not completed" : "Karte als abgeschlossen/nicht abgeschlossen markieren",
|
||||
"Open card menu" : "Kartenmenü öffnen",
|
||||
"All boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
"Shared with you" : "Mit dir geteilt",
|
||||
@@ -310,7 +284,7 @@
|
||||
"Show boards in calendar/tasks" : "Board in Kalender/Aufgaben anzeigen",
|
||||
"Limit board creation to some groups" : "Erstellung von Boards auf einige Gruppen beschränken",
|
||||
"Users outside of those groups will not be able to create their own boards, but will still be able to work on boards that have been shared with them." : "Benutzer außerhalb dieser Gruppen können keine eigenen Boards erstellen, aber weiterhin an Boards arbeiten, die mit ihnen geteilt wurden.",
|
||||
"Board details" : "Boarddetails",
|
||||
"Board details" : "Board-Details",
|
||||
"Edit board" : "Board bearbeiten",
|
||||
"Clone board" : "Board klonen",
|
||||
"Unarchive board" : "Board dearchivieren",
|
||||
@@ -370,12 +344,12 @@
|
||||
"Share" : "Freigeben",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "Eine <strong>Kartenbeschreibung</strong> wurde innerhalb der Deck-App geändert",
|
||||
"Timeline" : "Zeitachse",
|
||||
"Add a new list" : "Eine neue Liste hinzufügen",
|
||||
"Assign to users" : "Benutzern zuweisen",
|
||||
"Due date" : "Fälligkeitsdatum",
|
||||
"Next week" : "Nächste Woche",
|
||||
"Next month" : "Nächster Monat",
|
||||
"Limit deck usage of groups" : "Nutzung auf Gruppen einschränken",
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Wenn du Deck einschränkst, können Benutzer, die nicht zu diesen Gruppen gehören, keine eigenen Boards erstellen. Die Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden.",
|
||||
"Assign yorself to the current card" : "Aktuelle Karte dir zuweisen"
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Wenn du Deck einschränkst, können Benutzer, die nicht zu diesen Gruppen gehören, keine eigenen Boards erstellen. Die Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden."
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -37,10 +37,10 @@ OC.L10N.register(
|
||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} archiviert",
|
||||
"You have unarchived card {card} in list {stack} on board {board}" : "Sie haben die Karte {card} in der Liste {stack} auf dem Board {board} dearchiviert",
|
||||
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} dearchiviert",
|
||||
"You have marked the card {card} as done in list {stack} on board {board}" : "Sie haben die Karte {card} in der Liste {stack} im Board {board} als erledigt markiert",
|
||||
"You have marked the card {card} as done in list {stack} on board {board}" : "Sie haben die Karte {card} in der Liste {stack} im Board {board} als erledigt markiert.",
|
||||
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} im Board {board} als erledigt markiert",
|
||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "Sie haben die Karte {card} in der Liste {stack} im Board {board} als unerledigt markiert",
|
||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} im Board {board} als unerledigt markiert",
|
||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "Sie haben die Karte {card} in der Liste {stack} im Board {board} als rückgängig gemacht markiert",
|
||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} im Board {board} als rückgängig gemacht markiert",
|
||||
"You have removed the due date of card {card}" : "Sie haben das Fälligkeitsdatum der Karte {card} entfernt",
|
||||
"{user} has removed the due date of card {card}" : "{user} hat das Fälligkeitsdatum der Karte {card} entfernt",
|
||||
"You have set the due date of card {card} to {after}" : "Sie haben das Fälligkeitsdatum der Karte {card} auf {after} gesetzt",
|
||||
@@ -277,32 +277,6 @@ OC.L10N.register(
|
||||
"List is empty" : "Liste ist leer",
|
||||
"Card deleted" : "Karte gelöscht",
|
||||
"seconds ago" : "Gerade eben",
|
||||
"Keyboard shortcuts" : "Tastaturkürzel",
|
||||
"Speed up using Deck with simple shortcuts." : "Beschleunigen Sie die Verwendung von Deck mit einfachen Tastaturkürzeln.",
|
||||
"Board actions" : "Board-Aktionen",
|
||||
"Keyboard shortcut" : "Tastaturkürzel",
|
||||
"Action" : "Aktion",
|
||||
"Shift" : "Umschalttaste",
|
||||
"Scroll" : "Scrollen",
|
||||
"Scroll sideways" : "Seitwärts scrollen",
|
||||
"Navigate between cards" : "Zwischen Karten navigieren",
|
||||
"Esc" : "Esc",
|
||||
"Close card details" : "Karten-Details schließen",
|
||||
"Ctrl" : "Strg",
|
||||
"Search" : "Suche",
|
||||
"Show card filters" : "Kartenfilter anzeigen",
|
||||
"Clear card filters" : "Kartenfilter löschen",
|
||||
"Show help dialog" : "Hilfedialog anzeigen",
|
||||
"Card actions" : "Kartenaktionen",
|
||||
"The following actions can be triggered on the currently highlighted card" : "Die folgenden Aktionen können für die aktuell markierten Karte ausgelöst werden",
|
||||
"Enter" : "Enter",
|
||||
"Space" : "Leerzeichen",
|
||||
"Open card details" : "Kartendetails öffnen",
|
||||
"Edit the card title" : "Kartentitel bearbeiten",
|
||||
"Assign yourself to the current card" : "Weisen Sie sich der aktuellen Karte zu",
|
||||
"Archive/unarchive the current card" : "Die aktuelle Karte archivieren/dearchivieren",
|
||||
"Mark card as completed/not completed" : "Karte als abgeschlossen/nicht abgeschlossen markieren",
|
||||
"Open card menu" : "Kartenmenü öffnen",
|
||||
"All boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
"Shared with you" : "Mit Ihnen geteilt",
|
||||
@@ -372,12 +346,12 @@ OC.L10N.register(
|
||||
"Share" : "Freigeben",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "Eine <strong>Kartenbeschreibung</strong> wurde innerhalb der Deck-App geändert",
|
||||
"Timeline" : "Zeitachse",
|
||||
"Add a new list" : "Eine neue Liste hinzufügen",
|
||||
"Assign to users" : "Benutzern zuweisen",
|
||||
"Due date" : "Fälligkeitsdatum",
|
||||
"Next week" : "Nächste Woche",
|
||||
"Next month" : "Nächsten Monat",
|
||||
"Limit deck usage of groups" : "Nutzung auf Gruppen einschränken",
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Wenn Sie Deck einschränken, können Benutzer, die nicht zu diesen Gruppen gehören, keine eigenen Boards erstellen. Die Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden.",
|
||||
"Assign yorself to the current card" : "Weisen Sie sich der aktuellen Karte zu"
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Wenn Sie Deck einschränken, können Benutzer, die nicht zu diesen Gruppen gehören, keine eigenen Boards erstellen. Die Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden."
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
@@ -35,10 +35,10 @@
|
||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} archiviert",
|
||||
"You have unarchived card {card} in list {stack} on board {board}" : "Sie haben die Karte {card} in der Liste {stack} auf dem Board {board} dearchiviert",
|
||||
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} auf dem Board {board} dearchiviert",
|
||||
"You have marked the card {card} as done in list {stack} on board {board}" : "Sie haben die Karte {card} in der Liste {stack} im Board {board} als erledigt markiert",
|
||||
"You have marked the card {card} as done in list {stack} on board {board}" : "Sie haben die Karte {card} in der Liste {stack} im Board {board} als erledigt markiert.",
|
||||
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} im Board {board} als erledigt markiert",
|
||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "Sie haben die Karte {card} in der Liste {stack} im Board {board} als unerledigt markiert",
|
||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} im Board {board} als unerledigt markiert",
|
||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "Sie haben die Karte {card} in der Liste {stack} im Board {board} als rückgängig gemacht markiert",
|
||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} hat die Karte {card} in der Liste {stack} im Board {board} als rückgängig gemacht markiert",
|
||||
"You have removed the due date of card {card}" : "Sie haben das Fälligkeitsdatum der Karte {card} entfernt",
|
||||
"{user} has removed the due date of card {card}" : "{user} hat das Fälligkeitsdatum der Karte {card} entfernt",
|
||||
"You have set the due date of card {card} to {after}" : "Sie haben das Fälligkeitsdatum der Karte {card} auf {after} gesetzt",
|
||||
@@ -275,32 +275,6 @@
|
||||
"List is empty" : "Liste ist leer",
|
||||
"Card deleted" : "Karte gelöscht",
|
||||
"seconds ago" : "Gerade eben",
|
||||
"Keyboard shortcuts" : "Tastaturkürzel",
|
||||
"Speed up using Deck with simple shortcuts." : "Beschleunigen Sie die Verwendung von Deck mit einfachen Tastaturkürzeln.",
|
||||
"Board actions" : "Board-Aktionen",
|
||||
"Keyboard shortcut" : "Tastaturkürzel",
|
||||
"Action" : "Aktion",
|
||||
"Shift" : "Umschalttaste",
|
||||
"Scroll" : "Scrollen",
|
||||
"Scroll sideways" : "Seitwärts scrollen",
|
||||
"Navigate between cards" : "Zwischen Karten navigieren",
|
||||
"Esc" : "Esc",
|
||||
"Close card details" : "Karten-Details schließen",
|
||||
"Ctrl" : "Strg",
|
||||
"Search" : "Suche",
|
||||
"Show card filters" : "Kartenfilter anzeigen",
|
||||
"Clear card filters" : "Kartenfilter löschen",
|
||||
"Show help dialog" : "Hilfedialog anzeigen",
|
||||
"Card actions" : "Kartenaktionen",
|
||||
"The following actions can be triggered on the currently highlighted card" : "Die folgenden Aktionen können für die aktuell markierten Karte ausgelöst werden",
|
||||
"Enter" : "Enter",
|
||||
"Space" : "Leerzeichen",
|
||||
"Open card details" : "Kartendetails öffnen",
|
||||
"Edit the card title" : "Kartentitel bearbeiten",
|
||||
"Assign yourself to the current card" : "Weisen Sie sich der aktuellen Karte zu",
|
||||
"Archive/unarchive the current card" : "Die aktuelle Karte archivieren/dearchivieren",
|
||||
"Mark card as completed/not completed" : "Karte als abgeschlossen/nicht abgeschlossen markieren",
|
||||
"Open card menu" : "Kartenmenü öffnen",
|
||||
"All boards" : "Alle Boards",
|
||||
"Archived boards" : "Archivierte Boards",
|
||||
"Shared with you" : "Mit Ihnen geteilt",
|
||||
@@ -370,12 +344,12 @@
|
||||
"Share" : "Freigeben",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "Eine <strong>Kartenbeschreibung</strong> wurde innerhalb der Deck-App geändert",
|
||||
"Timeline" : "Zeitachse",
|
||||
"Add a new list" : "Eine neue Liste hinzufügen",
|
||||
"Assign to users" : "Benutzern zuweisen",
|
||||
"Due date" : "Fälligkeitsdatum",
|
||||
"Next week" : "Nächste Woche",
|
||||
"Next month" : "Nächsten Monat",
|
||||
"Limit deck usage of groups" : "Nutzung auf Gruppen einschränken",
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Wenn Sie Deck einschränken, können Benutzer, die nicht zu diesen Gruppen gehören, keine eigenen Boards erstellen. Die Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden.",
|
||||
"Assign yorself to the current card" : "Weisen Sie sich der aktuellen Karte zu"
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Wenn Sie Deck einschränken, können Benutzer, die nicht zu diesen Gruppen gehören, keine eigenen Boards erstellen. Die Benutzer können weiterhin an Boards arbeiten, die für sie freigegeben wurden."
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -251,12 +251,6 @@ OC.L10N.register(
|
||||
"List is empty" : "Η λίστα είναι κενή",
|
||||
"Card deleted" : "Η καρτέλα διαγράφηκε",
|
||||
"seconds ago" : " δευτερόλεπτα πριν ",
|
||||
"Keyboard shortcuts" : "Συντομεύσεις πληκτρολογίου",
|
||||
"Keyboard shortcut" : "Συντόμευση πλητρολογίου",
|
||||
"Action" : "Ενέργεια",
|
||||
"Shift" : "Shift",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Αναζήτηση",
|
||||
"All boards" : "Όλοι οι πίνακες",
|
||||
"Archived boards" : "Αρχειοθέτηση πινάκων ",
|
||||
"Shared with you" : "Διαμοιρασμένα μαζί σας",
|
||||
@@ -317,6 +311,7 @@ OC.L10N.register(
|
||||
"Share" : "Μοιραστείτε",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "Η <strong>περιγραφή καρτέλας </strong>στην εφαρμογή Deck άλλαξε",
|
||||
"Timeline" : "Χρονολόγιο",
|
||||
"Add a new list" : "Προσθήκη νέας λίστας",
|
||||
"Assign to users" : "Ανάθεση σε χρήστες",
|
||||
"Due date" : "Ημερομηνία λήξης",
|
||||
"Next week" : "Επόμενη εβδομάδα",
|
||||
|
||||
@@ -249,12 +249,6 @@
|
||||
"List is empty" : "Η λίστα είναι κενή",
|
||||
"Card deleted" : "Η καρτέλα διαγράφηκε",
|
||||
"seconds ago" : " δευτερόλεπτα πριν ",
|
||||
"Keyboard shortcuts" : "Συντομεύσεις πληκτρολογίου",
|
||||
"Keyboard shortcut" : "Συντόμευση πλητρολογίου",
|
||||
"Action" : "Ενέργεια",
|
||||
"Shift" : "Shift",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Αναζήτηση",
|
||||
"All boards" : "Όλοι οι πίνακες",
|
||||
"Archived boards" : "Αρχειοθέτηση πινάκων ",
|
||||
"Shared with you" : "Διαμοιρασμένα μαζί σας",
|
||||
@@ -315,6 +309,7 @@
|
||||
"Share" : "Μοιραστείτε",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "Η <strong>περιγραφή καρτέλας </strong>στην εφαρμογή Deck άλλαξε",
|
||||
"Timeline" : "Χρονολόγιο",
|
||||
"Add a new list" : "Προσθήκη νέας λίστας",
|
||||
"Assign to users" : "Ανάθεση σε χρήστες",
|
||||
"Due date" : "Ημερομηνία λήξης",
|
||||
"Next week" : "Επόμενη εβδομάδα",
|
||||
|
||||
@@ -37,10 +37,6 @@ OC.L10N.register(
|
||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user} has archived card {card} in list {stack} on board {board}",
|
||||
"You have unarchived card {card} in list {stack} on board {board}" : "You have unarchived card {card} in list {stack} on board {board}",
|
||||
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} has unarchived card {card} in list {stack} on board {board}",
|
||||
"You have marked the card {card} as done in list {stack} on board {board}" : "You have marked the card {card} as done in list {stack} on board {board}",
|
||||
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} has marked card {card} as done in list {stack} on board {board}",
|
||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "You have marked the card {card} as undone in list {stack} on board {board}",
|
||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} has marked the card {card} as undone in list {stack} on board {board}",
|
||||
"You have removed the due date of card {card}" : "You have removed the due date of card {card}",
|
||||
"{user} has removed the due date of card {card}" : "{user} has removed the due date of card {card}",
|
||||
"You have set the due date of card {card} to {after}" : "You have set the due date of card {card} to {after}",
|
||||
@@ -249,7 +245,6 @@ OC.L10N.register(
|
||||
"Choose a date" : "Choose a date",
|
||||
"Remove due date" : "Remove due date",
|
||||
"Completed" : "Completed",
|
||||
"Due at:" : "Due at:",
|
||||
"Not completed" : "Not completed",
|
||||
"Unarchive card" : "Unarchive card",
|
||||
"Archive card" : "Archive card",
|
||||
@@ -259,7 +254,6 @@ OC.L10N.register(
|
||||
"Set due date for this weekend" : "Set due date for this weekend",
|
||||
"Set due date for next week" : "Set due date for next week",
|
||||
"Assign a tag to this card…" : "Assign a tag to this card…",
|
||||
"Create a new tag:" : "Create a new tag:",
|
||||
"(group)" : "(group)",
|
||||
"Next week – {timeLocale}" : "Next week – {timeLocale}",
|
||||
"Todo items" : "Todo items",
|
||||
@@ -268,7 +262,6 @@ OC.L10N.register(
|
||||
"Card details" : "Card details",
|
||||
"Assign to me" : "Assign to me",
|
||||
"Unassign myself" : "Unassign myself",
|
||||
"Mark as not done" : "Mark as not done",
|
||||
"Mark as done" : "Mark as done",
|
||||
"Move card" : "Move card",
|
||||
"Delete card" : "Delete card",
|
||||
@@ -277,32 +270,6 @@ OC.L10N.register(
|
||||
"List is empty" : "List is empty",
|
||||
"Card deleted" : "Card deleted",
|
||||
"seconds ago" : "seconds ago",
|
||||
"Keyboard shortcuts" : "Keyboard shortcuts",
|
||||
"Speed up using Deck with simple shortcuts." : "Speed up using Deck with simple shortcuts.",
|
||||
"Board actions" : "Board actions",
|
||||
"Keyboard shortcut" : "Keyboard shortcut",
|
||||
"Action" : "Action",
|
||||
"Shift" : "Shift",
|
||||
"Scroll" : "Scroll",
|
||||
"Scroll sideways" : "Scroll sideways",
|
||||
"Navigate between cards" : "Navigate between cards",
|
||||
"Esc" : "Esc",
|
||||
"Close card details" : "Close card details",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Search",
|
||||
"Show card filters" : "Show card filters",
|
||||
"Clear card filters" : "Clear card filters",
|
||||
"Show help dialog" : "Show help dialog",
|
||||
"Card actions" : "Card actions",
|
||||
"The following actions can be triggered on the currently highlighted card" : "The following actions can be triggered on the currently highlighted card",
|
||||
"Enter" : "Enter",
|
||||
"Space" : "Space",
|
||||
"Open card details" : "Open card details",
|
||||
"Edit the card title" : "Edit the card title",
|
||||
"Assign yourself to the current card" : "Assign yourself to the current card",
|
||||
"Archive/unarchive the current card" : "Archive/unarchive the current card",
|
||||
"Mark card as completed/not completed" : "Mark card as completed/not completed",
|
||||
"Open card menu" : "Open card menu",
|
||||
"All boards" : "All boards",
|
||||
"Archived boards" : "Archived boards",
|
||||
"Shared with you" : "Shared with you",
|
||||
@@ -372,12 +339,12 @@ OC.L10N.register(
|
||||
"Share" : "Share",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "A <strong>card description</strong> inside the Deck app has been changed",
|
||||
"Timeline" : "Timeline",
|
||||
"Add a new list" : "Add a new list",
|
||||
"Assign to users" : "Assign to users",
|
||||
"Due date" : "Due date",
|
||||
"Next week" : "Next week",
|
||||
"Next month" : "Next month",
|
||||
"Limit deck usage of groups" : "Limit deck usage of groups",
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them.",
|
||||
"Assign yorself to the current card" : "Assign yorself to the current card"
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them."
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
@@ -35,10 +35,6 @@
|
||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user} has archived card {card} in list {stack} on board {board}",
|
||||
"You have unarchived card {card} in list {stack} on board {board}" : "You have unarchived card {card} in list {stack} on board {board}",
|
||||
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} has unarchived card {card} in list {stack} on board {board}",
|
||||
"You have marked the card {card} as done in list {stack} on board {board}" : "You have marked the card {card} as done in list {stack} on board {board}",
|
||||
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} has marked card {card} as done in list {stack} on board {board}",
|
||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "You have marked the card {card} as undone in list {stack} on board {board}",
|
||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} has marked the card {card} as undone in list {stack} on board {board}",
|
||||
"You have removed the due date of card {card}" : "You have removed the due date of card {card}",
|
||||
"{user} has removed the due date of card {card}" : "{user} has removed the due date of card {card}",
|
||||
"You have set the due date of card {card} to {after}" : "You have set the due date of card {card} to {after}",
|
||||
@@ -247,7 +243,6 @@
|
||||
"Choose a date" : "Choose a date",
|
||||
"Remove due date" : "Remove due date",
|
||||
"Completed" : "Completed",
|
||||
"Due at:" : "Due at:",
|
||||
"Not completed" : "Not completed",
|
||||
"Unarchive card" : "Unarchive card",
|
||||
"Archive card" : "Archive card",
|
||||
@@ -257,7 +252,6 @@
|
||||
"Set due date for this weekend" : "Set due date for this weekend",
|
||||
"Set due date for next week" : "Set due date for next week",
|
||||
"Assign a tag to this card…" : "Assign a tag to this card…",
|
||||
"Create a new tag:" : "Create a new tag:",
|
||||
"(group)" : "(group)",
|
||||
"Next week – {timeLocale}" : "Next week – {timeLocale}",
|
||||
"Todo items" : "Todo items",
|
||||
@@ -266,7 +260,6 @@
|
||||
"Card details" : "Card details",
|
||||
"Assign to me" : "Assign to me",
|
||||
"Unassign myself" : "Unassign myself",
|
||||
"Mark as not done" : "Mark as not done",
|
||||
"Mark as done" : "Mark as done",
|
||||
"Move card" : "Move card",
|
||||
"Delete card" : "Delete card",
|
||||
@@ -275,32 +268,6 @@
|
||||
"List is empty" : "List is empty",
|
||||
"Card deleted" : "Card deleted",
|
||||
"seconds ago" : "seconds ago",
|
||||
"Keyboard shortcuts" : "Keyboard shortcuts",
|
||||
"Speed up using Deck with simple shortcuts." : "Speed up using Deck with simple shortcuts.",
|
||||
"Board actions" : "Board actions",
|
||||
"Keyboard shortcut" : "Keyboard shortcut",
|
||||
"Action" : "Action",
|
||||
"Shift" : "Shift",
|
||||
"Scroll" : "Scroll",
|
||||
"Scroll sideways" : "Scroll sideways",
|
||||
"Navigate between cards" : "Navigate between cards",
|
||||
"Esc" : "Esc",
|
||||
"Close card details" : "Close card details",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Search",
|
||||
"Show card filters" : "Show card filters",
|
||||
"Clear card filters" : "Clear card filters",
|
||||
"Show help dialog" : "Show help dialog",
|
||||
"Card actions" : "Card actions",
|
||||
"The following actions can be triggered on the currently highlighted card" : "The following actions can be triggered on the currently highlighted card",
|
||||
"Enter" : "Enter",
|
||||
"Space" : "Space",
|
||||
"Open card details" : "Open card details",
|
||||
"Edit the card title" : "Edit the card title",
|
||||
"Assign yourself to the current card" : "Assign yourself to the current card",
|
||||
"Archive/unarchive the current card" : "Archive/unarchive the current card",
|
||||
"Mark card as completed/not completed" : "Mark card as completed/not completed",
|
||||
"Open card menu" : "Open card menu",
|
||||
"All boards" : "All boards",
|
||||
"Archived boards" : "Archived boards",
|
||||
"Shared with you" : "Shared with you",
|
||||
@@ -370,12 +337,12 @@
|
||||
"Share" : "Share",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "A <strong>card description</strong> inside the Deck app has been changed",
|
||||
"Timeline" : "Timeline",
|
||||
"Add a new list" : "Add a new list",
|
||||
"Assign to users" : "Assign to users",
|
||||
"Due date" : "Due date",
|
||||
"Next week" : "Next week",
|
||||
"Next month" : "Next month",
|
||||
"Limit deck usage of groups" : "Limit deck usage of groups",
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them.",
|
||||
"Assign yorself to the current card" : "Assign yorself to the current card"
|
||||
"Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them." : "Limiting Deck will block users not part of those groups from creating their own boards. Users will still be able to work on boards that have been shared with them."
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -113,8 +113,6 @@ OC.L10N.register(
|
||||
"(group)" : "(grupo)",
|
||||
"Delete card" : "Forigi karton",
|
||||
"seconds ago" : "antaŭ kelkaj sekundoj",
|
||||
"Keyboard shortcuts" : "Fulmoklavoj",
|
||||
"Search" : "Serĉi",
|
||||
"Archived boards" : "Arĥivigitaj tabuloj",
|
||||
"Shared with you" : "Kunhavata kun vi",
|
||||
"Edit board" : "Modifi tabulon",
|
||||
|
||||
@@ -111,8 +111,6 @@
|
||||
"(group)" : "(grupo)",
|
||||
"Delete card" : "Forigi karton",
|
||||
"seconds ago" : "antaŭ kelkaj sekundoj",
|
||||
"Keyboard shortcuts" : "Fulmoklavoj",
|
||||
"Search" : "Serĉi",
|
||||
"Archived boards" : "Arĥivigitaj tabuloj",
|
||||
"Shared with you" : "Kunhavata kun vi",
|
||||
"Edit board" : "Modifi tabulon",
|
||||
|
||||
30
l10n/es.js
30
l10n/es.js
@@ -37,10 +37,6 @@ OC.L10N.register(
|
||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user} ha archivado la tarjeta {card} en la lista {stack} del tablero {board}",
|
||||
"You have unarchived card {card} in list {stack} on board {board}" : "Has desarchivado la tarjeta {card} en la lista {stack} del tablero {board}",
|
||||
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} ha desarchivado la tarjeta {card} en la lista {stack} del tablero {board}",
|
||||
"You have marked the card {card} as done in list {stack} on board {board}" : "Has marcado la tarjeta {card} como completada en la lista {stack} del tablero {board}",
|
||||
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} ha marcado la tarjeta {card} como completada en la lista {stack} del tablero {board}",
|
||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "Has marcado la tarjeta {card} como no completada en la lista {stack} del tablero {board}",
|
||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} ha marcado la tarjeta {card} como no completada en la lista {stack} del tablero {board}",
|
||||
"You have removed the due date of card {card}" : "Has eliminado la fecha de vencimiento de {card}",
|
||||
"{user} has removed the due date of card {card}" : "{user} ha eliminado la fecha de vencimiento de {card}",
|
||||
"You have set the due date of card {card} to {after}" : "Has establecido la fecha de vencimiento de {card} como {after}",
|
||||
@@ -72,8 +68,6 @@ OC.L10N.register(
|
||||
"A <strong>board, list or card</strong> was changed" : "Un <strong>tablero, lista o tarjeta</strong> fue cambiada",
|
||||
"A <strong>comment</strong> was created on a card" : "Un <strong>comentario</strong> ha sido creado en una tarjeta",
|
||||
"A <strong>card description</strong> has been changed" : "Una <strong>descripción de tarjeta</strong> ha sido cambiada",
|
||||
"Cards due today" : "Tarjetas que vencen hoy",
|
||||
"Cards due tomorrow" : "Tarjetas que vencen mañana",
|
||||
"Upcoming cards" : "Próximas tarjetas",
|
||||
"Load more" : "Cargar más",
|
||||
"Personal" : "Personal",
|
||||
@@ -152,13 +146,9 @@ OC.L10N.register(
|
||||
"Next 30 days" : "Siguientes 30 días",
|
||||
"No due date" : "Sin fecha de vencimiento",
|
||||
"Clear filter" : "Borrar filtro",
|
||||
"View Modes" : "Modos de visualización",
|
||||
"Toggle View Modes" : "Alternar modos de visualización",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Toggle compact mode" : "Mostrar/ocultar modo compacto",
|
||||
"Hide card cover images" : "Ocultar la imagen principal de las tarjetas",
|
||||
"Show card cover images" : "Mostrar la imagen principal de las tarjetas",
|
||||
"Open details" : "Abrir detalles",
|
||||
"Details" : "Detalles",
|
||||
"Currently present people" : "Personas presentes actualmente",
|
||||
@@ -245,21 +235,13 @@ OC.L10N.register(
|
||||
"Choose attachment" : "Escoger adjunto",
|
||||
"Assign a due date to this card…" : "Asignar una fecha de caducidad a esta tarjeta…",
|
||||
"Set a due date" : "Fijar una fecha límite",
|
||||
"Add due date" : "Añadir fecha de vencimiento",
|
||||
"Choose a date" : "Elige una fecha",
|
||||
"Remove due date" : "Eliminar fecha límite",
|
||||
"Completed" : "Completado",
|
||||
"Due at:" : "Vence el:",
|
||||
"Not completed" : "No completado",
|
||||
"Unarchive card" : "Desarchivar tarjeta",
|
||||
"Archive card" : "Archivar tarjeta",
|
||||
"Select Date" : "Seleccione la fecha",
|
||||
"Set due date for later today" : "Establecer hoy como fecha de vencimiento, más tarde",
|
||||
"Set due date for tomorrow" : "Establecer mañana como fecha de vencimiento",
|
||||
"Set due date for this weekend" : "Establecer este fin de semana como fecha de vencimiento",
|
||||
"Set due date for next week" : "Establecer la próxima semana como fecha de vencimiento",
|
||||
"Assign a tag to this card…" : "Asignar una etiqueta a esta tarjeta...",
|
||||
"Create a new tag:" : "Crear una nueva etiqueta:",
|
||||
"(group)" : "(grupo)",
|
||||
"Next week – {timeLocale}" : "Próxima semana – {timeLocale}",
|
||||
"Todo items" : "Ítems pendientes",
|
||||
@@ -268,7 +250,6 @@ OC.L10N.register(
|
||||
"Card details" : "Detalles de la tarjeta",
|
||||
"Assign to me" : "Asignarme a mí",
|
||||
"Unassign myself" : "Desasignarme a mí mismo",
|
||||
"Mark as not done" : "Marcar como no completado",
|
||||
"Mark as done" : "Marcar como hecho",
|
||||
"Move card" : "Mover tarjeta",
|
||||
"Delete card" : "Eliminar tarjeta",
|
||||
@@ -277,14 +258,6 @@ OC.L10N.register(
|
||||
"List is empty" : "La lista está vacía",
|
||||
"Card deleted" : "Tarjeta borrada",
|
||||
"seconds ago" : "hace unos segundos",
|
||||
"Keyboard shortcuts" : "Atajos de teclado",
|
||||
"Keyboard shortcut" : "Atajo de teclado",
|
||||
"Action" : "Acción",
|
||||
"Shift" : "Mayús",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Buscar",
|
||||
"Enter" : "Enter",
|
||||
"Space" : "Espacio",
|
||||
"All boards" : "Todos los tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Shared with you" : "Compartido contigo",
|
||||
@@ -334,8 +307,6 @@ OC.L10N.register(
|
||||
"Open card" : "Abrir tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"No upcoming cards" : "No hay tarjetas próximas",
|
||||
"upcoming cards today" : "próximas tarjetas hoy",
|
||||
"upcoming cards tomorrow" : "próximas tarjetas mañana",
|
||||
"upcoming cards" : "próximas tarjetas",
|
||||
"New card" : "Nueva tarjeta",
|
||||
"Due on {date}" : "Vence en {date}",
|
||||
@@ -354,6 +325,7 @@ OC.L10N.register(
|
||||
"Share" : "Compartir",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "Una <strong>descripción de tarjeta</strong> dentro de la app Deck ha cambiado",
|
||||
"Timeline" : "Línea de tiempo",
|
||||
"Add a new list" : "Añadir una lista nueva",
|
||||
"Assign to users" : "Asignar a usuarios",
|
||||
"Due date" : "Fecha límite",
|
||||
"Next week" : "Semana siguiente",
|
||||
|
||||
30
l10n/es.json
30
l10n/es.json
@@ -35,10 +35,6 @@
|
||||
"{user} has archived card {card} in list {stack} on board {board}" : "{user} ha archivado la tarjeta {card} en la lista {stack} del tablero {board}",
|
||||
"You have unarchived card {card} in list {stack} on board {board}" : "Has desarchivado la tarjeta {card} en la lista {stack} del tablero {board}",
|
||||
"{user} has unarchived card {card} in list {stack} on board {board}" : "{user} ha desarchivado la tarjeta {card} en la lista {stack} del tablero {board}",
|
||||
"You have marked the card {card} as done in list {stack} on board {board}" : "Has marcado la tarjeta {card} como completada en la lista {stack} del tablero {board}",
|
||||
"{user} has marked card {card} as done in list {stack} on board {board}" : "{user} ha marcado la tarjeta {card} como completada en la lista {stack} del tablero {board}",
|
||||
"You have marked the card {card} as undone in list {stack} on board {board}" : "Has marcado la tarjeta {card} como no completada en la lista {stack} del tablero {board}",
|
||||
"{user} has marked the card {card} as undone in list {stack} on board {board}" : "{user} ha marcado la tarjeta {card} como no completada en la lista {stack} del tablero {board}",
|
||||
"You have removed the due date of card {card}" : "Has eliminado la fecha de vencimiento de {card}",
|
||||
"{user} has removed the due date of card {card}" : "{user} ha eliminado la fecha de vencimiento de {card}",
|
||||
"You have set the due date of card {card} to {after}" : "Has establecido la fecha de vencimiento de {card} como {after}",
|
||||
@@ -70,8 +66,6 @@
|
||||
"A <strong>board, list or card</strong> was changed" : "Un <strong>tablero, lista o tarjeta</strong> fue cambiada",
|
||||
"A <strong>comment</strong> was created on a card" : "Un <strong>comentario</strong> ha sido creado en una tarjeta",
|
||||
"A <strong>card description</strong> has been changed" : "Una <strong>descripción de tarjeta</strong> ha sido cambiada",
|
||||
"Cards due today" : "Tarjetas que vencen hoy",
|
||||
"Cards due tomorrow" : "Tarjetas que vencen mañana",
|
||||
"Upcoming cards" : "Próximas tarjetas",
|
||||
"Load more" : "Cargar más",
|
||||
"Personal" : "Personal",
|
||||
@@ -150,13 +144,9 @@
|
||||
"Next 30 days" : "Siguientes 30 días",
|
||||
"No due date" : "Sin fecha de vencimiento",
|
||||
"Clear filter" : "Borrar filtro",
|
||||
"View Modes" : "Modos de visualización",
|
||||
"Toggle View Modes" : "Alternar modos de visualización",
|
||||
"Hide archived cards" : "Ocultar tarjetas archivadas",
|
||||
"Show archived cards" : "Mostrar tarjetas archivadas",
|
||||
"Toggle compact mode" : "Mostrar/ocultar modo compacto",
|
||||
"Hide card cover images" : "Ocultar la imagen principal de las tarjetas",
|
||||
"Show card cover images" : "Mostrar la imagen principal de las tarjetas",
|
||||
"Open details" : "Abrir detalles",
|
||||
"Details" : "Detalles",
|
||||
"Currently present people" : "Personas presentes actualmente",
|
||||
@@ -243,21 +233,13 @@
|
||||
"Choose attachment" : "Escoger adjunto",
|
||||
"Assign a due date to this card…" : "Asignar una fecha de caducidad a esta tarjeta…",
|
||||
"Set a due date" : "Fijar una fecha límite",
|
||||
"Add due date" : "Añadir fecha de vencimiento",
|
||||
"Choose a date" : "Elige una fecha",
|
||||
"Remove due date" : "Eliminar fecha límite",
|
||||
"Completed" : "Completado",
|
||||
"Due at:" : "Vence el:",
|
||||
"Not completed" : "No completado",
|
||||
"Unarchive card" : "Desarchivar tarjeta",
|
||||
"Archive card" : "Archivar tarjeta",
|
||||
"Select Date" : "Seleccione la fecha",
|
||||
"Set due date for later today" : "Establecer hoy como fecha de vencimiento, más tarde",
|
||||
"Set due date for tomorrow" : "Establecer mañana como fecha de vencimiento",
|
||||
"Set due date for this weekend" : "Establecer este fin de semana como fecha de vencimiento",
|
||||
"Set due date for next week" : "Establecer la próxima semana como fecha de vencimiento",
|
||||
"Assign a tag to this card…" : "Asignar una etiqueta a esta tarjeta...",
|
||||
"Create a new tag:" : "Crear una nueva etiqueta:",
|
||||
"(group)" : "(grupo)",
|
||||
"Next week – {timeLocale}" : "Próxima semana – {timeLocale}",
|
||||
"Todo items" : "Ítems pendientes",
|
||||
@@ -266,7 +248,6 @@
|
||||
"Card details" : "Detalles de la tarjeta",
|
||||
"Assign to me" : "Asignarme a mí",
|
||||
"Unassign myself" : "Desasignarme a mí mismo",
|
||||
"Mark as not done" : "Marcar como no completado",
|
||||
"Mark as done" : "Marcar como hecho",
|
||||
"Move card" : "Mover tarjeta",
|
||||
"Delete card" : "Eliminar tarjeta",
|
||||
@@ -275,14 +256,6 @@
|
||||
"List is empty" : "La lista está vacía",
|
||||
"Card deleted" : "Tarjeta borrada",
|
||||
"seconds ago" : "hace unos segundos",
|
||||
"Keyboard shortcuts" : "Atajos de teclado",
|
||||
"Keyboard shortcut" : "Atajo de teclado",
|
||||
"Action" : "Acción",
|
||||
"Shift" : "Mayús",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Buscar",
|
||||
"Enter" : "Enter",
|
||||
"Space" : "Espacio",
|
||||
"All boards" : "Todos los tableros",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Shared with you" : "Compartido contigo",
|
||||
@@ -332,8 +305,6 @@
|
||||
"Open card" : "Abrir tarjeta",
|
||||
"Close" : "Cerrar",
|
||||
"No upcoming cards" : "No hay tarjetas próximas",
|
||||
"upcoming cards today" : "próximas tarjetas hoy",
|
||||
"upcoming cards tomorrow" : "próximas tarjetas mañana",
|
||||
"upcoming cards" : "próximas tarjetas",
|
||||
"New card" : "Nueva tarjeta",
|
||||
"Due on {date}" : "Vence en {date}",
|
||||
@@ -352,6 +323,7 @@
|
||||
"Share" : "Compartir",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "Una <strong>descripción de tarjeta</strong> dentro de la app Deck ha cambiado",
|
||||
"Timeline" : "Línea de tiempo",
|
||||
"Add a new list" : "Añadir una lista nueva",
|
||||
"Assign to users" : "Asignar a usuarios",
|
||||
"Due date" : "Fecha límite",
|
||||
"Next week" : "Semana siguiente",
|
||||
|
||||
@@ -48,10 +48,6 @@ OC.L10N.register(
|
||||
"Completed" : "Completado",
|
||||
"(group)" : "(grupo)",
|
||||
"seconds ago" : "hace segundos",
|
||||
"Keyboard shortcuts" : "Atajos del teclado",
|
||||
"Keyboard shortcut" : "Atajo del teclado",
|
||||
"Action" : "Acción",
|
||||
"Search" : "Buscar",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Shared with you" : "Compartido con usted",
|
||||
"Board details" : "Detalles del tablero",
|
||||
|
||||
@@ -46,10 +46,6 @@
|
||||
"Completed" : "Completado",
|
||||
"(group)" : "(grupo)",
|
||||
"seconds ago" : "hace segundos",
|
||||
"Keyboard shortcuts" : "Atajos del teclado",
|
||||
"Keyboard shortcut" : "Atajo del teclado",
|
||||
"Action" : "Acción",
|
||||
"Search" : "Buscar",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Shared with you" : "Compartido con usted",
|
||||
"Board details" : "Detalles del tablero",
|
||||
|
||||
@@ -82,10 +82,6 @@ OC.L10N.register(
|
||||
"Card details" : "Detalles de la tarjeta",
|
||||
"Select a list" : "Seleccionar una lista",
|
||||
"seconds ago" : "segundos",
|
||||
"Keyboard shortcuts" : "Atajos de teclado",
|
||||
"Keyboard shortcut" : "Atajo del teclado",
|
||||
"Action" : "Acción",
|
||||
"Search" : "Buscar",
|
||||
"All boards" : "Todos los Tableros",
|
||||
"Shared with you" : "Compartido con usted",
|
||||
"Deck settings" : "Configuración del Tablero",
|
||||
|
||||
@@ -80,10 +80,6 @@
|
||||
"Card details" : "Detalles de la tarjeta",
|
||||
"Select a list" : "Seleccionar una lista",
|
||||
"seconds ago" : "segundos",
|
||||
"Keyboard shortcuts" : "Atajos de teclado",
|
||||
"Keyboard shortcut" : "Atajo del teclado",
|
||||
"Action" : "Acción",
|
||||
"Search" : "Buscar",
|
||||
"All boards" : "Todos los Tableros",
|
||||
"Shared with you" : "Compartido con usted",
|
||||
"Deck settings" : "Configuración del Tablero",
|
||||
|
||||
@@ -51,10 +51,6 @@ OC.L10N.register(
|
||||
"Completed" : "Completado",
|
||||
"(group)" : "(grupo)",
|
||||
"seconds ago" : "hace segundos",
|
||||
"Keyboard shortcuts" : "Atajos del teclado",
|
||||
"Keyboard shortcut" : "Atajo del teclado",
|
||||
"Action" : "Acción",
|
||||
"Search" : "Buscar",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Shared with you" : "Compartido con usted",
|
||||
"Board details" : "Detalles del tablero",
|
||||
|
||||
@@ -49,10 +49,6 @@
|
||||
"Completed" : "Completado",
|
||||
"(group)" : "(grupo)",
|
||||
"seconds ago" : "hace segundos",
|
||||
"Keyboard shortcuts" : "Atajos del teclado",
|
||||
"Keyboard shortcut" : "Atajo del teclado",
|
||||
"Action" : "Acción",
|
||||
"Search" : "Buscar",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Shared with you" : "Compartido con usted",
|
||||
"Board details" : "Detalles del tablero",
|
||||
|
||||
@@ -52,10 +52,6 @@ OC.L10N.register(
|
||||
"Completed" : "Completado",
|
||||
"(group)" : "(grupo)",
|
||||
"seconds ago" : "hace segundos",
|
||||
"Keyboard shortcuts" : "Atajos del teclado",
|
||||
"Keyboard shortcut" : "Atajo del teclado",
|
||||
"Action" : "Acción",
|
||||
"Search" : "Buscar",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Shared with you" : "Compartido con usted",
|
||||
"Board details" : "Detalles del tablero",
|
||||
|
||||
@@ -50,10 +50,6 @@
|
||||
"Completed" : "Completado",
|
||||
"(group)" : "(grupo)",
|
||||
"seconds ago" : "hace segundos",
|
||||
"Keyboard shortcuts" : "Atajos del teclado",
|
||||
"Keyboard shortcut" : "Atajo del teclado",
|
||||
"Action" : "Acción",
|
||||
"Search" : "Buscar",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Shared with you" : "Compartido con usted",
|
||||
"Board details" : "Detalles del tablero",
|
||||
|
||||
@@ -51,10 +51,6 @@ OC.L10N.register(
|
||||
"Completed" : "Completado",
|
||||
"(group)" : "(grupo)",
|
||||
"seconds ago" : "hace segundos",
|
||||
"Keyboard shortcuts" : "Atajos del teclado",
|
||||
"Keyboard shortcut" : "Atajo del teclado",
|
||||
"Action" : "Acción",
|
||||
"Search" : "Buscar",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Shared with you" : "Compartido con usted",
|
||||
"Board details" : "Detalles del tablero",
|
||||
|
||||
@@ -49,10 +49,6 @@
|
||||
"Completed" : "Completado",
|
||||
"(group)" : "(grupo)",
|
||||
"seconds ago" : "hace segundos",
|
||||
"Keyboard shortcuts" : "Atajos del teclado",
|
||||
"Keyboard shortcut" : "Atajo del teclado",
|
||||
"Action" : "Acción",
|
||||
"Search" : "Buscar",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Shared with you" : "Compartido con usted",
|
||||
"Board details" : "Detalles del tablero",
|
||||
|
||||
@@ -51,10 +51,6 @@ OC.L10N.register(
|
||||
"Completed" : "Completado",
|
||||
"(group)" : "(grupo)",
|
||||
"seconds ago" : "hace segundos",
|
||||
"Keyboard shortcuts" : "Atajos del teclado",
|
||||
"Keyboard shortcut" : "Atajo del teclado",
|
||||
"Action" : "Acción",
|
||||
"Search" : "Buscar",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Shared with you" : "Compartido con usted",
|
||||
"Board details" : "Detalles del tablero",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user