Compare commits
504 Commits
chore/noid
...
backport/6
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3b4548e090 | ||
|
|
0f3c0989a8 | ||
|
|
f198571747 | ||
|
|
49225a7941 | ||
|
|
e919597d15 | ||
|
|
413d32f821 | ||
|
|
7593c300ea | ||
|
|
fe666b2cf1 | ||
|
|
9280ed3af8 | ||
|
|
d95e6f0867 | ||
|
|
3a33dfa1bc | ||
|
|
20059ef74f | ||
|
|
2f48a07f62 | ||
|
|
22aad75e88 | ||
|
|
01b607188d | ||
|
|
83bf9743c5 | ||
|
|
6ffbe152a4 | ||
|
|
ac365ea595 | ||
|
|
6700ef9465 | ||
|
|
b9deb3cb82 | ||
|
|
0aefcee205 | ||
|
|
2e74b284ef | ||
|
|
171ca95c51 | ||
|
|
20fffa08bd | ||
|
|
e14b841e3f | ||
|
|
8302d62d67 | ||
|
|
67d41d0071 | ||
|
|
fe11355b23 | ||
|
|
c712fa5bab | ||
|
|
549232c0a4 | ||
|
|
dd1aaa713b | ||
|
|
577bbf2c04 | ||
|
|
878142a01e | ||
|
|
7d34926759 | ||
|
|
b14aa93f33 | ||
|
|
1f3a10d8cb | ||
|
|
f64cb62021 | ||
|
|
5545a8ccc2 | ||
|
|
b6b9472651 | ||
|
|
628d467458 | ||
|
|
8fe7f3814c | ||
|
|
5eb3e65c54 | ||
|
|
444c5d13ba | ||
|
|
e2c2824d47 | ||
|
|
4357e16c9e | ||
|
|
ff9b2a59ad | ||
|
|
a4cfcf6fa0 | ||
|
|
c868b734f8 | ||
|
|
ab582e9f81 | ||
|
|
ef16d4a0e3 | ||
|
|
5b631c9208 | ||
|
|
672616d14a | ||
|
|
caa5464f88 | ||
|
|
78e96962c2 | ||
|
|
a07b0e1d66 | ||
|
|
c7b0b4c4a8 | ||
|
|
1e12559cb2 | ||
|
|
5a3fe55d1b | ||
|
|
95c274c59b | ||
|
|
dda1702afb | ||
|
|
632871ad4d | ||
|
|
6c1f4744cc | ||
|
|
df2beaf5a5 | ||
|
|
a91e0eb1ac | ||
|
|
25875f1c05 | ||
|
|
116e124b2d | ||
|
|
497d06c700 | ||
|
|
cea66746d7 | ||
|
|
c807fcf635 | ||
|
|
73b6053a5e | ||
|
|
2ab4766085 | ||
|
|
9d0f7d6f95 | ||
|
|
a833f4190a | ||
|
|
fa9f220834 | ||
|
|
a07cb8b9db | ||
|
|
833f1ed0df | ||
|
|
8ceb48baef | ||
|
|
33f8e33a9e | ||
|
|
da7af01577 | ||
|
|
6ac95eda6f | ||
|
|
57c8e9b51b | ||
|
|
a1bc2a34b1 | ||
|
|
3a243b4869 | ||
|
|
090e67f473 | ||
|
|
55049ce411 | ||
|
|
2444adf5a1 | ||
|
|
3f71b3e190 | ||
|
|
869ff5bb84 | ||
|
|
3741d53ebf | ||
|
|
6d37fd72d7 | ||
|
|
5447fe69cd | ||
|
|
219a316cb0 | ||
|
|
53bc3b75ef | ||
|
|
4313351ee5 | ||
|
|
70953909f8 | ||
|
|
10b7cd649d | ||
|
|
3aa3d57c3b | ||
|
|
004c55a661 | ||
|
|
4537ca72da | ||
|
|
7399cdc7c8 | ||
|
|
188b42e46f | ||
|
|
c5e4274503 | ||
|
|
62d4b387bb | ||
|
|
e97672a321 | ||
|
|
9c420cdaec | ||
|
|
a590f1407f | ||
|
|
7331d0a77a | ||
|
|
d4189cfb95 | ||
|
|
69fd17df43 | ||
|
|
0204d38b8f | ||
|
|
7081e617fa | ||
|
|
fd87c34a00 | ||
|
|
d6030a3f09 | ||
|
|
7494e35ffb | ||
|
|
9532a5f935 | ||
|
|
5953b8a829 | ||
|
|
2c67766914 | ||
|
|
a0d9c519ee | ||
|
|
f0594aac2e | ||
|
|
71a3c114db | ||
|
|
829189f97d | ||
|
|
2a7e14941e | ||
|
|
2f08b27798 | ||
|
|
a9408f4aa7 | ||
|
|
8e04fb9c09 | ||
|
|
8ef5f7c12a | ||
|
|
f707440080 | ||
|
|
d7ec9d7d0c | ||
|
|
e978a1b518 | ||
|
|
25ab49e0c0 | ||
|
|
56c5b5b7ef | ||
|
|
a82deb6210 | ||
|
|
e66db256cf | ||
|
|
b360d50129 | ||
|
|
8c4b5cc7e5 | ||
|
|
27b135753b | ||
|
|
c77058222a | ||
|
|
78f64f7c04 | ||
|
|
6cd5b1a0aa | ||
|
|
ea009fa1ee | ||
|
|
5d4a4d3520 | ||
|
|
40f98a5883 | ||
|
|
b6fb131cc9 | ||
|
|
cf88330910 | ||
|
|
e47c66a669 | ||
|
|
e7387acd24 | ||
|
|
4d18c1d361 | ||
|
|
cf36de3f10 | ||
|
|
911e7bbeb7 | ||
|
|
47204d57a8 | ||
|
|
cd40a1617b | ||
|
|
3cbf284e4f | ||
|
|
e0d8cbf1ac | ||
|
|
8d91224998 | ||
|
|
0413a56bcd | ||
|
|
6910158bb4 | ||
|
|
48ec850f46 | ||
|
|
e761133022 | ||
|
|
5b051acdae | ||
|
|
7bf07ee0ab | ||
|
|
0dd16e09a9 | ||
|
|
4f3590c067 | ||
|
|
acd6d0d956 | ||
|
|
e3a6adb430 | ||
|
|
6600f133a2 | ||
|
|
3cf976650d | ||
|
|
64fc71aa6d | ||
|
|
cebe7e7409 | ||
|
|
635c68da80 | ||
|
|
595c099b46 | ||
|
|
93411a10e7 | ||
|
|
c77477ab97 | ||
|
|
834e068844 | ||
|
|
f5e36b97d9 | ||
|
|
557e229f79 | ||
|
|
592e4db5bf | ||
|
|
77ab2fe709 | ||
|
|
81c06a8e76 | ||
|
|
f262911dad | ||
|
|
847d21b962 | ||
|
|
752c973082 | ||
|
|
3613316bf4 | ||
|
|
e77b1928b4 | ||
|
|
82c7d13049 | ||
|
|
9a629167d8 | ||
|
|
5714dc17f2 | ||
|
|
d6721cd3ec | ||
|
|
94af83966c | ||
|
|
042b84ff5c | ||
|
|
4d5c09334d | ||
|
|
3a27e94afa | ||
|
|
9243a43082 | ||
|
|
f56bf48446 | ||
|
|
4d5321bfc4 | ||
|
|
36b7f3b491 | ||
|
|
7346142ef2 | ||
|
|
b54e52ce7e | ||
|
|
0d18b82c04 | ||
|
|
ba4f8d13bc | ||
|
|
2a27789854 | ||
|
|
15d07a23e7 | ||
|
|
75ed083c93 | ||
|
|
517641eed2 | ||
|
|
90afe70022 | ||
|
|
c2c0324f58 | ||
|
|
9305a836f9 | ||
|
|
96a0176194 | ||
|
|
fbbbd372c2 | ||
|
|
26fabf2b37 | ||
|
|
240e230c5d | ||
|
|
0f804bb113 | ||
|
|
33faee97eb | ||
|
|
fa842d10df | ||
|
|
587e0f439a | ||
|
|
74c517690d | ||
|
|
6663a522f1 | ||
|
|
27025d2d8e | ||
|
|
58a9ff4e39 | ||
|
|
80ca8f4b15 | ||
|
|
fd838c52b0 | ||
|
|
b9eb84bf05 | ||
|
|
d4019016bc | ||
|
|
eecdcd7a95 | ||
|
|
1e5f8910c7 | ||
|
|
9b73f8436d | ||
|
|
d5750309fe | ||
|
|
5639683ad3 | ||
|
|
c25b8905e6 | ||
|
|
b5d18298f9 | ||
|
|
3d678819f8 | ||
|
|
6a6f9b1aee | ||
|
|
db143b8dd9 | ||
|
|
290f35434f | ||
|
|
6c681355c2 | ||
|
|
4501e98bc3 | ||
|
|
aaae6250ef | ||
|
|
6e9379fd6f | ||
|
|
c081102c13 | ||
|
|
a352aaf924 | ||
|
|
0bdba67953 | ||
|
|
f2e1a24b6b | ||
|
|
e8111ddd2d | ||
|
|
23dfb4debe | ||
|
|
795d68024c | ||
|
|
964acbf02b | ||
|
|
5d4bec2aa4 | ||
|
|
435367ccd4 | ||
|
|
640a4b6ece | ||
|
|
0728342c34 | ||
|
|
6891b80eb2 | ||
|
|
63eb8cf350 | ||
|
|
3a5d5bd449 | ||
|
|
5b81f4b614 | ||
|
|
4ee7203990 | ||
|
|
3039d6dce2 | ||
|
|
60df897bd2 | ||
|
|
b78f8a664f | ||
|
|
9ca442f959 | ||
|
|
fd9883207e | ||
|
|
073093c958 | ||
|
|
f98873093d | ||
|
|
f160ec63c0 | ||
|
|
f5648284f2 | ||
|
|
890893f9e3 | ||
|
|
748f8bee3f | ||
|
|
d93d4af44f | ||
|
|
e98188fbf8 | ||
|
|
2ae9f71483 | ||
|
|
8954569aee | ||
|
|
ef463f32e6 | ||
|
|
72b5e1baf6 | ||
|
|
185699f6d7 | ||
|
|
2f4f7d9fc0 | ||
|
|
9fdfbd7239 | ||
|
|
dc84f29e4f | ||
|
|
f77655ec35 | ||
|
|
5e2f6305fa | ||
|
|
3112301260 | ||
|
|
5da87e3a2e | ||
|
|
dc59f96e59 | ||
|
|
2cc4f133a5 | ||
|
|
14317ef4d5 | ||
|
|
37e459948c | ||
|
|
b507a83ea1 | ||
|
|
3e4c2eb324 | ||
|
|
e127b1ee77 | ||
|
|
3704b17f41 | ||
|
|
3fdd8a4a4d | ||
|
|
1750046eb0 | ||
|
|
e9ab1ae6fc | ||
|
|
f6783f14cd | ||
|
|
6aa824385c | ||
|
|
0a79232bfe | ||
|
|
530b3be82a | ||
|
|
efeb2278f4 | ||
|
|
a3891c792c | ||
|
|
07c219dfa7 | ||
|
|
221fa2eab6 | ||
|
|
3f6d42257d | ||
|
|
81ca7c887e | ||
|
|
99c858e134 | ||
|
|
6644b11af7 | ||
|
|
801259479d | ||
|
|
4dc27f4e7e | ||
|
|
42085fac7f | ||
|
|
a95dc22cba | ||
|
|
6b5bf3c7cd | ||
|
|
2f046a7c80 | ||
|
|
bd5bb01944 | ||
|
|
2ade022deb | ||
|
|
afc3b6c307 | ||
|
|
e396c17828 | ||
|
|
3134607498 | ||
|
|
d5975e6f64 | ||
|
|
b0e67abdc8 | ||
|
|
48bac5b089 | ||
|
|
7e7d4406b9 | ||
|
|
3dc1122c1f | ||
|
|
90f0298cdb | ||
|
|
f57102ef8c | ||
|
|
e75d7bfe1f | ||
|
|
0a78018dd2 | ||
|
|
5e441c72e4 | ||
|
|
5180c3599b | ||
|
|
bd610f1e75 | ||
|
|
fc55d571f8 | ||
|
|
d0234d1a23 | ||
|
|
505bbabe3c | ||
|
|
cc4a3936f4 | ||
|
|
7312e0bc4d | ||
|
|
4965a07ae9 | ||
|
|
47225513e0 | ||
|
|
2dea87d0cc | ||
|
|
fc5bc30400 | ||
|
|
cd711fbcc9 | ||
|
|
ac3ddf5666 | ||
|
|
b02556783e | ||
|
|
9718e523a1 | ||
|
|
e9d057bb3a | ||
|
|
e19d97232e | ||
|
|
67ae0b5fce | ||
|
|
687934fb44 | ||
|
|
0c13ab5060 | ||
|
|
5f6b77bd29 | ||
|
|
27a258bd58 | ||
|
|
777598de30 | ||
|
|
eeb33bd2d4 | ||
|
|
16c34b35dd | ||
|
|
1882cabff4 | ||
|
|
dd4142d47c | ||
|
|
0817e99c0d | ||
|
|
3cef62927a | ||
|
|
a66293eba2 | ||
|
|
0c6f4f7ab8 | ||
|
|
0e7df10872 | ||
|
|
52af5955a3 | ||
|
|
680ed918be | ||
|
|
d06a73b233 | ||
|
|
8d7d35d28a | ||
|
|
3be3c0cef1 | ||
|
|
c302eaf0dc | ||
|
|
257bad8c6c | ||
|
|
db25b83a06 | ||
|
|
7daaf97514 | ||
|
|
1baff63376 | ||
|
|
6fb5ccca15 | ||
|
|
efa097df5b | ||
|
|
0f9cb189a8 | ||
|
|
90ae3130c1 | ||
|
|
a3bfda27e8 | ||
|
|
572b1ba9fa | ||
|
|
e7ac681415 | ||
|
|
907de3c88d | ||
|
|
75f015759d | ||
|
|
c228277453 | ||
|
|
17e07fae08 | ||
|
|
88adbe8514 | ||
|
|
bf022a75e5 | ||
|
|
d21af86dc1 | ||
|
|
4a95e4a7a0 | ||
|
|
e830de6ca1 | ||
|
|
66676e09b0 | ||
|
|
c834b58c9a | ||
|
|
b9ae5e558d | ||
|
|
650ca34399 | ||
|
|
a001ad76b0 | ||
|
|
da93c1a4c6 | ||
|
|
c5cf9a9d95 | ||
|
|
e95936dbcd | ||
|
|
68e066a86c | ||
|
|
986a34176c | ||
|
|
0d941ac960 | ||
|
|
3d08e5c767 | ||
|
|
024fa24cc7 | ||
|
|
f24bda2de2 | ||
|
|
d54471eadd | ||
|
|
70e0247334 | ||
|
|
43c144a9cc | ||
|
|
5ec4e4796d | ||
|
|
9a2a3f0b4c | ||
|
|
8444b510ce | ||
|
|
e4e5c9a651 | ||
|
|
9e813f322a | ||
|
|
70144b9061 | ||
|
|
27af65731e | ||
|
|
2778e5940c | ||
|
|
e20f2eac97 | ||
|
|
a91262b153 | ||
|
|
084c3649b2 | ||
|
|
c6584b93f3 | ||
|
|
57ed57ce23 | ||
|
|
77a81d273a | ||
|
|
b2e3d75b75 | ||
|
|
4de693a402 | ||
|
|
08febcb29a | ||
|
|
c1b6cc1149 | ||
|
|
2f43aabb2e | ||
|
|
50293ffbb4 | ||
|
|
a52bc5dc3f | ||
|
|
5acf52370a | ||
|
|
85e46f2513 | ||
|
|
db485aa713 | ||
|
|
e8aaa7c165 | ||
|
|
281d6c2af7 | ||
|
|
c8714ec821 | ||
|
|
84b2036374 | ||
|
|
5c65bf9b00 | ||
|
|
237f832ad1 | ||
|
|
d019d80efa | ||
|
|
42a2ef39db | ||
|
|
ed7c9fbf05 | ||
|
|
4f4627a600 | ||
|
|
7900c73d90 | ||
|
|
0030b8c20c | ||
|
|
fbc7d3135d | ||
|
|
7350ae2ef3 | ||
|
|
9cebe7ac56 | ||
|
|
bfe45c5af4 | ||
|
|
c3c8faffea | ||
|
|
96508580fd | ||
|
|
ee7fcefd73 | ||
|
|
ac31ff6efe | ||
|
|
af6111b51e | ||
|
|
6700c903eb | ||
|
|
10e48aded1 | ||
|
|
e80ba82d77 | ||
|
|
48202e6d98 | ||
|
|
e3ba870577 | ||
|
|
56fae37144 | ||
|
|
af9177584c | ||
|
|
d850c744cd | ||
|
|
cd60f4bf80 | ||
|
|
eddb6fc460 | ||
|
|
6684023424 | ||
|
|
43bec159ff | ||
|
|
27d960340e | ||
|
|
3cda8eab77 | ||
|
|
aac5c1ff72 | ||
|
|
65c0fcfdc9 | ||
|
|
c71d54a26e | ||
|
|
0224da2127 | ||
|
|
3114e1a477 | ||
|
|
375c78271d | ||
|
|
2b903ecf7f | ||
|
|
9e256921ba | ||
|
|
d7e85ac4da | ||
|
|
4495fc3554 | ||
|
|
6996c862ce | ||
|
|
f81d98fb4b | ||
|
|
cd942a1dfb | ||
|
|
ddd15e7451 | ||
|
|
21908ef534 | ||
|
|
426f1a33dd | ||
|
|
713271d525 | ||
|
|
a43efce576 | ||
|
|
07f2fb7c28 | ||
|
|
72563feaf0 | ||
|
|
763a474d11 | ||
|
|
3977d71892 | ||
|
|
25f3da3603 | ||
|
|
2920ca8c86 | ||
|
|
da7e075ee9 | ||
|
|
c7341bed78 | ||
|
|
d9014903ac | ||
|
|
5dad6bb0b0 | ||
|
|
e7529e2d74 | ||
|
|
c0e07dc202 | ||
|
|
2619219618 | ||
|
|
87a0a4ed4f | ||
|
|
df01d8ef79 | ||
|
|
9f38e51d9b | ||
|
|
3f2e343541 | ||
|
|
ea6006bec0 | ||
|
|
1e625d3955 | ||
|
|
4b0a27d6b5 | ||
|
|
9cc38000fd | ||
|
|
3574abe0cb | ||
|
|
fb5aed2143 | ||
|
|
3506ac2a42 | ||
|
|
1f2f8fe001 | ||
|
|
97d9c4cc2c | ||
|
|
b169ecd0fe | ||
|
|
912376a99d | ||
|
|
3ec2ad99b1 |
@@ -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
|
||||
27
.github/dependabot.yml
vendored
27
.github/dependabot.yml
vendored
@@ -11,10 +11,9 @@ updates:
|
||||
open-pull-requests-limit: 10
|
||||
reviewers:
|
||||
- juliushaertl
|
||||
- luka-nextcloud
|
||||
|
||||
- package-ecosystem: npm
|
||||
target-branch: stable29
|
||||
target-branch: stable25
|
||||
versioning-strategy: lockfile-only
|
||||
directory: "/"
|
||||
schedule:
|
||||
@@ -31,24 +30,7 @@ updates:
|
||||
- dependencies
|
||||
|
||||
- package-ecosystem: npm
|
||||
target-branch: stable28
|
||||
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: stable27
|
||||
target-branch: stable24
|
||||
versioning-strategy: lockfile-only
|
||||
directory: "/"
|
||||
schedule:
|
||||
@@ -74,8 +56,6 @@ updates:
|
||||
open-pull-requests-limit: 10
|
||||
reviewers:
|
||||
- juliushaertl
|
||||
- luka-nextcloud
|
||||
|
||||
- package-ecosystem: composer
|
||||
directory: "/tests/integration"
|
||||
schedule:
|
||||
@@ -86,8 +66,6 @@ updates:
|
||||
open-pull-requests-limit: 10
|
||||
reviewers:
|
||||
- juliushaertl
|
||||
- luka-nextcloud
|
||||
|
||||
- package-ecosystem: github-actions
|
||||
directory: "/"
|
||||
schedule:
|
||||
@@ -98,4 +76,3 @@ updates:
|
||||
open-pull-requests-limit: 10
|
||||
reviewers:
|
||||
- juliushaertl
|
||||
- luka-nextcloud
|
||||
|
||||
10
.github/workflows/appbuild.yml
vendored
10
.github/workflows/appbuild.yml
vendored
@@ -13,18 +13,18 @@ jobs:
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [16.x]
|
||||
node-version: [14.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4.1.3
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.2
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Set up npm7
|
||||
run: npm i -g npm@7
|
||||
- name: Setup PHP
|
||||
uses: shivammathur/setup-php@2.30.2
|
||||
uses: shivammathur/setup-php@2.24.0
|
||||
with:
|
||||
php-version: '7.4'
|
||||
tools: composer
|
||||
@@ -37,7 +37,7 @@ jobs:
|
||||
uname -a
|
||||
RUST_BACKTRACE=1 krankerl --version
|
||||
RUST_BACKTRACE=1 krankerl package
|
||||
- uses: actions/upload-artifact@v4
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: Deck app tarball
|
||||
path: build/artifacts/deck.tar.gz
|
||||
|
||||
27
.github/workflows/appstore-build-publish.yml
vendored
27
.github/workflows/appstore-build-publish.yml
vendored
@@ -10,7 +10,7 @@ on:
|
||||
types: [published]
|
||||
|
||||
env:
|
||||
PHP_VERSION: 8.2
|
||||
PHP_VERSION: 8.1
|
||||
|
||||
jobs:
|
||||
build_and_publish:
|
||||
@@ -21,7 +21,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Check actor permission
|
||||
uses: skjnldsv/check-actor-permission@69e92a3c4711150929bca9fcf34448c5bf5526e7 # v3.0
|
||||
uses: skjnldsv/check-actor-permission@e591dbfe838300c007028e1219ca82cc26e8d7c5 # v2.1
|
||||
with:
|
||||
require: write
|
||||
|
||||
@@ -32,7 +32,7 @@ jobs:
|
||||
echo "APP_VERSION=${GITHUB_REF##*/}" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
|
||||
with:
|
||||
path: ${{ env.APP_NAME }}
|
||||
|
||||
@@ -44,19 +44,19 @@ jobs:
|
||||
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@1bdcee71fa343c46b18dc6aceffb4cd1e35209c6 # v1.2
|
||||
id: versions
|
||||
# Continue if no package.json
|
||||
continue-on-error: true
|
||||
with:
|
||||
path: ${{ env.APP_NAME }}
|
||||
fallbackNode: '^20'
|
||||
fallbackNpm: '^9'
|
||||
fallbackNode: "^16"
|
||||
fallbackNpm: "^7"
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
# Skip if no package.json
|
||||
if: ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
|
||||
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # v3
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -66,7 +66,7 @@ jobs:
|
||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Set up php ${{ env.PHP_VERSION }}
|
||||
uses: shivammathur/setup-php@8872c784b04a1420e81191df5d64fbd59d3d3033 # v2
|
||||
uses: shivammathur/setup-php@2.24.0 # v2
|
||||
with:
|
||||
php-version: ${{ env.PHP_VERSION }}
|
||||
coverage: none
|
||||
@@ -75,7 +75,7 @@ jobs:
|
||||
|
||||
- name: Check composer.json
|
||||
id: check_composer
|
||||
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v2
|
||||
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
|
||||
with:
|
||||
files: "${{ env.APP_NAME }}/composer.json"
|
||||
|
||||
@@ -88,8 +88,6 @@ jobs:
|
||||
- name: Build ${{ env.APP_NAME }}
|
||||
# Skip if no package.json
|
||||
if: ${{ steps.versions.outputs.nodeVersion }}
|
||||
env:
|
||||
CYPRESS_INSTALL_BINARY: 0
|
||||
run: |
|
||||
cd ${{ env.APP_NAME }}
|
||||
npm ci
|
||||
@@ -97,7 +95,7 @@ jobs:
|
||||
|
||||
- name: Check Krankerl config
|
||||
id: krankerl
|
||||
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v2
|
||||
uses: andstor/file-existence-action@20b4d2e596410855db8f9ca21e96fbe18e12930b # v2
|
||||
with:
|
||||
files: ${{ env.APP_NAME }}/krankerl.toml
|
||||
|
||||
@@ -128,10 +126,9 @@ jobs:
|
||||
unzip latest-$NCVERSION.zip
|
||||
|
||||
- name: Checkout server master fallback
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
|
||||
if: ${{ steps.server-checkout.outcome != 'success' }}
|
||||
with:
|
||||
submodules: true
|
||||
repository: nextcloud/server
|
||||
path: nextcloud
|
||||
|
||||
@@ -151,7 +148,7 @@ jobs:
|
||||
tar -zcvf ${{ env.APP_NAME }}.tar.gz ${{ env.APP_NAME }}
|
||||
|
||||
- name: Attach tarball to github release
|
||||
uses: svenstaro/upload-release-action@04733e069f2d7f7f0b4aebc4fbdbce8613b03ccd # v2
|
||||
uses: svenstaro/upload-release-action@7319e4733ec7a184d739a6f412c40ffc339b69c7 # v2
|
||||
id: attach_to_release
|
||||
with:
|
||||
repo_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
8
.github/workflows/command-rebase.yml
vendored
8
.github/workflows/command-rebase.yml
vendored
@@ -23,7 +23,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Add reaction on start
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
|
||||
uses: peter-evans/create-or-update-comment@67dcc547d311b736a8e6c5c236542148a47adc3d # v2.1.1
|
||||
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.1.3 # v3.5.2
|
||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Automatic Rebase
|
||||
uses: cirrus-actions/rebase@b87d48154a87a85666003575337e27b8cd65f691 # 1.8
|
||||
uses: cirrus-actions/rebase@6e572f08c244e2f04f9beb85a943eb618218714d # 1.7
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
- name: Add reaction on failure
|
||||
uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4.0.0
|
||||
uses: peter-evans/create-or-update-comment@67dcc547d311b736a8e6c5c236542148a47adc3d # v2.1.1
|
||||
if: failure()
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
|
||||
26
.github/workflows/cypress.yml
vendored
26
.github/workflows/cypress.yml
vendored
@@ -19,17 +19,19 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
node-version: [20.x]
|
||||
node-version: [14.x]
|
||||
# containers: [1, 2, 3]
|
||||
php-versions: [ '8.1' ]
|
||||
php-versions: [ '8.0' ]
|
||||
databases: [ 'sqlite' ]
|
||||
server-versions: [ 'master' ]
|
||||
server-versions: [ 'stable26' ]
|
||||
|
||||
steps:
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.2
|
||||
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.1.3
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: nextcloud/server
|
||||
ref: ${{ matrix.server-versions }}
|
||||
@@ -50,19 +52,19 @@ 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.1.3
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Checkout text
|
||||
uses: actions/checkout@v4.1.3
|
||||
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.30.2
|
||||
uses: shivammathur/setup-php@2.24.0
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, zip, gd, apcu
|
||||
@@ -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 }}'
|
||||
@@ -106,7 +108,7 @@ jobs:
|
||||
npm_package_name: ${{ env.APP_NAME }}
|
||||
|
||||
- name: Upload test failure screenshots
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v3
|
||||
if: failure()
|
||||
with:
|
||||
name: Upload screenshots
|
||||
@@ -114,7 +116,7 @@ jobs:
|
||||
retention-days: 5
|
||||
|
||||
- name: Upload nextcloud logs
|
||||
uses: actions/upload-artifact@v4
|
||||
uses: actions/upload-artifact@v3
|
||||
if: failure()
|
||||
with:
|
||||
name: Upload nextcloud log
|
||||
|
||||
34
.github/workflows/fixup.yml
vendored
34
.github/workflows/fixup.yml
vendored
@@ -3,31 +3,31 @@
|
||||
# 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]
|
||||
pull_request:
|
||||
types: [opened, ready_for_review, reopened, synchronize]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: fixup-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
group: fixup-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
commit-message-check:
|
||||
if: github.event.pull_request.draft == false
|
||||
commit-message-check:
|
||||
if: github.event.pull_request.draft == false
|
||||
|
||||
permissions:
|
||||
pull-requests: write
|
||||
name: Block fixup and squash commits
|
||||
permissions:
|
||||
pull-requests: write
|
||||
name: Block fixup and squash commits
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Run check
|
||||
uses: skjnldsv/block-fixup-merge-action@42d26e1b536ce61e5cf467d65fb76caf4aa85acf # v1
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
steps:
|
||||
- name: Run check
|
||||
uses: xt0rted/block-autosquash-commits-action@79880c36b4811fe549cfffe20233df88876024e7 # v2
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
12
.github/workflows/integration.yml
vendored
12
.github/workflows/integration.yml
vendored
@@ -28,7 +28,7 @@ jobs:
|
||||
matrix:
|
||||
php-versions: ['8.1']
|
||||
databases: ['sqlite', 'mysql', 'pgsql']
|
||||
server-versions: ['master']
|
||||
server-versions: ['stable26']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
|
||||
|
||||
@@ -52,7 +52,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v4.1.3
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: nextcloud/server
|
||||
ref: ${{ matrix.server-versions }}
|
||||
@@ -66,19 +66,19 @@ jobs:
|
||||
cd build/integration && composer require --dev phpunit/phpunit:~9
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@v4.1.3
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Checkout activity
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
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.30.2
|
||||
uses: shivammathur/setup-php@2.25.5
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
extensions: mbstring, iconv, fileinfo, intl, sqlite, pdo_sqlite, mysql, pdo_mysql, pgsql, pdo_pgsql, apcu
|
||||
@@ -114,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: |
|
||||
|
||||
75
.github/workflows/lint-eslint.yml
vendored
75
.github/workflows/lint-eslint.yml
vendored
@@ -6,9 +6,22 @@
|
||||
# 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
|
||||
name: Lint
|
||||
|
||||
on: pull_request
|
||||
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
|
||||
@@ -18,52 +31,24 @@ concurrency:
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- 'src/**'
|
||||
- 'appinfo/info.xml'
|
||||
- 'package.json'
|
||||
- 'package-lock.json'
|
||||
- 'tsconfig.json'
|
||||
- '.eslintrc.*'
|
||||
- '.eslintignore'
|
||||
- '**.js'
|
||||
- '**.ts'
|
||||
- '**.vue'
|
||||
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
name: NPM lint
|
||||
name: eslint
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
|
||||
|
||||
- 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@1bdcee71fa343c46b18dc6aceffb4cd1e35209c6 # v1.2
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^20'
|
||||
fallbackNpm: '^9'
|
||||
fallbackNode: '^16'
|
||||
fallbackNpm: '^7'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
|
||||
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # v3
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -71,25 +56,7 @@ jobs:
|
||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Install dependencies
|
||||
env:
|
||||
CYPRESS_INSTALL_BINARY: 0
|
||||
PUPPETEER_SKIP_DOWNLOAD: true
|
||||
run: npm ci
|
||||
|
||||
- name: Lint
|
||||
run: npm run lint
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changes, lint]
|
||||
|
||||
if: always()
|
||||
|
||||
# This is the summary, we just avoid to rename it so that branch protection rules still match
|
||||
name: eslint
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.lint.result != 'success' }}; then exit 1; fi
|
||||
|
||||
11
.github/workflows/lint-php-cs.yml
vendored
11
.github/workflows/lint-php-cs.yml
vendored
@@ -3,7 +3,7 @@
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Lint php-cs
|
||||
name: Lint
|
||||
|
||||
on: pull_request
|
||||
|
||||
@@ -22,14 +22,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
|
||||
|
||||
- name: Set up php8.2
|
||||
uses: shivammathur/setup-php@8872c784b04a1420e81191df5d64fbd59d3d3033 # v2
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@2.24.0 # v2
|
||||
with:
|
||||
php-version: 8.2
|
||||
php-version: 8.1
|
||||
coverage: none
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
||||
17
.github/workflows/lint-php.yml
vendored
17
.github/workflows/lint-php.yml
vendored
@@ -3,9 +3,15 @@
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Lint php
|
||||
name: Lint
|
||||
|
||||
on: pull_request
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- stable*
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -19,20 +25,19 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: [ '8.1', '8.2', '8.3' ]
|
||||
php-versions: [ "8.0", "8.1", "8.2" ]
|
||||
|
||||
name: php-lint
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@8872c784b04a1420e81191df5d64fbd59d3d3033 # v2
|
||||
uses: shivammathur/setup-php@2.24.0 # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
coverage: none
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
||||
14
.github/workflows/lint-stylelint.yml
vendored
14
.github/workflows/lint-stylelint.yml
vendored
@@ -3,7 +3,7 @@
|
||||
# https://github.com/nextcloud/.github
|
||||
# https://docs.github.com/en/actions/learn-github-actions/sharing-workflows-with-your-organization
|
||||
|
||||
name: Lint stylelint
|
||||
name: Lint
|
||||
|
||||
on: pull_request
|
||||
|
||||
@@ -22,17 +22,17 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
|
||||
|
||||
- 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@1bdcee71fa343c46b18dc6aceffb4cd1e35209c6 # v1.2
|
||||
id: versions
|
||||
with:
|
||||
fallbackNode: '^20'
|
||||
fallbackNpm: '^9'
|
||||
fallbackNode: '^16'
|
||||
fallbackNpm: '^7'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # v3
|
||||
uses: actions/setup-node@8c91899e586c5b171469028077307d293428b516 # v3
|
||||
with:
|
||||
node-version: ${{ steps.versions.outputs.nodeVersion }}
|
||||
|
||||
@@ -40,8 +40,6 @@ jobs:
|
||||
run: npm i -g npm@"${{ steps.versions.outputs.npmVersion }}"
|
||||
|
||||
- name: Install dependencies
|
||||
env:
|
||||
CYPRESS_INSTALL_BINARY: 0
|
||||
run: npm ci
|
||||
|
||||
- name: Lint
|
||||
|
||||
64
.github/workflows/nightly.yml
vendored
Normal file
64
.github/workflows/nightly.yml
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
name: Package nightly
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- nightly
|
||||
schedule:
|
||||
- cron: '0 1 * * *' # run at 2 AM UTC
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
node-version: [14.x]
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use Node.js ${{ 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: Setup PHP
|
||||
uses: shivammathur/setup-php@2.24.0
|
||||
with:
|
||||
php-version: '7.4'
|
||||
tools: composer
|
||||
- name: install dependencies
|
||||
run: |
|
||||
wget https://github.com/ChristophWurst/krankerl/releases/download/v0.12.2/krankerl_0.12.2_amd64.deb
|
||||
sudo dpkg -i krankerl_0.12.2_amd64.deb
|
||||
- name: package
|
||||
run: |
|
||||
uname -a
|
||||
RUST_BACKTRACE=1 krankerl --version
|
||||
RUST_BACKTRACE=1 krankerl package
|
||||
- name: Set git config
|
||||
run: |
|
||||
git config --local user.email "action@github.com"
|
||||
git config --local user.name "GitHub Action"
|
||||
git tag -f nightly
|
||||
- name: Push tag
|
||||
uses: juliushaertl/github-push-action@main
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
tags: true
|
||||
force: true
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: juliushaertl/action-release@main
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
tag: nightly
|
||||
files: ./build/artifacts/deck.tar.gz
|
||||
name: Nightly build
|
||||
body: |
|
||||
Nightly release of deck
|
||||
draft: false
|
||||
prerelease: true
|
||||
overwrite: true
|
||||
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.1.3
|
||||
- uses: actions/checkout@v3
|
||||
- name: Use Node.js ${{ matrix.node-version }}
|
||||
uses: actions/setup-node@v4.0.2
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: ${{ matrix.node-version }}
|
||||
- name: Set up npm7
|
||||
|
||||
73
.github/workflows/npm-audit-fix.yml
vendored
73
.github/workflows/npm-audit-fix.yml
vendored
@@ -1,73 +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', 'stable29', 'stable28', 'stable27']
|
||||
|
||||
name: npm-audit-fix-${{ matrix.branches }}
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
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: '^20'
|
||||
fallbackNpm: '^9'
|
||||
|
||||
- name: Set up node ${{ steps.versions.outputs.nodeVersion }}
|
||||
uses: actions/setup-node@60edb5dd545a775178f52524783378180af0d1f8 # 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()
|
||||
env:
|
||||
CYPRESS_INSTALL_BINARY: 0
|
||||
run: |
|
||||
npm ci
|
||||
npm run build --if-present
|
||||
|
||||
- name: Create Pull Request
|
||||
if: always()
|
||||
uses: peter-evans/create-pull-request@9153d834b60caba6d51c9b9510b087acf9f33f83 # 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
|
||||
185
.github/workflows/phpunit-mysql.yml
vendored
185
.github/workflows/phpunit-mysql.yml
vendored
@@ -1,185 +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: PHPUnit MySQL
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: phpunit-mysql-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
matrix:
|
||||
runs-on: ubuntu-latest-low
|
||||
outputs:
|
||||
matrix: ${{ steps.versions.outputs.sparse-matrix }}
|
||||
steps:
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
|
||||
- name: Get version matrix
|
||||
id: versions
|
||||
uses: icewind1991/nextcloud-version-matrix@58becf3b4bb6dc6cef677b15e2fd8e7d48c0908f # v1.3.1
|
||||
with:
|
||||
matrix: '{"mysql-versions": ["8.1"]}'
|
||||
|
||||
changes:
|
||||
runs-on: ubuntu-latest-low
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- 'appinfo/**'
|
||||
- 'lib/**'
|
||||
- 'templates/**'
|
||||
- 'tests/**'
|
||||
- 'vendor/**'
|
||||
- 'vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
|
||||
phpunit-mysql:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: [changes, matrix]
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
strategy:
|
||||
matrix: ${{ fromJson(needs.matrix.outputs.matrix) }}
|
||||
|
||||
name: MySQL ${{ matrix.mysql-versions }} PHP ${{ matrix.php-versions }} Nextcloud ${{ matrix.server-versions }}
|
||||
|
||||
services:
|
||||
mysql:
|
||||
image: ghcr.io/nextcloud/continuous-integration-mysql-${{ matrix.mysql-versions }}:latest
|
||||
ports:
|
||||
- 4444:3306/tcp
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: rootpassword
|
||||
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 10
|
||||
|
||||
steps:
|
||||
- name: Set app env
|
||||
run: |
|
||||
# Split and keep last
|
||||
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
with:
|
||||
submodules: true
|
||||
repository: nextcloud/server
|
||||
ref: ${{ matrix.server-versions }}
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@8872c784b04a1420e81191df5d64fbd59d3d3033 # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# 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, mysql, pdo_mysql
|
||||
coverage: none
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Enable ONLY_FULL_GROUP_BY MySQL option
|
||||
run: |
|
||||
echo "SET GLOBAL sql_mode=(SELECT CONCAT(@@sql_mode,',ONLY_FULL_GROUP_BY'));" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
|
||||
echo "SELECT @@sql_mode;" | mysql -h 127.0.0.1 -P 4444 -u root -prootpassword
|
||||
|
||||
- name: Check composer file existence
|
||||
id: check_composer
|
||||
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v3.0.0
|
||||
with:
|
||||
files: apps/${{ env.APP_NAME }}/composer.json
|
||||
|
||||
- name: Set up dependencies
|
||||
# Only run if phpunit config file exists
|
||||
if: steps.check_composer.outputs.files_exists == 'true'
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: composer i
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
DB_PORT: 4444
|
||||
run: |
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=mysql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
./occ app:enable --force ${{ env.APP_NAME }}
|
||||
|
||||
- name: Check PHPUnit script is defined
|
||||
id: check_phpunit
|
||||
continue-on-error: true
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: |
|
||||
composer run --list | grep "^ test:unit " | wc -l | grep 1
|
||||
|
||||
- name: PHPUnit
|
||||
# Only run if phpunit config file exists
|
||||
if: steps.check_phpunit.outcome == 'success'
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: composer run test:unit
|
||||
|
||||
- name: Check PHPUnit integration script is defined
|
||||
id: check_integration
|
||||
continue-on-error: true
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: |
|
||||
composer run --list | grep "^ test:integration " | wc -l | grep 1
|
||||
|
||||
- name: Run Nextcloud
|
||||
# Only run if phpunit integration config file exists
|
||||
if: steps.check_integration.outcome == 'success'
|
||||
run: php -S localhost:8080 &
|
||||
|
||||
- name: PHPUnit integration
|
||||
# Only run if phpunit integration config file exists
|
||||
if: steps.check_integration.outcome == 'success'
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: composer run test:integration
|
||||
|
||||
- name: Print logs
|
||||
if: always()
|
||||
run: |
|
||||
cat data/nextcloud.log
|
||||
|
||||
- name: Skipped
|
||||
# Fail the action when neither unit nor integration tests ran
|
||||
if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure'
|
||||
run: |
|
||||
echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts'
|
||||
exit 1
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest-low
|
||||
needs: [changes, phpunit-mysql]
|
||||
|
||||
if: always()
|
||||
|
||||
name: phpunit-mysql-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-mysql.result != 'success' }}; then exit 1; fi
|
||||
168
.github/workflows/phpunit-pgsql.yml
vendored
168
.github/workflows/phpunit-pgsql.yml
vendored
@@ -1,168 +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: PHPUnit pgsql
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: phpunit-pgsql-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- 'appinfo/**'
|
||||
- 'lib/**'
|
||||
- 'templates/**'
|
||||
- 'tests/**'
|
||||
- 'vendor/**'
|
||||
- 'vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
|
||||
phpunit-pgsql:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.2']
|
||||
server-versions: ['master']
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: ghcr.io/nextcloud/continuous-integration-postgres-14:latest
|
||||
ports:
|
||||
- 4444:5432/tcp
|
||||
env:
|
||||
POSTGRES_USER: root
|
||||
POSTGRES_PASSWORD: rootpassword
|
||||
POSTGRES_DB: nextcloud
|
||||
options: --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
|
||||
|
||||
steps:
|
||||
- name: Set app env
|
||||
run: |
|
||||
# Split and keep last
|
||||
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
with:
|
||||
submodules: true
|
||||
repository: nextcloud/server
|
||||
ref: ${{ matrix.server-versions }}
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@8872c784b04a1420e81191df5d64fbd59d3d3033 # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# 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, pgsql, pdo_pgsql
|
||||
coverage: none
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Check composer file existence
|
||||
id: check_composer
|
||||
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v2
|
||||
with:
|
||||
files: apps/${{ env.APP_NAME }}/composer.json
|
||||
|
||||
- name: Set up dependencies
|
||||
# Only run if phpunit config file exists
|
||||
if: steps.check_composer.outputs.files_exists == 'true'
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: composer i
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
DB_PORT: 4444
|
||||
run: |
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=pgsql --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
./occ app:enable --force ${{ env.APP_NAME }}
|
||||
|
||||
- name: Check PHPUnit script is defined
|
||||
id: check_phpunit
|
||||
continue-on-error: true
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: |
|
||||
composer run --list | grep "^ test:unit " | wc -l | grep 1
|
||||
|
||||
- name: PHPUnit
|
||||
# Only run if phpunit config file exists
|
||||
if: steps.check_phpunit.outcome == 'success'
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: composer run test:unit
|
||||
|
||||
- name: Check PHPUnit integration script is defined
|
||||
id: check_integration
|
||||
continue-on-error: true
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: |
|
||||
composer run --list | grep "^ test:integration " | wc -l | grep 1
|
||||
|
||||
- name: Run Nextcloud
|
||||
# Only run if phpunit integration config file exists
|
||||
if: steps.check_integration.outcome == 'success'
|
||||
run: php -S localhost:8080 &
|
||||
|
||||
- name: PHPUnit integration
|
||||
# Only run if phpunit integration config file exists
|
||||
if: steps.check_integration.outcome == 'success'
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: composer run test:integration
|
||||
|
||||
- name: Print logs
|
||||
if: always()
|
||||
run: |
|
||||
cat data/nextcloud.log
|
||||
|
||||
- name: Skipped
|
||||
# Fail the action when neither unit nor integration tests ran
|
||||
if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure'
|
||||
run: |
|
||||
echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts'
|
||||
exit 1
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changes, phpunit-pgsql]
|
||||
|
||||
if: always()
|
||||
|
||||
name: phpunit-pgsql-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-pgsql.result != 'success' }}; then exit 1; fi
|
||||
157
.github/workflows/phpunit-sqlite.yml
vendored
157
.github/workflows/phpunit-sqlite.yml
vendored
@@ -1,157 +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: PHPUnit sqlite
|
||||
|
||||
on: pull_request
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: phpunit-sqlite-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
changes:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
outputs:
|
||||
src: ${{ steps.changes.outputs.src}}
|
||||
|
||||
steps:
|
||||
- uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2
|
||||
id: changes
|
||||
continue-on-error: true
|
||||
with:
|
||||
filters: |
|
||||
src:
|
||||
- '.github/workflows/**'
|
||||
- 'appinfo/**'
|
||||
- 'lib/**'
|
||||
- 'templates/**'
|
||||
- 'tests/**'
|
||||
- 'vendor/**'
|
||||
- 'vendor-bin/**'
|
||||
- '.php-cs-fixer.dist.php'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
|
||||
phpunit-sqlite:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
needs: changes
|
||||
if: needs.changes.outputs.src != 'false'
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
php-versions: ['8.2']
|
||||
server-versions: ['master']
|
||||
|
||||
steps:
|
||||
- name: Set app env
|
||||
run: |
|
||||
# Split and keep last
|
||||
echo "APP_NAME=${GITHUB_REPOSITORY##*/}" >> $GITHUB_ENV
|
||||
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
with:
|
||||
submodules: true
|
||||
repository: nextcloud/server
|
||||
ref: ${{ matrix.server-versions }}
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
uses: shivammathur/setup-php@8872c784b04a1420e81191df5d64fbd59d3d3033 # v2
|
||||
with:
|
||||
php-version: ${{ matrix.php-versions }}
|
||||
# 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
|
||||
coverage: none
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Check composer file existence
|
||||
id: check_composer
|
||||
uses: andstor/file-existence-action@076e0072799f4942c8bc574a82233e1e4d13e9d6 # v2
|
||||
with:
|
||||
files: apps/${{ env.APP_NAME }}/composer.json
|
||||
|
||||
- name: Set up dependencies
|
||||
# Only run if phpunit config file exists
|
||||
if: steps.check_composer.outputs.files_exists == 'true'
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: composer i
|
||||
|
||||
- name: Set up Nextcloud
|
||||
env:
|
||||
DB_PORT: 4444
|
||||
run: |
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=sqlite --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
./occ app:enable --force ${{ env.APP_NAME }}
|
||||
|
||||
- name: Check PHPUnit script is defined
|
||||
id: check_phpunit
|
||||
continue-on-error: true
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: |
|
||||
composer run --list | grep "^ test:unit " | wc -l | grep 1
|
||||
|
||||
- name: PHPUnit
|
||||
# Only run if phpunit config file exists
|
||||
if: steps.check_phpunit.outcome == 'success'
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: composer run test:unit
|
||||
|
||||
- name: Check PHPUnit integration script is defined
|
||||
id: check_integration
|
||||
continue-on-error: true
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: |
|
||||
composer run --list | grep "^ test:integration " | wc -l | grep 1
|
||||
|
||||
- name: Run Nextcloud
|
||||
# Only run if phpunit integration config file exists
|
||||
if: steps.check_integration.outcome == 'success'
|
||||
run: php -S localhost:8080 &
|
||||
|
||||
- name: PHPUnit integration
|
||||
# Only run if phpunit integration config file exists
|
||||
if: steps.check_integration.outcome == 'success'
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: composer run test:integration
|
||||
|
||||
- name: Print logs
|
||||
if: always()
|
||||
run: |
|
||||
cat data/nextcloud.log
|
||||
|
||||
- name: Skipped
|
||||
# Fail the action when neither unit nor integration tests ran
|
||||
if: steps.check_phpunit.outcome == 'failure' && steps.check_integration.outcome == 'failure'
|
||||
run: |
|
||||
echo 'Neither PHPUnit nor PHPUnit integration tests are specified in composer.json scripts'
|
||||
exit 1
|
||||
|
||||
summary:
|
||||
permissions:
|
||||
contents: none
|
||||
runs-on: ubuntu-latest
|
||||
needs: [changes, phpunit-sqlite]
|
||||
|
||||
if: always()
|
||||
|
||||
name: phpunit-sqlite-summary
|
||||
|
||||
steps:
|
||||
- name: Summary status
|
||||
run: if ${{ needs.changes.outputs.src != 'false' && needs.phpunit-sqlite.result != 'success' }}; then exit 1; fi
|
||||
102
.github/workflows/phpunit.yml
vendored
Normal file
102
.github/workflows/phpunit.yml
vendored
Normal file
@@ -0,0 +1,102 @@
|
||||
name: PHPUnit
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- '.github/workflows/phpunit.yml'
|
||||
- 'appinfo/**'
|
||||
- 'lib/**'
|
||||
- 'templates/**'
|
||||
- 'tests/**'
|
||||
- 'composer.json'
|
||||
- 'composer.lock'
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- stable*
|
||||
|
||||
env:
|
||||
APP_NAME: deck
|
||||
|
||||
|
||||
jobs:
|
||||
integration:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
php-versions: ['8.0', '8.1', '8.2']
|
||||
databases: ['sqlite', 'mysql', 'pgsql']
|
||||
server-versions: ['stable26']
|
||||
|
||||
name: php${{ matrix.php-versions }}-${{ matrix.databases }}-${{ matrix.server-versions }}
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:14
|
||||
ports:
|
||||
- 4445:5432/tcp
|
||||
env:
|
||||
POSTGRES_USER: root
|
||||
POSTGRES_PASSWORD: rootpassword
|
||||
POSTGRES_DB: nextcloud
|
||||
options: --health-cmd pg_isready --health-interval 5s --health-timeout 2s --health-retries 5
|
||||
mysql:
|
||||
image: mariadb:10.5
|
||||
ports:
|
||||
- 4444:3306/tcp
|
||||
env:
|
||||
MYSQL_ROOT_PASSWORD: rootpassword
|
||||
options: --health-cmd="mysqladmin ping" --health-interval 5s --health-timeout 2s --health-retries 5
|
||||
|
||||
steps:
|
||||
- name: Checkout server
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
repository: nextcloud/server
|
||||
ref: ${{ matrix.server-versions }}
|
||||
|
||||
- name: Checkout submodules
|
||||
shell: bash
|
||||
run: |
|
||||
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
|
||||
git submodule sync --recursive
|
||||
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
|
||||
|
||||
- name: Checkout app
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
path: apps/${{ env.APP_NAME }}
|
||||
|
||||
- name: Set up php ${{ matrix.php-versions }}
|
||||
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
|
||||
coverage: none
|
||||
|
||||
- name: Set up PHPUnit
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: composer i
|
||||
|
||||
- name: Set up Nextcloud
|
||||
run: |
|
||||
if [ "${{ matrix.databases }}" = "mysql" ]; then
|
||||
export DB_PORT=4444
|
||||
elif [ "${{ matrix.databases }}" = "pgsql" ]; then
|
||||
export DB_PORT=4445
|
||||
fi
|
||||
mkdir data
|
||||
./occ maintenance:install --verbose --database=${{ matrix.databases }} --database-name=nextcloud --database-host=127.0.0.1 --database-port=$DB_PORT --database-user=root --database-pass=rootpassword --admin-user admin --admin-pass admin
|
||||
./occ app:enable --force ${{ env.APP_NAME }}
|
||||
php -S localhost:8080 &
|
||||
|
||||
- name: PHPUnit
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.xml
|
||||
|
||||
- name: PHPUnit integration
|
||||
working-directory: apps/${{ env.APP_NAME }}
|
||||
run: ./vendor/phpunit/phpunit/phpunit -c tests/phpunit.integration.xml
|
||||
34
.github/workflows/pr-feedback.yml
vendored
34
.github/workflows/pr-feedback.yml
vendored
@@ -1,34 +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: 'Ask for feedback on PRs'
|
||||
on:
|
||||
schedule:
|
||||
- cron: '30 1 * * *'
|
||||
|
||||
jobs:
|
||||
pr-feedback:
|
||||
runs-on: ubuntu-latest
|
||||
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 review 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 review 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 }},nextcloud-command,nextcloud-android-bot,skjnldsv,datenangebot"
|
||||
exempt-bots: true
|
||||
19
.github/workflows/psalm.yml
vendored
19
.github/workflows/psalm.yml
vendored
@@ -5,7 +5,13 @@
|
||||
|
||||
name: Static analysis
|
||||
|
||||
on: pull_request
|
||||
on:
|
||||
pull_request:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- main
|
||||
- stable*
|
||||
|
||||
concurrency:
|
||||
group: psalm-${{ github.head_ref || github.run_id }}
|
||||
@@ -15,17 +21,16 @@ jobs:
|
||||
static-analysis:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
name: static-psalm-analysis
|
||||
name: Nextcloud
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
|
||||
|
||||
- name: Set up php8.2
|
||||
uses: shivammathur/setup-php@8872c784b04a1420e81191df5d64fbd59d3d3033 # v2
|
||||
- name: Set up php
|
||||
uses: shivammathur/setup-php@2.24.0 # v2
|
||||
with:
|
||||
php-version: 8.2
|
||||
php-version: 8.1
|
||||
coverage: none
|
||||
ini-file: development
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
||||
@@ -1,49 +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: Auto approve nextcloud/ocp
|
||||
|
||||
on:
|
||||
pull_request_target:
|
||||
branches:
|
||||
- main
|
||||
- master
|
||||
- stable*
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
concurrency:
|
||||
group: update-nextcloud-ocp-approve-merge-${{ github.head_ref || github.run_id }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
auto-approve-merge:
|
||||
if: github.actor == 'nextcloud-command'
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
# for hmarr/auto-approve-action to approve PRs
|
||||
pull-requests: write
|
||||
# for alexwilson/enable-github-automerge-action to approve PRs
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- uses: mdecoleman/pr-branch-name@bab4c71506bcd299fb350af63bb8e53f2940a599 # v2.0.0
|
||||
id: branchname
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# GitHub actions bot approve
|
||||
- uses: hmarr/auto-approve-action@b40d6c9ed2fa10c9a2749eca7eb004418a705501 # v2
|
||||
if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp')
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# Enable GitHub auto merge
|
||||
- name: Auto merge
|
||||
uses: alexwilson/enable-github-automerge-action@5a508f46e70d6723b62d752352280eb6f7abf9d0 # main
|
||||
if: startsWith(steps.branchname.outputs.branch, 'automated/noid/') && endsWith(steps.branchname.outputs.branch, 'update-nextcloud-ocp')
|
||||
with:
|
||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
68
.github/workflows/update-nextcloud-ocp.yml
vendored
68
.github/workflows/update-nextcloud-ocp.yml
vendored
@@ -17,90 +17,42 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
branches: ['main', 'master', 'stable29', 'stable28', 'stable27']
|
||||
branches: ["master", "stable25", "stable24"]
|
||||
|
||||
name: update-nextcloud-ocp-${{ matrix.branches }}
|
||||
|
||||
steps:
|
||||
- id: checkout
|
||||
uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3
|
||||
- uses: actions/checkout@ac593985615ec2ede58e132d2e21d2b1cbd6127c # v3
|
||||
with:
|
||||
ref: ${{ matrix.branches }}
|
||||
submodules: true
|
||||
continue-on-error: true
|
||||
|
||||
- name: Set up php8.2
|
||||
if: steps.checkout.outcome == 'success'
|
||||
uses: shivammathur/setup-php@8872c784b04a1420e81191df5d64fbd59d3d3033 # v2
|
||||
- name: Set up php8.1
|
||||
uses: shivammathur/setup-php@2.24.0 # v2
|
||||
with:
|
||||
php-version: 8.2
|
||||
# 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: 8.1
|
||||
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: Read codeowners
|
||||
if: steps.checkout.outcome == 'success'
|
||||
id: codeowners
|
||||
run: |
|
||||
grep '/appinfo/info.xml' .github/CODEOWNERS | cut -f 2- -d ' ' | xargs | awk '{ print "codeowners="$0 }' >> $GITHUB_OUTPUT
|
||||
continue-on-error: true
|
||||
|
||||
- name: Composer install
|
||||
if: steps.checkout.outcome == 'success'
|
||||
run: composer install
|
||||
|
||||
- name: Composer update nextcloud/ocp
|
||||
id: update_branch
|
||||
if: ${{ steps.checkout.outcome == 'success' && matrix.branches != 'main' }}
|
||||
run: composer require --dev nextcloud/ocp:dev-${{ matrix.branches }}
|
||||
continue-on-error: true
|
||||
|
||||
- name: Raise on issue on failure
|
||||
uses: dacbd/create-issue-action@cdb57ab6ff8862aa09fee2be6ba77a59581921c2 # v2.0.0
|
||||
if: ${{ steps.checkout.outcome == 'success' && failure() && steps.update_branch.conclusion == 'failure' }}
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
title: Failed to update nextcloud/ocp package on branch ${{ matrix.branches }}
|
||||
body: Please check the output of the GitHub action and manually resolve the issues<br>${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}<br>${{ steps.codeowners.outputs.codeowners }}
|
||||
|
||||
- name: Composer update nextcloud/ocp
|
||||
id: update_main
|
||||
if: ${{ steps.checkout.outcome == 'success' && matrix.branches == 'main' }}
|
||||
run: composer require --dev nextcloud/ocp:dev-master
|
||||
|
||||
- name: Raise on issue on failure
|
||||
uses: dacbd/create-issue-action@cdb57ab6ff8862aa09fee2be6ba77a59581921c2 # v2.0.0
|
||||
if: ${{ steps.checkout.outcome == 'success' && failure() && steps.update_main.conclusion == 'failure' }}
|
||||
with:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
title: Failed to update nextcloud/ocp package on branch ${{ matrix.branches }}
|
||||
body: Please check the output of the GitHub action and manually resolve the issues<br>${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}<br>${{ steps.codeowners.outputs.codeowners }}
|
||||
|
||||
- name: Reset checkout 3rdparty
|
||||
if: steps.checkout.outcome == 'success'
|
||||
- name: Reset checkout dirs
|
||||
run: |
|
||||
git clean -f 3rdparty
|
||||
git checkout 3rdparty
|
||||
continue-on-error: true
|
||||
|
||||
- name: Reset checkout vendor
|
||||
if: steps.checkout.outcome == 'success'
|
||||
run: |
|
||||
git clean -f vendor
|
||||
git checkout vendor
|
||||
continue-on-error: true
|
||||
|
||||
- name: Reset checkout vendor-bin
|
||||
if: steps.checkout.outcome == 'success'
|
||||
run: |
|
||||
git clean -f vendor-bin
|
||||
git checkout vendor-bin
|
||||
git checkout 3rdparty vendor vendor-bin
|
||||
continue-on-error: true
|
||||
|
||||
- name: Create Pull Request
|
||||
if: steps.checkout.outcome == 'success'
|
||||
uses: peter-evans/create-pull-request@9153d834b60caba6d51c9b9510b087acf9f33f83 # v3
|
||||
uses: peter-evans/create-pull-request@2b011faafdcbc9ceb11414d64d0573f37c774b04 # v3
|
||||
with:
|
||||
token: ${{ secrets.COMMAND_BOT_PAT }}
|
||||
commit-message: "chore(dev-deps): Bump nextcloud/ocp package"
|
||||
|
||||
193
CHANGELOG.md
193
CHANGELOG.md
@@ -1,147 +1,102 @@
|
||||
# Changelog
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## 1.13.0-beta.1
|
||||
|
||||
### Added
|
||||
|
||||
- feat: Rename to teams @juliushaertl [#5611](https://github.com/nextcloud/deck/pull/5611)
|
||||
- feat: Implement a team resource provider @juliushaertl [#5625](https://github.com/nextcloud/deck/pull/5625)
|
||||
- Interactive board widget @juliushaertl [#5630](https://github.com/nextcloud/deck/pull/5630)
|
||||
## 1.9.7
|
||||
|
||||
### Fixed
|
||||
|
||||
- Fix deleted card/board issues @juliushaertl [#5423](https://github.com/nextcloud/deck/pull/5423)
|
||||
- Fixing #5451 @mintsoft [#5455](https://github.com/nextcloud/deck/pull/5455)
|
||||
- fix: Add debounce to update due date @juliushaertl [#5458](https://github.com/nextcloud/deck/pull/5458)
|
||||
- fix(done): Mark card as undone when updating card @stefan-niedermann [#5491](https://github.com/nextcloud/deck/pull/5491)
|
||||
- fixed sorting for upcoming cards @elzody [#5493](https://github.com/nextcloud/deck/pull/5493)
|
||||
- fix(PermissionService#getPermissions): Catch exceptions from getBoard method @marcelklehr [#5542](https://github.com/nextcloud/deck/pull/5542)
|
||||
- fix(activity): Fix permission checks when rendering activities in bac… @nickvergessen [#5533](https://github.com/nextcloud/deck/pull/5533)
|
||||
- fix: Safeguard sync requests to hopefully not spam then server @juliushaertl [#5590](https://github.com/nextcloud/deck/pull/5590)
|
||||
- fix: card move dialog auto close @luka-nextcloud [#5537](https://github.com/nextcloud/deck/pull/5537)
|
||||
- also filter by storage when getting shares in folder @icewind1991 [#5452](https://github.com/nextcloud/deck/pull/5452)
|
||||
- fix(PermissionService#getPermissions): Catch exceptions from getBoard method @backportbot[bot] [#5548](https://github.com/nextcloud/deck/pull/5548)
|
||||
- fix(activity): Fix permission checks when rendering activities in bac… @backportbot[bot] [#5545](https://github.com/nextcloud/deck/pull/5545)
|
||||
|
||||
## 1.9.6
|
||||
|
||||
### Fixed
|
||||
|
||||
- fix: allow null label colors in trello json importer @juliushaertl [#5439](https://github.com/nextcloud/deck/pull/5439)
|
||||
- Fix small issues around delete/undo [#5421](https://github.com/nextcloud/deck/pull/5421)
|
||||
- Fix deleted card/board issues @juliushaertl [#5443](https://github.com/nextcloud/deck/pull/5443)
|
||||
|
||||
## 1.9.5
|
||||
|
||||
### Fixed
|
||||
|
||||
- fix: Use text content as result for comments [#5298](https://github.com/nextcloud/deck/pull/5298)
|
||||
|
||||
## 1.9.4
|
||||
|
||||
### Fixed
|
||||
|
||||
- fix: open card in modal on main route [#5289](https://github.com/nextcloud/deck/pull/5289)
|
||||
|
||||
## 1.9.3
|
||||
|
||||
### Added
|
||||
|
||||
- Import of deck JSON data through occ @juliushaertl [#5004](https://github.com/nextcloud/deck/pull/5004)
|
||||
|
||||
### Fixed
|
||||
|
||||
- Prevent tag itself being edit button if user lacks permissions [#4766](https://github.com/nextcloud/deck/pull/4766)
|
||||
- fix: Allow dynamic autoloading for classes added during upgrade [#4805](https://github.com/nextcloud/deck/pull/4805)
|
||||
- Fix(occ): set user id for permission sevice from board service [#4814](https://github.com/nextcloud/deck/pull/4814)
|
||||
- fix(notification): Prevent null in parameters [#4910](https://github.com/nextcloud/deck/pull/4910)
|
||||
- fix: Split query to fetch board ids to avoid slow query join @juliushaertl [#4950](https://github.com/nextcloud/deck/pull/4950)
|
||||
- fix: export doesn't handle lists with no cards [#5117](https://github.com/nextcloud/deck/pull/5117)
|
||||
- Ensure `$boardId` is an integer [#4774](https://github.com/nextcloud/deck/pull/4774)
|
||||
- fix: execute return int for export command [#4812](https://github.com/nextcloud/deck/pull/4812)
|
||||
- fix: crash when leaving out system parameter [#4832](https://github.com/nextcloud/deck/pull/4832)
|
||||
- Remove duplicate button [#5044](https://github.com/nextcloud/deck/pull/5044)
|
||||
|
||||
### Other
|
||||
|
||||
- fix(i18n): Improved wording @rakekniven [#5496](https://github.com/nextcloud/deck/pull/5496)
|
||||
- Dependency updates
|
||||
|
||||
## 1.12.0-beta.3
|
||||
|
||||
### Added
|
||||
|
||||
- feat: Move to contenteditable for inline title editing @juliushaertl [#5282](https://github.com/nextcloud/deck/pull/5282)
|
||||
## 1.9.2
|
||||
|
||||
### 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: Properly overwrite z-index of datepicker above modal [#4665](https://github.com/nextcloud/deck/pull/4665)
|
||||
|
||||
## 1.12.0-beta.2
|
||||
|
||||
### Added
|
||||
|
||||
- Card layout polishing @juliushaertl [#5264](https://github.com/nextcloud/deck/pull/5264)
|
||||
## 1.9.1
|
||||
|
||||
### 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)
|
||||
- Gracefully handle not found card for a share [#4567](https://github.com/nextcloud/deck/pull/4567)
|
||||
- fix: Adapt NcEmptyContent usages to new slots [#4562](https://github.com/nextcloud/deck/pull/4562)
|
||||
- allow user to toggle visibility of the calendar for a deck board [#4625](https://github.com/nextcloud/deck/pull/4625)
|
||||
- fix: Append datetime picker to body to avoid cut off [#4644](https://github.com/nextcloud/deck/pull/4644)
|
||||
- chore: Remove unused @nextcloud/vue-dashboard @juliushaertl [#4650](https://github.com/nextcloud/deck/pull/4650)
|
||||
- fix: Bring back overdue column by removing faulty condition [#4662](https://github.com/nextcloud/deck/pull/4662)
|
||||
- Fix : Overlapping expiry dates on tags [#4537](https://github.com/nextcloud/deck/pull/4537)
|
||||
- Better display of card dates (creation and change dates) [#4619](https://github.com/nextcloud/deck/pull/4619)
|
||||
- Update dependencies
|
||||
|
||||
### 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
|
||||
## 1.9.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)
|
||||
|
||||
### 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)
|
||||
- Live updates on board collaboration using notify_push @alangecker [#4273](https://github.com/nextcloud/deck/pull/4273)
|
||||
- Basic notify_push usage with session handling @alangecker [#3876](https://github.com/nextcloud/deck/pull/3876)
|
||||
- Use text as editor if available [#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)
|
||||
- Optimize query performance with larger board or card count @[#4452](https://github.com/nextcloud/deck/pull/4452)
|
||||
- Export Board as CSV @david-loe [#3065](https://github.com/nextcloud/deck/pull/3065)
|
||||
|
||||
|
||||
### Fixed
|
||||
|
||||
- fix(cards): Fix card sizing by limiting too wide style rules [#4521](https://github.com/nextcloud/deck/pull/4521)
|
||||
- fix(references): Mute NoPermissionException as it is expected to happen for references [#4516](https://github.com/nextcloud/deck/pull/4516)
|
||||
- fix(API): Fix board API details parameter to work as expected [#4519](https://github.com/nextcloud/deck/pull/4519)
|
||||
- fix(sessions): Do not send close request without token [#4525](https://github.com/nextcloud/deck/pull/4525)
|
||||
- fix: Avoid mutating the due date when calculating days @juliushaertl [#4488](https://github.com/nextcloud/deck/pull/4488)
|
||||
- fix: Pass user id along to properly check permissions in background jobs @juliushaertl [#4485](https://github.com/nextcloud/deck/pull/4485)
|
||||
- fix: Use passed userid when getting attachment folder @juliushaertl [#4487](https://github.com/nextcloud/deck/pull/4487)
|
||||
- fix: Use proper z-index for text menubar @juliushaertl [#4490](https://github.com/nextcloud/deck/pull/4490)
|
||||
- fix(dashboard): Fix undefined array index @marcelklehr [#4492](https://github.com/nextcloud/deck/pull/4492)
|
||||
- fix: Always return sorted index array to make sure a json array is the result @juliushaertl [#4493](https://github.com/nextcloud/deck/pull/4493)
|
||||
- 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)
|
||||
@@ -151,10 +106,6 @@ All notable changes to this project will be documented in this file.
|
||||
- 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
|
||||
- Dependency updates
|
||||
|
||||
|
||||
## 1.8.0-beta.1
|
||||
|
||||
77
README.md
77
README.md
@@ -27,11 +27,27 @@ Deck is a kanban style organization tool aimed at personal planning and project
|
||||
- [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`
|
||||
|
||||
## Performance limitations
|
||||
|
||||
@@ -46,54 +62,41 @@ 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.
|
||||
### Nextcloud environment
|
||||
|
||||
### General build instructions
|
||||
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.
|
||||
|
||||
General build instructions for the app itself are the same for all options.
|
||||
### PHP
|
||||
|
||||
To build you will need to have [Node.js](https://nodejs.org/en/) and [Composer](https://getcomposer.org/) installed.
|
||||
Nothing to prepare, just dig into the code.
|
||||
|
||||
- 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`
|
||||
### JavaScript
|
||||
|
||||
### Faster frontend developing with HMR
|
||||
This requires at least Node 16 and npm 7 to be installed.
|
||||
|
||||
You can enable HMR (Hot module replacement) to avoid page reloads when working on the frontend:
|
||||
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.
|
||||
|
||||
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)
|
||||
#### Hot reloading
|
||||
|
||||
### 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:
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
- 🚀 Get your project organized
|
||||
|
||||
</description>
|
||||
<version>1.14.0-dev</version>
|
||||
<version>1.9.7</version>
|
||||
<licence>agpl</licence>
|
||||
<author>Julius Härtl</author>
|
||||
<documentation>
|
||||
@@ -38,7 +38,7 @@
|
||||
<database min-version="9.4">pgsql</database>
|
||||
<database>sqlite</database>
|
||||
<database min-version="8.0">mysql</database>
|
||||
<nextcloud min-version="30" max-version="30"/>
|
||||
<nextcloud min-version="26" max-version="26"/>
|
||||
</dependencies>
|
||||
<background-jobs>
|
||||
<job>OCA\Deck\Cron\DeleteCron</job>
|
||||
@@ -58,9 +58,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
|
||||
@@ -66,8 +61,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'],
|
||||
|
||||
@@ -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-master",
|
||||
"psalm/phar": "^5.13"
|
||||
"nextcloud/coding-standard": "^1.0.0",
|
||||
"symfony/event-dispatcher": "^4.0",
|
||||
"vimeo/psalm": "^5.4",
|
||||
"php-parallel-lint/php-parallel-lint": "^1.2",
|
||||
"nextcloud/ocp": "dev-stable26"
|
||||
},
|
||||
"config": {
|
||||
"optimize-autoloader": true,
|
||||
@@ -31,9 +34,9 @@
|
||||
"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"
|
||||
|
||||
3806
composer.lock
generated
3806
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,5 @@
|
||||
import { randUser } from '../utils/index.js'
|
||||
import { sampleBoard } from '../utils/sampleBoard'
|
||||
import moment from '@nextcloud/moment'
|
||||
|
||||
const user = randUser()
|
||||
const boardData = sampleBoard()
|
||||
@@ -59,33 +58,6 @@ 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('.vs__dropdown-menu [data-cy="board-select-title"]: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('.vs__dropdown-menu span[title="TestList"]').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)
|
||||
@@ -103,28 +75,28 @@ describe('Card', function() {
|
||||
})
|
||||
|
||||
cy.get('.modal__card').should('be.visible')
|
||||
cy.get('.app-sidebar-header__mainname').contains('Hello world')
|
||||
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('#tab-button-attachments').click()
|
||||
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')
|
||||
cy.get('.file-picker__main [data-filename="welcome.txt"]').should('be.visible')
|
||||
.click()
|
||||
cy.get('.dialog__actions button.button-vue--vue-primary').click()
|
||||
cy.get('.attachment-list .basename').contains('welcome.txt')
|
||||
})
|
||||
|
||||
it.only('Shows the modal with the editor', () => {
|
||||
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__mainname').contains('Hello world')
|
||||
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()
|
||||
@@ -138,33 +110,6 @@ describe('Card', function() {
|
||||
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', () => {
|
||||
@@ -180,119 +125,6 @@ describe('Card', function() {
|
||||
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('.vs__dropdown-menu .tag:contains("Action needed")').should('be.visible').click()
|
||||
cy.get('.vs__selected .tag:contains("Action needed")').should('be.visible')
|
||||
cy.get('.vs__dropdown-menu .tag:contains("Later")').should('be.visible').click()
|
||||
|
||||
cy.get('.vs__selected .tag:contains("Action needed")').should('be.visible')
|
||||
cy.get('.vs__selected .tag:contains("Action needed")')
|
||||
.parent().find('button').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,5 +1,4 @@
|
||||
import { randUser } from '../utils/index.js'
|
||||
import { sampleBoard } from '../utils/sampleBoard'
|
||||
const user = randUser()
|
||||
|
||||
describe('Deck dashboard', function() {
|
||||
@@ -9,18 +8,16 @@ describe('Deck dashboard', function() {
|
||||
|
||||
beforeEach(function() {
|
||||
cy.login(user)
|
||||
cy.visit('/apps/deck')
|
||||
})
|
||||
|
||||
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.text', 'Upcoming cards')
|
||||
})
|
||||
|
||||
it('Can see the default "Personal Board" created for user by default', function() {
|
||||
cy.visit('/apps/deck')
|
||||
|
||||
const defaultBoard = 'Personal'
|
||||
|
||||
cy.get('.app-navigation-entry-wrapper[icon=icon-deck]')
|
||||
@@ -29,29 +26,4 @@ describe('Deck dashboard', function() {
|
||||
.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')
|
||||
})
|
||||
})
|
||||
})
|
||||
|
||||
@@ -38,10 +38,7 @@ describe('Board', function() {
|
||||
cy.get('.board-title').contains(board.title)
|
||||
|
||||
cy.shareBoardWithUi(recipient.userId)
|
||||
|
||||
cy.intercept({ method: 'PUT', url: '**/apps/deck/boards/*/acl/*' }).as('setAcl')
|
||||
cy.get(`[data-cy="acl-participant:${recipient.userId}"]`).find('[data-cy="action:permission-edit"]').click()
|
||||
cy.wait('@setAcl')
|
||||
|
||||
cy.login(recipient)
|
||||
cy.visit(`/apps/deck/#/board/${boardId}`)
|
||||
|
||||
@@ -107,14 +107,11 @@ Cypress.Commands.add('getNavigationEntry', (boardTitle) => {
|
||||
})
|
||||
|
||||
Cypress.Commands.add('shareBoardWithUi', (userId) => {
|
||||
cy.intercept({ method: 'GET', url: `**/ocs/v2.php/apps/files_sharing/api/v1/sharees?search=${userId}*` }).as('fetchRecipients')
|
||||
cy.get('[aria-label="Open details"]').click()
|
||||
cy.get('.app-sidebar').should('be.visible')
|
||||
cy.get('.select input').type(`${userId}`)
|
||||
cy.wait('@fetchRecipients', { timeout: 7000 })
|
||||
|
||||
cy.get('.vs__dropdown-menu .option').first().contains(userId)
|
||||
cy.get('.select input').type('{enter}')
|
||||
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)
|
||||
})
|
||||
|
||||
46
docs/API.md
46
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,10 @@ 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) |
|
||||
| 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)|
|
||||
|
||||
```
|
||||
{
|
||||
@@ -1120,7 +1112,7 @@ Deck stores user and app configuration values globally and per board. The GET en
|
||||
| calendar | Boolean |
|
||||
| cardDetailsInModal | Boolean |
|
||||
| cardIdBadge | Boolean |
|
||||
|
||||
|
||||
#### Example request
|
||||
|
||||
```
|
||||
@@ -1194,7 +1186,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
|
||||
[
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 88 KiB |
@@ -1,8 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" height="16" width="16" version="1.1" viewBox="0 0 16 16">
|
||||
<g fill="currentColor">
|
||||
<rect ry="1" height="8" width="14" y="7" x="1"/>
|
||||
<rect ry=".5" height="1" width="12" y="5" x="2"/>
|
||||
<rect ry=".5" height="1" width="10" y="3" x="3"/>
|
||||
<rect ry=".5" height="1" width="8" y="1" x="4"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 372 B |
@@ -45,6 +45,7 @@ OC.L10N.register(
|
||||
"Today" : "Vandag",
|
||||
"Tomorrow" : "Môre",
|
||||
"Close" : "Sluit",
|
||||
"Share" : "Deel"
|
||||
"Share" : "Deel",
|
||||
"Due date" : "Sperdatum"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
"Today" : "Vandag",
|
||||
"Tomorrow" : "Môre",
|
||||
"Close" : "Sluit",
|
||||
"Share" : "Deel"
|
||||
"Share" : "Deel",
|
||||
"Due date" : "Sperdatum"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -379,7 +379,9 @@ OC.L10N.register(
|
||||
"Share board with a user, group or circle …" : "مشاركة اللوح مع مستخدم،مجموعة أو دائرة ..",
|
||||
"Searching for users, groups and circles …" : "ابحث عن أعضاء، مجموعات أو حلقات ...",
|
||||
"(Circle)" : "(دائرة)",
|
||||
"Assign to users" : "انسب الى المتسخدمين",
|
||||
"Assign to users/groups/circles" : "انسب الى المستخدمين،المجموعات،الدوائر",
|
||||
"Due date" : "تاريخ الانجاز",
|
||||
"Next week" : "الاسبوع القادم",
|
||||
"Next month" : "الشهر القادم",
|
||||
"List is empty" : "القائمة فارغة",
|
||||
|
||||
@@ -377,7 +377,9 @@
|
||||
"Share board with a user, group or circle …" : "مشاركة اللوح مع مستخدم،مجموعة أو دائرة ..",
|
||||
"Searching for users, groups and circles …" : "ابحث عن أعضاء، مجموعات أو حلقات ...",
|
||||
"(Circle)" : "(دائرة)",
|
||||
"Assign to users" : "انسب الى المتسخدمين",
|
||||
"Assign to users/groups/circles" : "انسب الى المستخدمين،المجموعات،الدوائر",
|
||||
"Due date" : "تاريخ الانجاز",
|
||||
"Next week" : "الاسبوع القادم",
|
||||
"Next month" : "الشهر القادم",
|
||||
"List is empty" : "القائمة فارغة",
|
||||
|
||||
58
l10n/ast.js
58
l10n/ast.js
@@ -2,18 +2,10 @@ OC.L10N.register(
|
||||
"deck",
|
||||
{
|
||||
"Deck" : "Tarxeteru",
|
||||
"Upcoming cards" : "Tarxetes próximes",
|
||||
"Load more" : "Cargar más",
|
||||
"Personal" : "Personal",
|
||||
"Deck board" : "Mesa de tarxetes",
|
||||
"%s on %s" : "%s n %s",
|
||||
"Action needed" : "Aición necesaria",
|
||||
"copy" : "copia",
|
||||
"To do" : "Xera pendiente",
|
||||
"Done" : "Fecho",
|
||||
"Example Task 3" : "Xera d'exemplu 3",
|
||||
"Example Task 2" : "Xera d'exemplu 2",
|
||||
"Example Task 1" : "Xera d'exemplu 1",
|
||||
"The file was uploaded" : "Xubióse'l ficheru",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El ficheru xubíu supera la direutiva «upload_max_filesize» del ficheru php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El ficheru xubíu supera la direutiva «MAX_FILE_SIZE» que s'especificó nel formulariu HTML",
|
||||
@@ -21,96 +13,48 @@ OC.L10N.register(
|
||||
"Missing a temporary folder" : "Falta una carpeta temporal",
|
||||
"Could not write file to disk" : "Nun se pudo escribir el ficheru nel discu",
|
||||
"A PHP extension stopped the file upload" : "Una estensión PHP paró la xuba de ficheros",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Nun se xubió nengún ficheru o'l tamañu del ficheru supera'l máximu de %s",
|
||||
"Invalid date, date format must be YYYY-MM-DD" : "La data ye inválida, el so formatu ha ser AAAA-MM-DD",
|
||||
"Move card" : "Mover la tarxeta",
|
||||
"Cancel" : "Encaboxar",
|
||||
"File already exists" : "El ficheru yá esiste",
|
||||
"Drop your files to upload" : "Suelta los ficheros pa xubilos",
|
||||
"Add card" : "Amestar una tarxeta",
|
||||
"Archived cards" : "Tarxetes archivaes",
|
||||
"Add list" : "Amestar una llista",
|
||||
"List name" : "Nome de la llista",
|
||||
"Open" : "Abrir",
|
||||
"Completed" : "Completáu",
|
||||
"Next 24 hours" : "Les próximes 24 hores",
|
||||
"Next 7 days" : "Los próximos 7 díes",
|
||||
"Next 30 days" : "Los próximos 30 díes",
|
||||
"Open details" : "Abrir los detalles",
|
||||
"Details" : "Detalles",
|
||||
"Sharing" : "Comparticiñon",
|
||||
"Tags" : "Etiquetes",
|
||||
"Deleted items" : "Elementos desaniciaos",
|
||||
"Activity" : "Actividá",
|
||||
"Deleted lists" : "Llistes desaniciaes",
|
||||
"Undo" : "Desfacer",
|
||||
"Deleted cards" : "Tarxetes desaniciaes",
|
||||
"(Group)" : "(Grupu)",
|
||||
"(Team)" : "(Equipu)",
|
||||
"Can edit" : "Pue editar",
|
||||
"Owner" : "Propietariu",
|
||||
"Delete" : "Desaniciar",
|
||||
"Transfer" : "Tresferir",
|
||||
"Edit list title" : "Editar el títulu de la llista",
|
||||
"Archive all cards" : "Archivar toles carpetes",
|
||||
"Unarchive all cards" : "Desarchivar toles tarxetes",
|
||||
"Delete list" : "Desaniciar la llista",
|
||||
"Archive all cards in this list" : "Archivar toles tarxetes d'esta llista",
|
||||
"Unarchive all cards in this list" : "Desarchivar toles tarxetes d'esta llista",
|
||||
"Add a new card" : "Amestar una tarxeta nueva",
|
||||
"Card name" : "Nome de la tarxeta",
|
||||
"List deleted" : "Desanicióse la llista",
|
||||
"Edit" : "Editar",
|
||||
"Add a new tag" : "Amestar una etiqueta nueva",
|
||||
"Members" : "Miembros",
|
||||
"Show in Files" : "Amosar en Ficheros",
|
||||
"Download" : "Baxar",
|
||||
"Invalid path selected" : "Seleicionóse un camín inválidu",
|
||||
"Comments" : "Comentarios",
|
||||
"Modified" : "Modificóse",
|
||||
"The title cannot be empty." : "El títulu nun pue tar baleru",
|
||||
"No comments yet. Begin the discussion!" : "Nun hai nengún comentariu. ¡Comienza'l discutiniu!",
|
||||
"Failed to load comments" : "Nun se puen cargar los comentarios",
|
||||
"Save" : "Guardar",
|
||||
"The comment cannot be empty." : "El comentariu nun pue tar baleru.",
|
||||
"In reply to" : "En rempuesta a",
|
||||
"Reply" : "Responder",
|
||||
"Update" : "Anovar",
|
||||
"Created:" : "Creóse'l",
|
||||
"Description" : "Descripción",
|
||||
"(Unsaved)" : "(ensin guardar)",
|
||||
"(Saving…)" : "(Guardando…)",
|
||||
"Formatting help" : "Ayuda del formatu",
|
||||
"Edit description" : "Editar la descripción",
|
||||
"View description" : "Ver la descripción",
|
||||
"Not completed" : "Nun se completó",
|
||||
"Archive card" : "Archivar la tarxeta",
|
||||
"(group)" : "(grupu)",
|
||||
"Next week – {timeLocale}" : "La próxima selmana – {timeLocale}",
|
||||
"Mark as done" : "Marcar como fecha",
|
||||
"Delete card" : "Desaniciar la tarxeta",
|
||||
"seconds ago" : "hai segundos",
|
||||
"Keyboard shortcuts" : "Atayos del tecláu",
|
||||
"Keyboard shortcut" : "Atayos del tecláu",
|
||||
"Action" : "Aición",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Guetar",
|
||||
"Shared with you" : "Compartióse contigo",
|
||||
"All cards" : "Toles tarxetes",
|
||||
"No notifications" : "Nun hai nengún avisu",
|
||||
"No reminder" : "Nun hai nengún recordatoriu",
|
||||
"An error occurred" : "Prodúxose un error",
|
||||
"Today" : "Güei",
|
||||
"Tomorrow" : "Mañana",
|
||||
"No results found" : "Nun s'atopó nengún resultáu",
|
||||
"This weekend – {timeLocale}" : "Esta fin de selmana – {timeLocale}",
|
||||
"Close" : "Zarrar",
|
||||
"Tomorrow – {timeLocale}" : "Mañana – {timeLocale}",
|
||||
"Message from {author} in {conversationName}" : "Mensaxe de {author} en {conversationName}",
|
||||
"Error creating the share" : "Hebo un error al crear la compartición",
|
||||
"Share" : "Compartir",
|
||||
"Timeline" : "Llinia de tiempu",
|
||||
"Next week" : "La selmana que vien",
|
||||
"Next month" : "Mes siguiente"
|
||||
"Timeline" : "Llinia de tiempu"
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
@@ -1,17 +1,9 @@
|
||||
{ "translations": {
|
||||
"Deck" : "Tarxeteru",
|
||||
"Upcoming cards" : "Tarxetes próximes",
|
||||
"Load more" : "Cargar más",
|
||||
"Personal" : "Personal",
|
||||
"Deck board" : "Mesa de tarxetes",
|
||||
"%s on %s" : "%s n %s",
|
||||
"Action needed" : "Aición necesaria",
|
||||
"copy" : "copia",
|
||||
"To do" : "Xera pendiente",
|
||||
"Done" : "Fecho",
|
||||
"Example Task 3" : "Xera d'exemplu 3",
|
||||
"Example Task 2" : "Xera d'exemplu 2",
|
||||
"Example Task 1" : "Xera d'exemplu 1",
|
||||
"The file was uploaded" : "Xubióse'l ficheru",
|
||||
"The uploaded file exceeds the upload_max_filesize directive in php.ini" : "El ficheru xubíu supera la direutiva «upload_max_filesize» del ficheru php.ini",
|
||||
"The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "El ficheru xubíu supera la direutiva «MAX_FILE_SIZE» que s'especificó nel formulariu HTML",
|
||||
@@ -19,96 +11,48 @@
|
||||
"Missing a temporary folder" : "Falta una carpeta temporal",
|
||||
"Could not write file to disk" : "Nun se pudo escribir el ficheru nel discu",
|
||||
"A PHP extension stopped the file upload" : "Una estensión PHP paró la xuba de ficheros",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "Nun se xubió nengún ficheru o'l tamañu del ficheru supera'l máximu de %s",
|
||||
"Invalid date, date format must be YYYY-MM-DD" : "La data ye inválida, el so formatu ha ser AAAA-MM-DD",
|
||||
"Move card" : "Mover la tarxeta",
|
||||
"Cancel" : "Encaboxar",
|
||||
"File already exists" : "El ficheru yá esiste",
|
||||
"Drop your files to upload" : "Suelta los ficheros pa xubilos",
|
||||
"Add card" : "Amestar una tarxeta",
|
||||
"Archived cards" : "Tarxetes archivaes",
|
||||
"Add list" : "Amestar una llista",
|
||||
"List name" : "Nome de la llista",
|
||||
"Open" : "Abrir",
|
||||
"Completed" : "Completáu",
|
||||
"Next 24 hours" : "Les próximes 24 hores",
|
||||
"Next 7 days" : "Los próximos 7 díes",
|
||||
"Next 30 days" : "Los próximos 30 díes",
|
||||
"Open details" : "Abrir los detalles",
|
||||
"Details" : "Detalles",
|
||||
"Sharing" : "Comparticiñon",
|
||||
"Tags" : "Etiquetes",
|
||||
"Deleted items" : "Elementos desaniciaos",
|
||||
"Activity" : "Actividá",
|
||||
"Deleted lists" : "Llistes desaniciaes",
|
||||
"Undo" : "Desfacer",
|
||||
"Deleted cards" : "Tarxetes desaniciaes",
|
||||
"(Group)" : "(Grupu)",
|
||||
"(Team)" : "(Equipu)",
|
||||
"Can edit" : "Pue editar",
|
||||
"Owner" : "Propietariu",
|
||||
"Delete" : "Desaniciar",
|
||||
"Transfer" : "Tresferir",
|
||||
"Edit list title" : "Editar el títulu de la llista",
|
||||
"Archive all cards" : "Archivar toles carpetes",
|
||||
"Unarchive all cards" : "Desarchivar toles tarxetes",
|
||||
"Delete list" : "Desaniciar la llista",
|
||||
"Archive all cards in this list" : "Archivar toles tarxetes d'esta llista",
|
||||
"Unarchive all cards in this list" : "Desarchivar toles tarxetes d'esta llista",
|
||||
"Add a new card" : "Amestar una tarxeta nueva",
|
||||
"Card name" : "Nome de la tarxeta",
|
||||
"List deleted" : "Desanicióse la llista",
|
||||
"Edit" : "Editar",
|
||||
"Add a new tag" : "Amestar una etiqueta nueva",
|
||||
"Members" : "Miembros",
|
||||
"Show in Files" : "Amosar en Ficheros",
|
||||
"Download" : "Baxar",
|
||||
"Invalid path selected" : "Seleicionóse un camín inválidu",
|
||||
"Comments" : "Comentarios",
|
||||
"Modified" : "Modificóse",
|
||||
"The title cannot be empty." : "El títulu nun pue tar baleru",
|
||||
"No comments yet. Begin the discussion!" : "Nun hai nengún comentariu. ¡Comienza'l discutiniu!",
|
||||
"Failed to load comments" : "Nun se puen cargar los comentarios",
|
||||
"Save" : "Guardar",
|
||||
"The comment cannot be empty." : "El comentariu nun pue tar baleru.",
|
||||
"In reply to" : "En rempuesta a",
|
||||
"Reply" : "Responder",
|
||||
"Update" : "Anovar",
|
||||
"Created:" : "Creóse'l",
|
||||
"Description" : "Descripción",
|
||||
"(Unsaved)" : "(ensin guardar)",
|
||||
"(Saving…)" : "(Guardando…)",
|
||||
"Formatting help" : "Ayuda del formatu",
|
||||
"Edit description" : "Editar la descripción",
|
||||
"View description" : "Ver la descripción",
|
||||
"Not completed" : "Nun se completó",
|
||||
"Archive card" : "Archivar la tarxeta",
|
||||
"(group)" : "(grupu)",
|
||||
"Next week – {timeLocale}" : "La próxima selmana – {timeLocale}",
|
||||
"Mark as done" : "Marcar como fecha",
|
||||
"Delete card" : "Desaniciar la tarxeta",
|
||||
"seconds ago" : "hai segundos",
|
||||
"Keyboard shortcuts" : "Atayos del tecláu",
|
||||
"Keyboard shortcut" : "Atayos del tecláu",
|
||||
"Action" : "Aición",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Guetar",
|
||||
"Shared with you" : "Compartióse contigo",
|
||||
"All cards" : "Toles tarxetes",
|
||||
"No notifications" : "Nun hai nengún avisu",
|
||||
"No reminder" : "Nun hai nengún recordatoriu",
|
||||
"An error occurred" : "Prodúxose un error",
|
||||
"Today" : "Güei",
|
||||
"Tomorrow" : "Mañana",
|
||||
"No results found" : "Nun s'atopó nengún resultáu",
|
||||
"This weekend – {timeLocale}" : "Esta fin de selmana – {timeLocale}",
|
||||
"Close" : "Zarrar",
|
||||
"Tomorrow – {timeLocale}" : "Mañana – {timeLocale}",
|
||||
"Message from {author} in {conversationName}" : "Mensaxe de {author} en {conversationName}",
|
||||
"Error creating the share" : "Hebo un error al crear la compartición",
|
||||
"Share" : "Compartir",
|
||||
"Timeline" : "Llinia de tiempu",
|
||||
"Next week" : "La selmana que vien",
|
||||
"Next month" : "Mes siguiente"
|
||||
"Timeline" : "Llinia de tiempu"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
@@ -322,7 +322,9 @@ OC.L10N.register(
|
||||
"Share board with a user, group or circle …" : "Споделяне на таблото с потребител, група или кръг ...",
|
||||
"Searching for users, groups and circles …" : "Търсене за потребители, групи и кръгове ...",
|
||||
"(Circle)" : "(Кръг)",
|
||||
"Assign to users" : "Зачисляване към потребители",
|
||||
"Assign to users/groups/circles" : "Зачисляване към потребители/групи/кръгове",
|
||||
"Due date" : "Крайна дата",
|
||||
"Next week" : "Следваща седмица",
|
||||
"Next month" : "Следващия месец",
|
||||
"List is empty" : "Списъкът е празен",
|
||||
|
||||
@@ -320,7 +320,9 @@
|
||||
"Share board with a user, group or circle …" : "Споделяне на таблото с потребител, група или кръг ...",
|
||||
"Searching for users, groups and circles …" : "Търсене за потребители, групи и кръгове ...",
|
||||
"(Circle)" : "(Кръг)",
|
||||
"Assign to users" : "Зачисляване към потребители",
|
||||
"Assign to users/groups/circles" : "Зачисляване към потребители/групи/кръгове",
|
||||
"Due date" : "Крайна дата",
|
||||
"Next week" : "Следваща седмица",
|
||||
"Next month" : "Следващия месец",
|
||||
"List is empty" : "Списъкът е празен",
|
||||
|
||||
@@ -370,7 +370,9 @@ OC.L10N.register(
|
||||
"Share board with a user, group or circle …" : "Compartir tauler amb un usuari, grup o cercle …",
|
||||
"Searching for users, groups and circles …" : "Buscant usuaris, grups i cercles …",
|
||||
"(Circle)" : "(Cercle)",
|
||||
"Assign to users" : "Assignació als usuaris",
|
||||
"Assign to users/groups/circles" : "Assignació a usuaris/grups/cercles",
|
||||
"Due date" : "Data de caducitat",
|
||||
"Next week" : "Setmana següent",
|
||||
"Next month" : "Mes següent",
|
||||
"List is empty" : "La llista és buida",
|
||||
|
||||
@@ -368,7 +368,9 @@
|
||||
"Share board with a user, group or circle …" : "Compartir tauler amb un usuari, grup o cercle …",
|
||||
"Searching for users, groups and circles …" : "Buscant usuaris, grups i cercles …",
|
||||
"(Circle)" : "(Cercle)",
|
||||
"Assign to users" : "Assignació als usuaris",
|
||||
"Assign to users/groups/circles" : "Assignació a usuaris/grups/cercles",
|
||||
"Due date" : "Data de caducitat",
|
||||
"Next week" : "Setmana següent",
|
||||
"Next month" : "Mes següent",
|
||||
"List is empty" : "La llista és buida",
|
||||
|
||||
@@ -367,7 +367,9 @@ OC.L10N.register(
|
||||
"Share board with a user, group or circle …" : "Sdílet tabuli s uživatelem, skupinou nebo okruhem…",
|
||||
"Searching for users, groups and circles …" : "Hledání v uživatelích, skupinách a okruzích…",
|
||||
"(Circle)" : "(Okruh)",
|
||||
"Assign to users" : "Přiřadit k uživatelům",
|
||||
"Assign to users/groups/circles" : "Přiřadit uživatelům/skupinám/okruhům",
|
||||
"Due date" : "Termín",
|
||||
"Next week" : "Příští týden",
|
||||
"Next month" : "Příští měsíc",
|
||||
"List is empty" : "Seznam je prázdný",
|
||||
|
||||
@@ -365,7 +365,9 @@
|
||||
"Share board with a user, group or circle …" : "Sdílet tabuli s uživatelem, skupinou nebo okruhem…",
|
||||
"Searching for users, groups and circles …" : "Hledání v uživatelích, skupinách a okruzích…",
|
||||
"(Circle)" : "(Okruh)",
|
||||
"Assign to users" : "Přiřadit k uživatelům",
|
||||
"Assign to users/groups/circles" : "Přiřadit uživatelům/skupinám/okruhům",
|
||||
"Due date" : "Termín",
|
||||
"Next week" : "Příští týden",
|
||||
"Next month" : "Příští měsíc",
|
||||
"List is empty" : "Seznam je prázdný",
|
||||
|
||||
@@ -109,7 +109,7 @@ OC.L10N.register(
|
||||
"Board not found" : "Tavle ikke fundet.",
|
||||
"Create a new list to add cards to this board" : "Opret en ny kolonne for at tilføje kort til denne tavle ",
|
||||
"Sharing" : "Deling",
|
||||
"Tags" : "Tags",
|
||||
"Tags" : "Mærkat",
|
||||
"Deleted items" : "Slettede objekter",
|
||||
"Activity" : "Aktivitet",
|
||||
"Deleted lists" : "Slettede kolonner",
|
||||
@@ -235,7 +235,9 @@ OC.L10N.register(
|
||||
"Share board with a user, group or circle …" : "Del tavle med en bruger, gruppe eller cirkel ...",
|
||||
"Searching for users, groups and circles …" : "Leder efter brugere, grupper og cirkler ...",
|
||||
"(Circle)" : "(Cirkel)",
|
||||
"Assign to users" : "Tildel til brugere",
|
||||
"Assign to users/groups/circles" : "Tildel til brugere/grupper/cirkler",
|
||||
"Due date" : "Forfaldsdato",
|
||||
"Next week" : "Næste uge",
|
||||
"Next month" : "Næste måned",
|
||||
"Limit deck usage of groups" : "Begræns Deck brug til grupper",
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
"Board not found" : "Tavle ikke fundet.",
|
||||
"Create a new list to add cards to this board" : "Opret en ny kolonne for at tilføje kort til denne tavle ",
|
||||
"Sharing" : "Deling",
|
||||
"Tags" : "Tags",
|
||||
"Tags" : "Mærkat",
|
||||
"Deleted items" : "Slettede objekter",
|
||||
"Activity" : "Aktivitet",
|
||||
"Deleted lists" : "Slettede kolonner",
|
||||
@@ -233,7 +233,9 @@
|
||||
"Share board with a user, group or circle …" : "Del tavle med en bruger, gruppe eller cirkel ...",
|
||||
"Searching for users, groups and circles …" : "Leder efter brugere, grupper og cirkler ...",
|
||||
"(Circle)" : "(Cirkel)",
|
||||
"Assign to users" : "Tildel til brugere",
|
||||
"Assign to users/groups/circles" : "Tildel til brugere/grupper/cirkler",
|
||||
"Due date" : "Forfaldsdato",
|
||||
"Next week" : "Næste uge",
|
||||
"Next month" : "Næste måned",
|
||||
"Limit deck usage of groups" : "Begræns Deck brug til grupper",
|
||||
|
||||
@@ -379,7 +379,9 @@ OC.L10N.register(
|
||||
"Share board with a user, group or circle …" : "Board mit Benutzer, Gruppe oder Kreis teilen …",
|
||||
"Searching for users, groups and circles …" : "Suche nach Benutzern, Gruppen und Kreisen …",
|
||||
"(Circle)" : "(Kreis)",
|
||||
"Assign to users" : "Benutzern zuweisen",
|
||||
"Assign to users/groups/circles" : "An Benutzer, Gruppen oder Kreise zuweisen",
|
||||
"Due date" : "Fälligkeitsdatum",
|
||||
"Next week" : "Nächste Woche",
|
||||
"Next month" : "Nächster Monat",
|
||||
"List is empty" : "Liste ist leer",
|
||||
|
||||
@@ -377,7 +377,9 @@
|
||||
"Share board with a user, group or circle …" : "Board mit Benutzer, Gruppe oder Kreis teilen …",
|
||||
"Searching for users, groups and circles …" : "Suche nach Benutzern, Gruppen und Kreisen …",
|
||||
"(Circle)" : "(Kreis)",
|
||||
"Assign to users" : "Benutzern zuweisen",
|
||||
"Assign to users/groups/circles" : "An Benutzer, Gruppen oder Kreise zuweisen",
|
||||
"Due date" : "Fälligkeitsdatum",
|
||||
"Next week" : "Nächste Woche",
|
||||
"Next month" : "Nächster Monat",
|
||||
"List is empty" : "Liste ist leer",
|
||||
|
||||
@@ -379,7 +379,9 @@ OC.L10N.register(
|
||||
"Share board with a user, group or circle …" : "Board mit Benutzer, Gruppe oder Kreis teilen…",
|
||||
"Searching for users, groups and circles …" : "Suche nach Benutzern, Gruppen und Kreisen …",
|
||||
"(Circle)" : "(Kreis)",
|
||||
"Assign to users" : "Benutzern zuweisen",
|
||||
"Assign to users/groups/circles" : "An Benutzer, Gruppen oder Kreise zuweisen",
|
||||
"Due date" : "Fälligkeitsdatum",
|
||||
"Next week" : "Nächste Woche",
|
||||
"Next month" : "Nächsten Monat",
|
||||
"List is empty" : "Liste ist leer",
|
||||
|
||||
@@ -377,7 +377,9 @@
|
||||
"Share board with a user, group or circle …" : "Board mit Benutzer, Gruppe oder Kreis teilen…",
|
||||
"Searching for users, groups and circles …" : "Suche nach Benutzern, Gruppen und Kreisen …",
|
||||
"(Circle)" : "(Kreis)",
|
||||
"Assign to users" : "Benutzern zuweisen",
|
||||
"Assign to users/groups/circles" : "An Benutzer, Gruppen oder Kreise zuweisen",
|
||||
"Due date" : "Fälligkeitsdatum",
|
||||
"Next week" : "Nächste Woche",
|
||||
"Next month" : "Nächsten Monat",
|
||||
"List is empty" : "Liste ist leer",
|
||||
|
||||
52
l10n/el.js
52
l10n/el.js
@@ -65,11 +65,7 @@ OC.L10N.register(
|
||||
"{user} has commented on card {card}" : "Ο/η {user} σχολίασε την καρτέλα {card}",
|
||||
"Deck" : "Deck",
|
||||
"Changes in the <strong>Deck app</strong>" : "Αλλαγές στην <strong>εφαρμογή Deck</strong>",
|
||||
"A <strong>board, list or card</strong> was changed" : "Ένας <strong>πίνακας, λίστα ή κάρτα</strong> άλλαξε",
|
||||
"A <strong>comment</strong> was created on a card" : "Ένα <strong>σχόλιο</strong> δημιουργήθηκε σε μια καρτέλα",
|
||||
"A <strong>card description</strong> has been changed" : "Μια <strong>περιγραφή κάρτας</strong> έχει αλλάξει",
|
||||
"Cards due today" : "Κάρτες που λήγουν σήμερα",
|
||||
"Cards due tomorrow" : "Κάρτες που λήγουν αύριο",
|
||||
"Upcoming cards" : "Επερχόμενες καρτέλες",
|
||||
"Load more" : "Φόρτωση περισσότερων",
|
||||
"Personal" : "Προσωπικά",
|
||||
@@ -152,12 +148,9 @@ OC.L10N.register(
|
||||
"Next 30 days" : "Επόμενες 30 ημέρες",
|
||||
"No due date" : "Χωρίς ημερομηνία λήξης",
|
||||
"Clear filter" : "Εκκαθάριση φίλτρου",
|
||||
"View Modes" : "Τρόποι προβολής",
|
||||
"Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν",
|
||||
"Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν",
|
||||
"Toggle compact mode" : "Εναλλαγή λειτουργίας μικρού μεγέθους",
|
||||
"Hide card cover images" : "Απόκρυψη εικόνων εξωφύλλου καρτών",
|
||||
"Show card cover images" : "Εμφάνιση εικόνων εξωφύλλου καρτών",
|
||||
"Open details" : "Άνοιγμα λεπτομερειών",
|
||||
"Details" : "Λεπτομέρειες",
|
||||
"Currently present people" : "Παρόντες αυτή τη στιγμή",
|
||||
@@ -174,7 +167,6 @@ OC.L10N.register(
|
||||
"No participants found" : "Δε βρέθηκαν συμμετέχοντες",
|
||||
"Board owner" : "Κάτοχος πίνακα",
|
||||
"(Group)" : "(Ομάδα)",
|
||||
"(Team)" : "(Ομάδα)",
|
||||
"Can edit" : "Μπορεί να επεξεργαστεί",
|
||||
"Can share" : "Μπορεί να διαμοιράσει",
|
||||
"Can manage" : "Μπορεί να διαχειριστεί",
|
||||
@@ -201,7 +193,6 @@ OC.L10N.register(
|
||||
"Board name" : "Όνομα πίνακα",
|
||||
"Members" : "Μέλη",
|
||||
"Assign a user to this card…" : "Ανάθεση χρήστη στην καρτέλα...",
|
||||
"Select a user to assign to this card…" : "Επιλέξτε έναν χρήστη για να του αναθέσετε αυτή την κάρτα...",
|
||||
"Upload new files" : "Ανεβάστε νέα αρχεία",
|
||||
"Share from Files" : "Κοινή χρήση από Αρχεία",
|
||||
"Pending share" : "Κοινή χρήση σε εκκρεμότητα",
|
||||
@@ -239,70 +230,35 @@ OC.L10N.register(
|
||||
"Add Attachment" : "Προσθήκη συνημμένου",
|
||||
"Write a description …" : "Γράψτε μια περιγραφή…",
|
||||
"Choose attachment" : "Επιλογή συνημμένου",
|
||||
"Assign a due date to this card…" : "Ορίστε μια ημερομηνία λήξης σε αυτή την κάρτα...",
|
||||
"Set a due date" : "Καθορίστε ημερομηνίας λήξης",
|
||||
"Add due date" : "Προσθήκη ημερομηνίας λήξης",
|
||||
"Choose a date" : "Επιλέξτε ημερομηνίας",
|
||||
"Remove due date" : "Αφαίρεση ημερομηνίας λήξης",
|
||||
"Due at:" : "Λήγει στις:",
|
||||
"Not completed" : "Μη ολοκληρωμένο",
|
||||
"Unarchive card" : "Αναίρεση αρχειοθέτησης καρτέλας",
|
||||
"Archive card" : "Αρχειοθέτηση καρτέλας",
|
||||
"Select Date" : "Επιλέξτε ημερομηνία",
|
||||
"Set due date for later today" : "Ορίστε ημερομηνία λήξης για αργότερα σήμερα",
|
||||
"Set due date for tomorrow" : "Ορίστε ημερομηνία λήξης για αύριο",
|
||||
"Set due date for this weekend" : "Ορίστε ημερομηνία λήξης για αυτό το Σαββατοκύριακο",
|
||||
"Set due date for next week" : "Ορίστε ημερομηνία λήξης για την επόμενη εβδομάδα",
|
||||
"Assign a tag to this card…" : "Ορίστε μια ετικέτα σε αυτήν την καρτέλα...",
|
||||
"Select or create a tag…" : "Επιλέξτε ή δημιουργήστε μια ετικέτα...",
|
||||
"Create a new tag:" : "Δημιουργήστε νέα ετικέτα",
|
||||
"(group)" : "(ομάδα)",
|
||||
"Next week – {timeLocale}" : "Επόμενη εβδομάδα – {timeLocale}",
|
||||
"Todo items" : "Στοιχεία todo",
|
||||
"{count} comments, {unread} unread" : "{count} σχόλια, {unread} μη αναγνωσμένα",
|
||||
"Edit card title" : "Επεξεργασία τίτλου κάρτας",
|
||||
"Card details" : "Λεπτομέρειες καρτέλας",
|
||||
"Assign to me" : "Ανάθεση σε εμένα",
|
||||
"Unassign myself" : "Αποδέσμευσή μου",
|
||||
"Mark as not done" : "Σήμανση ως ολοκληρωμένου",
|
||||
"Mark as done" : "Σήμανση ως ολοκληρωμένου",
|
||||
"Delete card" : "Διαγραφή καρτέλας",
|
||||
"Card deleted" : "Η καρτέλα διαγράφηκε",
|
||||
"seconds ago" : " δευτερόλεπτα πριν ",
|
||||
"Keyboard shortcuts" : "Συντομεύσεις πληκτρολογίου",
|
||||
"Boost your productivity using Deck with keyboard shortcuts." : "Αυξήστε την παραγωγικότητά σας στο Deck χρησιμοποιώντας συντομεύσεις πληκτρολογίου.",
|
||||
"Board actions" : "Ενέργειες πίνακα",
|
||||
"Keyboard shortcut" : "Συντόμευση πλητρολογίου",
|
||||
"Action" : "Ενέργεια",
|
||||
"Shift" : "Shift",
|
||||
"Scroll" : "Κύλιση",
|
||||
"Scroll sideways" : "Κύλιση οριζόντια",
|
||||
"Navigate between cards" : "Πλοήγηση μεταξύ καρτών",
|
||||
"Esc" : "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" : "Enter",
|
||||
"Space" : "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" : "Διαμοιρασμένα μαζί σας",
|
||||
"Deck settings" : "Ρυθμίσεις Deck",
|
||||
"Use bigger card view" : "Χρησιμοποιήστε μεγαλύτερη προβολή καρτέλας",
|
||||
"Show boards in calendar/tasks" : "Εμφάνιση πινάκων στο ημερολόγιο / εργασίες",
|
||||
"Limit board creation to some groups" : "Περιορισμός της δημιουργίας πινάκων σε ορισμένες ομάδες",
|
||||
"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." : "Οι χρήστες εκτός αυτών των ομάδων δεν θα μπορούν να δημιουργούν τους δικούς τους πίνακες, αλλά θα μπορούν να εργάζονται σε πίνακες που τους έχουν διαμοιραστεί.",
|
||||
"Board details" : "Λεπτομέριες πίνακα",
|
||||
"Edit board" : "Επεξεργασία πίνακα",
|
||||
"Clone board" : "Κλώνος πίνακα",
|
||||
@@ -328,7 +284,6 @@ OC.L10N.register(
|
||||
"No due" : "Χωρίς λήξη",
|
||||
"Search for {searchQuery} in all boards" : "Αναζήτηση για {searchQuery} σε όλους τους πίνακες",
|
||||
"No results found" : "Δεν βρέθηκαν αποτελέσματα",
|
||||
"This weekend – {timeLocale}" : "Αυτή την εβδομάδα – {timeLocale}",
|
||||
"Deck board {name}\n* Last modified on {lastMod}" : "Πίνακας Deck {name}\n* Τελευταία τροποποίηση στις {lastMod}",
|
||||
"{stack} in {board}" : "{stack} στο {board}",
|
||||
"Click to expand description" : "Κλικ για επέκταση περιγραφής",
|
||||
@@ -343,13 +298,8 @@ OC.L10N.register(
|
||||
"Open card" : "Άνοιγμα καρτέλας",
|
||||
"Close" : "Κλείσιμο",
|
||||
"No upcoming cards" : "Δεν υπάρχουν επερχόμενες καρτέλες",
|
||||
"upcoming cards today" : "επερχόμενες κάρτες σήμερα",
|
||||
"upcoming cards tomorrow" : "επερχόμενες κάρτες αύριο",
|
||||
"upcoming cards" : "επερχόμενες καρτέλες",
|
||||
"New card" : "Νέα κάρτα",
|
||||
"Due on {date}" : "Προθεσμία στις {date}",
|
||||
"Tomorrow – {timeLocale}" : "Αύριο – {timeLocale}",
|
||||
"Later today – {timeLocale}" : "Αργότερα σήμερα – {timeLocale}",
|
||||
"Link to a board" : "Σύνδεσμος στον πίνακα",
|
||||
"Link to a card" : "Σύνδεσμος σε καρτέλα",
|
||||
"Create a card" : "Δημιουργία καρτέλας",
|
||||
@@ -366,7 +316,9 @@ OC.L10N.register(
|
||||
"Share board with a user, group or circle …" : "Διαμοιράστε τον πίνακα με χρήστη, ομάδα ή κύκλο ...",
|
||||
"Searching for users, groups and circles …" : "Αναζήτηση χρηστών, ομάδων και κύκλων…",
|
||||
"(Circle)" : "(Κύκλος)",
|
||||
"Assign to users" : "Ανάθεση σε χρήστες",
|
||||
"Assign to users/groups/circles" : "Ανάθεση σε χρήστες/ομάδες/κύκλους",
|
||||
"Due date" : "Ημερομηνία λήξης",
|
||||
"Next week" : "Επόμενη εβδομάδα",
|
||||
"Next month" : "Επόμενος μήνας",
|
||||
"List is empty" : "Η λίστα είναι κενή",
|
||||
|
||||
52
l10n/el.json
52
l10n/el.json
@@ -63,11 +63,7 @@
|
||||
"{user} has commented on card {card}" : "Ο/η {user} σχολίασε την καρτέλα {card}",
|
||||
"Deck" : "Deck",
|
||||
"Changes in the <strong>Deck app</strong>" : "Αλλαγές στην <strong>εφαρμογή Deck</strong>",
|
||||
"A <strong>board, list or card</strong> was changed" : "Ένας <strong>πίνακας, λίστα ή κάρτα</strong> άλλαξε",
|
||||
"A <strong>comment</strong> was created on a card" : "Ένα <strong>σχόλιο</strong> δημιουργήθηκε σε μια καρτέλα",
|
||||
"A <strong>card description</strong> has been changed" : "Μια <strong>περιγραφή κάρτας</strong> έχει αλλάξει",
|
||||
"Cards due today" : "Κάρτες που λήγουν σήμερα",
|
||||
"Cards due tomorrow" : "Κάρτες που λήγουν αύριο",
|
||||
"Upcoming cards" : "Επερχόμενες καρτέλες",
|
||||
"Load more" : "Φόρτωση περισσότερων",
|
||||
"Personal" : "Προσωπικά",
|
||||
@@ -150,12 +146,9 @@
|
||||
"Next 30 days" : "Επόμενες 30 ημέρες",
|
||||
"No due date" : "Χωρίς ημερομηνία λήξης",
|
||||
"Clear filter" : "Εκκαθάριση φίλτρου",
|
||||
"View Modes" : "Τρόποι προβολής",
|
||||
"Hide archived cards" : "Απόκρυψη καρτελών που αρχειοθετήθηκαν",
|
||||
"Show archived cards" : "Εμφάνιση καρτελών που αρχειοθετήθηκαν",
|
||||
"Toggle compact mode" : "Εναλλαγή λειτουργίας μικρού μεγέθους",
|
||||
"Hide card cover images" : "Απόκρυψη εικόνων εξωφύλλου καρτών",
|
||||
"Show card cover images" : "Εμφάνιση εικόνων εξωφύλλου καρτών",
|
||||
"Open details" : "Άνοιγμα λεπτομερειών",
|
||||
"Details" : "Λεπτομέρειες",
|
||||
"Currently present people" : "Παρόντες αυτή τη στιγμή",
|
||||
@@ -172,7 +165,6 @@
|
||||
"No participants found" : "Δε βρέθηκαν συμμετέχοντες",
|
||||
"Board owner" : "Κάτοχος πίνακα",
|
||||
"(Group)" : "(Ομάδα)",
|
||||
"(Team)" : "(Ομάδα)",
|
||||
"Can edit" : "Μπορεί να επεξεργαστεί",
|
||||
"Can share" : "Μπορεί να διαμοιράσει",
|
||||
"Can manage" : "Μπορεί να διαχειριστεί",
|
||||
@@ -199,7 +191,6 @@
|
||||
"Board name" : "Όνομα πίνακα",
|
||||
"Members" : "Μέλη",
|
||||
"Assign a user to this card…" : "Ανάθεση χρήστη στην καρτέλα...",
|
||||
"Select a user to assign to this card…" : "Επιλέξτε έναν χρήστη για να του αναθέσετε αυτή την κάρτα...",
|
||||
"Upload new files" : "Ανεβάστε νέα αρχεία",
|
||||
"Share from Files" : "Κοινή χρήση από Αρχεία",
|
||||
"Pending share" : "Κοινή χρήση σε εκκρεμότητα",
|
||||
@@ -237,70 +228,35 @@
|
||||
"Add Attachment" : "Προσθήκη συνημμένου",
|
||||
"Write a description …" : "Γράψτε μια περιγραφή…",
|
||||
"Choose attachment" : "Επιλογή συνημμένου",
|
||||
"Assign a due date to this card…" : "Ορίστε μια ημερομηνία λήξης σε αυτή την κάρτα...",
|
||||
"Set a due date" : "Καθορίστε ημερομηνίας λήξης",
|
||||
"Add due date" : "Προσθήκη ημερομηνίας λήξης",
|
||||
"Choose a date" : "Επιλέξτε ημερομηνίας",
|
||||
"Remove due date" : "Αφαίρεση ημερομηνίας λήξης",
|
||||
"Due at:" : "Λήγει στις:",
|
||||
"Not completed" : "Μη ολοκληρωμένο",
|
||||
"Unarchive card" : "Αναίρεση αρχειοθέτησης καρτέλας",
|
||||
"Archive card" : "Αρχειοθέτηση καρτέλας",
|
||||
"Select Date" : "Επιλέξτε ημερομηνία",
|
||||
"Set due date for later today" : "Ορίστε ημερομηνία λήξης για αργότερα σήμερα",
|
||||
"Set due date for tomorrow" : "Ορίστε ημερομηνία λήξης για αύριο",
|
||||
"Set due date for this weekend" : "Ορίστε ημερομηνία λήξης για αυτό το Σαββατοκύριακο",
|
||||
"Set due date for next week" : "Ορίστε ημερομηνία λήξης για την επόμενη εβδομάδα",
|
||||
"Assign a tag to this card…" : "Ορίστε μια ετικέτα σε αυτήν την καρτέλα...",
|
||||
"Select or create a tag…" : "Επιλέξτε ή δημιουργήστε μια ετικέτα...",
|
||||
"Create a new tag:" : "Δημιουργήστε νέα ετικέτα",
|
||||
"(group)" : "(ομάδα)",
|
||||
"Next week – {timeLocale}" : "Επόμενη εβδομάδα – {timeLocale}",
|
||||
"Todo items" : "Στοιχεία todo",
|
||||
"{count} comments, {unread} unread" : "{count} σχόλια, {unread} μη αναγνωσμένα",
|
||||
"Edit card title" : "Επεξεργασία τίτλου κάρτας",
|
||||
"Card details" : "Λεπτομέρειες καρτέλας",
|
||||
"Assign to me" : "Ανάθεση σε εμένα",
|
||||
"Unassign myself" : "Αποδέσμευσή μου",
|
||||
"Mark as not done" : "Σήμανση ως ολοκληρωμένου",
|
||||
"Mark as done" : "Σήμανση ως ολοκληρωμένου",
|
||||
"Delete card" : "Διαγραφή καρτέλας",
|
||||
"Card deleted" : "Η καρτέλα διαγράφηκε",
|
||||
"seconds ago" : " δευτερόλεπτα πριν ",
|
||||
"Keyboard shortcuts" : "Συντομεύσεις πληκτρολογίου",
|
||||
"Boost your productivity using Deck with keyboard shortcuts." : "Αυξήστε την παραγωγικότητά σας στο Deck χρησιμοποιώντας συντομεύσεις πληκτρολογίου.",
|
||||
"Board actions" : "Ενέργειες πίνακα",
|
||||
"Keyboard shortcut" : "Συντόμευση πλητρολογίου",
|
||||
"Action" : "Ενέργεια",
|
||||
"Shift" : "Shift",
|
||||
"Scroll" : "Κύλιση",
|
||||
"Scroll sideways" : "Κύλιση οριζόντια",
|
||||
"Navigate between cards" : "Πλοήγηση μεταξύ καρτών",
|
||||
"Esc" : "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" : "Enter",
|
||||
"Space" : "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" : "Διαμοιρασμένα μαζί σας",
|
||||
"Deck settings" : "Ρυθμίσεις Deck",
|
||||
"Use bigger card view" : "Χρησιμοποιήστε μεγαλύτερη προβολή καρτέλας",
|
||||
"Show boards in calendar/tasks" : "Εμφάνιση πινάκων στο ημερολόγιο / εργασίες",
|
||||
"Limit board creation to some groups" : "Περιορισμός της δημιουργίας πινάκων σε ορισμένες ομάδες",
|
||||
"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." : "Οι χρήστες εκτός αυτών των ομάδων δεν θα μπορούν να δημιουργούν τους δικούς τους πίνακες, αλλά θα μπορούν να εργάζονται σε πίνακες που τους έχουν διαμοιραστεί.",
|
||||
"Board details" : "Λεπτομέριες πίνακα",
|
||||
"Edit board" : "Επεξεργασία πίνακα",
|
||||
"Clone board" : "Κλώνος πίνακα",
|
||||
@@ -326,7 +282,6 @@
|
||||
"No due" : "Χωρίς λήξη",
|
||||
"Search for {searchQuery} in all boards" : "Αναζήτηση για {searchQuery} σε όλους τους πίνακες",
|
||||
"No results found" : "Δεν βρέθηκαν αποτελέσματα",
|
||||
"This weekend – {timeLocale}" : "Αυτή την εβδομάδα – {timeLocale}",
|
||||
"Deck board {name}\n* Last modified on {lastMod}" : "Πίνακας Deck {name}\n* Τελευταία τροποποίηση στις {lastMod}",
|
||||
"{stack} in {board}" : "{stack} στο {board}",
|
||||
"Click to expand description" : "Κλικ για επέκταση περιγραφής",
|
||||
@@ -341,13 +296,8 @@
|
||||
"Open card" : "Άνοιγμα καρτέλας",
|
||||
"Close" : "Κλείσιμο",
|
||||
"No upcoming cards" : "Δεν υπάρχουν επερχόμενες καρτέλες",
|
||||
"upcoming cards today" : "επερχόμενες κάρτες σήμερα",
|
||||
"upcoming cards tomorrow" : "επερχόμενες κάρτες αύριο",
|
||||
"upcoming cards" : "επερχόμενες καρτέλες",
|
||||
"New card" : "Νέα κάρτα",
|
||||
"Due on {date}" : "Προθεσμία στις {date}",
|
||||
"Tomorrow – {timeLocale}" : "Αύριο – {timeLocale}",
|
||||
"Later today – {timeLocale}" : "Αργότερα σήμερα – {timeLocale}",
|
||||
"Link to a board" : "Σύνδεσμος στον πίνακα",
|
||||
"Link to a card" : "Σύνδεσμος σε καρτέλα",
|
||||
"Create a card" : "Δημιουργία καρτέλας",
|
||||
@@ -364,7 +314,9 @@
|
||||
"Share board with a user, group or circle …" : "Διαμοιράστε τον πίνακα με χρήστη, ομάδα ή κύκλο ...",
|
||||
"Searching for users, groups and circles …" : "Αναζήτηση χρηστών, ομάδων και κύκλων…",
|
||||
"(Circle)" : "(Κύκλος)",
|
||||
"Assign to users" : "Ανάθεση σε χρήστες",
|
||||
"Assign to users/groups/circles" : "Ανάθεση σε χρήστες/ομάδες/κύκλους",
|
||||
"Due date" : "Ημερομηνία λήξης",
|
||||
"Next week" : "Επόμενη εβδομάδα",
|
||||
"Next month" : "Επόμενος μήνας",
|
||||
"List is empty" : "Η λίστα είναι κενή",
|
||||
|
||||
@@ -379,7 +379,9 @@ OC.L10N.register(
|
||||
"Share board with a user, group or circle …" : "Share board with a user, group or circle …",
|
||||
"Searching for users, groups and circles …" : "Searching for users, groups and circles …",
|
||||
"(Circle)" : "(Circle)",
|
||||
"Assign to users" : "Assign to users",
|
||||
"Assign to users/groups/circles" : "Assign to users/groups/circles",
|
||||
"Due date" : "Due date",
|
||||
"Next week" : "Next week",
|
||||
"Next month" : "Next month",
|
||||
"List is empty" : "List is empty",
|
||||
|
||||
@@ -377,7 +377,9 @@
|
||||
"Share board with a user, group or circle …" : "Share board with a user, group or circle …",
|
||||
"Searching for users, groups and circles …" : "Searching for users, groups and circles …",
|
||||
"(Circle)" : "(Circle)",
|
||||
"Assign to users" : "Assign to users",
|
||||
"Assign to users/groups/circles" : "Assign to users/groups/circles",
|
||||
"Due date" : "Due date",
|
||||
"Next week" : "Next week",
|
||||
"Next month" : "Next month",
|
||||
"List is empty" : "List is empty",
|
||||
|
||||
@@ -133,6 +133,7 @@ OC.L10N.register(
|
||||
"Share" : "Kunhavigi",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Karta priskribo</strong> ene de la aplikaĵo Kartaro ŝanĝiĝis",
|
||||
"Timeline" : "Kronologio",
|
||||
"Due date" : "Limdato",
|
||||
"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." : "Limigo de Kartaro („Deck“) baros uzantojn, kiuj ne estas en tiuj grupoj, krei iliajn proprajn tabulojn. Uzantoj tamen eblos labori kun tabuloj kunhavigitaj kun ili."
|
||||
},
|
||||
"nplurals=2; plural=(n != 1);");
|
||||
|
||||
@@ -131,6 +131,7 @@
|
||||
"Share" : "Kunhavigi",
|
||||
"A <strong>card description</strong> inside the Deck app has been changed" : "<strong>Karta priskribo</strong> ene de la aplikaĵo Kartaro ŝanĝiĝis",
|
||||
"Timeline" : "Kronologio",
|
||||
"Due date" : "Limdato",
|
||||
"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." : "Limigo de Kartaro („Deck“) baros uzantojn, kiuj ne estas en tiuj grupoj, krei iliajn proprajn tabulojn. Uzantoj tamen eblos labori kun tabuloj kunhavigitaj kun ili."
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
}
|
||||
10
l10n/es.js
10
l10n/es.js
@@ -149,8 +149,6 @@ OC.L10N.register(
|
||||
"Filter by tag" : "Filtrar por etiqueta",
|
||||
"Filter by assigned user" : "Filtrar por usuario asignado",
|
||||
"Unassigned" : "No asignado",
|
||||
"Filter by completed" : "Filtrar por completados",
|
||||
"Open and completed" : "Abiertos y completados",
|
||||
"Open" : "Abrir",
|
||||
"Completed" : "Completado",
|
||||
"Filter by due date" : "Filtrar por fecha de finalización",
|
||||
@@ -180,12 +178,9 @@ OC.L10N.register(
|
||||
"Deleted lists" : "Listas eliminadas",
|
||||
"Undo" : "Deshacer",
|
||||
"Deleted cards" : "Cartas eliminadas",
|
||||
"Share board with a user, group or team …" : "Compartir tablero con un usuario, grupo o equipo …",
|
||||
"Searching for users, groups and teams …" : "Buscando usuarios, grupos y equipos …",
|
||||
"No participants found" : "No se encontraron participantes",
|
||||
"Board owner" : "Propietario del tablero",
|
||||
"(Group)" : "(Grupo)",
|
||||
"(Team)" : "(Equipo)",
|
||||
"Can edit" : "Puede editar",
|
||||
"Can share" : "Puede compartir",
|
||||
"Can manage" : "Puede gestionar",
|
||||
@@ -211,9 +206,7 @@ OC.L10N.register(
|
||||
"title and color value must be provided" : "Se debe indicar un valor para título y color ",
|
||||
"Board name" : "Nombre del tablero",
|
||||
"Members" : "Miembros",
|
||||
"Assign to users/groups/team" : "Asignar a usuarios/grupos/equipo",
|
||||
"Assign a user to this card…" : "Asignar un usuario a esta tarjeta...",
|
||||
"Select a user to assign to this card…" : "Seleccione un usuario para asignar esta tarjeta…",
|
||||
"Upload new files" : "Subir nuevos archivos",
|
||||
"Share from Files" : "Compartir desde Archivos",
|
||||
"Pending share" : "Pendiente de compartir",
|
||||
@@ -266,7 +259,6 @@ OC.L10N.register(
|
||||
"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...",
|
||||
"Select or create a tag…" : "Seleccionar o crear una etiqueta…",
|
||||
"Create a new tag:" : "Crear una nueva etiqueta:",
|
||||
"(group)" : "(grupo)",
|
||||
"Next week – {timeLocale}" : "Próxima semana – {timeLocale}",
|
||||
@@ -379,7 +371,9 @@ OC.L10N.register(
|
||||
"Share board with a user, group or circle …" : "Compartir tablero con un usuario, grupo o círculo ...",
|
||||
"Searching for users, groups and circles …" : "Buscando usuarios, grupos o círculos...",
|
||||
"(Circle)" : "(Circle)",
|
||||
"Assign to users" : "Asignar a usuarios",
|
||||
"Assign to users/groups/circles" : "Asignar a usuarios/grupos/círculos",
|
||||
"Due date" : "Fecha límite",
|
||||
"Next week" : "Semana siguiente",
|
||||
"Next month" : "Mes siguiente",
|
||||
"List is empty" : "La lista está vacía",
|
||||
|
||||
10
l10n/es.json
10
l10n/es.json
@@ -147,8 +147,6 @@
|
||||
"Filter by tag" : "Filtrar por etiqueta",
|
||||
"Filter by assigned user" : "Filtrar por usuario asignado",
|
||||
"Unassigned" : "No asignado",
|
||||
"Filter by completed" : "Filtrar por completados",
|
||||
"Open and completed" : "Abiertos y completados",
|
||||
"Open" : "Abrir",
|
||||
"Completed" : "Completado",
|
||||
"Filter by due date" : "Filtrar por fecha de finalización",
|
||||
@@ -178,12 +176,9 @@
|
||||
"Deleted lists" : "Listas eliminadas",
|
||||
"Undo" : "Deshacer",
|
||||
"Deleted cards" : "Cartas eliminadas",
|
||||
"Share board with a user, group or team …" : "Compartir tablero con un usuario, grupo o equipo …",
|
||||
"Searching for users, groups and teams …" : "Buscando usuarios, grupos y equipos …",
|
||||
"No participants found" : "No se encontraron participantes",
|
||||
"Board owner" : "Propietario del tablero",
|
||||
"(Group)" : "(Grupo)",
|
||||
"(Team)" : "(Equipo)",
|
||||
"Can edit" : "Puede editar",
|
||||
"Can share" : "Puede compartir",
|
||||
"Can manage" : "Puede gestionar",
|
||||
@@ -209,9 +204,7 @@
|
||||
"title and color value must be provided" : "Se debe indicar un valor para título y color ",
|
||||
"Board name" : "Nombre del tablero",
|
||||
"Members" : "Miembros",
|
||||
"Assign to users/groups/team" : "Asignar a usuarios/grupos/equipo",
|
||||
"Assign a user to this card…" : "Asignar un usuario a esta tarjeta...",
|
||||
"Select a user to assign to this card…" : "Seleccione un usuario para asignar esta tarjeta…",
|
||||
"Upload new files" : "Subir nuevos archivos",
|
||||
"Share from Files" : "Compartir desde Archivos",
|
||||
"Pending share" : "Pendiente de compartir",
|
||||
@@ -264,7 +257,6 @@
|
||||
"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...",
|
||||
"Select or create a tag…" : "Seleccionar o crear una etiqueta…",
|
||||
"Create a new tag:" : "Crear una nueva etiqueta:",
|
||||
"(group)" : "(grupo)",
|
||||
"Next week – {timeLocale}" : "Próxima semana – {timeLocale}",
|
||||
@@ -377,7 +369,9 @@
|
||||
"Share board with a user, group or circle …" : "Compartir tablero con un usuario, grupo o círculo ...",
|
||||
"Searching for users, groups and circles …" : "Buscando usuarios, grupos o círculos...",
|
||||
"(Circle)" : "(Circle)",
|
||||
"Assign to users" : "Asignar a usuarios",
|
||||
"Assign to users/groups/circles" : "Asignar a usuarios/grupos/círculos",
|
||||
"Due date" : "Fecha límite",
|
||||
"Next week" : "Semana siguiente",
|
||||
"Next month" : "Mes siguiente",
|
||||
"List is empty" : "La lista está vacía",
|
||||
|
||||
@@ -63,6 +63,7 @@ OC.L10N.register(
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -61,6 +61,7 @@
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -109,6 +109,7 @@ OC.L10N.register(
|
||||
"Share {file} with a Deck card" : "Compartir {file} con una tarjeta del Tablero",
|
||||
"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",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Next week" : "Proxima semana",
|
||||
"Next month" : "Proximo mes",
|
||||
"Limit deck usage of groups" : "Limitar el uso del Tablero a grupos",
|
||||
|
||||
@@ -107,6 +107,7 @@
|
||||
"Share {file} with a Deck card" : "Compartir {file} con una tarjeta del Tablero",
|
||||
"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",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Next week" : "Proxima semana",
|
||||
"Next month" : "Proximo mes",
|
||||
"Limit deck usage of groups" : "Limitar el uso del Tablero a grupos",
|
||||
|
||||
@@ -66,6 +66,7 @@ OC.L10N.register(
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -67,6 +67,7 @@ OC.L10N.register(
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -66,6 +66,7 @@ OC.L10N.register(
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -66,6 +66,7 @@ OC.L10N.register(
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -322,7 +322,9 @@ OC.L10N.register(
|
||||
"Share board with a user, group or circle …" : "Compartir tablero con un usuario, grupo o círculo …",
|
||||
"Searching for users, groups and circles …" : "Buscando usuarios, grupos y círculos …",
|
||||
"(Circle)" : "(Círculo)",
|
||||
"Assign to users" : "Asignar a usuarios",
|
||||
"Assign to users/groups/circles" : "Asignar a usuarios/grupos/círculos",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Next week" : "Semana siguiente",
|
||||
"Next month" : "Mes siguiente",
|
||||
"List is empty" : "La lista está vacía",
|
||||
|
||||
@@ -320,7 +320,9 @@
|
||||
"Share board with a user, group or circle …" : "Compartir tablero con un usuario, grupo o círculo …",
|
||||
"Searching for users, groups and circles …" : "Buscando usuarios, grupos y círculos …",
|
||||
"(Circle)" : "(Círculo)",
|
||||
"Assign to users" : "Asignar a usuarios",
|
||||
"Assign to users/groups/circles" : "Asignar a usuarios/grupos/círculos",
|
||||
"Due date" : "Fecha de vencimiento",
|
||||
"Next week" : "Semana siguiente",
|
||||
"Next month" : "Mes siguiente",
|
||||
"List is empty" : "La lista está vacía",
|
||||
|
||||
@@ -66,6 +66,7 @@ OC.L10N.register(
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -62,6 +62,7 @@ OC.L10N.register(
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -5,7 +5,6 @@ OC.L10N.register(
|
||||
"Personal" : "Personal",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"Deck board" : "Tablero de Deck",
|
||||
"%s on %s" : "%s en %s",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
@@ -21,7 +20,6 @@ OC.L10N.register(
|
||||
"Missing a temporary folder" : "Falta una carpeta temporal",
|
||||
"Could not write file to disk" : "No fue posible escribir a disco",
|
||||
"A PHP extension stopped the file upload" : "Una extensión de PHP detuvo la carga del archivo",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "No se ha cargado ningún archivo o el tamaño del archivo excede el máximo de %s",
|
||||
"Invalid date, date format must be YYYY-MM-DD" : "La fecha es inválida, por favor sigue el formato AAAA-MM-DD",
|
||||
"Cancel" : "Cancelar",
|
||||
"File already exists" : "El archivo ya existe",
|
||||
@@ -72,10 +70,7 @@ OC.L10N.register(
|
||||
"Keyboard shortcuts" : "Atajos del teclado",
|
||||
"Keyboard shortcut" : "Atajo del teclado",
|
||||
"Action" : "Acción",
|
||||
"Shift" : "Mayús",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Buscar",
|
||||
"Enter" : "Intro",
|
||||
"Space" : "Espacio",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Shared with you" : "Compartido con usted",
|
||||
@@ -89,8 +84,8 @@ OC.L10N.register(
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Error creating the share" : "Error creando el recurso compartido",
|
||||
"Share" : "Compartir",
|
||||
"Searching for users, groups and circles …" : "Buscando usuarios, grupos y círculos …"
|
||||
"Searching for users, groups and circles …" : "Buscando usuarios, grupos y círculos …",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
"Personal" : "Personal",
|
||||
"The card \"%s\" on \"%s\" has reached its due date." : "La tarjeta \"%s\" en \"%s\" ha alacanzado su fecha de entrega",
|
||||
"The board \"%s\" has been shared with you by %s." : "El tablero \"%s\" ha sido compartido contigo por %s.",
|
||||
"Deck board" : "Tablero de Deck",
|
||||
"%s on %s" : "%s en %s",
|
||||
"Finished" : "Terminado",
|
||||
"To review" : "Para revisar",
|
||||
@@ -19,7 +18,6 @@
|
||||
"Missing a temporary folder" : "Falta una carpeta temporal",
|
||||
"Could not write file to disk" : "No fue posible escribir a disco",
|
||||
"A PHP extension stopped the file upload" : "Una extensión de PHP detuvo la carga del archivo",
|
||||
"No file uploaded or file size exceeds maximum of %s" : "No se ha cargado ningún archivo o el tamaño del archivo excede el máximo de %s",
|
||||
"Invalid date, date format must be YYYY-MM-DD" : "La fecha es inválida, por favor sigue el formato AAAA-MM-DD",
|
||||
"Cancel" : "Cancelar",
|
||||
"File already exists" : "El archivo ya existe",
|
||||
@@ -70,10 +68,7 @@
|
||||
"Keyboard shortcuts" : "Atajos del teclado",
|
||||
"Keyboard shortcut" : "Atajo del teclado",
|
||||
"Action" : "Acción",
|
||||
"Shift" : "Mayús",
|
||||
"Ctrl" : "Ctrl",
|
||||
"Search" : "Buscar",
|
||||
"Enter" : "Intro",
|
||||
"Space" : "Espacio",
|
||||
"Archived boards" : "Tableros archivados",
|
||||
"Shared with you" : "Compartido con usted",
|
||||
@@ -87,8 +82,8 @@
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Error creating the share" : "Error creando el recurso compartido",
|
||||
"Share" : "Compartir",
|
||||
"Searching for users, groups and circles …" : "Buscando usuarios, grupos y círculos …"
|
||||
"Searching for users, groups and circles …" : "Buscando usuarios, grupos y círculos …",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -62,6 +62,7 @@ OC.L10N.register(
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -62,6 +62,7 @@ OC.L10N.register(
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -64,6 +64,7 @@ OC.L10N.register(
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -62,6 +62,7 @@
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -62,6 +62,7 @@ OC.L10N.register(
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -65,6 +65,7 @@ OC.L10N.register(
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -66,6 +66,7 @@ OC.L10N.register(
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -64,6 +64,7 @@
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -62,6 +62,7 @@ OC.L10N.register(
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},
|
||||
"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;");
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
"Today" : "Hoy",
|
||||
"Tomorrow" : "Mañana",
|
||||
"Close" : "Cerrar",
|
||||
"Share" : "Compartir"
|
||||
"Share" : "Compartir",
|
||||
"Due date" : "Fecha de vencimiento"
|
||||
},"pluralForm" :"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"
|
||||
}
|
||||
@@ -53,6 +53,7 @@ OC.L10N.register(
|
||||
"Close" : "Sulge",
|
||||
"Share" : "Jaga",
|
||||
"Timeline" : "Ajajoon",
|
||||
"Due date" : "Tähtaeg",
|
||||
"Next week" : "Järgmine nädal",
|
||||
"Next month" : "Järgmine kuu"
|
||||
},
|
||||
|
||||
@@ -51,6 +51,7 @@
|
||||
"Close" : "Sulge",
|
||||
"Share" : "Jaga",
|
||||
"Timeline" : "Ajajoon",
|
||||
"Due date" : "Tähtaeg",
|
||||
"Next week" : "Järgmine nädal",
|
||||
"Next month" : "Järgmine kuu"
|
||||
},"pluralForm" :"nplurals=2; plural=(n != 1);"
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user